From d11df55c15234c0aaf81d58737cd854f5f098ea7 Mon Sep 17 00:00:00 2001 From: Terraneo Federico <fede.tft@hotmail.it> Date: Wed, 1 May 2013 19:45:22 +0200 Subject: [PATCH] Reorganized directory structure --- Readme.txt | 3 - miosix/Makefile | 2 +- miosix/{doc => _doc}/doxygen/Doxyfile | 0 .../{doc => _doc}/doxygen/documentation.dox | 0 miosix/_doc/doxygen/html/annotated.html | 66 ++ .../_doc/doxygen/html/arch__registers_8h.html | 46 ++ miosix/_doc/doxygen/html/bc_s.png | Bin 0 -> 677 bytes miosix/_doc/doxygen/html/bsp_8h.html | 58 ++ miosix/_doc/doxygen/html/classes.html | 55 ++ ...miosix_1_1_condition_variable-members.html | 45 ++ .../classmiosix_1_1_condition_variable.html | 206 ++++++ .../html/classmiosix_1_1_console-members.html | 46 ++ .../doxygen/html/classmiosix_1_1_console.html | 239 ++++++ ..._1_control_scheduler_priority-members.html | 43 ++ ...miosix_1_1_control_scheduler_priority.html | 144 ++++ .../classmiosix_1_1_directory-members.html | 44 ++ .../html/classmiosix_1_1_directory.html | 213 ++++++ ..._1_1_e_d_f_scheduler_priority-members.html | 43 ++ ...ssmiosix_1_1_e_d_f_scheduler_priority.html | 144 ++++ ...x_1_1_exception_handling_data-members.html | 41 ++ ...assmiosix_1_1_exception_handling_data.html | 98 +++ ...1_fast_interrupt_disable_lock-members.html | 41 ++ ...iosix_1_1_fast_interrupt_disable_lock.html | 101 +++ ..._1_fast_interrupt_enable_lock-members.html | 41 ++ ...miosix_1_1_fast_interrupt_enable_lock.html | 108 +++ .../classmiosix_1_1_fast_mutex-members.html | 47 ++ .../html/classmiosix_1_1_fast_mutex.html | 193 +++++ .../classmiosix_1_1_filesystem-members.html | 43 ++ .../html/classmiosix_1_1_filesystem.html | 150 ++++ ...ix_1_1_interrupt_disable_lock-members.html | 41 ++ ...lassmiosix_1_1_interrupt_disable_lock.html | 101 +++ ...six_1_1_interrupt_enable_lock-members.html | 41 ++ ...classmiosix_1_1_interrupt_enable_lock.html | 124 ++++ .../html/classmiosix_1_1_lock-members.html | 42 ++ .../doxygen/html/classmiosix_1_1_lock.html | 137 ++++ ...lassmiosix_1_1_lower_priority-members.html | 40 + .../html/classmiosix_1_1_lower_priority.html | 100 +++ ...ssmiosix_1_1_memory_profiling-members.html | 46 ++ .../classmiosix_1_1_memory_profiling.html | 204 ++++++ .../html/classmiosix_1_1_mutex-members.html | 46 ++ .../doxygen/html/classmiosix_1_1_mutex.html | 177 +++++ ...smiosix_1_1_pause_kernel_lock-members.html | 41 ++ .../classmiosix_1_1_pause_kernel_lock.html | 101 +++ ...1_priority_scheduler_priority-members.html | 43 ++ ...iosix_1_1_priority_scheduler_priority.html | 144 ++++ .../html/classmiosix_1_1_queue-members.html | 52 ++ .../doxygen/html/classmiosix_1_1_queue.html | 420 +++++++++++ ...iosix_1_1_restart_kernel_lock-members.html | 41 ++ .../classmiosix_1_1_restart_kernel_lock.html | 124 ++++ ...classmiosix_1_1_software_i2_c-members.html | 45 ++ .../html/classmiosix_1_1_software_i2_c.html | 206 ++++++ ...lassmiosix_1_1_software_s_p_i-members.html | 45 ++ .../html/classmiosix_1_1_software_s_p_i.html | 223 ++++++ .../html/classmiosix_1_1_thread-members.html | 66 ++ .../doxygen/html/classmiosix_1_1_thread.html | 686 ++++++++++++++++++ .../html/classmiosix_1_1_timer-members.html | 45 ++ .../doxygen/html/classmiosix_1_1_timer.html | 183 +++++ .../html/classmiosix_1_1_unlock-members.html | 43 ++ .../doxygen/html/classmiosix_1_1_unlock.html | 183 +++++ ...__private_1_1_auxiliary_timer-members.html | 40 + ...ssmiosix__private_1_1_auxiliary_timer.html | 82 +++ miosix/_doc/doxygen/html/closed.png | Bin 0 -> 126 bytes miosix/_doc/doxygen/html/console_8h.html | 51 ++ miosix/_doc/doxygen/html/delays_8h.html | 52 ++ miosix/_doc/doxygen/html/disk_8h.html | 47 ++ miosix/_doc/doxygen/html/doxygen.css | 656 +++++++++++++++++ miosix/_doc/doxygen/html/doxygen.png | Bin 0 -> 3942 bytes miosix/_doc/doxygen/html/endianness_8h.html | 59 ++ miosix/_doc/doxygen/html/files.html | 49 ++ miosix/_doc/doxygen/html/ftv2blank.png | Bin 0 -> 174 bytes miosix/_doc/doxygen/html/ftv2doc.png | Bin 0 -> 255 bytes miosix/_doc/doxygen/html/ftv2folderclosed.png | Bin 0 -> 259 bytes miosix/_doc/doxygen/html/ftv2folderopen.png | Bin 0 -> 261 bytes miosix/_doc/doxygen/html/ftv2lastnode.png | Bin 0 -> 233 bytes miosix/_doc/doxygen/html/ftv2link.png | Bin 0 -> 358 bytes miosix/_doc/doxygen/html/ftv2mlastnode.png | Bin 0 -> 160 bytes miosix/_doc/doxygen/html/ftv2mnode.png | Bin 0 -> 194 bytes miosix/_doc/doxygen/html/ftv2node.png | Bin 0 -> 235 bytes miosix/_doc/doxygen/html/ftv2plastnode.png | Bin 0 -> 165 bytes miosix/_doc/doxygen/html/ftv2pnode.png | Bin 0 -> 200 bytes miosix/_doc/doxygen/html/ftv2vertline.png | Bin 0 -> 229 bytes miosix/_doc/doxygen/html/functions.html | 504 +++++++++++++ miosix/_doc/doxygen/html/functions_enum.html | 50 ++ miosix/_doc/doxygen/html/functions_eval.html | 57 ++ miosix/_doc/doxygen/html/functions_func.html | 478 ++++++++++++ miosix/_doc/doxygen/html/functions_vars.html | 54 ++ miosix/_doc/doxygen/html/globals.html | 97 +++ miosix/_doc/doxygen/html/globals_defs.html | 88 +++ miosix/_doc/doxygen/html/globals_func.html | 52 ++ miosix/_doc/doxygen/html/gpio_8h.html | 92 +++ miosix/_doc/doxygen/html/group___drivers.html | 37 + .../_doc/doxygen/html/group___filesystem.html | 97 +++ .../_doc/doxygen/html/group___hardware.html | 37 + .../_doc/doxygen/html/group___interfaces.html | 405 +++++++++++ miosix/_doc/doxygen/html/group___kernel.html | 254 +++++++ .../_doc/doxygen/html/group___settings.html | 235 ++++++ miosix/_doc/doxygen/html/group___sync.html | 51 ++ miosix/_doc/doxygen/html/group___util.html | 102 +++ miosix/_doc/doxygen/html/index.html | 16 + miosix/_doc/doxygen/html/main.html | 34 + .../doxygen/html/miosix__settings_8h.html | 73 ++ miosix/_doc/doxygen/html/modules.html | 42 ++ .../_doc/doxygen/html/namespacemembers.html | 278 +++++++ .../doxygen/html/namespacemembers_enum.html | 51 ++ .../doxygen/html/namespacemembers_eval.html | 96 +++ .../doxygen/html/namespacemembers_func.html | 108 +++ .../doxygen/html/namespacemembers_vars.html | 66 ++ miosix/_doc/doxygen/html/namespacemiosix.html | 389 ++++++++++ .../doxygen/html/namespacemiosix__pivate.html | 47 ++ miosix/_doc/doxygen/html/namespaces.html | 42 ++ miosix/_doc/doxygen/html/nav_f.png | Bin 0 -> 159 bytes miosix/_doc/doxygen/html/nav_h.png | Bin 0 -> 97 bytes miosix/_doc/doxygen/html/open.png | Bin 0 -> 118 bytes miosix/_doc/doxygen/html/portability_8h.html | 54 ++ miosix/_doc/doxygen/html/tab_a.png | Bin 0 -> 140 bytes miosix/_doc/doxygen/html/tab_b.png | Bin 0 -> 178 bytes miosix/_doc/doxygen/html/tab_h.png | Bin 0 -> 192 bytes miosix/_doc/doxygen/html/tab_s.png | Bin 0 -> 189 bytes miosix/_doc/doxygen/html/tabs.css | 59 ++ miosix/_doc/doxygen/html/tree.html | 131 ++++ miosix/{doc => _doc}/doxygen/index.html | 0 .../pdfdoc/features/Miosix features.odt | Bin .../pdfdoc/features/Miosix features.pdf | Bin miosix/{doc => _doc}/textdoc/Changelog.txt | 8 + miosix/{doc => _doc}/textdoc/Directories.txt | 0 .../textdoc/Disable exceptions.txt | 0 miosix/{doc => _doc}/textdoc/Error debug.txt | 0 .../textdoc/Filesystem benchmarks.txt | 0 miosix/{doc => _doc}/textdoc/Todo.txt | 0 .../textdoc/gcc threadsafety.txt | 0 .../textdoc/newlib threadsafety.txt | 0 .../textdoc/stm32-bootloader.txt | 0 miosix/{examples => _examples}/asm/Readme.txt | 0 miosix/{examples => _examples}/asm/main.s | 0 .../sad_trombone/Makefile | 0 .../sad_trombone/Readme.txt | 0 .../sad_trombone/adpcm.c | 0 .../sad_trombone/adpcm.h | 0 .../sad_trombone/circuit.jpeg | Bin .../sad_trombone/convert.cpp | 0 .../sad_trombone/main.cpp | 0 .../sad_trombone/player.cpp | 0 .../sad_trombone/player.h | 0 .../sad_trombone/sad_trombone.h | 0 .../sad_trombone/sad_trombone.wav | Bin .../thread_native/Readme.txt | 0 .../thread_native/native_thread_example.cpp | 0 .../thread_pthread/Readme.txt | 0 .../thread_pthread/pthread_example.cpp | 0 .../{ => _tools}/bootloaders/stm32/Readme.txt | 0 .../stm32/pc_loader/CMakeLists.txt | 0 .../bootloaders/stm32/pc_loader/main.cpp | 0 .../bootloaders/stm32/pc_loader/pc_loader | Bin .../stm32/pc_loader/serialstream.cpp | 0 .../stm32/pc_loader/serialstream.h | 0 .../stm32/uc_loader_ethboardv2/bootloader.bin | Bin .../stm32/uc_loader_ethboardv2/bootloader.hex | 0 .../uc_loader_stm3210e-eval/bootloader.bin | Bin .../uc_loader_stm3210e-eval/bootloader.hex | 0 .../uc_loader_stm3220g-eval/bootloader.bin | Bin .../uc_loader_stm3220g-eval/bootloader.hex | 0 miosix/{ => _tools}/check_global_objects.pl | 0 miosix/{ => _tools}/compiler/Readme.txt | 0 miosix/{ => _tools}/compiler/cleanup.sh | 0 miosix/{ => _tools}/compiler/download.sh | 0 .../{ => _tools}/compiler/install-script.sh | 0 .../compiler/lpc21isp_148_src.zip | Bin .../{ => _tools}/compiler/patches/gcc.patch | 0 miosix/{ => _tools}/compiler/patches/gcc.txt | 0 .../compiler/patches/newlib.patch | 0 .../{ => _tools}/compiler/patches/newlib.txt | 0 miosix/{ => _tools}/compiler/uninstall.sh | 0 .../delay_test/delay_test.cpp | 0 .../feedforward_profiling/CMakeLists.txt | 0 .../feedforward_profiling/Readme.txt | 0 .../feedforward_profiling/fdstream.h | 0 .../feedforward_profiling/fdstream.tcc | 0 .../feedforward_profiling/feedforward.png | Bin .../feedforward_profiling/ff_off.txt | 0 .../feedforward_profiling/ff_on.txt | 0 .../feedforward_profiling/ff_reinit.txt | 0 .../feedforward_profiling/gdb_init.script | 0 .../feedforward_profiling/jtag_profiler.cpp | 0 .../feedforward_profiling/plot.sci | 0 .../feedforward_profiling/plot.sh | 0 .../feedforward_profiling/test.cpp | 0 miosix/{temp => _tools}/loc_counter.sh | 0 miosix/{temp => _tools}/ram_test/main.cpp | 0 miosix/{temp => _tools}/ram_test/sha1.cpp | 0 miosix/{temp => _tools}/ram_test/sha1.h | 0 miosix/{ => _tools}/testsuite/Readme.txt | 2 +- miosix/{ => _tools}/testsuite/testsuite.cpp | 0 .../unused}/conflict_table.cpp | 0 .../{temp => _tools/unused}/conflict_table.h | 0 .../{temp => _tools/unused}/pthread_key.cpp | 0 .../doc/pdfdoc/suspend/Suspend to FLASH.odt | Bin 59878 -> 0 bytes .../doc/pdfdoc/suspend/Suspend to FLASH.pdf | Bin 116706 -> 0 bytes miosix/temp/simulation.sci | 236 ------ 198 files changed, 11267 insertions(+), 241 deletions(-) rename miosix/{doc => _doc}/doxygen/Doxyfile (100%) rename miosix/{doc => _doc}/doxygen/documentation.dox (100%) create mode 100644 miosix/_doc/doxygen/html/annotated.html create mode 100644 miosix/_doc/doxygen/html/arch__registers_8h.html create mode 100644 miosix/_doc/doxygen/html/bc_s.png create mode 100644 miosix/_doc/doxygen/html/bsp_8h.html create mode 100644 miosix/_doc/doxygen/html/classes.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_console-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_console.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_directory-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_directory.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_filesystem-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_filesystem.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_mutex-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_mutex.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_queue-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_queue.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_thread-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_thread.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_timer-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_timer.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_unlock-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix_1_1_unlock.html create mode 100644 miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer-members.html create mode 100644 miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer.html create mode 100644 miosix/_doc/doxygen/html/closed.png create mode 100644 miosix/_doc/doxygen/html/console_8h.html create mode 100644 miosix/_doc/doxygen/html/delays_8h.html create mode 100644 miosix/_doc/doxygen/html/disk_8h.html create mode 100644 miosix/_doc/doxygen/html/doxygen.css create mode 100644 miosix/_doc/doxygen/html/doxygen.png create mode 100644 miosix/_doc/doxygen/html/endianness_8h.html create mode 100644 miosix/_doc/doxygen/html/files.html create mode 100644 miosix/_doc/doxygen/html/ftv2blank.png create mode 100644 miosix/_doc/doxygen/html/ftv2doc.png create mode 100644 miosix/_doc/doxygen/html/ftv2folderclosed.png create mode 100644 miosix/_doc/doxygen/html/ftv2folderopen.png create mode 100644 miosix/_doc/doxygen/html/ftv2lastnode.png create mode 100644 miosix/_doc/doxygen/html/ftv2link.png create mode 100644 miosix/_doc/doxygen/html/ftv2mlastnode.png create mode 100644 miosix/_doc/doxygen/html/ftv2mnode.png create mode 100644 miosix/_doc/doxygen/html/ftv2node.png create mode 100644 miosix/_doc/doxygen/html/ftv2plastnode.png create mode 100644 miosix/_doc/doxygen/html/ftv2pnode.png create mode 100644 miosix/_doc/doxygen/html/ftv2vertline.png create mode 100644 miosix/_doc/doxygen/html/functions.html create mode 100644 miosix/_doc/doxygen/html/functions_enum.html create mode 100644 miosix/_doc/doxygen/html/functions_eval.html create mode 100644 miosix/_doc/doxygen/html/functions_func.html create mode 100644 miosix/_doc/doxygen/html/functions_vars.html create mode 100644 miosix/_doc/doxygen/html/globals.html create mode 100644 miosix/_doc/doxygen/html/globals_defs.html create mode 100644 miosix/_doc/doxygen/html/globals_func.html create mode 100644 miosix/_doc/doxygen/html/gpio_8h.html create mode 100644 miosix/_doc/doxygen/html/group___drivers.html create mode 100644 miosix/_doc/doxygen/html/group___filesystem.html create mode 100644 miosix/_doc/doxygen/html/group___hardware.html create mode 100644 miosix/_doc/doxygen/html/group___interfaces.html create mode 100644 miosix/_doc/doxygen/html/group___kernel.html create mode 100644 miosix/_doc/doxygen/html/group___settings.html create mode 100644 miosix/_doc/doxygen/html/group___sync.html create mode 100644 miosix/_doc/doxygen/html/group___util.html create mode 100644 miosix/_doc/doxygen/html/index.html create mode 100644 miosix/_doc/doxygen/html/main.html create mode 100644 miosix/_doc/doxygen/html/miosix__settings_8h.html create mode 100644 miosix/_doc/doxygen/html/modules.html create mode 100644 miosix/_doc/doxygen/html/namespacemembers.html create mode 100644 miosix/_doc/doxygen/html/namespacemembers_enum.html create mode 100644 miosix/_doc/doxygen/html/namespacemembers_eval.html create mode 100644 miosix/_doc/doxygen/html/namespacemembers_func.html create mode 100644 miosix/_doc/doxygen/html/namespacemembers_vars.html create mode 100644 miosix/_doc/doxygen/html/namespacemiosix.html create mode 100644 miosix/_doc/doxygen/html/namespacemiosix__pivate.html create mode 100644 miosix/_doc/doxygen/html/namespaces.html create mode 100644 miosix/_doc/doxygen/html/nav_f.png create mode 100644 miosix/_doc/doxygen/html/nav_h.png create mode 100644 miosix/_doc/doxygen/html/open.png create mode 100644 miosix/_doc/doxygen/html/portability_8h.html create mode 100644 miosix/_doc/doxygen/html/tab_a.png create mode 100644 miosix/_doc/doxygen/html/tab_b.png create mode 100644 miosix/_doc/doxygen/html/tab_h.png create mode 100644 miosix/_doc/doxygen/html/tab_s.png create mode 100644 miosix/_doc/doxygen/html/tabs.css create mode 100644 miosix/_doc/doxygen/html/tree.html rename miosix/{doc => _doc}/doxygen/index.html (100%) rename miosix/{doc => _doc}/pdfdoc/features/Miosix features.odt (100%) rename miosix/{doc => _doc}/pdfdoc/features/Miosix features.pdf (100%) rename miosix/{doc => _doc}/textdoc/Changelog.txt (98%) rename miosix/{doc => _doc}/textdoc/Directories.txt (100%) rename miosix/{doc => _doc}/textdoc/Disable exceptions.txt (100%) rename miosix/{doc => _doc}/textdoc/Error debug.txt (100%) rename miosix/{doc => _doc}/textdoc/Filesystem benchmarks.txt (100%) rename miosix/{doc => _doc}/textdoc/Todo.txt (100%) rename miosix/{doc => _doc}/textdoc/gcc threadsafety.txt (100%) rename miosix/{doc => _doc}/textdoc/newlib threadsafety.txt (100%) rename miosix/{doc => _doc}/textdoc/stm32-bootloader.txt (100%) rename miosix/{examples => _examples}/asm/Readme.txt (100%) rename miosix/{examples => _examples}/asm/main.s (100%) rename miosix/{examples => _examples}/sad_trombone/Makefile (100%) rename miosix/{examples => _examples}/sad_trombone/Readme.txt (100%) rename miosix/{examples => _examples}/sad_trombone/adpcm.c (100%) rename miosix/{examples => _examples}/sad_trombone/adpcm.h (100%) rename miosix/{examples => _examples}/sad_trombone/circuit.jpeg (100%) rename miosix/{examples => _examples}/sad_trombone/convert.cpp (100%) rename miosix/{examples => _examples}/sad_trombone/main.cpp (100%) rename miosix/{examples => _examples}/sad_trombone/player.cpp (100%) rename miosix/{examples => _examples}/sad_trombone/player.h (100%) rename miosix/{examples => _examples}/sad_trombone/sad_trombone.h (100%) rename miosix/{examples => _examples}/sad_trombone/sad_trombone.wav (100%) rename miosix/{examples => _examples}/thread_native/Readme.txt (100%) rename miosix/{examples => _examples}/thread_native/native_thread_example.cpp (100%) rename miosix/{examples => _examples}/thread_pthread/Readme.txt (100%) rename miosix/{examples => _examples}/thread_pthread/pthread_example.cpp (100%) rename miosix/{ => _tools}/bootloaders/stm32/Readme.txt (100%) rename miosix/{ => _tools}/bootloaders/stm32/pc_loader/CMakeLists.txt (100%) rename miosix/{ => _tools}/bootloaders/stm32/pc_loader/main.cpp (100%) rename miosix/{ => _tools}/bootloaders/stm32/pc_loader/pc_loader (100%) rename miosix/{ => _tools}/bootloaders/stm32/pc_loader/serialstream.cpp (100%) rename miosix/{ => _tools}/bootloaders/stm32/pc_loader/serialstream.h (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.bin (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.hex (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.bin (100%) rename miosix/{ => _tools}/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.hex (100%) rename miosix/{ => _tools}/check_global_objects.pl (100%) rename miosix/{ => _tools}/compiler/Readme.txt (100%) rename miosix/{ => _tools}/compiler/cleanup.sh (100%) rename miosix/{ => _tools}/compiler/download.sh (100%) rename miosix/{ => _tools}/compiler/install-script.sh (100%) rename miosix/{ => _tools}/compiler/lpc21isp_148_src.zip (100%) rename miosix/{ => _tools}/compiler/patches/gcc.patch (100%) rename miosix/{ => _tools}/compiler/patches/gcc.txt (100%) rename miosix/{ => _tools}/compiler/patches/newlib.patch (100%) rename miosix/{ => _tools}/compiler/patches/newlib.txt (100%) rename miosix/{ => _tools}/compiler/uninstall.sh (100%) rename miosix/{temp => _tools}/delay_test/delay_test.cpp (100%) rename miosix/{temp => _tools}/feedforward_profiling/CMakeLists.txt (100%) rename miosix/{temp => _tools}/feedforward_profiling/Readme.txt (100%) rename miosix/{temp => _tools}/feedforward_profiling/fdstream.h (100%) rename miosix/{temp => _tools}/feedforward_profiling/fdstream.tcc (100%) rename miosix/{temp => _tools}/feedforward_profiling/feedforward.png (100%) rename miosix/{temp => _tools}/feedforward_profiling/ff_off.txt (100%) rename miosix/{temp => _tools}/feedforward_profiling/ff_on.txt (100%) rename miosix/{temp => _tools}/feedforward_profiling/ff_reinit.txt (100%) rename miosix/{temp => _tools}/feedforward_profiling/gdb_init.script (100%) rename miosix/{temp => _tools}/feedforward_profiling/jtag_profiler.cpp (100%) rename miosix/{temp => _tools}/feedforward_profiling/plot.sci (100%) rename miosix/{temp => _tools}/feedforward_profiling/plot.sh (100%) rename miosix/{temp => _tools}/feedforward_profiling/test.cpp (100%) rename miosix/{temp => _tools}/loc_counter.sh (100%) rename miosix/{temp => _tools}/ram_test/main.cpp (100%) rename miosix/{temp => _tools}/ram_test/sha1.cpp (100%) rename miosix/{temp => _tools}/ram_test/sha1.h (100%) rename miosix/{ => _tools}/testsuite/Readme.txt (80%) rename miosix/{ => _tools}/testsuite/testsuite.cpp (100%) rename miosix/{temp => _tools/unused}/conflict_table.cpp (100%) rename miosix/{temp => _tools/unused}/conflict_table.h (100%) rename miosix/{temp => _tools/unused}/pthread_key.cpp (100%) delete mode 100644 miosix/doc/pdfdoc/suspend/Suspend to FLASH.odt delete mode 100644 miosix/doc/pdfdoc/suspend/Suspend to FLASH.pdf delete mode 100644 miosix/temp/simulation.sci diff --git a/Readme.txt b/Readme.txt index 5935fb13..cfdc1412 100644 --- a/Readme.txt +++ b/Readme.txt @@ -4,6 +4,3 @@ Welcome to the Miosix kernel You can find information on how to configure and use the kernel at the following url: http://miosix.org - -The testsuite has been moved in the miosix/testsuite directory. -The examples have been moved in the miosix/examples directory. diff --git a/miosix/Makefile b/miosix/Makefile index 7949d1eb..9b86fe83 100644 --- a/miosix/Makefile +++ b/miosix/Makefile @@ -48,7 +48,7 @@ AFLAGS := $(AFLAGS_BASE) ## The file stage_1_boot.o is compiled separately because ## it must not end up in libmiosix.a all: $(OBJ) $(BOOT_FILE) - perl check_global_objects.pl $(OBJ) + perl tools/check_global_objects.pl $(OBJ) $(AR) rcs libmiosix.a $(OBJ) clean: diff --git a/miosix/doc/doxygen/Doxyfile b/miosix/_doc/doxygen/Doxyfile similarity index 100% rename from miosix/doc/doxygen/Doxyfile rename to miosix/_doc/doxygen/Doxyfile diff --git a/miosix/doc/doxygen/documentation.dox b/miosix/_doc/doxygen/documentation.dox similarity index 100% rename from miosix/doc/doxygen/documentation.dox rename to miosix/_doc/doxygen/documentation.dox diff --git a/miosix/_doc/doxygen/html/annotated.html b/miosix/_doc/doxygen/html/annotated.html new file mode 100644 index 00000000..0f6cdbf6 --- /dev/null +++ b/miosix/_doc/doxygen/html/annotated.html @@ -0,0 +1,66 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Class List</h1> </div> +</div> +<div class="contents"> +Here are the classes, structs, unions and interfaces with brief descriptions:<table> + <tr><td class="indexkey"><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_exception_handling_data.html">miosix::ExceptionHandlingData</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_lower_priority.html">miosix::LowerPriority</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td><td class="indexvalue"></td></tr> +</table> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/arch__registers_8h.html b/miosix/_doc/doxygen/html/arch__registers_8h.html new file mode 100644 index 00000000..febc2871 --- /dev/null +++ b/miosix/_doc/doxygen/html/arch__registers_8h.html @@ -0,0 +1,46 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: arch_registers.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>arch_registers.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "interfaces-impl/arch_registers_impl.h"</code><br/> +<table class="memberdecls"> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file should contain the list of hardware registers of the selected architecture, to allow application to directly access the hardware.</p> +<p>The list of these registers is usually provided by the chip vendor in the form of one or more header files.</p> +<p>To include these registers in a portable way, here we only include arch_registers_impl.h, which will be an header file in arch/arch name/board name/interfaces_impl</p> +<p>The usual implementation of arch_registers_impl.h is simply to include the header files provided by the chip vendor. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/bc_s.png b/miosix/_doc/doxygen/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..e4018628b5b45cb4301037485a29d7d74ac22138 GIT binary patch literal 677 zcmeAS@N?(olHy`uVBq!ia0y~yVBlb2U{K&-V_;y=|6qB6fq^N<)5S5Qg7NKLZ;y~% z3HA^FKhG;qJ13d`?2P34rxtyeXH4%h`>5+Aa%&66M3&eTfoURPQDVM{tuAb$g0=V4 zcVs+tTCz>+;@_mFOG7QYrW-f+xd~L-Ebf-zJR~wJ@!5+_Z#P%U|M-9I^Sq;<->v+6 z@c7fY|4JA>^sl<b#G^Vz-Xbh(s?VJqpi$~(I`<jy_(zeDU^^py91I1iYw%Gw`v zVCrvY27{1Cp(5RpJAOo7{WXd4e{oq||1qX_I=3?!G#m8Fd6*hzc04Qp5yO-mBFK{| z%z5G0|AamH<>|M-?Us4uVX(wh^}y2qc1M24=xsQ8iRro)gTKKV-Q-%Q2lswI(U#9G zKHVC2@rtR~H7kaObN6ef^JwKvT6z5WwB&;m!gfe9H25ElJDT|D&6S9XkD6QWNE$Rf zez~cl$UE)Uor;Q$U9<A{nlgC`yvW`dp4f9yE^F7%V;l?*wprf}d$=W<ZN<l9tIs+t zJ)D;J?a7V(8_otXT-9q|v1XmqQsL|IQqD6wo_W{kt@*oYzSO$C22IA2T_N+AdMxae z+}qZ-&DOkW!TrZuW?E#=m~%1y^2F8WCml9geL}u!yH%K4+7~AVfwJlHer#_oB{Rd$ zMNSv%<z;5Ly49|;U9T~)qIw?_gX`qYznB;}cApXwmJ)5Bq25`Ol4W*l?v3_a2Od}0 zKRsXU)#Olmd16MAXUnC%?bnRnOxD@swk<m8^27{<RQ1*8zcM@YTi=dLnOd=3s`KA$ zCcbT7(v92__q)gaU*OQI^HOuctDO6-Jj+8~Pttw->Q2z#w&|fa??`K%nCg0NrJ2cg rlN^>iM{aT{zsPdAFYs^fFW#dQHsx1O@#AD*U|{fc^>bP0l+XkKx86dR literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/bsp_8h.html b/miosix/_doc/doxygen/html/bsp_8h.html new file mode 100644 index 00000000..583aa683 --- /dev/null +++ b/miosix/_doc/doxygen/html/bsp_8h.html @@ -0,0 +1,58 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: bsp.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#namespaces">Namespaces</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>bsp.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "interfaces-impl/bsp_impl.h"</code><br/> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html">miosix</a></td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">miosix::shutdown</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">miosix::reboot</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file contains architecture specific board support package. It must at least provide these four functions:</p> +<p>IRQbspInit(), to initialize the board to a known state early in the boot process (before the kernel is started, and when interrupts are disabled)</p> +<p>bspInit2(), to perform the remaining part of the initialization, once the kernel is started</p> +<p><a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">shutdown()</a>, for system shutdown. This function is called in case main() returns, and is available to be called by user code.</p> +<p><a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">reboot()</a>, a function that can be called to reboot the system under normal (non error) conditions. It should sync and unmount the filesystem, and perform a reboot. This function is available for user code.</p> +<p>Other than this, the board support package might contain other functions, classes, macros etc. to support peripherals and or board hardware. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classes.html b/miosix/_doc/doxygen/html/classes.html new file mode 100644 index 00000000..4a37794d --- /dev/null +++ b/miosix/_doc/doxygen/html/classes.html @@ -0,0 +1,55 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Alphabetical List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Class Index</h1> </div> +</div> +<div class="contents"> +<div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a></div> +<table align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> A </div></td></tr></table> +</td><td><a name="letter_E"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> E </div></td></tr></table> +</td><td><a name="letter_I"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> I </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_S"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> S </div></td></tr></table> +</td></tr><tr><td><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">AuxiliaryTimer</a> (miosix_private) </td><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">EDFSchedulerPriority</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_P"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> P </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">SoftwareI2C</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td></tr><tr><td><a name="letter_C"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> C </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_exception_handling_data.html">ExceptionHandlingData</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">InterruptEnableLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">SoftwareSPI</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td></tr><tr><td><a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_F"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> F </div></td></tr></table> +</td><td><a name="letter_L"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> L </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">PrioritySchedulerPriority</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_T"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> T </div></td></tr></table> +</td></tr><tr><td><a class="el" href="classmiosix_1_1_console.html">Console</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">FastInterruptDisableLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_lock.html">Lock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_Q"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> Q </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_thread.html">Thread</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td></tr><tr><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">ControlSchedulerPriority</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">FastInterruptEnableLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_lower_priority.html">LowerPriority</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_queue.html">Queue</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_timer.html">Timer</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td></tr><tr><td><a name="letter_D"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> D </div></td></tr></table> +</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">FastMutex</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a name="letter_M"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> M </div></td></tr></table> +</td><td><a name="letter_R"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> R </div></td></tr></table> +</td><td><a name="letter_U"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah"> U </div></td></tr></table> +</td></tr><tr><td><a class="el" href="classmiosix_1_1_directory.html">Directory</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">MemoryProfiling</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">RestartKernelLock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td><td><a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> (<a class="el" href="namespacemiosix.html">miosix</a>) </td></tr></table><div class="qindex"><a class="qindex" href="#letter_A">A</a> | <a class="qindex" href="#letter_C">C</a> | <a class="qindex" href="#letter_D">D</a> | <a class="qindex" href="#letter_E">E</a> | <a class="qindex" href="#letter_F">F</a> | <a class="qindex" href="#letter_I">I</a> | <a class="qindex" href="#letter_L">L</a> | <a class="qindex" href="#letter_M">M</a> | <a class="qindex" href="#letter_P">P</a> | <a class="qindex" href="#letter_Q">Q</a> | <a class="qindex" href="#letter_R">R</a> | <a class="qindex" href="#letter_S">S</a> | <a class="qindex" href="#letter_T">T</a> | <a class="qindex" href="#letter_U">U</a></div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable-members.html new file mode 100644 index 00000000..1fa3c3c7 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable-members.html @@ -0,0 +1,45 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::ConditionVariable Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#adb8897a2ff31ecc320ff624285924600">broadcast</a>()</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#a071791f7cf57c7f6eed03b17cbb4bb5e">ConditionVariable</a>()</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#adbc51a45a48f6afe98fea4581fc4f16d">signal</a>()</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">wait</a>(Lock< T > &l)</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#a690ff38de87f884855d6c72bde694116">wait</a>(Mutex &m)</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_condition_variable.html#a87382101d2526494b8fe04e056426ccb">wait</a>(FastMutex &m)</td><td><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td><td></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable.html b/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable.html new file mode 100644 index 00000000..6812f5ef --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_condition_variable.html @@ -0,0 +1,206 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::ConditionVariable Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::ConditionVariable Class Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::ConditionVariable" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_condition_variable-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#a071791f7cf57c7f6eed03b17cbb4bb5e">ConditionVariable</a> ()</td></tr> +<tr><td class="memTemplParams" colspan="2">template<typename T > </td></tr> +<tr><td class="memTemplItemLeft" align="right" valign="top">void </td><td class="memTemplItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">wait</a> (<a class="el" href="classmiosix_1_1_lock.html">Lock</a>< T > &l)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#a690ff38de87f884855d6c72bde694116">wait</a> (<a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> &m)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#a87382101d2526494b8fe04e056426ccb">wait</a> (<a class="el" href="classmiosix_1_1_fast_mutex.html">FastMutex</a> &m)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#adbc51a45a48f6afe98fea4581fc4f16d">signal</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html#adb8897a2ff31ecc320ff624285924600">broadcast</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>A condition variable class for thread synchronization, available from Miosix 1.53.<br/> + One or more threads can wait on the condition variable, and the <a class="el" href="classmiosix_1_1_condition_variable.html#adbc51a45a48f6afe98fea4581fc4f16d">signal()</a> and <a class="el" href="classmiosix_1_1_condition_variable.html#adb8897a2ff31ecc320ff624285924600">broadcast()</a> allow to wake ne or all the waiting threads.<br/> + This class is meant to be a static or global class. Dynamically creating a <a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a> with new or on the stack must be done with care, to avoid deleting a <a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a> while some threads are waiting, and to avoid situations where a thread tries to wait on a deleted <a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a>.<br/> + </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a071791f7cf57c7f6eed03b17cbb4bb5e"></a><!-- doxytag: member="miosix::ConditionVariable::ConditionVariable" ref="a071791f7cf57c7f6eed03b17cbb4bb5e" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::ConditionVariable::ConditionVariable </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, initializes the <a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a>. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="adb8897a2ff31ecc320ff624285924600"></a><!-- doxytag: member="miosix::ConditionVariable::broadcast" ref="adb8897a2ff31ecc320ff624285924600" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::ConditionVariable::broadcast </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Wakeup all waiting threads. </p> + +</div> +</div> +<a class="anchor" id="adbc51a45a48f6afe98fea4581fc4f16d"></a><!-- doxytag: member="miosix::ConditionVariable::signal" ref="adbc51a45a48f6afe98fea4581fc4f16d" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::ConditionVariable::signal </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Wakeup one waiting thread. Currently implemented policy is fifo. </p> + +</div> +</div> +<a class="anchor" id="a690ff38de87f884855d6c72bde694116"></a><!-- doxytag: member="miosix::ConditionVariable::wait" ref="a690ff38de87f884855d6c72bde694116" args="(Mutex &m)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::ConditionVariable::wait </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> & </td> + <td class="paramname"> <em>m</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> the <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> and wait. If more threads call <a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">wait()</a> they must do so specifying the same mutex, otherwise the behaviour is undefined. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>m</em> </td><td>a locked <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a87382101d2526494b8fe04e056426ccb"></a><!-- doxytag: member="miosix::ConditionVariable::wait" ref="a87382101d2526494b8fe04e056426ccb" args="(FastMutex &m)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::ConditionVariable::wait </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_fast_mutex.html">FastMutex</a> & </td> + <td class="paramname"> <em>m</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> the <a class="el" href="classmiosix_1_1_fast_mutex.html">FastMutex</a> and wait. If more threads call <a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">wait()</a> they must do so specifying the same mutex, otherwise the behaviour is undefined. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>m</em> </td><td>a locked <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ae1e16bdd5262ac2918117db06ed01cd3"></a><!-- doxytag: member="miosix::ConditionVariable::wait" ref="ae1e16bdd5262ac2918117db06ed01cd3" args="(Lock< T > &l)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">void miosix::ConditionVariable::wait </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_lock.html">Lock</a>< T > & </td> + <td class="paramname"> <em>l</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> the mutex and wait. If more threads call <a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">wait()</a> they must do so specifying the same mutex, otherwise the behaviour is undefined. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>A <a class="el" href="classmiosix_1_1_lock.html">Lock</a> instance that locked a <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>sync.h</li> +<li>sync.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_console-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_console-members.html new file mode 100644 index 00000000..a4865c4d --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_console-members.html @@ -0,0 +1,46 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Console Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_console.html">miosix::Console</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#a138cf29290498b2adc23bad89b7f1225">IRQtxComplete</a>()</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#a24a570ed29296d941477d90637c7f87d">IRQwrite</a>(const char *str)</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#a4c62717fe282211b1b8b13c9897d4036">readChar</a>()</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#a7b901496782fb87e9b8f62db0b694c15">readCharNonBlocking</a>(char &c)</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#a139a35d7febd53431f04fd83c7d2955b">txComplete</a>()</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#ad064039cfbaa9db84cb021944aa85bd1">write</a>(const char *str)</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_console.html#adcfaf32a1fdaafdf3340095a906b836f">write</a>(const char *data, int length)</td><td><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_console.html b/miosix/_doc/doxygen/html/classmiosix_1_1_console.html new file mode 100644 index 00000000..0f4d0835 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_console.html @@ -0,0 +1,239 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Console Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Console Class Reference<br/> +<small> +[<a class="el" href="group___interfaces.html">Interfaces</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Console" --> +<p><code>#include <console.h></code></p> + +<p><a href="classmiosix_1_1_console-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#ad064039cfbaa9db84cb021944aa85bd1">write</a> (const char *str)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#adcfaf32a1fdaafdf3340095a906b836f">write</a> (const char *data, int length)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#a139a35d7febd53431f04fd83c7d2955b">txComplete</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#a24a570ed29296d941477d90637c7f87d">IRQwrite</a> (const char *str)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#a138cf29290498b2adc23bad89b7f1225">IRQtxComplete</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#a4c62717fe282211b1b8b13c9897d4036">readChar</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html#a7b901496782fb87e9b8f62db0b694c15">readCharNonBlocking</a> (char &c)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This is an abstraction over a character device. The kernel uses it to implement stdin/stdout/stderr I/O of the C and C++ standard library, and if bootlogs/error logs are enabled in <a class="el" href="miosix__settings_8h.html">miosix_settings.h</a> also these logs are redirected here. The underlying implementation depends on the architecture chosen when compiling Miosix and can be for example a serial port, an USB endpoint or can also be empty (/dev/null like behaviour).</p> +<p>The implementation of this class is in arch/arch name/board name/interfaces-impl </p> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a138cf29290498b2adc23bad89b7f1225"></a><!-- doxytag: member="miosix::Console::IRQtxComplete" ref="a138cf29290498b2adc23bad89b7f1225" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static bool miosix::Console::IRQtxComplete </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Can ONLY be called when the kernel is not yet started, paused or within an interrupt. Since the implementation of the <a class="el" href="classmiosix_1_1_console.html">Console</a> class can use buffering, this memeber function is provided to know if all data has been sent, for example to wait until all data has been sent before performing a reboot. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if all write buffers are empty. </dd></dl> + +</div> +</div> +<a class="anchor" id="a24a570ed29296d941477d90637c7f87d"></a><!-- doxytag: member="miosix::Console::IRQwrite" ref="a24a570ed29296d941477d90637c7f87d" args="(const char *str)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static void miosix::Console::IRQwrite </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>str</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Write a string to the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can ONLY be called when the kernel is not yet started, paused or within an interrupt. If the underlying communication channel is not open this function returns without doing anything. If for some reason in an architecture Miosix is ported to it is not possible to access the underlying communication channel when the kernel is not started it is possible that this function always returns without doing anything. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>the string to write. The string must be NUL terminated. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a4c62717fe282211b1b8b13c9897d4036"></a><!-- doxytag: member="miosix::Console::readChar" ref="a4c62717fe282211b1b8b13c9897d4036" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static char miosix::Console::readChar </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Read a character from the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Blocking. Can be safely called by multiple threads. If the underlying communication channel is not open this function blocks until it is opened and data arrives. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>the character read. </dd></dl> + +</div> +</div> +<a class="anchor" id="a7b901496782fb87e9b8f62db0b694c15"></a><!-- doxytag: member="miosix::Console::readCharNonBlocking" ref="a7b901496782fb87e9b8f62db0b694c15" args="(char &c)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static bool miosix::Console::readCharNonBlocking </td> + <td>(</td> + <td class="paramtype">char & </td> + <td class="paramname"> <em>c</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Read a character from the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Nonblocking. Can be safely called by multiple threads. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>c</em> </td><td>a reference to the character to read. If the function returns true then the read character is stored here. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the underlying communication channel was open and there was data available. False otherwise. </dd></dl> + +</div> +</div> +<a class="anchor" id="a139a35d7febd53431f04fd83c7d2955b"></a><!-- doxytag: member="miosix::Console::txComplete" ref="a139a35d7febd53431f04fd83c7d2955b" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static bool miosix::Console::txComplete </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Since the implementation of the <a class="el" href="classmiosix_1_1_console.html">Console</a> class can use buffering, this memeber function is provided to know if all data has been sent, for example to wait until all data has been sent before performing a reboot. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if all write buffers are empty. </dd></dl> + +</div> +</div> +<a class="anchor" id="ad064039cfbaa9db84cb021944aa85bd1"></a><!-- doxytag: member="miosix::Console::write" ref="ad064039cfbaa9db84cb021944aa85bd1" args="(const char *str)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static void miosix::Console::write </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>str</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Write a string to the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can be safely called by multiple threads. If the underlying communication channel is not open this function returns without doing anything. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>str</em> </td><td>the string to write. The string must be NUL terminated. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="adcfaf32a1fdaafdf3340095a906b836f"></a><!-- doxytag: member="miosix::Console::write" ref="adcfaf32a1fdaafdf3340095a906b836f" args="(const char *data, int length)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static void miosix::Console::write </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>data</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"> <em>length</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Write data to the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can be safely called by multiple threads. If the underlying communication channel is not open this function returns without doing anything. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>data to write </td></tr> + <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>length of data </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="console_8h.html">console.h</a></li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority-members.html new file mode 100644 index 00000000..029a3e50 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority-members.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::ControlSchedulerPriority Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#a4bd3eb3d3d89cf2082f9cbfc09ddb3ed">ControlSchedulerPriority</a>(short int priority)</td><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#adee560c11f29f0b29b6a119742d39934">ControlSchedulerPriority</a>()</td><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ad15885f4c536e5e3ee7b6f95f5542209">get</a>() const </td><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ae7b24bc4e0861dc5ca7ae50a758f9244">validate</a>() const </td><td><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority.html b/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority.html new file mode 100644 index 00000000..09fe2d3c --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_control_scheduler_priority.html @@ -0,0 +1,144 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::ControlSchedulerPriority Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">miosix::ControlSchedulerPriority</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::ControlSchedulerPriority Class Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::ControlSchedulerPriority" --> +<p><code>#include <control_scheduler_types.h></code></p> + +<p><a href="classmiosix_1_1_control_scheduler_priority-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#a4bd3eb3d3d89cf2082f9cbfc09ddb3ed">ControlSchedulerPriority</a> (short int priority)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#adee560c11f29f0b29b6a119742d39934">ControlSchedulerPriority</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">short int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ad15885f4c536e5e3ee7b6f95f5542209">get</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ae7b24bc4e0861dc5ca7ae50a758f9244">validate</a> () const </td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class models the concept of priority for the control based scheduler. In this scheduler the priority is simply a short int with values ranging from 0 to PRIORITY_MAX-1, higher values mean higher priority, and the special value -1 reserved for the idle thread. Higher values of priority mean that the scheduler assigns a larger fraction of the round time to the thread. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a4bd3eb3d3d89cf2082f9cbfc09ddb3ed"></a><!-- doxytag: member="miosix::ControlSchedulerPriority::ControlSchedulerPriority" ref="a4bd3eb3d3d89cf2082f9cbfc09ddb3ed" args="(short int priority)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::ControlSchedulerPriority::ControlSchedulerPriority </td> + <td>(</td> + <td class="paramtype">short int </td> + <td class="paramname"> <em>priority</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor. Not explicit for backward compatibility. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>the desired priority value. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="adee560c11f29f0b29b6a119742d39934"></a><!-- doxytag: member="miosix::ControlSchedulerPriority::ControlSchedulerPriority" ref="adee560c11f29f0b29b6a119742d39934" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::ControlSchedulerPriority::ControlSchedulerPriority </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Default constructor. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="ad15885f4c536e5e3ee7b6f95f5542209"></a><!-- doxytag: member="miosix::ControlSchedulerPriority::get" ref="ad15885f4c536e5e3ee7b6f95f5542209" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">short int miosix::ControlSchedulerPriority::get </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the priority value </dd></dl> + +</div> +</div> +<a class="anchor" id="ae7b24bc4e0861dc5ca7ae50a758f9244"></a><!-- doxytag: member="miosix::ControlSchedulerPriority::validate" ref="ae7b24bc4e0861dc5ca7ae50a758f9244" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::ControlSchedulerPriority::validate </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if this objects represents a valid priority. Note that the value -1 is considered not valid, because it is reserved for the idle thread. </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>control_scheduler_types.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_directory-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_directory-members.html new file mode 100644 index 00000000..c2705758 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_directory-members.html @@ -0,0 +1,44 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Directory Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_directory.html#a4511c8727dc6fc565a415d5e258d612b">Directory</a>()</td><td><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_directory.html#abd96a4eb6ce45869b55ebe5fa1c6c43f">exists</a>(const char *name)</td><td><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_directory.html#a079e87e4cbc008d223a03c54d87577bf">FILENAME_LEN</a></td><td><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">next</a>(char *name, unsigned int &size, unsigned char &attrib)</td><td><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_directory.html#ab3b8f627404f790ca9e309dd90d4e8a0">open</a>(const char *name)</td><td><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td><td></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_directory.html b/miosix/_doc/doxygen/html/classmiosix_1_1_directory.html new file mode 100644 index 00000000..fe878803 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_directory.html @@ -0,0 +1,213 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Directory Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-static-methods">Static Public Member Functions</a> | +<a href="#pub-static-attribs">Static Public Attributes</a> </div> + <div class="headertitle"> +<h1>miosix::Directory Class Reference<br/> +<small> +[<a class="el" href="group___filesystem.html">Filesystem</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Directory" --> +<p><code>#include <filesystem.h></code></p> + +<p><a href="classmiosix_1_1_directory-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html#a4511c8727dc6fc565a415d5e258d612b">Directory</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html#ab3b8f627404f790ca9e309dd90d4e8a0">open</a> (const char *name)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">next</a> (char *name, unsigned int &size, unsigned char &attrib)</td></tr> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html#abd96a4eb6ce45869b55ebe5fa1c6c43f">exists</a> (const char *name)</td></tr> +<tr><td colspan="2"><h2><a name="pub-static-attribs"></a> +Static Public Attributes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html#a079e87e4cbc008d223a03c54d87577bf">FILENAME_LEN</a> = 13</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class represent a directory. It has methods for listing files inside them. All methods can be called only if the filesystem is mounted.</p> +<p>IMPORTANT:<br/> + Name of files and directories is limited to old DOS 8.3 format. The name of the file must not exceed 8 chracter, and the extension must not exceed 3 chars. Also the name must not contain spaces.</p> +<p>The directory listing function will return the name of file truncated if necessary (example "My_long_file_name.txt" will be reported as "MY_LON~1.TXT")</p> +<p>To open a file created on a computer, that has a long file name, you must use the truncated name too. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a4511c8727dc6fc565a415d5e258d612b"></a><!-- doxytag: member="miosix::Directory::Directory" ref="a4511c8727dc6fc565a415d5e258d612b" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::Directory::Directory </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="abd96a4eb6ce45869b55ebe5fa1c6c43f"></a><!-- doxytag: member="miosix::Directory::exists" ref="abd96a4eb6ce45869b55ebe5fa1c6c43f" args="(const char *name)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Directory::exists </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>name</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name and path of directory in unix notation (example: "/mydir" and not "C:\mydir")<br/> + Note that name of files and directories is limited to old DOS 8.3 format. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if directory exists. </dd></dl> + +</div> +</div> +<a class="anchor" id="ace4d75cdcad650213a294c2fe7a41381"></a><!-- doxytag: member="miosix::Directory::next" ref="ace4d75cdcad650213a294c2fe7a41381" args="(char *name, unsigned int &size, unsigned char &attrib)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Directory::next </td> + <td>(</td> + <td class="paramtype">char * </td> + <td class="paramname"> <em>name</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int & </td> + <td class="paramname"> <em>size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned char & </td> + <td class="paramname"> <em>attrib</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get next directory entry. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>a string where the file name will be copied. The string size must be >=FILENAME_LEN </td></tr> + <tr><td valign="top"></td><td valign="top"><em>size</em> </td><td>size of the entry </td></tr> + <tr><td valign="top"></td><td valign="top"><em>attrib</em> </td><td>entry attributes (allow undrstanding if entry is a file or directory) </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true while there are entries in the directory Note that if the return value is false, name size and attrib are not valid </dd></dl> + +</div> +</div> +<a class="anchor" id="ab3b8f627404f790ca9e309dd90d4e8a0"></a><!-- doxytag: member="miosix::Directory::open" ref="ab3b8f627404f790ca9e309dd90d4e8a0" args="(const char *name)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">char miosix::Directory::open </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>name</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Open a directory, to list its content </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>name</em> </td><td>name and path of directory in unix notation (example: "/mydir" and not "C:\mydir")<br/> + Note that name of files and directories is limited to old DOS 8.3 format. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>0 on success. Error codes are:<ul> +<li>1 = Error</li> +<li>3 = <a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> not mounted </li> +</ul> +</dd></dl> + +</div> +</div> +<hr/><h2>Member Data Documentation</h2> +<a class="anchor" id="a079e87e4cbc008d223a03c54d87577bf"></a><!-- doxytag: member="miosix::Directory::FILENAME_LEN" ref="a079e87e4cbc008d223a03c54d87577bf" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const unsigned int <a class="el" href="classmiosix_1_1_directory.html#a079e87e4cbc008d223a03c54d87577bf">miosix::Directory::FILENAME_LEN</a> = 13<code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This is the maximum length of entry name reported by <a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">Directory::next()</a>. Use it to create buffers to pass to <a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">Directory::next()</a>. This dimension includes the null termination character. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>filesystem.h</li> +<li>filesystem.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority-members.html new file mode 100644 index 00000000..fc113054 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority-members.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::EDFSchedulerPriority Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ac3b95b8d504e71004d2b64c8f4553074">EDFSchedulerPriority</a>(long long deadline)</td><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ab53c3d57ccdf2f5fac67c796afb73e91">EDFSchedulerPriority</a>()</td><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a1e1fa5e57a39e9bbec09eaca3043fe79">get</a>() const </td><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a87c2a3428d3d3af53391494e81cf3687">validate</a>() const </td><td><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority.html b/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority.html new file mode 100644 index 00000000..d677d140 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_e_d_f_scheduler_priority.html @@ -0,0 +1,144 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::EDFSchedulerPriority Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">miosix::EDFSchedulerPriority</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::EDFSchedulerPriority Class Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::EDFSchedulerPriority" --> +<p><code>#include <edf_scheduler_types.h></code></p> + +<p><a href="classmiosix_1_1_e_d_f_scheduler_priority-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ac3b95b8d504e71004d2b64c8f4553074">EDFSchedulerPriority</a> (long long deadline)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ab53c3d57ccdf2f5fac67c796afb73e91">EDFSchedulerPriority</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">long long </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a1e1fa5e57a39e9bbec09eaca3043fe79">get</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a87c2a3428d3d3af53391494e81cf3687">validate</a> () const </td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class models the concept of priority for the EDF scheduler. Therefore, it represents a deadline, which is the absolute time withi which the thread should have completed its computation. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="ac3b95b8d504e71004d2b64c8f4553074"></a><!-- doxytag: member="miosix::EDFSchedulerPriority::EDFSchedulerPriority" ref="ac3b95b8d504e71004d2b64c8f4553074" args="(long long deadline)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::EDFSchedulerPriority::EDFSchedulerPriority </td> + <td>(</td> + <td class="paramtype">long long </td> + <td class="paramname"> <em>deadline</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor. Not explicit for backward compatibility. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>deadline</em> </td><td>the thread deadline. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ab53c3d57ccdf2f5fac67c796afb73e91"></a><!-- doxytag: member="miosix::EDFSchedulerPriority::EDFSchedulerPriority" ref="ab53c3d57ccdf2f5fac67c796afb73e91" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::EDFSchedulerPriority::EDFSchedulerPriority </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Default constructor. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a1e1fa5e57a39e9bbec09eaca3043fe79"></a><!-- doxytag: member="miosix::EDFSchedulerPriority::get" ref="a1e1fa5e57a39e9bbec09eaca3043fe79" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">long long miosix::EDFSchedulerPriority::get </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the priority value </dd></dl> + +</div> +</div> +<a class="anchor" id="a87c2a3428d3d3af53391494e81cf3687"></a><!-- doxytag: member="miosix::EDFSchedulerPriority::validate" ref="a87c2a3428d3d3af53391494e81cf3687" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::EDFSchedulerPriority::validate </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if this objects represents a valid deadline. </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>edf_scheduler_types.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data-members.html new file mode 100644 index 00000000..78393816 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::ExceptionHandlingData Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_exception_handling_data.html">miosix::ExceptionHandlingData</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_exception_handling_data.html#a24ba3640e643b05fa9212a213c012101">ExceptionHandlingData</a>()</td><td><a class="el" href="classmiosix_1_1_exception_handling_data.html">miosix::ExceptionHandlingData</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_exception_handling_data.html#a61144e6db2029974d7988aa079db59e3">~ExceptionHandlingData</a>()</td><td><a class="el" href="classmiosix_1_1_exception_handling_data.html">miosix::ExceptionHandlingData</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data.html b/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data.html new file mode 100644 index 00000000..869d4e69 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_exception_handling_data.html @@ -0,0 +1,98 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::ExceptionHandlingData Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_exception_handling_data.html">miosix::ExceptionHandlingData</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::ExceptionHandlingData Class Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::ExceptionHandlingData" --> +<p><code>#include <syscalls_types.h></code></p> + +<p><a href="classmiosix_1_1_exception_handling_data-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_exception_handling_data.html#a24ba3640e643b05fa9212a213c012101">ExceptionHandlingData</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_exception_handling_data.html#a61144e6db2029974d7988aa079db59e3">~ExceptionHandlingData</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This is a wrapper class that contains all per-thread data required to make C++ exceptions thread safe, irrespective of the ABI. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a24ba3640e643b05fa9212a213c012101"></a><!-- doxytag: member="miosix::ExceptionHandlingData::ExceptionHandlingData" ref="a24ba3640e643b05fa9212a213c012101" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::ExceptionHandlingData::ExceptionHandlingData </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, initializes the exception related data to their default value </p> + +</div> +</div> +<a class="anchor" id="a61144e6db2029974d7988aa079db59e3"></a><!-- doxytag: member="miosix::ExceptionHandlingData::~ExceptionHandlingData" ref="a61144e6db2029974d7988aa079db59e3" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::ExceptionHandlingData::~ExceptionHandlingData </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor, checks that no memory is leaked (should never happen) </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>syscalls_types.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock-members.html new file mode 100644 index 00000000..dfb63cbc --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::FastInterruptDisableLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#ac10ca2ad58013504750550337bdaf6cf">FastInterruptDisableLock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#aa060c8983f93de1724b51c361de76477">~FastInterruptDisableLock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock.html new file mode 100644 index 00000000..29e45ef7 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_disable_lock.html @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::FastInterruptDisableLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::FastInterruptDisableLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::FastInterruptDisableLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_fast_interrupt_disable_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#ac10ca2ad58013504750550337bdaf6cf">FastInterruptDisableLock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#aa060c8983f93de1724b51c361de76477">~FastInterruptDisableLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class is a RAII lock for disabling interrupts. This call avoids the error of not reenabling interrupts since it is done automatically. As opposed to <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a>, this version doesn't support nesting </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="ac10ca2ad58013504750550337bdaf6cf"></a><!-- doxytag: member="miosix::FastInterruptDisableLock::FastInterruptDisableLock" ref="ac10ca2ad58013504750550337bdaf6cf" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastInterruptDisableLock::FastInterruptDisableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, disables interrupts. </p> + +</div> +</div> +<a class="anchor" id="aa060c8983f93de1724b51c361de76477"></a><!-- doxytag: member="miosix::FastInterruptDisableLock::~FastInterruptDisableLock" ref="aa060c8983f93de1724b51c361de76477" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastInterruptDisableLock::~FastInterruptDisableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor, reenables interrupts </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock-members.html new file mode 100644 index 00000000..7af2379b --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::FastInterruptEnableLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#a1d0dc9ea0ee452a36d300b84c5e30a83">FastInterruptEnableLock</a>(FastInterruptDisableLock &l)</td><td><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#afb021a03eb3c46a8b8ee8d7854190f8c">~FastInterruptEnableLock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock.html new file mode 100644 index 00000000..43a11db9 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_interrupt_enable_lock.html @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::FastInterruptEnableLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::FastInterruptEnableLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::FastInterruptEnableLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_fast_interrupt_enable_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#a1d0dc9ea0ee452a36d300b84c5e30a83">FastInterruptEnableLock</a> (<a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">FastInterruptDisableLock</a> &l)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#afb021a03eb3c46a8b8ee8d7854190f8c">~FastInterruptEnableLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class allows to temporarily re enable interrpts in a scope where they are disabled with an <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">FastInterruptDisableLock</a>. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a1d0dc9ea0ee452a36d300b84c5e30a83"></a><!-- doxytag: member="miosix::FastInterruptEnableLock::FastInterruptEnableLock" ref="a1d0dc9ea0ee452a36d300b84c5e30a83" args="(FastInterruptDisableLock &l)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastInterruptEnableLock::FastInterruptEnableLock </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">FastInterruptDisableLock</a> & </td> + <td class="paramname"> <em>l</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, enables back interrupts. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>the InteruptDisableLock that disabled interrupts. Note that this parameter is not used internally. It is only required to prevent erroneous use of this class by making an instance of it without an active InterruptEnabeLock </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afb021a03eb3c46a8b8ee8d7854190f8c"></a><!-- doxytag: member="miosix::FastInterruptEnableLock::~FastInterruptEnableLock" ref="afb021a03eb3c46a8b8ee8d7854190f8c" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastInterruptEnableLock::~FastInterruptEnableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor. Disable back interrupts. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex-members.html new file mode 100644 index 00000000..62631dbf --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex-members.html @@ -0,0 +1,47 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::FastMutex Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182">DEFAULT</a> enum value</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#aca5cd49cdb704db34488ac7ef16bbd12">FastMutex</a>(Options opt=DEFAULT)</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a0ad94f95d78f1316da8b622928b6ff61">lock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">Options</a> enum name</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8">RECURSIVE</a> enum value</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a41f2a4d790a2a7ee8695768d2deae95a">tryLock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#a080ce00d76c005a73917038908fd824c">unlock</a>()</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_fast_mutex.html#ad320fd1b0d905f2d4fa9e8e0567181d2">~FastMutex</a>()</td><td><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex.html b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex.html new file mode 100644 index 00000000..f62d1dc9 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_fast_mutex.html @@ -0,0 +1,193 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::FastMutex Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-types">Public Types</a> | +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::FastMutex Class Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::FastMutex" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_fast_mutex-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-types"></a> +Public Types</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">Options</a> { <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182">DEFAULT</a>, +<a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8">RECURSIVE</a> + }</td></tr> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#aca5cd49cdb704db34488ac7ef16bbd12">FastMutex</a> (<a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">Options</a> opt=DEFAULT)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#a0ad94f95d78f1316da8b622928b6ff61">lock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#a41f2a4d790a2a7ee8695768d2deae95a">tryLock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#a080ce00d76c005a73917038908fd824c">unlock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html#ad320fd1b0d905f2d4fa9e8e0567181d2">~FastMutex</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Fast mutex without support for priority inheritance </p> +<hr/><h2>Member Enumeration Documentation</h2> +<a class="anchor" id="a981dd8f3190f81f16a773b3de6ae0891"></a><!-- doxytag: member="miosix::FastMutex::Options" ref="a981dd8f3190f81f16a773b3de6ae0891" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">miosix::FastMutex::Options</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> options, passed to the constructor to set additional options.<br/> + The DEFAULT option indicates the default <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> type. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182"></a><!-- doxytag: member="DEFAULT" ref="a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182" args="" -->DEFAULT</em> </td><td> +<p>Default mutex. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8"></a><!-- doxytag: member="RECURSIVE" ref="a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8" args="" -->RECURSIVE</em> </td><td> +<p><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> is recursive. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="aca5cd49cdb704db34488ac7ef16bbd12"></a><!-- doxytag: member="miosix::FastMutex::FastMutex" ref="aca5cd49cdb704db34488ac7ef16bbd12" args="(Options opt=DEFAULT)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastMutex::FastMutex </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">Options</a> </td> + <td class="paramname"> <em>opt</em> = <code>DEFAULT</code></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, initializes the mutex. </p> + +</div> +</div> +<a class="anchor" id="ad320fd1b0d905f2d4fa9e8e0567181d2"></a><!-- doxytag: member="miosix::FastMutex::~FastMutex" ref="ad320fd1b0d905f2d4fa9e8e0567181d2" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::FastMutex::~FastMutex </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a0ad94f95d78f1316da8b622928b6ff61"></a><!-- doxytag: member="miosix::FastMutex::lock" ref="a0ad94f95d78f1316da8b622928b6ff61" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::FastMutex::lock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Locks the critical section. If the critical section is already locked, the thread will be queued in a wait list. </p> + +</div> +</div> +<a class="anchor" id="a41f2a4d790a2a7ee8695768d2deae95a"></a><!-- doxytag: member="miosix::FastMutex::tryLock" ref="a41f2a4d790a2a7ee8695768d2deae95a" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::FastMutex::tryLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Acquires the lock only if the critical section is not already locked by other threads. Attempting to lock again a recursive mutex will fail, and the mutex' lock count will not be incremented. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the lock was acquired </dd></dl> + +</div> +</div> +<a class="anchor" id="a080ce00d76c005a73917038908fd824c"></a><!-- doxytag: member="miosix::FastMutex::unlock" ref="a080ce00d76c005a73917038908fd824c" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::FastMutex::unlock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Unlocks the critical section. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>sync.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem-members.html new file mode 100644 index 00000000..3221a24e --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem-members.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Filesystem Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_filesystem.html#a83ab051fd94eb41f38fb37c4c3c206b9">instance</a>()</td><td><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_filesystem.html#abaa17c0d791fabf357b0ed7ab7738d94">isMounted</a>() const </td><td><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_filesystem.html#a4506b58ded0e57ce555c9d21a0683801">mount</a>()</td><td><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_filesystem.html#a47abdaf552093b29eb78c722789324e7">umount</a>()</td><td><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td><td></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem.html b/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem.html new file mode 100644 index 00000000..03c6b7ff --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_filesystem.html @@ -0,0 +1,150 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Filesystem Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Filesystem Class Reference<br/> +<small> +[<a class="el" href="group___filesystem.html">Filesystem</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Filesystem" --> +<p><code>#include <filesystem.h></code></p> + +<p><a href="classmiosix_1_1_filesystem-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html#a4506b58ded0e57ce555c9d21a0683801">mount</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html#a47abdaf552093b29eb78c722789324e7">umount</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html#abaa17c0d791fabf357b0ed7ab7738d94">isMounted</a> () const </td></tr> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html#a83ab051fd94eb41f38fb37c4c3c206b9">instance</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class allows low level access to the filesystem. It contains member functions to mount and unmount the filesystem, and to check if it is mounted. There are also functions to perform file access that are primarily meant to be used by the C/C++ standard library integration layer (syscalls.cpp). </p> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a83ab051fd94eb41f38fb37c4c3c206b9"></a><!-- doxytag: member="miosix::Filesystem::instance" ref="a83ab051fd94eb41f38fb37c4c3c206b9" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> & miosix::Filesystem::instance </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the instance of the filesystem (singleton). </dd></dl> + +</div> +</div> +<a class="anchor" id="abaa17c0d791fabf357b0ed7ab7738d94"></a><!-- doxytag: member="miosix::Filesystem::isMounted" ref="abaa17c0d791fabf357b0ed7ab7738d94" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Filesystem::isMounted </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the filesystem is mounted </dd></dl> + +</div> +</div> +<a class="anchor" id="a4506b58ded0e57ce555c9d21a0683801"></a><!-- doxytag: member="miosix::Filesystem::mount" ref="a4506b58ded0e57ce555c9d21a0683801" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">char miosix::Filesystem::mount </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Try to mount the flesystem. Might take a long time (~ 1 sec if no errors, up to 3 sec in case of errors) </p> +<dl class="return"><dt><b>Returns:</b></dt><dd><ul> +<li>0 = on success</li> +<li>1 = in case of errors</li> +<li>2 = if no drive was found (for example there is no uSD card)</li> +<li>3 = if the filesystem is already mounted </li> +</ul> +</dd></dl> + +</div> +</div> +<a class="anchor" id="a47abdaf552093b29eb78c722789324e7"></a><!-- doxytag: member="miosix::Filesystem::umount" ref="a47abdaf552093b29eb78c722789324e7" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Filesystem::umount </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Unmounts the filesystem if it is mounted. All files that are open at this point are closed, and their file descriptors are invalidated. Allows safely removing the drive (example uSD card) </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>filesystem.h</li> +<li>filesystem.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock-members.html new file mode 100644 index 00000000..add722f5 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::InterruptDisableLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#aeee39d909e99f88789419bb2bbad59c7">InterruptDisableLock</a>()</td><td><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#a8989ce6efe8d4930cf045e01b157b288">~InterruptDisableLock</a>()</td><td><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock.html new file mode 100644 index 00000000..c93e7941 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_disable_lock.html @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::InterruptDisableLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::InterruptDisableLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::InterruptDisableLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_interrupt_disable_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#aeee39d909e99f88789419bb2bbad59c7">InterruptDisableLock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#a8989ce6efe8d4930cf045e01b157b288">~InterruptDisableLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class is a RAII lock for disabling interrupts. This call avoids the error of not reenabling interrupts since it is done automatically. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="aeee39d909e99f88789419bb2bbad59c7"></a><!-- doxytag: member="miosix::InterruptDisableLock::InterruptDisableLock" ref="aeee39d909e99f88789419bb2bbad59c7" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::InterruptDisableLock::InterruptDisableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, disables interrupts. </p> + +</div> +</div> +<a class="anchor" id="a8989ce6efe8d4930cf045e01b157b288"></a><!-- doxytag: member="miosix::InterruptDisableLock::~InterruptDisableLock" ref="a8989ce6efe8d4930cf045e01b157b288" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::InterruptDisableLock::~InterruptDisableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor, reenables interrupts </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock-members.html new file mode 100644 index 00000000..5e939ae4 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::InterruptEnableLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#ae02c7390bbaf3839a4401b4ea3172173">InterruptEnableLock</a>(InterruptDisableLock &l)</td><td><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#a0e1b60ac838afe74d1f7a906e3bb2282">~InterruptEnableLock</a>()</td><td><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock.html new file mode 100644 index 00000000..c67efad4 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_interrupt_enable_lock.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::InterruptEnableLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::InterruptEnableLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::InterruptEnableLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_interrupt_enable_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#ae02c7390bbaf3839a4401b4ea3172173">InterruptEnableLock</a> (<a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a> &l)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#a0e1b60ac838afe74d1f7a906e3bb2282">~InterruptEnableLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class allows to temporarily re enable interrpts in a scope where they are disabled with an <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a>.<br/> + Example: </p> +<div class="fragment"><pre class="fragment"> <span class="comment">//Interrupts enabled</span> + { + InterruptDisableLock dLock; + + <span class="comment">//Now interrupts disabled</span> + + { + <a class="code" href="classmiosix_1_1_interrupt_enable_lock.html#ae02c7390bbaf3839a4401b4ea3172173">InterruptEnableLock</a> eLock(dLock); + + <span class="comment">//Now interrupts back enabled</span> + } + + <span class="comment">//Now interrupts again disabled</span> + } + <span class="comment">//Finally interrupts enabled</span> +</pre></div> <hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="ae02c7390bbaf3839a4401b4ea3172173"></a><!-- doxytag: member="miosix::InterruptEnableLock::InterruptEnableLock" ref="ae02c7390bbaf3839a4401b4ea3172173" args="(InterruptDisableLock &l)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::InterruptEnableLock::InterruptEnableLock </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a> & </td> + <td class="paramname"> <em>l</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, enables back interrupts. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>the InteruptDisableLock that disabled interrupts. Note that this parameter is not used internally. It is only required to prevent erroneous use of this class by making an instance of it without an active InterruptEnabeLock </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a0e1b60ac838afe74d1f7a906e3bb2282"></a><!-- doxytag: member="miosix::InterruptEnableLock::~InterruptEnableLock" ref="a0e1b60ac838afe74d1f7a906e3bb2282" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::InterruptEnableLock::~InterruptEnableLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor. Disable back interrupts. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_lock-members.html new file mode 100644 index 00000000..0db3fb0f --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_lock-members.html @@ -0,0 +1,42 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Lock< T > Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_lock.html#a28807e63ba20acd9df2b55bccf8af2bf">get</a>()</td><td><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_lock.html#aefcff605f9b21d592febe4c1bffa7807">Lock</a>(T &m)</td><td><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a></td><td><code> [inline, explicit]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_lock.html#ad8e9566c5eead737472fda2fce2a0c88">~Lock</a>()</td><td><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_lock.html new file mode 100644 index 00000000..c341d0d7 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_lock.html @@ -0,0 +1,137 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Lock< T > Class Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Lock< T > Class Template Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Lock" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lock.html#aefcff605f9b21d592febe4c1bffa7807">Lock</a> (T &m)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lock.html#ad8e9566c5eead737472fda2fce2a0c88">~Lock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">T & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lock.html#a28807e63ba20acd9df2b55bccf8af2bf">get</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<typename T><br/> + class miosix::Lock< T ></h3> + +<p>Very simple RAII style class to lock a mutex in an exception-safe way. <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> is acquired by the constructor and released by the destructor. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="aefcff605f9b21d592febe4c1bffa7807"></a><!-- doxytag: member="miosix::Lock::Lock" ref="aefcff605f9b21d592febe4c1bffa7807" args="(T &m)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock</a>< T >::<a class="el" href="classmiosix_1_1_lock.html">Lock</a> </td> + <td>(</td> + <td class="paramtype">T & </td> + <td class="paramname"> <em>m</em></td> + <td> ) </td> + <td><code> [inline, explicit]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor: locks the mutex </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>m</em> </td><td>mutex to lock </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ad8e9566c5eead737472fda2fce2a0c88"></a><!-- doxytag: member="miosix::Lock::~Lock" ref="ad8e9566c5eead737472fda2fce2a0c88" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock</a>< T >::~<a class="el" href="classmiosix_1_1_lock.html">Lock</a> </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor: unlocks the mutex </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a28807e63ba20acd9df2b55bccf8af2bf"></a><!-- doxytag: member="miosix::Lock::get" ref="a28807e63ba20acd9df2b55bccf8af2bf" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">T& <a class="el" href="classmiosix_1_1_lock.html">miosix::Lock</a>< T >::get </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the locked mutex </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>sync.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority-members.html new file mode 100644 index 00000000..ecbc7ce1 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority-members.html @@ -0,0 +1,40 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::LowerPriority Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_lower_priority.html">miosix::LowerPriority</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_lower_priority.html#ae223edc017a90abdf70ab8996438cef2">operator()</a>(Thread *a, Thread *b)</td><td><a class="el" href="classmiosix_1_1_lower_priority.html">miosix::LowerPriority</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority.html b/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority.html new file mode 100644 index 00000000..e523c230 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_lower_priority.html @@ -0,0 +1,100 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::LowerPriority Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_lower_priority.html">miosix::LowerPriority</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::LowerPriority Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::LowerPriority" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_lower_priority-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lower_priority.html#ae223edc017a90abdf70ab8996438cef2">operator()</a> (<a class="el" href="classmiosix_1_1_thread.html">Thread</a> *a, <a class="el" href="classmiosix_1_1_thread.html">Thread</a> *b)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Function object to compare the priority of two threads. </p> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="ae223edc017a90abdf70ab8996438cef2"></a><!-- doxytag: member="miosix::LowerPriority::operator()" ref="ae223edc017a90abdf70ab8996438cef2" args="(Thread *a, Thread *b)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::LowerPriority::operator() </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td> + <td class="paramname"> <em>a</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td> + <td class="paramname"> <em>b</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>a</em> </td><td>first thread to compare </td></tr> + <tr><td valign="top"></td><td valign="top"><em>b</em> </td><td>second thread to compare </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if a->getPriority() < b->getPriority()</dd></dl> +<p>Can be called when the kernel is paused. or with interrupts disabled </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling-members.html new file mode 100644 index 00000000..ab54f8af --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling-members.html @@ -0,0 +1,46 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::MemoryProfiling Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#af09789fc33f2a1768cad7fad8cf7488b">getAbsoluteFreeHeap</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#af653e0d570d4cf3c358871c5c56e7f87">getAbsoluteFreeStack</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#ab49f252e7a4800d3b076102eb6562fed">getCurrentFreeHeap</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#ab4a3fc09f4d48b7761c52fbe18e683ee">getCurrentFreeStack</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#acc5945c41f0ccf00c35d256fe8dbf30a">getHeapSize</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#ab01517dcb40ae74f6cb17a54baf5d00d">getStackSize</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_memory_profiling.html#ad49f0f486487a4fa165883eb45ad5f4e">print</a>()</td><td><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling.html b/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling.html new file mode 100644 index 00000000..667628d0 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_memory_profiling.html @@ -0,0 +1,204 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::MemoryProfiling Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::MemoryProfiling Class Reference<br/> +<small> +[<a class="el" href="group___util.html">Utilities</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::MemoryProfiling" --> +<p><code>#include <util.h></code></p> + +<p><a href="classmiosix_1_1_memory_profiling-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#ad49f0f486487a4fa165883eb45ad5f4e">print</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#ab01517dcb40ae74f6cb17a54baf5d00d">getStackSize</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#af653e0d570d4cf3c358871c5c56e7f87">getAbsoluteFreeStack</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#ab4a3fc09f4d48b7761c52fbe18e683ee">getCurrentFreeStack</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#acc5945c41f0ccf00c35d256fe8dbf30a">getHeapSize</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#af09789fc33f2a1768cad7fad8cf7488b">getAbsoluteFreeHeap</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html#ab49f252e7a4800d3b076102eb6562fed">getCurrentFreeHeap</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class allows to gather memory statistics useful when developing embedded code. </p> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="af09789fc33f2a1768cad7fad8cf7488b"></a><!-- doxytag: member="miosix::MemoryProfiling::getAbsoluteFreeHeap" ref="af09789fc33f2a1768cad7fad8cf7488b" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getAbsoluteFreeHeap </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>absolute (not current) free heap.<br/> + Absolute free heap is the minimum free heap since the program started. <br/> +The heap is shared among all threads, therefore this function returns the same value regardless which thread is called in. </dd></dl> + +</div> +</div> +<a class="anchor" id="af653e0d570d4cf3c358871c5c56e7f87"></a><!-- doxytag: member="miosix::MemoryProfiling::getAbsoluteFreeStack" ref="af653e0d570d4cf3c358871c5c56e7f87" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getAbsoluteFreeStack </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>absolute free stack of current thread.<br/> + Absolute free stack is the minimum free stack since the thread was created. </dd></dl> + +</div> +</div> +<a class="anchor" id="ab49f252e7a4800d3b076102eb6562fed"></a><!-- doxytag: member="miosix::MemoryProfiling::getCurrentFreeHeap" ref="ab49f252e7a4800d3b076102eb6562fed" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getCurrentFreeHeap </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>current free heap.<br/> + Current free heap is the free heap at the moment when the this function is called.<br/> + The heap is shared among all threads, therefore this function returns the same value regardless which thread is called in. </dd></dl> + +</div> +</div> +<a class="anchor" id="ab4a3fc09f4d48b7761c52fbe18e683ee"></a><!-- doxytag: member="miosix::MemoryProfiling::getCurrentFreeStack" ref="ab4a3fc09f4d48b7761c52fbe18e683ee" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getCurrentFreeStack </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>current free stack of current thread.<br/> + Current free stack is the free stack at the moment when the this function is called. </dd></dl> + +</div> +</div> +<a class="anchor" id="acc5945c41f0ccf00c35d256fe8dbf30a"></a><!-- doxytag: member="miosix::MemoryProfiling::getHeapSize" ref="acc5945c41f0ccf00c35d256fe8dbf30a" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getHeapSize </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>heap size which is defined in the linker script.<br/> +The heap is shared among all threads, therefore this function returns the same value regardless which thread is called in. </dd></dl> + +</div> +</div> +<a class="anchor" id="ab01517dcb40ae74f6cb17a54baf5d00d"></a><!-- doxytag: member="miosix::MemoryProfiling::getStackSize" ref="ab01517dcb40ae74f6cb17a54baf5d00d" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int miosix::MemoryProfiling::getStackSize </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>stack size of current thread. </dd></dl> + +</div> +</div> +<a class="anchor" id="ad49f0f486487a4fa165883eb45ad5f4e"></a><!-- doxytag: member="miosix::MemoryProfiling::print" ref="ad49f0f486487a4fa165883eb45ad5f4e" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::MemoryProfiling::print </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Prints a summary of the information that can be gathered from this class. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>util.h</li> +<li>util.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_mutex-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_mutex-members.html new file mode 100644 index 00000000..307fb36a --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_mutex-members.html @@ -0,0 +1,46 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Mutex Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8">DEFAULT</a> enum value</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#a6ff0ea4734654c2048ef44cec62b5ed6">lock</a>()</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#a63a4d940d2bbb57522dcb23f0fc704a2">Mutex</a>(Options opt=DEFAULT)</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">Options</a> enum name</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5">RECURSIVE</a> enum value</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#a3e7e51aa095528a36e49dd5f672ddc74">tryLock</a>()</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_mutex.html#a10974326b33d887fa7ad1f910b70ed50">unlock</a>()</td><td><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_mutex.html b/miosix/_doc/doxygen/html/classmiosix_1_1_mutex.html new file mode 100644 index 00000000..22afef21 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_mutex.html @@ -0,0 +1,177 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Mutex Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-types">Public Types</a> | +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Mutex Class Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Mutex" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_mutex-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-types"></a> +Public Types</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">Options</a> { <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8">DEFAULT</a>, +<a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5">RECURSIVE</a> + }</td></tr> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html#a63a4d940d2bbb57522dcb23f0fc704a2">Mutex</a> (<a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">Options</a> opt=DEFAULT)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html#a6ff0ea4734654c2048ef44cec62b5ed6">lock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html#a3e7e51aa095528a36e49dd5f672ddc74">tryLock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html#a10974326b33d887fa7ad1f910b70ed50">unlock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>A mutex class with support for priority inheritance. If a thread tries to enter a critical section which is not free, it will be put to sleep and added to a queue of sleeping threads, ordered by priority. The thread that is into the critical section inherits the highest priority among the threads that are waiting if it is higher than its original priority.<br/> + This mutex is meant to be a static or global class. Dynamically creating a mutex with new or on the stack must be done with care, to avoid deleting a locked mutex, and to avoid situations where a thread tries to lock a deleted mutex.<br/> + </p> +<hr/><h2>Member Enumeration Documentation</h2> +<a class="anchor" id="acdb0fa35e637a14b1504a8f58c8bba2f"></a><!-- doxytag: member="miosix::Mutex::Options" ref="acdb0fa35e637a14b1504a8f58c8bba2f" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">miosix::Mutex::Options</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> options, passed to the constructor to set additional options.<br/> + The DEFAULT option indicates the default <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> type. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8"></a><!-- doxytag: member="DEFAULT" ref="acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8" args="" -->DEFAULT</em> </td><td> +<p>Default mutex. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5"></a><!-- doxytag: member="RECURSIVE" ref="acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5" args="" -->RECURSIVE</em> </td><td> +<p><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> is recursive. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a63a4d940d2bbb57522dcb23f0fc704a2"></a><!-- doxytag: member="miosix::Mutex::Mutex" ref="a63a4d940d2bbb57522dcb23f0fc704a2" args="(Options opt=DEFAULT)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::Mutex::Mutex </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">Options</a> </td> + <td class="paramname"> <em>opt</em> = <code>DEFAULT</code></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, initializes the mutex. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a6ff0ea4734654c2048ef44cec62b5ed6"></a><!-- doxytag: member="miosix::Mutex::lock" ref="a6ff0ea4734654c2048ef44cec62b5ed6" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Mutex::lock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Locks the critical section. If the critical section is already locked, the thread will be queued in a wait list. </p> + +</div> +</div> +<a class="anchor" id="a3e7e51aa095528a36e49dd5f672ddc74"></a><!-- doxytag: member="miosix::Mutex::tryLock" ref="a3e7e51aa095528a36e49dd5f672ddc74" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Mutex::tryLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Acquires the lock only if the critical section is not already locked by other threads. Attempting to lock again a recursive mutex will fail, and the mutex' lock count will not be incremented. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the lock was acquired </dd></dl> + +</div> +</div> +<a class="anchor" id="a10974326b33d887fa7ad1f910b70ed50"></a><!-- doxytag: member="miosix::Mutex::unlock" ref="a10974326b33d887fa7ad1f910b70ed50" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Mutex::unlock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Unlocks the critical section. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>sync.h</li> +<li>sync.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock-members.html new file mode 100644 index 00000000..069520fb --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::PauseKernelLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a6666bc670b9eb36ce7797b9b231e4bf8">PauseKernelLock</a>()</td><td><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a0980986878a2bc171af039d70a1e9e7a">~PauseKernelLock</a>()</td><td><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock.html new file mode 100644 index 00000000..684cf8b9 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_pause_kernel_lock.html @@ -0,0 +1,101 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::PauseKernelLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::PauseKernelLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::PauseKernelLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_pause_kernel_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a6666bc670b9eb36ce7797b9b231e4bf8">PauseKernelLock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a0980986878a2bc171af039d70a1e9e7a">~PauseKernelLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class is a RAII lock for pausing the kernel. This call avoids the error of not restarting the kernel since it is done automatically. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a6666bc670b9eb36ce7797b9b231e4bf8"></a><!-- doxytag: member="miosix::PauseKernelLock::PauseKernelLock" ref="a6666bc670b9eb36ce7797b9b231e4bf8" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::PauseKernelLock::PauseKernelLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, pauses the kernel. </p> + +</div> +</div> +<a class="anchor" id="a0980986878a2bc171af039d70a1e9e7a"></a><!-- doxytag: member="miosix::PauseKernelLock::~PauseKernelLock" ref="a0980986878a2bc171af039d70a1e9e7a" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::PauseKernelLock::~PauseKernelLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor, restarts the kernel </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority-members.html new file mode 100644 index 00000000..32d9d30c --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority-members.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::PrioritySchedulerPriority Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#aaed4edb129dd8ceadc7b36dc63e74cc5">get</a>() const </td><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a206ab3dfa014606172a906aef6c99545">PrioritySchedulerPriority</a>(short int priority)</td><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a0f2dc299a1f8dbfcb3e44ef3b22d5d49">PrioritySchedulerPriority</a>()</td><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a17300acc93554e4a115a40f99a84f392">validate</a>() const </td><td><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority.html b/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority.html new file mode 100644 index 00000000..30c6dede --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_priority_scheduler_priority.html @@ -0,0 +1,144 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::PrioritySchedulerPriority Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">miosix::PrioritySchedulerPriority</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::PrioritySchedulerPriority Class Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::PrioritySchedulerPriority" --> +<p><code>#include <priority_scheduler_types.h></code></p> + +<p><a href="classmiosix_1_1_priority_scheduler_priority-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a206ab3dfa014606172a906aef6c99545">PrioritySchedulerPriority</a> (short int priority)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a0f2dc299a1f8dbfcb3e44ef3b22d5d49">PrioritySchedulerPriority</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">short int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#aaed4edb129dd8ceadc7b36dc63e74cc5">get</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a17300acc93554e4a115a40f99a84f392">validate</a> () const </td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class models the concept of priority for the priority scheduler. In this scheduler the priority is simply a short int with values ranging from 0 to PRIORITY_MAX-1, higher values mean higher priority, and the special value -1 reserved for the idle thread. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a206ab3dfa014606172a906aef6c99545"></a><!-- doxytag: member="miosix::PrioritySchedulerPriority::PrioritySchedulerPriority" ref="a206ab3dfa014606172a906aef6c99545" args="(short int priority)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::PrioritySchedulerPriority::PrioritySchedulerPriority </td> + <td>(</td> + <td class="paramtype">short int </td> + <td class="paramname"> <em>priority</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor. Not explicit for backward compatibility. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>the desired priority value. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a0f2dc299a1f8dbfcb3e44ef3b22d5d49"></a><!-- doxytag: member="miosix::PrioritySchedulerPriority::PrioritySchedulerPriority" ref="a0f2dc299a1f8dbfcb3e44ef3b22d5d49" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::PrioritySchedulerPriority::PrioritySchedulerPriority </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Default constructor. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="aaed4edb129dd8ceadc7b36dc63e74cc5"></a><!-- doxytag: member="miosix::PrioritySchedulerPriority::get" ref="aaed4edb129dd8ceadc7b36dc63e74cc5" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">short int miosix::PrioritySchedulerPriority::get </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the priority value </dd></dl> + +</div> +</div> +<a class="anchor" id="a17300acc93554e4a115a40f99a84f392"></a><!-- doxytag: member="miosix::PrioritySchedulerPriority::validate" ref="a17300acc93554e4a115a40f99a84f392" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::PrioritySchedulerPriority::validate </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if this objects represents a valid priority. Note that the value -1 is considered not valid, because it is reserved for the idle thread. </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>priority_scheduler_types.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_queue-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_queue-members.html new file mode 100644 index 00000000..7de5da4a --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_queue-members.html @@ -0,0 +1,52 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Queue< T, len > Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#ade3ad87c4c3fdac0a2bdd755ff3c8971">get</a>(T &elem)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a545ed38e44e319303e0d657de8195cec">IRQget</a>(T &elem)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a2875b9df92f6a5db148b3e4f7ad989bf">IRQget</a>(T &elem, bool &hppw)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#aebf1e9ff8643933b679b5d6e2ecfe343">IRQput</a>(T elem)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a8a0fd6d06459b6a2c72ed07afaad76fd">IRQput</a>(T elem, bool &hppw)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a8d7aea4c62e78d4221dbaab13538e695">IRQreset</a>()</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a8d18f593639d0d7eef52b6267f83ce34">isEmpty</a>() const </td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#affa922a8101a173168daca418eed8c4b">isFull</a>() const </td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a40eac0f03500a45a6ec3a5af3e0909be">put</a>(T elem)</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a45ac6bfe191bc6d52089215b52863732">Queue</a>()</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#a36d52ae7f77126add31096faa97e45b0">reset</a>()</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#af77abf62e5999b15fa5fcb3101f4801d">waitUntilNotEmpty</a>()</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_queue.html#af3809d4c8d0ae31774ca5e985b1810e5">waitUntilNotFull</a>()</td><td><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_queue.html b/miosix/_doc/doxygen/html/classmiosix_1_1_queue.html new file mode 100644 index 00000000..59885b6d --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_queue.html @@ -0,0 +1,420 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Queue< T, len > Class Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Queue< T, len > Class Template Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Queue" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_queue-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a45ac6bfe191bc6d52089215b52863732">Queue</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a8d18f593639d0d7eef52b6267f83ce34">isEmpty</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#affa922a8101a173168daca418eed8c4b">isFull</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#af77abf62e5999b15fa5fcb3101f4801d">waitUntilNotEmpty</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#af3809d4c8d0ae31774ca5e985b1810e5">waitUntilNotFull</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#ade3ad87c4c3fdac0a2bdd755ff3c8971">get</a> (T &elem)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a40eac0f03500a45a6ec3a5af3e0909be">put</a> (T elem)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a545ed38e44e319303e0d657de8195cec">IRQget</a> (T &elem)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a2875b9df92f6a5db148b3e4f7ad989bf">IRQget</a> (T &elem, bool &hppw)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#aebf1e9ff8643933b679b5d6e2ecfe343">IRQput</a> (T elem)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a8a0fd6d06459b6a2c72ed07afaad76fd">IRQput</a> (T elem, bool &hppw)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a36d52ae7f77126add31096faa97e45b0">reset</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html#a8d7aea4c62e78d4221dbaab13538e695">IRQreset</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<typename T, unsigned int len><br/> + class miosix::Queue< T, len ></h3> + +<p>A queue, used to transfer data between TWO threads, or between ONE thread and an IRQ.<br/> + If you need to tranfer data between more than two threads, you need to use mutexes to ensure that only one thread at a time calls get, and only one thread at a time calls put.<br/> + This queue is meant to be a static or global class. Dynamically creating a queue with new or on the stack must be done with care, to avoid deleting a queue with a waiting thread, and to avoid situations where a thread tries to access a deleted queue. </p> +<dl><dt><b>Template Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>T</em> </td><td>the type of elements in the queue </td></tr> + <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>the length of the <a class="el" href="classmiosix_1_1_queue.html">Queue</a> </td></tr> + </table> + </dd> +</dl> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a45ac6bfe191bc6d52089215b52863732"></a><!-- doxytag: member="miosix::Queue::Queue" ref="a45ac6bfe191bc6d52089215b52863732" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::<a class="el" href="classmiosix_1_1_queue.html">Queue</a> </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, create a new empty queue. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="ade3ad87c4c3fdac0a2bdd755ff3c8971"></a><!-- doxytag: member="miosix::Queue::get" ref="ade3ad87c4c3fdac0a2bdd755ff3c8971" args="(T &elem)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::get </td> + <td>(</td> + <td class="paramtype">T & </td> + <td class="paramname"> <em>elem</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get an element from the queue. If the queue is empty, then sleep until an element becomes available. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>an element from the queue </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a2875b9df92f6a5db148b3e4f7ad989bf"></a><!-- doxytag: member="miosix::Queue::IRQget" ref="a2875b9df92f6a5db148b3e4f7ad989bf" args="(T &elem, bool &hppw)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::IRQget </td> + <td>(</td> + <td class="paramtype">T & </td> + <td class="paramname"> <em>elem</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">bool & </td> + <td class="paramname"> <em>hppw</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get an element from the queue, only if the queue is not empty.<br/> + Can ONLY be used inside an IRQ, or when interrupts are disabled. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>an element from the queue. The element is valid only if the return value is true </td></tr> + <tr><td valign="top"></td><td valign="top"><em>hppw</em> </td><td>is not modified if no thread is woken or if the woken thread has a lower or equal priority than the currently running thread, else is set to true </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue was not empty </dd></dl> + +</div> +</div> +<a class="anchor" id="a545ed38e44e319303e0d657de8195cec"></a><!-- doxytag: member="miosix::Queue::IRQget" ref="a545ed38e44e319303e0d657de8195cec" args="(T &elem)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::IRQget </td> + <td>(</td> + <td class="paramtype">T & </td> + <td class="paramname"> <em>elem</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Get an element from the queue, only if the queue is not empty.<br/> + Can ONLY be used inside an IRQ, or when interrupts are disabled. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>an element from the queue. The element is valid only if the return value is true </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue was not empty </dd></dl> + +</div> +</div> +<a class="anchor" id="aebf1e9ff8643933b679b5d6e2ecfe343"></a><!-- doxytag: member="miosix::Queue::IRQput" ref="aebf1e9ff8643933b679b5d6e2ecfe343" args="(T elem)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::IRQput </td> + <td>(</td> + <td class="paramtype">T </td> + <td class="paramname"> <em>elem</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Put an element to the queue, only if th queue is not full.<br/> + Can ONLY be used inside an IRQ, or when interrupts are disabled. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>element to add. The element has been added only if the return value is true </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue was not full. </dd></dl> + +</div> +</div> +<a class="anchor" id="a8a0fd6d06459b6a2c72ed07afaad76fd"></a><!-- doxytag: member="miosix::Queue::IRQput" ref="a8a0fd6d06459b6a2c72ed07afaad76fd" args="(T elem, bool &hppw)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::IRQput </td> + <td>(</td> + <td class="paramtype">T </td> + <td class="paramname"> <em>elem</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">bool & </td> + <td class="paramname"> <em>hppw</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Put an element to the queue, only if th queue is not full.<br/> + Can ONLY be used inside an IRQ, or when interrupts are disabled. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>element to add. The element has been added only if the return value is true </td></tr> + <tr><td valign="top"></td><td valign="top"><em>hppw</em> </td><td>is not modified if no thread is woken or if the woken thread has a lower or equal priority than the currently running thread, else is set to true </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue was not full. </dd></dl> + +</div> +</div> +<a class="anchor" id="a8d7aea4c62e78d4221dbaab13538e695"></a><!-- doxytag: member="miosix::Queue::IRQreset" ref="a8d7aea4c62e78d4221dbaab13538e695" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::IRQreset </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as <a class="el" href="classmiosix_1_1_queue.html#a36d52ae7f77126add31096faa97e45b0">reset()</a>, but to be used only inside IRQs or when interrupts are disabled. </p> + +</div> +</div> +<a class="anchor" id="a8d18f593639d0d7eef52b6267f83ce34"></a><!-- doxytag: member="miosix::Queue::isEmpty" ref="a8d18f593639d0d7eef52b6267f83ce34" args="() const " --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::isEmpty </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue is empty </dd></dl> + +</div> +</div> +<a class="anchor" id="affa922a8101a173168daca418eed8c4b"></a><!-- doxytag: member="miosix::Queue::isFull" ref="affa922a8101a173168daca418eed8c4b" args="() const " --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::isFull </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const<code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the queue is full </dd></dl> + +</div> +</div> +<a class="anchor" id="a40eac0f03500a45a6ec3a5af3e0909be"></a><!-- doxytag: member="miosix::Queue::put" ref="a40eac0f03500a45a6ec3a5af3e0909be" args="(T elem)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::put </td> + <td>(</td> + <td class="paramtype">T </td> + <td class="paramname"> <em>elem</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Put an element to the queue. If the queue is full, then sleep until a place becomes available. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>elem</em> </td><td>element to add to the queue </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a36d52ae7f77126add31096faa97e45b0"></a><!-- doxytag: member="miosix::Queue::reset" ref="a36d52ae7f77126add31096faa97e45b0" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::reset </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Clear all items in the queue.<br/> + Cannot be used inside an IRQ </p> + +</div> +</div> +<a class="anchor" id="af77abf62e5999b15fa5fcb3101f4801d"></a><!-- doxytag: member="miosix::Queue::waitUntilNotEmpty" ref="af77abf62e5999b15fa5fcb3101f4801d" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::waitUntilNotEmpty </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If a queue is empty, waits until the queue is not empty. </p> + +</div> +</div> +<a class="anchor" id="af3809d4c8d0ae31774ca5e985b1810e5"></a><!-- doxytag: member="miosix::Queue::waitUntilNotFull" ref="af3809d4c8d0ae31774ca5e985b1810e5" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T , unsigned int len> </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_queue.html">miosix::Queue</a>< T, len >::waitUntilNotFull </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If a queue is full, waits until the queue is not full </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>sync.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock-members.html new file mode 100644 index 00000000..969feefc --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock-members.html @@ -0,0 +1,41 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::RestartKernelLock Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_restart_kernel_lock.html#a56fdd23f84789f624cf85cd3ff54d045">RestartKernelLock</a>(PauseKernelLock &l)</td><td><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_restart_kernel_lock.html#ac026033adfae754118e6025ad7ce01bb">~RestartKernelLock</a>()</td><td><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock.html new file mode 100644 index 00000000..9400a74c --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_restart_kernel_lock.html @@ -0,0 +1,124 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::RestartKernelLock Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::RestartKernelLock Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::RestartKernelLock" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_restart_kernel_lock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_restart_kernel_lock.html#a56fdd23f84789f624cf85cd3ff54d045">RestartKernelLock</a> (<a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a> &l)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_restart_kernel_lock.html#ac026033adfae754118e6025ad7ce01bb">~RestartKernelLock</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class allows to temporarily restart kernel in a scope where it is paused with an <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a>.<br/> + Example: </p> +<div class="fragment"><pre class="fragment"> <span class="comment">//Kernel started</span> + { + PauseKernelLock dLock; + + <span class="comment">//Now kernel paused</span> + + { + <a class="code" href="classmiosix_1_1_restart_kernel_lock.html#a56fdd23f84789f624cf85cd3ff54d045">RestartKernelLock</a> eLock(dLock); + + <span class="comment">//Now kernel back started</span> + } + + <span class="comment">//Now kernel again paused</span> + } + <span class="comment">//Finally kernel started</span> +</pre></div> <hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a56fdd23f84789f624cf85cd3ff54d045"></a><!-- doxytag: member="miosix::RestartKernelLock::RestartKernelLock" ref="a56fdd23f84789f624cf85cd3ff54d045" args="(PauseKernelLock &l)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::RestartKernelLock::RestartKernelLock </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a> & </td> + <td class="paramname"> <em>l</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, restarts kernel. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>the <a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a> that disabled interrupts. Note that this parameter is not used internally. It is only required to prevent erroneous use of this class by making an instance of it without an active <a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a> </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ac026033adfae754118e6025ad7ce01bb"></a><!-- doxytag: member="miosix::RestartKernelLock::~RestartKernelLock" ref="ac026033adfae754118e6025ad7ce01bb" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::RestartKernelLock::~RestartKernelLock </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor. Disable back interrupts. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>kernel.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c-members.html new file mode 100644 index 00000000..89d0463c --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c-members.html @@ -0,0 +1,45 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::SoftwareI2C< SDA, SCL > Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#affca2c005e549cf0d244064d69808313">init</a>()</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#ad16eb98c9e1089e21571d1f7c552a151">recvWithAck</a>()</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#a48d8aeebedba01e3dc11866710b873fb">recvWithNack</a>()</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#a6e0535020ec3adf027a4ac77481e6e01">send</a>(unsigned char data)</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#abcbeb09130637bce45c8827e8098a5ff">sendStart</a>()</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_i2_c.html#a66a312f667a52046e45035588caff0b4">sendStop</a>()</td><td><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c.html b/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c.html new file mode 100644 index 00000000..7c0312b5 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_software_i2_c.html @@ -0,0 +1,206 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::SoftwareI2C< SDA, SCL > Class Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C< SDA, SCL ></a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::SoftwareI2C< SDA, SCL > Class Template Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::SoftwareI2C" --> +<p><code>#include <software_i2c.h></code></p> + +<p><a href="classmiosix_1_1_software_i2_c-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#affca2c005e549cf0d244064d69808313">init</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#abcbeb09130637bce45c8827e8098a5ff">sendStart</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#a66a312f667a52046e45035588caff0b4">sendStop</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#a6e0535020ec3adf027a4ac77481e6e01">send</a> (unsigned char data)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#ad16eb98c9e1089e21571d1f7c552a151">recvWithAck</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html#a48d8aeebedba01e3dc11866710b873fb">recvWithNack</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<typename SDA, typename SCL><br/> + class miosix::SoftwareI2C< SDA, SCL ></h3> + +<p>Software I2C class. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>SDA</em> </td><td>SDA gpio pin. Pass a Gpio<P,N> class </td></tr> + <tr><td valign="top"></td><td valign="top"><em>SCL</em> </td><td>SCL gpio pin. Pass a Gpio<P,N> class </td></tr> + </table> + </dd> +</dl> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="affca2c005e549cf0d244064d69808313"></a><!-- doxytag: member="miosix::SoftwareI2C::init" ref="affca2c005e549cf0d244064d69808313" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::init </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Initializes the SPI software peripheral </p> + +</div> +</div> +<a class="anchor" id="ad16eb98c9e1089e21571d1f7c552a151"></a><!-- doxytag: member="miosix::SoftwareI2C::recvWithAck" ref="ad16eb98c9e1089e21571d1f7c552a151" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">unsigned char <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::recvWithAck </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Receive a byte from a device. Always acknowledges back. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>the received byte </dd></dl> + +</div> +</div> +<a class="anchor" id="a48d8aeebedba01e3dc11866710b873fb"></a><!-- doxytag: member="miosix::SoftwareI2C::recvWithNack" ref="a48d8aeebedba01e3dc11866710b873fb" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">unsigned char <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::recvWithNack </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Receive a byte from a device. Never acknowledges back. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>the received byte </dd></dl> + +</div> +</div> +<a class="anchor" id="a6e0535020ec3adf027a4ac77481e6e01"></a><!-- doxytag: member="miosix::SoftwareI2C::send" ref="a6e0535020ec3adf027a4ac77481e6e01" args="(unsigned char data)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">bool <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::send </td> + <td>(</td> + <td class="paramtype">unsigned char </td> + <td class="paramname"> <em>data</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send a byte to a device. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>byte to send </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the device acknowledged the byte </dd></dl> + +</div> +</div> +<a class="anchor" id="abcbeb09130637bce45c8827e8098a5ff"></a><!-- doxytag: member="miosix::SoftwareI2C::sendStart" ref="abcbeb09130637bce45c8827e8098a5ff" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::sendStart </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send a start condition </p> + +</div> +</div> +<a class="anchor" id="a66a312f667a52046e45035588caff0b4"></a><!-- doxytag: member="miosix::SoftwareI2C::sendStop" ref="a66a312f667a52046e45035588caff0b4" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SDA , typename SCL > </div> + <table class="memname"> + <tr> + <td class="memname">void <a class="el" href="classmiosix_1_1_software_i2_c.html">miosix::SoftwareI2C</a>< SDA, SCL >::sendStop </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send a stop condition </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>software_i2c.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i-members.html new file mode 100644 index 00000000..fe143ded --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i-members.html @@ -0,0 +1,45 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::SoftwareSPI< SI, SO, SCK, CE, numNops > Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#a7e2ba605d5a06df4e27c346f23b7559c">ceHigh</a>()</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [inline, static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#a357a64d9abe58149039a90813a0e710c">ceLow</a>()</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [inline, static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#a0d8dc57b9c5bbca82f830a286e1e43e3">init</a>()</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [inline, static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#a28c74624fdf2699bbd9a16a0b4041df4">sendRecvChar</a>(unsigned char data)</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#a2338776e2f0242f95b8e416b269ae4e7">sendRecvLong</a>(unsigned int data)</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_software_s_p_i.html#aa4087c723fe51f7172c54c24a51e56c3">sendRecvShort</a>(unsigned short data)</td><td><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i.html b/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i.html new file mode 100644 index 00000000..318fef57 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_software_s_p_i.html @@ -0,0 +1,223 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::SoftwareSPI< SI, SO, SCK, CE, numNops > Class Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::SoftwareSPI< SI, SO, SCK, CE, numNops > Class Template Reference</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::SoftwareSPI" --> +<p><code>#include <software_spi.h></code></p> + +<p><a href="classmiosix_1_1_software_s_p_i-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#a0d8dc57b9c5bbca82f830a286e1e43e3">init</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#a28c74624fdf2699bbd9a16a0b4041df4">sendRecvChar</a> (unsigned char data)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#aa4087c723fe51f7172c54c24a51e56c3">sendRecvShort</a> (unsigned short data)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#a2338776e2f0242f95b8e416b269ae4e7">sendRecvLong</a> (unsigned int data)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#a357a64d9abe58149039a90813a0e710c">ceLow</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html#a7e2ba605d5a06df4e27c346f23b7559c">ceHigh</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<typename SI, typename SO, typename SCK, typename CE, unsigned numNops><br/> + class miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></h3> + +<p>Software implementation of the SPI protocol (CPOL=0, CPHA=0 mode) </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>SI</em> </td><td>an instance of the Gpio class indicating the SPI input pin </td></tr> + <tr><td valign="top"></td><td valign="top"><em>SO</em> </td><td>an instance of the Gpio class indicating the SPI output pin </td></tr> + <tr><td valign="top"></td><td valign="top"><em>SCK</em> </td><td>an instance of the Gpio class indicating the SPI clock pin </td></tr> + <tr><td valign="top"></td><td valign="top"><em>CE</em> </td><td>an instance of the Gpio class indicating the SPI chip enable pin </td></tr> + <tr><td valign="top"></td><td valign="top"><em>numNops</em> </td><td>number of nops to add to the send loop to slow down SPI clock </td></tr> + </table> + </dd> +</dl> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a7e2ba605d5a06df4e27c346f23b7559c"></a><!-- doxytag: member="miosix::SoftwareSPI::ceHigh" ref="a7e2ba605d5a06df4e27c346f23b7559c" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">static void <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::ceHigh </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline, static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Pull CE high, indicating transmission end. </p> + +</div> +</div> +<a class="anchor" id="a357a64d9abe58149039a90813a0e710c"></a><!-- doxytag: member="miosix::SoftwareSPI::ceLow" ref="a357a64d9abe58149039a90813a0e710c" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">static void <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::ceLow </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline, static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Pull CE low, indicating transmission start. </p> + +</div> +</div> +<a class="anchor" id="a0d8dc57b9c5bbca82f830a286e1e43e3"></a><!-- doxytag: member="miosix::SoftwareSPI::init" ref="a0d8dc57b9c5bbca82f830a286e1e43e3" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">static void <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::init </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline, static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Initialize the SPI interface </p> + +</div> +</div> +<a class="anchor" id="a28c74624fdf2699bbd9a16a0b4041df4"></a><!-- doxytag: member="miosix::SoftwareSPI::sendRecvChar" ref="a28c74624fdf2699bbd9a16a0b4041df4" args="(unsigned char data)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">unsigned char <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::sendRecvChar </td> + <td>(</td> + <td class="paramtype">unsigned char </td> + <td class="paramname"> <em>data</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send a byte and, since SPI is full duplex, simultaneously receive a byte </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>to send </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>data received </dd></dl> + +</div> +</div> +<a class="anchor" id="a2338776e2f0242f95b8e416b269ae4e7"></a><!-- doxytag: member="miosix::SoftwareSPI::sendRecvLong" ref="a2338776e2f0242f95b8e416b269ae4e7" args="(unsigned int data)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">unsigned int <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::sendRecvLong </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>data</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send an int and, since SPI is full duplex, simultaneously receive an int </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>to send </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>data received </dd></dl> + +</div> +</div> +<a class="anchor" id="aa4087c723fe51f7172c54c24a51e56c3"></a><!-- doxytag: member="miosix::SoftwareSPI::sendRecvShort" ref="aa4087c723fe51f7172c54c24a51e56c3" args="(unsigned short data)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename SI , typename SO , typename SCK , typename CE , unsigned numNops> </div> + <table class="memname"> + <tr> + <td class="memname">unsigned short <a class="el" href="classmiosix_1_1_software_s_p_i.html">miosix::SoftwareSPI</a>< SI, SO, SCK, CE, numNops >::sendRecvShort </td> + <td>(</td> + <td class="paramtype">unsigned short </td> + <td class="paramname"> <em>data</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Send an unsigned short and, since SPI is full duplex, simultaneously receive an unsigned short </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>data</em> </td><td>to send </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>data received </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>software_spi.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_thread-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_thread-members.html new file mode 100644 index 00000000..a118ed03 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_thread-members.html @@ -0,0 +1,66 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Thread Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ac5a454f2617a4a28f00842b1097fc363">create</a>(void *(*startfunc)(void *), unsigned int stacksize, Priority priority=Priority(), void *argv=NULL, unsigned short options=DEFAULT)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a12d19634d30226cb4441a77b233a5bf2">create</a>(void(*startfunc)(void *), unsigned int stacksize, Priority priority=Priority(), void *argv=NULL, unsigned short options=DEFAULT)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e">DEFAULT</a> enum value</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ae7817dd59f317a04d3ce3793419d25a4">detach</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#adb06c8f5761db66d1089a61db71dcf92">exists</a>(Thread *p)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a884bfd106afeb274c339d383702b4aec">getCurrentThread</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#aacba6298a092d5335f6dbefe56a611ec">getPriority</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a572b87e4c6174ad4137f964e40bbe515">IRQexists</a>(Thread *p)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ae3918e86d91bbe3062f907004ba7f579">IRQgetCurrentThread</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a585c7966f59855aafd771c7733a38296">IRQgetPriority</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a6aed14f0f04e69f922aba8f0cf7ac0c6">IRQwait</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ab34c3cbac8aa609a5c6e4abc384a9faa">IRQwakeup</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#afb1d97df689c7104bec35858bbaf4ae6">isDetached</a>() const </td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a968b43a36ecdf124d72a5d8ddfa2a3b9">join</a>(void **result=NULL)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7">JOINABLE</a> enum value</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daaf">Options</a> enum name</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a88af678dc4032a5f92da12917947d881">PKwakeup</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a448486b757b8ede4edaa8edc39962b17">result</a></td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#af6c4237506c533c00a0144632685b17d">setPriority</a>(Priority pr)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">sleep</a>(unsigned int ms)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#aac116a322826366c7b3269db3ab4be73">sleepUntil</a>(long long absoluteTime)</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#ae086b5bf2b3b55972ad696ec820c8f5e">terminate</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">testTerminate</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">wait</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a4d8096414686bc7519454101f55306d2">waitingForJoin</a></td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_thread.html#a75823b1288a7defcb715fd6591a23b2d">yield</a>()</td><td><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_thread.html b/miosix/_doc/doxygen/html/classmiosix_1_1_thread.html new file mode 100644 index 00000000..45f01b7f --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_thread.html @@ -0,0 +1,686 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Thread Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-types">Public Types</a> | +<a href="#pub-methods">Public Member Functions</a> | +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Thread Class Reference<br/> +<small> +[<a class="el" href="group___kernel.html">Kernel</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Thread" --> +<p><code>#include <kernel.h></code></p> + +<p><a href="classmiosix_1_1_thread-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-types"></a> +Public Types</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daaf">Options</a> { <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e">DEFAULT</a> = 0, +<a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7">JOINABLE</a> = 1<<0 + }</td></tr> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#aacba6298a092d5335f6dbefe56a611ec">getPriority</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ae086b5bf2b3b55972ad696ec820c8f5e">terminate</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a88af678dc4032a5f92da12917947d881">PKwakeup</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ae7817dd59f317a04d3ce3793419d25a4">detach</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#afb1d97df689c7104bec35858bbaf4ae6">isDetached</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a968b43a36ecdf124d72a5d8ddfa2a3b9">join</a> (void **<a class="el" href="classmiosix_1_1_thread.html#a448486b757b8ede4edaa8edc39962b17">result</a>=NULL)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a585c7966f59855aafd771c7733a38296">IRQgetPriority</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ab34c3cbac8aa609a5c6e4abc384a9faa">IRQwakeup</a> ()</td></tr> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ac5a454f2617a4a28f00842b1097fc363">create</a> (void *(*startfunc)(void *), unsigned int stacksize, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> priority=<a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a>(), void *argv=NULL, unsigned short options=DEFAULT)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a12d19634d30226cb4441a77b233a5bf2">create</a> (void(*startfunc)(void *), unsigned int stacksize, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> priority=<a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a>(), void *argv=NULL, unsigned short options=DEFAULT)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a75823b1288a7defcb715fd6591a23b2d">yield</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">testTerminate</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">sleep</a> (unsigned int ms)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#aac116a322826366c7b3269db3ab4be73">sleepUntil</a> (long long absoluteTime)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a884bfd106afeb274c339d383702b4aec">getCurrentThread</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#adb06c8f5761db66d1089a61db71dcf92">exists</a> (<a class="el" href="classmiosix_1_1_thread.html">Thread</a> *p)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#af6c4237506c533c00a0144632685b17d">setPriority</a> (<a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> pr)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">wait</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static <a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#ae3918e86d91bbe3062f907004ba7f579">IRQgetCurrentThread</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a6aed14f0f04e69f922aba8f0cf7ac0c6">IRQwait</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html#a572b87e4c6174ad4137f964e40bbe515">IRQexists</a> (<a class="el" href="classmiosix_1_1_thread.html">Thread</a> *p)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This class represents a thread. It has methods for creating, deleting and handling threads.<br/> +It has private constructor and destructor, since memory for a thread is handled by the kernel.<br/> +To create a thread use the static producer method <a class="el" href="classmiosix_1_1_thread.html#ac5a454f2617a4a28f00842b1097fc363">create()</a>.<br/> + Methods that have an effect on the current thread, that is, the thread that is calling the method are static.<br/> + Calls to non static methods must be done with care, because a thread can terminate at any time. For example, if you call <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup()</a> on a terminated thread, the behavior is undefined. </p> +<hr/><h2>Member Enumeration Documentation</h2> +<a class="anchor" id="acaef68f0e93f6ad933442d87c210daaf"></a><!-- doxytag: member="miosix::Thread::Options" ref="acaef68f0e93f6ad933442d87c210daaf" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daaf">miosix::Thread::Options</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p><a class="el" href="classmiosix_1_1_thread.html">Thread</a> options, can be passed to <a class="el" href="classmiosix_1_1_thread.html#ac5a454f2617a4a28f00842b1097fc363">Thread::create</a> to set additional options of the thread. More options can be specified simultaneously by ORing them together. The DEFAULT option indicates the default thread creation. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e"></a><!-- doxytag: member="DEFAULT" ref="acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e" args="" -->DEFAULT</em> </td><td> +<p>Default thread options. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7"></a><!-- doxytag: member="JOINABLE" ref="acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7" args="" -->JOINABLE</em> </td><td> +<p><a class="el" href="classmiosix_1_1_thread.html">Thread</a> is joinable instead of detached. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="ac5a454f2617a4a28f00842b1097fc363"></a><!-- doxytag: member="miosix::Thread::create" ref="ac5a454f2617a4a28f00842b1097fc363" args="(void *(*startfunc)(void *), unsigned int stacksize, Priority priority=Priority(), void *argv=NULL, unsigned short options=DEFAULT)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * miosix::Thread::create </td> + <td>(</td> + <td class="paramtype">void *(*)(void *) </td> + <td class="paramname"> <em>startfunc</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>stacksize</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> </td> + <td class="paramname"> <em>priority</em> = <code><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a>()</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"> <em>argv</em> = <code>NULL</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned short </td> + <td class="paramname"> <em>options</em> = <code>DEFAULT</code></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Producer method, creates a new thread. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>startfunc</em> </td><td>the entry point function for the thread </td></tr> + <tr><td valign="top"></td><td valign="top"><em>stacksize</em> </td><td>size of thread stack, its minimum is the constant STACK_MIN. The size of the stack must be divisible by 4, otherwise it will be rounded to a number divisible by 4. </td></tr> + <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>the thread's priority, between 0 (lower) and PRIORITY_MAX-1 (higher) </td></tr> + <tr><td valign="top"></td><td valign="top"><em>argv</em> </td><td>a void* pointer that is passed as pararmeter to the entry point function </td></tr> + <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>thread options, such ad <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7" title="Thread is joinable instead of detached.">Thread::JOINABLE</a> </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>a reference to the thread created, that can be used, for example, to delete it, or NULL in case of errors.</dd></dl> +<p>Calls errorHandler(INVALID_PARAMETERS) if stacksize or priority are invalid, and errorHandler(OUT_OF_MEMORY) if the heap is full. Can be called when the kernel is paused. Note: this is the only method of this class that can be called BEFORE the kernel is started. </p> + +</div> +</div> +<a class="anchor" id="a12d19634d30226cb4441a77b233a5bf2"></a><!-- doxytag: member="miosix::Thread::create" ref="a12d19634d30226cb4441a77b233a5bf2" args="(void(*startfunc)(void *), unsigned int stacksize, Priority priority=Priority(), void *argv=NULL, unsigned short options=DEFAULT)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * miosix::Thread::create </td> + <td>(</td> + <td class="paramtype">void(*)(void *) </td> + <td class="paramname"> <em>startfunc</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>stacksize</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> </td> + <td class="paramname"> <em>priority</em> = <code><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a>()</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">void * </td> + <td class="paramname"> <em>argv</em> = <code>NULL</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned short </td> + <td class="paramname"> <em>options</em> = <code>DEFAULT</code></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as create(void (*startfunc)(void *), unsigned int stacksize, Priority priority=1, void *argv=NULL) but in this case the entry point of the thread returns a void* </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>startfunc</em> </td><td>the entry point function for the thread </td></tr> + <tr><td valign="top"></td><td valign="top"><em>stacksize</em> </td><td>size of thread stack, its minimum is the constant STACK_MIN. The size of the stack must be divisible by 4, otherwise it will be rounded to a number divisible by 4. </td></tr> + <tr><td valign="top"></td><td valign="top"><em>priority</em> </td><td>the thread's priority, between 0 (lower) and PRIORITY_MAX-1 (higher) </td></tr> + <tr><td valign="top"></td><td valign="top"><em>argv</em> </td><td>a void* pointer that is passed as pararmeter to the entry point function </td></tr> + <tr><td valign="top"></td><td valign="top"><em>options</em> </td><td>thread options, such ad <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7" title="Thread is joinable instead of detached.">Thread::JOINABLE</a> </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>a reference to the thread created, that can be used, for example, to delete it, or NULL in case of errors. </dd></dl> + +</div> +</div> +<a class="anchor" id="ae7817dd59f317a04d3ce3793419d25a4"></a><!-- doxytag: member="miosix::Thread::detach" ref="ae7817dd59f317a04d3ce3793419d25a4" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::detach </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Detach the thread if it was joinable, otherwise do nothing.<br/> + If called on a deleted joinable thread on which join was not yet called, it allows the thread's memory to be deallocated.<br/> + If called on a thread that is not yet deleted, the call detaches the thread without deleting it. If called on an already detached thread, it has undefined behaviour. </p> + +</div> +</div> +<a class="anchor" id="adb06c8f5761db66d1089a61db71dcf92"></a><!-- doxytag: member="miosix::Thread::exists" ref="adb06c8f5761db66d1089a61db71dcf92" args="(Thread *p)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Thread::exists </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td> + <td class="paramname"> <em>p</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Check if a thread exists </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>p</em> </td><td>thread to check </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if thread exists, false if does not exist or has been deleted. A joinable thread is considered existing until it has been joined, even if it returns from its entry point (unless it is detached and terminates).</dd></dl> +<p>Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a884bfd106afeb274c339d383702b4aec"></a><!-- doxytag: member="miosix::Thread::getCurrentThread" ref="a884bfd106afeb274c339d383702b4aec" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * miosix::Thread::getCurrentThread </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Return a pointer to the <a class="el" href="classmiosix_1_1_thread.html">Thread</a> class of the current thread. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>a pointer to the current thread.</dd></dl> +<p>Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="aacba6298a092d5335f6dbefe56a611ec"></a><!-- doxytag: member="miosix::Thread::getPriority" ref="aacba6298a092d5335f6dbefe56a611ec" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> miosix::Thread::getPriority </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Returns the priority of a thread.<br/> + To get the priority of the current thread use: </p> +<div class="fragment"><pre class="fragment"> <a class="code" href="classmiosix_1_1_thread.html#a884bfd106afeb274c339d383702b4aec">Thread::getCurrentThread</a>()->getPriority(); +</pre></div><p> If the thread is currently locking one or more mutexes, this member function returns the current priority, which can be higher than the original priority due to priority inheritance. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>current priority of the thread</dd></dl> +<p>Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a572b87e4c6174ad4137f964e40bbe515"></a><!-- doxytag: member="miosix::Thread::IRQexists" ref="a572b87e4c6174ad4137f964e40bbe515" args="(Thread *p)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Thread::IRQexists </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * </td> + <td class="paramname"> <em>p</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as <a class="el" href="classmiosix_1_1_thread.html#adb06c8f5761db66d1089a61db71dcf92">exists()</a> but is meant to be called only inside an IRQ or when interrupts are disabled. </p> + +</div> +</div> +<a class="anchor" id="ae3918e86d91bbe3062f907004ba7f579"></a><!-- doxytag: member="miosix::Thread::IRQgetCurrentThread" ref="ae3918e86d91bbe3062f907004ba7f579" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_thread.html">Thread</a> * miosix::Thread::IRQgetCurrentThread </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as get_current_thread(), but meant to be used insida an IRQ, when interrupts are disabled or when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a585c7966f59855aafd771c7733a38296"></a><!-- doxytag: member="miosix::Thread::IRQgetPriority" ref="a585c7966f59855aafd771c7733a38296" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> miosix::Thread::IRQgetPriority </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as <a class="el" href="classmiosix_1_1_thread.html#aacba6298a092d5335f6dbefe56a611ec">getPriority()</a>, but meant to be used inside an IRQ, when interrupts are disabled or when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a6aed14f0f04e69f922aba8f0cf7ac0c6"></a><!-- doxytag: member="miosix::Thread::IRQwait" ref="a6aed14f0f04e69f922aba8f0cf7ac0c6" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::IRQwait </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as <a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">wait()</a>, but is meant to be used only inside an IRQ or when interrupts are disabled.<br/> + Note: this method is meant to put the current thread in wait status in a piece of code where interrupts are disbled; it returns immediately, so the user is responsible for re-enabling interrupts and calling yield to effectively put the thread in wait status.</p> +<div class="fragment"><pre class="fragment"> <a class="code" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts</a>(); + ... + <a class="code" href="classmiosix_1_1_thread.html#a6aed14f0f04e69f922aba8f0cf7ac0c6">Thread::IRQwait</a>();<span class="comment">//Return immediately</span> + <a class="code" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts</a>(); + <a class="code" href="classmiosix_1_1_thread.html#a75823b1288a7defcb715fd6591a23b2d">Thread::yield</a>();<span class="comment">//After this, thread is in wait status</span> +</pre></div> +</div> +</div> +<a class="anchor" id="ab34c3cbac8aa609a5c6e4abc384a9faa"></a><!-- doxytag: member="miosix::Thread::IRQwakeup" ref="ab34c3cbac8aa609a5c6e4abc384a9faa" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::IRQwakeup </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Same as <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup()</a>, but is meant to be used only inside an IRQ or when interrupts are disabled. </p> + +</div> +</div> +<a class="anchor" id="afb1d97df689c7104bec35858bbaf4ae6"></a><!-- doxytag: member="miosix::Thread::isDetached" ref="afb1d97df689c7104bec35858bbaf4ae6" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Thread::isDetached </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const</td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if the thread is detached </dd></dl> + +</div> +</div> +<a class="anchor" id="a968b43a36ecdf124d72a5d8ddfa2a3b9"></a><!-- doxytag: member="miosix::Thread::join" ref="a968b43a36ecdf124d72a5d8ddfa2a3b9" args="(void **result=NULL)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Thread::join </td> + <td>(</td> + <td class="paramtype">void ** </td> + <td class="paramname"> <em>result</em> = <code>NULL</code></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Wait until a joinable thread is terminated.<br/> + If the thread already terminated, this function returns immediately.<br/> + Calling <a class="el" href="classmiosix_1_1_thread.html#a968b43a36ecdf124d72a5d8ddfa2a3b9">join()</a> on the same thread multiple times, from the same or multiple threads is not recomended, but in the current implementation the first call will wait for join, and the other will return false.<br/> + Trying to join the thread join is called in returns false, but must be avoided.<br/> + Calling join on a detached thread might cause undefined behaviour. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>result</em> </td><td>If the entry point function of the thread to join returns void *, the return value of the entry point is stored here, otherwise the content of this variable is undefined. If NULL is passed as result the return value will not be stored. </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>true on success, false on failure </dd></dl> + +</div> +</div> +<a class="anchor" id="a88af678dc4032a5f92da12917947d881"></a><!-- doxytag: member="miosix::Thread::PKwakeup" ref="a88af678dc4032a5f92da12917947d881" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::PKwakeup </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Wakeup a thread. <br/> +Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="af6c4237506c533c00a0144632685b17d"></a><!-- doxytag: member="miosix::Thread::setPriority" ref="af6c4237506c533c00a0144632685b17d" args="(Priority pr)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::setPriority </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">Priority</a> </td> + <td class="paramname"> <em>pr</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Set the priority of this thread.<br/> + This member function changed from previous Miosix versions since it is now static. This implies a thread can no longer set the priority of another thread. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>pr</em> </td><td>desired priority. Must be 0<=pr<PRIORITY_MAX</td></tr> + </table> + </dd> +</dl> +<p>Calls errorHandler(INVALID_PARAMETERS) if pr is not within bounds.</p> +<p>Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="ad7f738dc69a918960fe814a062696c5c"></a><!-- doxytag: member="miosix::Thread::sleep" ref="ad7f738dc69a918960fe814a062696c5c" args="(unsigned int ms)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::sleep </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>ms</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Put the thread to sleep for a number of milliseconds.<br/> +The actual precision depends on the kernel tick used. If the specified wait time is lower than the tick accuracy, the thread will be put to sleep for one tick.<br/> +Maximum sleep time is (2^32-1) / TICK_FREQ. If a sleep time higher than that value is specified, the behaviour is undefined. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>ms</em> </td><td>the number of millisecond. If it is ==0 this method will return immediately</td></tr> + </table> + </dd> +</dl> +<p>CANNOT be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="aac116a322826366c7b3269db3ab4be73"></a><!-- doxytag: member="miosix::Thread::sleepUntil" ref="aac116a322826366c7b3269db3ab4be73" args="(long long absoluteTime)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::sleepUntil </td> + <td>(</td> + <td class="paramtype">long long </td> + <td class="paramname"> <em>absoluteTime</em></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Put the thread to sleep until the specified absolute time is reached. If the time is in the past, returns immediately. To make a periodic thread, this is the recomended way </p> +<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> periodicThread() + { + <span class="comment">//Run every 90 milliseconds</span> + <span class="keyword">const</span> <span class="keywordtype">int</span> period=<span class="keyword">static_cast<</span><span class="keywordtype">int</span><span class="keyword">></span>(TICK_FREQ*0.09); + <span class="keywordtype">long</span> <span class="keywordtype">long</span> tick=<a class="code" href="group___kernel.html#gad16c495ced6659e8bc0bb371362674ef">getTick</a>(); + <span class="keywordflow">for</span>(;;) + { + <span class="comment">//Do work</span> + tick+=period; + <a class="code" href="classmiosix_1_1_thread.html#aac116a322826366c7b3269db3ab4be73">Thread::sleepUntil</a>(tick); + } + } +</pre></div> <dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>absoluteTime</em> </td><td>when to wake up</td></tr> + </table> + </dd> +</dl> +<p>CANNOT be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="ae086b5bf2b3b55972ad696ec820c8f5e"></a><!-- doxytag: member="miosix::Thread::terminate" ref="ae086b5bf2b3b55972ad696ec820c8f5e" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::terminate </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Suggests a thread to terminate itself. Note that this method only makes <a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">testTerminate()</a> return true on the specified thread. If the thread does not call <a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">testTerminate()</a>, or if it calls it but does not delete itself by returning from entry point function, it will NEVER terminate. The user is responsible for implementing correctly this functionality.<br/> +<a class="el" href="classmiosix_1_1_thread.html">Thread</a> termination is implemented like this to give time to a thread to deallocate resources, close files... before terminating. <br/> +Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a0ef492878827009d2d55442266d13b99"></a><!-- doxytag: member="miosix::Thread::testTerminate" ref="a0ef492878827009d2d55442266d13b99" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Thread::testTerminate </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This method needs to be called periodically inside the thread's main loop. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if somebody outside the thread called <a class="el" href="classmiosix_1_1_thread.html#ae086b5bf2b3b55972ad696ec820c8f5e">terminate()</a> on this thread.</dd></dl> +<p>If it returns true the thread must free all resources and terminate by returning from its main function. <br/> +Can be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a435fe4527c1fdfcbebf886cd748a3fd4"></a><!-- doxytag: member="miosix::Thread::wait" ref="a435fe4527c1fdfcbebf886cd748a3fd4" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::wait </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This method stops the thread until another thread calls <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup()</a> on this thread.<br/> +Calls to wait are not cumulative. If <a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">wait()</a> is called two times, only one call to <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">wakeup()</a> is needed to wake the thread. <br/> +CANNOT be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="af19b8a2ab852ea771a2e2b95bb0ba2a8"></a><!-- doxytag: member="miosix::Thread::wakeup" ref="af19b8a2ab852ea771a2e2b95bb0ba2a8" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::wakeup </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Wakeup a thread. <br/> +CANNOT be called when the kernel is paused. </p> + +</div> +</div> +<a class="anchor" id="a75823b1288a7defcb715fd6591a23b2d"></a><!-- doxytag: member="miosix::Thread::yield" ref="a75823b1288a7defcb715fd6591a23b2d" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Thread::yield </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>When called, suggests the kernel to pause the current thread, and run another one. <br/> +CANNOT be called when the kernel is paused. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>kernel.h</li> +<li>kernel.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_timer-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_timer-members.html new file mode 100644 index 00000000..fd84238a --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_timer-members.html @@ -0,0 +1,45 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Timer Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#adb3725edbcdf2bdf9d3ec7912947af95">clear</a>()</td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#ade4ade4f99dfcb3b6fc0b02b3f112371">interval</a>() const </td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#a9644000ad11c2ee1208e597bed72ff5a">isRunning</a>() const </td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#afe2e62decbd592394b3278febf6097f7">start</a>()</td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#ad14fa7e00b7d9646b31bb85ecd475671">stop</a>()</td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_timer.html#a18fe7d4606d1370054aee4dbc956f3a2">Timer</a>()</td><td><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td><td></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_timer.html b/miosix/_doc/doxygen/html/classmiosix_1_1_timer.html new file mode 100644 index 00000000..e81d1ea2 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_timer.html @@ -0,0 +1,183 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Timer Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Timer Class Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Timer" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_timer-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#a18fe7d4606d1370054aee4dbc956f3a2">Timer</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#afe2e62decbd592394b3278febf6097f7">start</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#ad14fa7e00b7d9646b31bb85ecd475671">stop</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#a9644000ad11c2ee1208e597bed72ff5a">isRunning</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#ade4ade4f99dfcb3b6fc0b02b3f112371">interval</a> () const </td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html#adb3725edbcdf2bdf9d3ec7912947af95">clear</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>A timer that can be used to measure time intervals.<br/> +Its resolution equals the kernel tick.<br/> +Maximum interval is 2^31-1 ticks. </p> +<hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a18fe7d4606d1370054aee4dbc956f3a2"></a><!-- doxytag: member="miosix::Timer::Timer" ref="a18fe7d4606d1370054aee4dbc956f3a2" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">miosix::Timer::Timer </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor. <a class="el" href="classmiosix_1_1_timer.html">Timer</a> is initialized in stopped status. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="adb3725edbcdf2bdf9d3ec7912947af95"></a><!-- doxytag: member="miosix::Timer::clear" ref="adb3725edbcdf2bdf9d3ec7912947af95" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Timer::clear </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Clear the timer and set it to not running state. </p> + +</div> +</div> +<a class="anchor" id="ade4ade4f99dfcb3b6fc0b02b3f112371"></a><!-- doxytag: member="miosix::Timer::interval" ref="ade4ade4f99dfcb3b6fc0b02b3f112371" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int miosix::Timer::interval </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>get the interval, in kernel ticks. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>the number of tick between start and stop. Returns -1 if the timer was never started, if interval is called after start but before stop, or if it overflowed.</dd></dl> +<p>To read the vaue of a timer without stopping it, you can use its copy constructor to create another timer, and stop it while the first timer keeps running. </p> + +</div> +</div> +<a class="anchor" id="a9644000ad11c2ee1208e597bed72ff5a"></a><!-- doxytag: member="miosix::Timer::isRunning" ref="a9644000ad11c2ee1208e597bed72ff5a" args="() const " --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::Timer::isRunning </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td> const</td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if timer is running </dd></dl> + +</div> +</div> +<a class="anchor" id="afe2e62decbd592394b3278febf6097f7"></a><!-- doxytag: member="miosix::Timer::start" ref="afe2e62decbd592394b3278febf6097f7" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Timer::start </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Start the timer </p> + +</div> +</div> +<a class="anchor" id="ad14fa7e00b7d9646b31bb85ecd475671"></a><!-- doxytag: member="miosix::Timer::stop" ref="ad14fa7e00b7d9646b31bb85ecd475671" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::Timer::stop </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Stop the timer. After stop, <a class="el" href="classmiosix_1_1_timer.html">Timer</a> can be started and stopped again to count non-contiguous timer intervals. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>sync.h</li> +<li>sync.cpp</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_unlock-members.html b/miosix/_doc/doxygen/html/classmiosix_1_1_unlock-members.html new file mode 100644 index 00000000..4ac9d9b6 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_unlock-members.html @@ -0,0 +1,43 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix::Unlock< T > Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_unlock.html#a0185d0ca22404fe71d69bf831ff3266c">get</a>()</td><td><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_unlock.html#a5ef3238bc134f5de60cf3ba88e3c8c3d">Unlock</a>(Lock< T > &l)</td><td><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td><td><code> [inline, explicit]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_unlock.html#a4c3c1864d2ba24597b2bd4913a36e248">Unlock</a>(T &m)</td><td><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td><td><code> [inline]</code></td></tr> + <tr class="memlist"><td><a class="el" href="classmiosix_1_1_unlock.html#a53f826f17c0c7792d296c4a8dff4fef5">~Unlock</a>()</td><td><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td><td><code> [inline]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix_1_1_unlock.html b/miosix/_doc/doxygen/html/classmiosix_1_1_unlock.html new file mode 100644 index 00000000..6810a534 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix_1_1_unlock.html @@ -0,0 +1,183 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix::Unlock< T > Class Template Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><a class="el" href="namespacemiosix.html">miosix</a> </li> + <li><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-methods">Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix::Unlock< T > Class Template Reference<br/> +<small> +[<a class="el" href="group___sync.html">Syncronization</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix::Unlock" --> +<p><code>#include <sync.h></code></p> + +<p><a href="classmiosix_1_1_unlock-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html#a5ef3238bc134f5de60cf3ba88e3c8c3d">Unlock</a> (<a class="el" href="classmiosix_1_1_lock.html">Lock</a>< T > &l)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html#a4c3c1864d2ba24597b2bd4913a36e248">Unlock</a> (T &m)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html#a53f826f17c0c7792d296c4a8dff4fef5">~Unlock</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">T & </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html#a0185d0ca22404fe71d69bf831ff3266c">get</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<h3>template<typename T><br/> + class miosix::Unlock< T ></h3> + +<p>This class allows to temporarily re unlock a mutex in a scope where it is locked <br/> + Example: </p> +<div class="fragment"><pre class="fragment"> Mutex m; + + <span class="comment">//Mutex unlocked</span> + { + Lock<Mutex> dLock(m); + + <span class="comment">//Now mutex locked</span> + + { + Unlock<Mutex> eLock(dLock); + + <span class="comment">//Now mutex back unlocked</span> + } + + <span class="comment">//Now mutex again locked</span> + } + <span class="comment">//Finally mutex unlocked</span> +</pre></div> <hr/><h2>Constructor & Destructor Documentation</h2> +<a class="anchor" id="a5ef3238bc134f5de60cf3ba88e3c8c3d"></a><!-- doxytag: member="miosix::Unlock::Unlock" ref="a5ef3238bc134f5de60cf3ba88e3c8c3d" args="(Lock< T > &l)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock</a>< T >::<a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> </td> + <td>(</td> + <td class="paramtype"><a class="el" href="classmiosix_1_1_lock.html">Lock</a>< T > & </td> + <td class="paramname"> <em>l</em></td> + <td> ) </td> + <td><code> [inline, explicit]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, unlock mutex. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>l</em> </td><td>the <a class="el" href="classmiosix_1_1_lock.html">Lock</a> that locked the mutex. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a4c3c1864d2ba24597b2bd4913a36e248"></a><!-- doxytag: member="miosix::Unlock::Unlock" ref="a4c3c1864d2ba24597b2bd4913a36e248" args="(T &m)" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock</a>< T >::<a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> </td> + <td>(</td> + <td class="paramtype">T & </td> + <td class="paramname"> <em>m</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Constructor, unlock mutex. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>m</em> </td><td>a locked mutex. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a53f826f17c0c7792d296c4a8dff4fef5"></a><!-- doxytag: member="miosix::Unlock::~Unlock" ref="a53f826f17c0c7792d296c4a8dff4fef5" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock</a>< T >::~<a class="el" href="classmiosix_1_1_unlock.html">Unlock</a> </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Destructor. Disable back interrupts. </p> + +</div> +</div> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="a0185d0ca22404fe71d69bf831ff3266c"></a><!-- doxytag: member="miosix::Unlock::get" ref="a0185d0ca22404fe71d69bf831ff3266c" args="()" --> +<div class="memitem"> +<div class="memproto"> +<div class="memtemplate"> +template<typename T > </div> + <table class="memname"> + <tr> + <td class="memname">T& <a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock</a>< T >::get </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>the unlocked mutex </dd></dl> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li>sync.h</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer-members.html b/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer-members.html new file mode 100644 index 00000000..2b1e40b7 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer-members.html @@ -0,0 +1,40 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Member List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix_private::AuxiliaryTimer Member List</h1> </div> +</div> +<div class="contents"> +This is the complete list of members for <a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a>, including all inherited members.<table> + <tr class="memlist"><td><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html#ad1e3b40dd8f36c71f5306b5b3a8b8ea9">IRQinit</a>()</td><td><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a></td><td><code> [static]</code></td></tr> +</table></div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer.html b/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer.html new file mode 100644 index 00000000..5ebcc4c6 --- /dev/null +++ b/miosix/_doc/doxygen/html/classmiosix__private_1_1_auxiliary_timer.html @@ -0,0 +1,82 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix_private::AuxiliaryTimer Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="navpath"> + <ul> + <li><b>miosix_private</b> </li> + <li><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a> </li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#pub-static-methods">Static Public Member Functions</a> </div> + <div class="headertitle"> +<h1>miosix_private::AuxiliaryTimer Class Reference<br/> +<small> +[<a class="el" href="group___interfaces.html">Interfaces</a>]</small> +</h1> </div> +</div> +<div class="contents"> +<!-- doxytag: class="miosix_private::AuxiliaryTimer" --> +<p><code>#include <portability.h></code></p> + +<p><a href="classmiosix__private_1_1_auxiliary_timer-members.html">List of all members.</a></p> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">static void </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html#ad1e3b40dd8f36c71f5306b5b3a8b8ea9">IRQinit</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Allow access to a second timer to allow variable burst preemption together with fixed tick timekeeping. </p> +<hr/><h2>Member Function Documentation</h2> +<a class="anchor" id="ad1e3b40dd8f36c71f5306b5b3a8b8ea9"></a><!-- doxytag: member="miosix_private::AuxiliaryTimer::IRQinit" ref="ad1e3b40dd8f36c71f5306b5b3a8b8ea9" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">static void miosix_private::AuxiliaryTimer::IRQinit </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [static]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Initializes the auxiliary timer. </p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following file:<ul> +<li><a class="el" href="portability_8h.html">portability.h</a></li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/closed.png b/miosix/_doc/doxygen/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d4bd9fef2272c74b94762c9e2496177017775e GIT binary patch literal 126 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?Ts>VJLn;{G-gV@4P~>3_ z=vtdOt5H9J?Lv#*340yI=2EVzoO{!}G7Rs}&@THM#LvOz!}@Z0g~P<dLNmEEw9G9% dE^_|M(Of7ZAn<upCj$cmgQu&X%Q~loCIH=rB{Tp4 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/console_8h.html b/miosix/_doc/doxygen/html/console_8h.html new file mode 100644 index 00000000..9d38ab78 --- /dev/null +++ b/miosix/_doc/doxygen/html/console_8h.html @@ -0,0 +1,51 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: console.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#namespaces">Namespaces</a> </div> + <div class="headertitle"> +<h1>console.h File Reference</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td></tr> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html">miosix</a></td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file only contains the Console class </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/delays_8h.html b/miosix/_doc/doxygen/html/delays_8h.html new file mode 100644 index 00000000..062db037 --- /dev/null +++ b/miosix/_doc/doxygen/html/delays_8h.html @@ -0,0 +1,52 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: delays.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#namespaces">Namespaces</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>delays.h File Reference</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html">miosix</a></td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">miosix::delayMs</a> (unsigned int mseconds)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">miosix::delayUs</a> (unsigned int useconds)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file contains two functions, <a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">delayMs()</a> and <a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">delayUs()</a> which implement busy wait delays. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/disk_8h.html b/miosix/_doc/doxygen/html/disk_8h.html new file mode 100644 index 00000000..39c420ed --- /dev/null +++ b/miosix/_doc/doxygen/html/disk_8h.html @@ -0,0 +1,47 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: disk.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#namespaces">Namespaces</a> </div> + <div class="headertitle"> +<h1>disk.h File Reference</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html">miosix</a></td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file only contains the Disk class </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/doxygen.css b/miosix/_doc/doxygen/html/doxygen.css new file mode 100644 index 00000000..658686fe --- /dev/null +++ b/miosix/_doc/doxygen/html/doxygen.css @@ -0,0 +1,656 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font-family: Lucida Grande, Verdana, Geneva, Arial, sans-serif; + font-size: 12px; +} + +/* @group Heading Levels */ + +h1 { + font-size: 150%; +} + +h2 { + font-size: 120%; +} + +h3 { + font-size: 100%; +} + +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, p.starttd { + margin-top: 2px; +} + +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; + margin: 2px; + padding: 2px; +} + +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 { + color: #4665A2; +} + +a.codeRef { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +.fragment { + font-family: monospace, fixed; + font-size: 105%; +} + +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%; +} + +div.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; + -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); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + margin-bottom: 6px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 10px; + margin-right: 10px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; +} + +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 +} + +/* @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; +} + +.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; +} + +.memItemLeft, .memItemRight, .memTemplParams { + border-top: 1px solid #C4CFE5; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 3px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.memitem { + padding: 0; + margin-bottom: 10px; +} + +.memname { + white-space: nowrap; + font-weight: bold; + margin-left: 6px; +} + +.memproto { + 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); + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 8px; + -moz-border-radius-topleft: 8px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 8px; + -webkit-border-top-left-radius: 8px; + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + +} + +.memdoc { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 2px 5px; + background-color: #FBFCFD; + border-top-width: 0; + /* firefox specific markup */ + -moz-border-radius-bottomleft: 8px; + -moz-border-radius-bottomright: 8px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + background-image: -moz-linear-gradient(center top, #FFFFFF 0%, #FFFFFF 60%, #F7F8FB 95%, #EEF1F7); + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 8px; + -webkit-border-bottom-right-radius: 8px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + background-image: -webkit-gradient(linear,center top,center bottom,from(#FFFFFF), color-stop(0.6,#FFFFFF), color-stop(0.60,#FFFFFF), color-stop(0.95,#F7F8FB), to(#EEF1F7)); +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} + +/* @end */ + +/* @group Directory (tree) */ + +/* for the tree view */ + +.ftvtree { + font-family: sans-serif; + margin: 0px; +} + +/* these are for tree view when used as main index */ + +.directory { + font-size: 9pt; + font-weight: bold; + margin: 5px; +} + +.directory h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +/* +The following two styles can be used to replace the root node title +with an image of your choice. Simply uncomment the next two styles, +specify the name of your image and be sure to set 'height' to the +proper pixel height of your image. +*/ + +/* +.directory h3.swap { + height: 61px; + background-repeat: no-repeat; + background-image: url("yourimage.gif"); +} +.directory h3.swap span { + display: none; +} +*/ + +.directory > h3 { + margin-top: 0; +} + +.directory p { + margin: 0px; + white-space: nowrap; +} + +.directory div { + display: none; + margin: 0px; +} + +.directory img { + vertical-align: -30%; +} + +/* these are for tree view when not used as main index */ + +.directory-alt { + font-size: 100%; + font-weight: bold; +} + +.directory-alt h3 { + margin: 0px; + margin-top: 1em; + font-size: 11pt; +} + +.directory-alt > h3 { + margin-top: 0; +} + +.directory-alt p { + margin: 0px; + white-space: nowrap; +} + +.directory-alt div { + display: none; + margin: 0px; +} + +.directory-alt img { + vertical-align: -30%; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable { + border-collapse:collapse; +} + +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; + text-align:left; +} + +.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; + 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 a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; +} + +.navpath a:hover +{ + color:#6884BD; +} + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary 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; +} + diff --git a/miosix/_doc/doxygen/html/doxygen.png b/miosix/_doc/doxygen/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..635ed52fce7057ac24df92ec7664088a881fa5d0 GIT binary patch literal 3942 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 Bq}%`i literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/endianness_8h.html b/miosix/_doc/doxygen/html/endianness_8h.html new file mode 100644 index 00000000..14aaf29c --- /dev/null +++ b/miosix/_doc/doxygen/html/endianness_8h.html @@ -0,0 +1,59 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: endianness.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>endianness.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "interfaces-impl/endianness_impl.h"</code><br/> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaf9a5d5c4095f445894e047a624beab1c">toLittleEndian16</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga81fdb9bbd65db8d3613bcf48b33b6b3c">toLittleEndian32</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9854a77efaef5446bd7e14722017df59">toLittleEndian64</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga3d118b2a14e2880a0439c9bf9a06c6e5">toBigEndian16</a>(x) swapBytes16(x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaa6c617366016f8aade26bc9dea6cc26b">toBigEndian32</a>(x) swapBytes32(x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9e5f305b36b75ad6f89becf211624ce2">toBigEndian64</a>(x) swapBytes64(x)</td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaac144bf3451c95e74bdd34327f019344">swapBytes16</a> (unsigned short x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gae45d4bbe8a807a780b0033850c143a81">swapBytes32</a> (unsigned int x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned long long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga74d39ebb52b05eda594e47f0d90e7ad2">swapBytes64</a> (unsigned long long x)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file contains optimized functions to convert data from the system's endianness to little or big endian, as well as to perform byte swapping. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/files.html b/miosix/_doc/doxygen/html/files.html new file mode 100644 index 00000000..64f90b66 --- /dev/null +++ b/miosix/_doc/doxygen/html/files.html @@ -0,0 +1,49 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: File Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>File List</h1> </div> +</div> +<div class="contents"> +Here is a list of all documented files with brief descriptions:<table> + <tr><td class="indexkey"><a class="el" href="arch__registers_8h.html">arch_registers.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="bsp_8h.html">bsp.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="console_8h.html">console.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="delays_8h.html">delays.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="disk_8h.html">disk.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="endianness_8h.html">endianness.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="gpio_8h.html">gpio.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="miosix__settings_8h.html">miosix_settings.h</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="portability_8h.html">portability.h</a></td><td class="indexvalue"></td></tr> +</table> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/ftv2blank.png b/miosix/_doc/doxygen/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..493c3c0b615ade5b22027bde773faf2c0e076d66 GIT binary patch literal 174 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+uU|?XJc1_Tofq{XkB*-tAfst{_-*q6V z64!{5;QX|b^2DN4hV;xdqk_D21tUEZJ)^~O?tBak45}a%&iT2ysd*&~p*g9EDGKhM zZVJJ<iA5#BiDjup3Sp^53PyScia)N$1v4-(h<Lg<hE&{2wm8txAaC%X-f02@6GMfK W(dnZ88X*P-1_n=8KbLh*2~7Znm@q5= literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2doc.png b/miosix/_doc/doxygen/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..f72999f92172cca6edaa2538286b3e369bec9f49 GIT binary patch literal 255 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|<jp@CkAK4+0GT|NlR5 z;6Ot|0|N;B-@Nzt2?hoR#*!evU<QY0H_|{_OI#yLg7ec#$`gxH8PYS;j0*D76^!&u z^o$nAx$`kFFqC<^IEGZ*N=`^fNJvgdNMT@9H%KaEe5Ar=kx<BRO5NDNfYETV5i?go zh!JCOW<sGlhp3d)sRqWFm;+N5O<?K>@(yAR&O9+iq9rIu=x8RF*@GoZmSi*?32e${ yDHQQd^b2MAlpv$-sv<dou|P6CS;63FzB0qt3xW?qo89+<T<+=W=d#Wzp$Py$IZ`G7 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2folderclosed.png b/miosix/_doc/doxygen/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..d6d063440cbf13c4128dacd96661b6fce58abf26 GIT binary patch literal 259 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|<jm@CkAK4+aMg9B620 zU|?WqU}$i9=kSn$fq}6k$S;_|;n|HekiHVvh?3y^w370~qEv?T%rv8dymSR4Jrg~n z#c}R@3=9mlo-U3d6}Ni(4sx{^2skVEl=J^)cG|1`gE2Mt{i3t~|92U$eHZm@1KX_+ zZOeoiIvkjTnVM!@4|GypS5>y)?W@X4anIt1pNvHM<2`r2RZdViYnJxJ!F$W?+fT*b ziB%~4oF<xksC!Y~&w!L=1=|9+E?2b8SavUVuIkx;_m43z5Eh-0u(y$$fq{X+)78&q Iol`;+07G$Q8vp<R literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2folderopen.png b/miosix/_doc/doxygen/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..bbe2c913cf493ee37ad8e3a5132382138d93ac92 GIT binary patch literal 261 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|<jp@CkAK4+0GT|NlR5 z;6Ot|0|Ns?14F|kqn@V>3=E7VL4Lsu4$p3+fwY#mMwA5Sr<If^7Ns(zXQmky<fSVZ z>6z#mEsk^NV_;yY@pN$vskqhJ>&Vw+AmAF$@l{SY_}Vdv>%9`!*)GW~*m&<hhn0e& zz@q%m|NeJNHgIK$G}^FfB_6%(oOy7|>YoK`nosTiy`+1cn%g!X{uhTOer>K@A@y2( zsauGfpVp&uQ*C!`NSWL^o4dHMx%B#{<r6+B%>6BP>9zCEzn^%QXo{S^<-W#+fq{X+ M)78&qol`;+02~`<LI3~& literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2lastnode.png b/miosix/_doc/doxygen/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..e7b9ba90cb0cf71c8ce662956bfee7d64cf60fa6 GIT binary patch literal 233 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<1B0-q pi(^Q|t>gp=g9H9N%q%C2<rq|!Gjs@?GPVV|*VEO{Wt~$(69BbdHFf|1 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2link.png b/miosix/_doc/doxygen/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..14f3fed003659b11214ac7a1ca0efa2b9145ce9e GIT binary patch literal 358 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=U+rW?*294=L1TU|=u^@CkAK|NlQj1H=FS z3=9kn3=IDn8bIK{fddRU0CU}J4h9AW#*!evU<QY0H_||+mbgZg1m~xflqVLYGNfmw z85QKED;VjS=ou}JbLV4VU{C|8aL&)oP0cG|2+c`NOi^(6bW;e<O)M%2PAp3;QV2^e zQZUjpkYu{a`P7SnfnkEDi(^Q|t=gWAT!#!qT=R{$B-bqr4)3mO$Xh2CwP~MKis_D& zH~Q?Xvhyo@6$36XpFI0;pE$z`hNcINX|)ID1r|8So?pu@Azd=zwoDTLBZY%!60O;? zc8gfQ%-FRiaIVUmJKh;@FU3jM{hhQTw`G%thQ+B%K5n{^XDnj6&piI8UHGeVPkLo5 gdr0QJd-^}lvlmX)UMNs;0TfUSp00i_>zopr0EW7H!~g&Q literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2mlastnode.png b/miosix/_doc/doxygen/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..09ceb6adb01054ce799ad20c0e818ab9272f2df2 GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+sW?*1EeE3Ku0|NtRfKQ0)|Ns9R8X6cF z7;NHp>o71dFqQ=Q1v5B2yO9P`Ug8>25}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfkD~R#WAGfR&s&@HwTA;09QhbV9&yZ3TzWjuGktNaEhrjk&z)+oN3pAJDDdK7#J8l MUHx3vIVCg!0ORy6RsaA1 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2mnode.png b/miosix/_doc/doxygen/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..3254c05112199fbc80aad313611c58a5b388792d GIT binary patch literal 194 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`&pq;1l9{;J^U}yr7|> zA$XtMOa=x9#*!evU<QY0H_|{RmAFQf1m~xflqVLYGNfmw85QKED;VjS=ou}JbLV4V zV9@e(aSW-rm7K6Z?*W@r3DfeR5Vr4m3Jo6*Cf)Jz^15^9&Iu(0(;2reN-}J(WLIDH ReHt^!A)c;&F6*2UngA?OGfe;h literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2node.png b/miosix/_doc/doxygen/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..c9f06a57f4cfe0f9851cc1aacd7245f741b53ad1 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<1B0li ri(^Q|t>gp=g9H9N%q$&YJ%<<=^nw^3{c^Q>2y(HftDnm{r-UW|J~lV1 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2plastnode.png b/miosix/_doc/doxygen/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0b07e00913d8069ebbb51bd7fd6d70d8bba88f75 GIT binary patch literal 165 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+sW?*1EeE3Ku0|NtRfKQ0)|Ns9R8X6cF z7;NHp>o71dFqQ=Q1v5B2yO9P`Ug8>25}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfkDI5#WAGfR&s&@HwT9SN2B0`Mka|wmgEeL2?<O_l3T^NoFWwrbr=}(4l*5j`nGgA Q0|Nttr>mdKI;Vst0C@~7wg3PC literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2pnode.png b/miosix/_doc/doxygen/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..2001b797ba2b98a4127f1d3efca64aef08bf6d51 GIT binary patch literal 200 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`&pq;1l9{;J^U}yr7|> zA$XtMOa=x9#*!evU<QY0H_|{RmAFQf1m~xflqVLYGNfmw85QKED;VjS=ou}JbLV4V zU@-7>aSW-rm7K6Z?*W?=Tb`N)<D*9*U8f%0<7E-B6L#sD?djP$d$x2W%QCiLYb$1k XUD@pVt4_=3gPh~(>gTe~DWM4f<d-p4 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/ftv2vertline.png b/miosix/_doc/doxygen/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..b330f3a33c0085c183ff39fc56b1b274160c1da0 GIT binary patch literal 229 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=U+rW?*3SX*Rscz`$S-;1lBd|NnmmqCrDL zgT&<p6Brm67)yfuf*Bm1-ADtOTH+c}5}cn_Ql40p%8;I!W>k=uu3)5RqGz-?&Yh2e zfk6$V!Z|-TH#M(>Av7m7F-5`M(@h~bH?gQBII%3XNFgk>NWn<YAd@lQ{wx~<0|URO li(^Q|t>gp=g9HB2Yz&Gb49lL{ys!ef)zj6_Wt~$(69DWxH7Ec8 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/functions.html b/miosix/_doc/doxygen/html/functions.html new file mode 100644 index 00000000..40cf8faa --- /dev/null +++ b/miosix/_doc/doxygen/html/functions.html @@ -0,0 +1,504 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> + <div class="tabs3"> + <ul class="tablist"> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_e"><span>e</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_g"><span>g</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_j"><span>j</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_q"><span>q</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + <li><a href="#index_u"><span>u</span></a></li> + <li><a href="#index_v"><span>v</span></a></li> + <li><a href="#index_w"><span>w</span></a></li> + <li><a href="#index_y"><span>y</span></a></li> + <li><a href="#index_~"><span>~</span></a></li> + </ul> + </div> +</div> +<div class="contents"> +Here is a list of all documented class members with links to the class documentation for each member: + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>broadcast() +: <a class="el" href="classmiosix_1_1_condition_variable.html#adb8897a2ff31ecc320ff624285924600">miosix::ConditionVariable</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>ceHigh() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a7e2ba605d5a06df4e27c346f23b7559c">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>ceLow() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a357a64d9abe58149039a90813a0e710c">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>clear() +: <a class="el" href="classmiosix_1_1_timer.html#adb3725edbcdf2bdf9d3ec7912947af95">miosix::Timer</a> +</li> +<li>ConditionVariable() +: <a class="el" href="classmiosix_1_1_condition_variable.html#a071791f7cf57c7f6eed03b17cbb4bb5e">miosix::ConditionVariable</a> +</li> +<li>ControlSchedulerPriority() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#a4bd3eb3d3d89cf2082f9cbfc09ddb3ed">miosix::ControlSchedulerPriority</a> +</li> +<li>create() +: <a class="el" href="classmiosix_1_1_thread.html#a12d19634d30226cb4441a77b233a5bf2">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>DEFAULT +: <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182">miosix::FastMutex</a> +, <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8">miosix::Mutex</a> +</li> +<li>detach() +: <a class="el" href="classmiosix_1_1_thread.html#ae7817dd59f317a04d3ce3793419d25a4">miosix::Thread</a> +</li> +<li>Directory() +: <a class="el" href="classmiosix_1_1_directory.html#a4511c8727dc6fc565a415d5e258d612b">miosix::Directory</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>EDFSchedulerPriority() +: <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ac3b95b8d504e71004d2b64c8f4553074">miosix::EDFSchedulerPriority</a> +</li> +<li>ExceptionHandlingData() +: <a class="el" href="classmiosix_1_1_exception_handling_data.html#a24ba3640e643b05fa9212a213c012101">miosix::ExceptionHandlingData</a> +</li> +<li>exists() +: <a class="el" href="classmiosix_1_1_directory.html#abd96a4eb6ce45869b55ebe5fa1c6c43f">miosix::Directory</a> +, <a class="el" href="classmiosix_1_1_thread.html#adb06c8f5761db66d1089a61db71dcf92">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>FastInterruptDisableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#ac10ca2ad58013504750550337bdaf6cf">miosix::FastInterruptDisableLock</a> +</li> +<li>FastInterruptEnableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#a1d0dc9ea0ee452a36d300b84c5e30a83">miosix::FastInterruptEnableLock</a> +</li> +<li>FastMutex() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#aca5cd49cdb704db34488ac7ef16bbd12">miosix::FastMutex</a> +</li> +<li>FILENAME_LEN +: <a class="el" href="classmiosix_1_1_directory.html#a079e87e4cbc008d223a03c54d87577bf">miosix::Directory</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_g"></a>- g -</h3><ul> +<li>get() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ad15885f4c536e5e3ee7b6f95f5542209">miosix::ControlSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a1e1fa5e57a39e9bbec09eaca3043fe79">miosix::EDFSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_lock.html#a28807e63ba20acd9df2b55bccf8af2bf">miosix::Lock< T ></a> +, <a class="el" href="classmiosix_1_1_unlock.html#a0185d0ca22404fe71d69bf831ff3266c">miosix::Unlock< T ></a> +, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#aaed4edb129dd8ceadc7b36dc63e74cc5">miosix::PrioritySchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_queue.html#ade3ad87c4c3fdac0a2bdd755ff3c8971">miosix::Queue< T, len ></a> +</li> +<li>getAbsoluteFreeHeap() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#af09789fc33f2a1768cad7fad8cf7488b">miosix::MemoryProfiling</a> +</li> +<li>getAbsoluteFreeStack() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#af653e0d570d4cf3c358871c5c56e7f87">miosix::MemoryProfiling</a> +</li> +<li>getCurrentFreeHeap() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab49f252e7a4800d3b076102eb6562fed">miosix::MemoryProfiling</a> +</li> +<li>getCurrentFreeStack() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab4a3fc09f4d48b7761c52fbe18e683ee">miosix::MemoryProfiling</a> +</li> +<li>getCurrentThread() +: <a class="el" href="classmiosix_1_1_thread.html#a884bfd106afeb274c339d383702b4aec">miosix::Thread</a> +</li> +<li>getHeapSize() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#acc5945c41f0ccf00c35d256fe8dbf30a">miosix::MemoryProfiling</a> +</li> +<li>getPriority() +: <a class="el" href="classmiosix_1_1_thread.html#aacba6298a092d5335f6dbefe56a611ec">miosix::Thread</a> +</li> +<li>getStackSize() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab01517dcb40ae74f6cb17a54baf5d00d">miosix::MemoryProfiling</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>init() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#affca2c005e549cf0d244064d69808313">miosix::SoftwareI2C< SDA, SCL ></a> +, <a class="el" href="classmiosix_1_1_software_s_p_i.html#a0d8dc57b9c5bbca82f830a286e1e43e3">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>instance() +: <a class="el" href="classmiosix_1_1_filesystem.html#a83ab051fd94eb41f38fb37c4c3c206b9">miosix::Filesystem</a> +</li> +<li>InterruptDisableLock() +: <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#aeee39d909e99f88789419bb2bbad59c7">miosix::InterruptDisableLock</a> +</li> +<li>InterruptEnableLock() +: <a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#ae02c7390bbaf3839a4401b4ea3172173">miosix::InterruptEnableLock</a> +</li> +<li>interval() +: <a class="el" href="classmiosix_1_1_timer.html#ade4ade4f99dfcb3b6fc0b02b3f112371">miosix::Timer</a> +</li> +<li>IRQexists() +: <a class="el" href="classmiosix_1_1_thread.html#a572b87e4c6174ad4137f964e40bbe515">miosix::Thread</a> +</li> +<li>IRQget() +: <a class="el" href="classmiosix_1_1_queue.html#a545ed38e44e319303e0d657de8195cec">miosix::Queue< T, len ></a> +</li> +<li>IRQgetCurrentThread() +: <a class="el" href="classmiosix_1_1_thread.html#ae3918e86d91bbe3062f907004ba7f579">miosix::Thread</a> +</li> +<li>IRQgetPriority() +: <a class="el" href="classmiosix_1_1_thread.html#a585c7966f59855aafd771c7733a38296">miosix::Thread</a> +</li> +<li>IRQinit() +: <a class="el" href="classmiosix__private_1_1_auxiliary_timer.html#ad1e3b40dd8f36c71f5306b5b3a8b8ea9">miosix_private::AuxiliaryTimer</a> +</li> +<li>IRQput() +: <a class="el" href="classmiosix_1_1_queue.html#aebf1e9ff8643933b679b5d6e2ecfe343">miosix::Queue< T, len ></a> +</li> +<li>IRQreset() +: <a class="el" href="classmiosix_1_1_queue.html#a8d7aea4c62e78d4221dbaab13538e695">miosix::Queue< T, len ></a> +</li> +<li>IRQtxComplete() +: <a class="el" href="classmiosix_1_1_console.html#a138cf29290498b2adc23bad89b7f1225">miosix::Console</a> +</li> +<li>IRQwait() +: <a class="el" href="classmiosix_1_1_thread.html#a6aed14f0f04e69f922aba8f0cf7ac0c6">miosix::Thread</a> +</li> +<li>IRQwakeup() +: <a class="el" href="classmiosix_1_1_thread.html#ab34c3cbac8aa609a5c6e4abc384a9faa">miosix::Thread</a> +</li> +<li>IRQwrite() +: <a class="el" href="classmiosix_1_1_console.html#a24a570ed29296d941477d90637c7f87d">miosix::Console</a> +</li> +<li>isDetached() +: <a class="el" href="classmiosix_1_1_thread.html#afb1d97df689c7104bec35858bbaf4ae6">miosix::Thread</a> +</li> +<li>isEmpty() +: <a class="el" href="classmiosix_1_1_queue.html#a8d18f593639d0d7eef52b6267f83ce34">miosix::Queue< T, len ></a> +</li> +<li>isFull() +: <a class="el" href="classmiosix_1_1_queue.html#affa922a8101a173168daca418eed8c4b">miosix::Queue< T, len ></a> +</li> +<li>isMounted() +: <a class="el" href="classmiosix_1_1_filesystem.html#abaa17c0d791fabf357b0ed7ab7738d94">miosix::Filesystem</a> +</li> +<li>isRunning() +: <a class="el" href="classmiosix_1_1_timer.html#a9644000ad11c2ee1208e597bed72ff5a">miosix::Timer</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_j"></a>- j -</h3><ul> +<li>join() +: <a class="el" href="classmiosix_1_1_thread.html#a968b43a36ecdf124d72a5d8ddfa2a3b9">miosix::Thread</a> +</li> +<li>JOINABLE +: <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>lock() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a0ad94f95d78f1316da8b622928b6ff61">miosix::FastMutex</a> +</li> +<li>Lock() +: <a class="el" href="classmiosix_1_1_lock.html#aefcff605f9b21d592febe4c1bffa7807">miosix::Lock< T ></a> +</li> +<li>lock() +: <a class="el" href="classmiosix_1_1_mutex.html#a6ff0ea4734654c2048ef44cec62b5ed6">miosix::Mutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>mount() +: <a class="el" href="classmiosix_1_1_filesystem.html#a4506b58ded0e57ce555c9d21a0683801">miosix::Filesystem</a> +</li> +<li>Mutex() +: <a class="el" href="classmiosix_1_1_mutex.html#a63a4d940d2bbb57522dcb23f0fc704a2">miosix::Mutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>next() +: <a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">miosix::Directory</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>open() +: <a class="el" href="classmiosix_1_1_directory.html#ab3b8f627404f790ca9e309dd90d4e8a0">miosix::Directory</a> +</li> +<li>operator()() +: <a class="el" href="classmiosix_1_1_lower_priority.html#ae223edc017a90abdf70ab8996438cef2">miosix::LowerPriority</a> +</li> +<li>Options +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">miosix::FastMutex</a> +, <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daaf">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">miosix::Mutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>PauseKernelLock() +: <a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a6666bc670b9eb36ce7797b9b231e4bf8">miosix::PauseKernelLock</a> +</li> +<li>PKwakeup() +: <a class="el" href="classmiosix_1_1_thread.html#a88af678dc4032a5f92da12917947d881">miosix::Thread</a> +</li> +<li>print() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ad49f0f486487a4fa165883eb45ad5f4e">miosix::MemoryProfiling</a> +</li> +<li>PrioritySchedulerPriority() +: <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a206ab3dfa014606172a906aef6c99545">miosix::PrioritySchedulerPriority</a> +</li> +<li>put() +: <a class="el" href="classmiosix_1_1_queue.html#a40eac0f03500a45a6ec3a5af3e0909be">miosix::Queue< T, len ></a> +</li> +</ul> + + +<h3><a class="anchor" id="index_q"></a>- q -</h3><ul> +<li>Queue() +: <a class="el" href="classmiosix_1_1_queue.html#a45ac6bfe191bc6d52089215b52863732">miosix::Queue< T, len ></a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>readChar() +: <a class="el" href="classmiosix_1_1_console.html#a4c62717fe282211b1b8b13c9897d4036">miosix::Console</a> +</li> +<li>readCharNonBlocking() +: <a class="el" href="classmiosix_1_1_console.html#a7b901496782fb87e9b8f62db0b694c15">miosix::Console</a> +</li> +<li>RECURSIVE +: <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5">miosix::Mutex</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8">miosix::FastMutex</a> +</li> +<li>recvWithAck() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#ad16eb98c9e1089e21571d1f7c552a151">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>recvWithNack() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a48d8aeebedba01e3dc11866710b873fb">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>reset() +: <a class="el" href="classmiosix_1_1_queue.html#a36d52ae7f77126add31096faa97e45b0">miosix::Queue< T, len ></a> +</li> +<li>RestartKernelLock() +: <a class="el" href="classmiosix_1_1_restart_kernel_lock.html#a56fdd23f84789f624cf85cd3ff54d045">miosix::RestartKernelLock</a> +</li> +<li>result +: <a class="el" href="classmiosix_1_1_thread.html#a448486b757b8ede4edaa8edc39962b17">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>send() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a6e0535020ec3adf027a4ac77481e6e01">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>sendRecvChar() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a28c74624fdf2699bbd9a16a0b4041df4">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendRecvLong() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a2338776e2f0242f95b8e416b269ae4e7">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendRecvShort() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#aa4087c723fe51f7172c54c24a51e56c3">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendStart() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#abcbeb09130637bce45c8827e8098a5ff">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>sendStop() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a66a312f667a52046e45035588caff0b4">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>setPriority() +: <a class="el" href="classmiosix_1_1_thread.html#af6c4237506c533c00a0144632685b17d">miosix::Thread</a> +</li> +<li>signal() +: <a class="el" href="classmiosix_1_1_condition_variable.html#adbc51a45a48f6afe98fea4581fc4f16d">miosix::ConditionVariable</a> +</li> +<li>sleep() +: <a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">miosix::Thread</a> +</li> +<li>sleepUntil() +: <a class="el" href="classmiosix_1_1_thread.html#aac116a322826366c7b3269db3ab4be73">miosix::Thread</a> +</li> +<li>start() +: <a class="el" href="classmiosix_1_1_timer.html#afe2e62decbd592394b3278febf6097f7">miosix::Timer</a> +</li> +<li>stop() +: <a class="el" href="classmiosix_1_1_timer.html#ad14fa7e00b7d9646b31bb85ecd475671">miosix::Timer</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>terminate() +: <a class="el" href="classmiosix_1_1_thread.html#ae086b5bf2b3b55972ad696ec820c8f5e">miosix::Thread</a> +</li> +<li>testTerminate() +: <a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">miosix::Thread</a> +</li> +<li>Timer() +: <a class="el" href="classmiosix_1_1_timer.html#a18fe7d4606d1370054aee4dbc956f3a2">miosix::Timer</a> +</li> +<li>tryLock() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a41f2a4d790a2a7ee8695768d2deae95a">miosix::FastMutex</a> +, <a class="el" href="classmiosix_1_1_mutex.html#a3e7e51aa095528a36e49dd5f672ddc74">miosix::Mutex</a> +</li> +<li>txComplete() +: <a class="el" href="classmiosix_1_1_console.html#a139a35d7febd53431f04fd83c7d2955b">miosix::Console</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_u"></a>- u -</h3><ul> +<li>umount() +: <a class="el" href="classmiosix_1_1_filesystem.html#a47abdaf552093b29eb78c722789324e7">miosix::Filesystem</a> +</li> +<li>Unlock() +: <a class="el" href="classmiosix_1_1_unlock.html#a4c3c1864d2ba24597b2bd4913a36e248">miosix::Unlock< T ></a> +</li> +<li>unlock() +: <a class="el" href="classmiosix_1_1_mutex.html#a10974326b33d887fa7ad1f910b70ed50">miosix::Mutex</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a080ce00d76c005a73917038908fd824c">miosix::FastMutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_v"></a>- v -</h3><ul> +<li>validate() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ae7b24bc4e0861dc5ca7ae50a758f9244">miosix::ControlSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a17300acc93554e4a115a40f99a84f392">miosix::PrioritySchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a87c2a3428d3d3af53391494e81cf3687">miosix::EDFSchedulerPriority</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_w"></a>- w -</h3><ul> +<li>wait() +: <a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">miosix::ConditionVariable</a> +</li> +<li>waitingForJoin +: <a class="el" href="classmiosix_1_1_thread.html#a4d8096414686bc7519454101f55306d2">miosix::Thread</a> +</li> +<li>waitUntilNotEmpty() +: <a class="el" href="classmiosix_1_1_queue.html#af77abf62e5999b15fa5fcb3101f4801d">miosix::Queue< T, len ></a> +</li> +<li>waitUntilNotFull() +: <a class="el" href="classmiosix_1_1_queue.html#af3809d4c8d0ae31774ca5e985b1810e5">miosix::Queue< T, len ></a> +</li> +<li>wakeup() +: <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">miosix::Thread</a> +</li> +<li>write() +: <a class="el" href="classmiosix_1_1_console.html#adcfaf32a1fdaafdf3340095a906b836f">miosix::Console</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_y"></a>- y -</h3><ul> +<li>yield() +: <a class="el" href="classmiosix_1_1_thread.html#a75823b1288a7defcb715fd6591a23b2d">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul> +<li>~ExceptionHandlingData() +: <a class="el" href="classmiosix_1_1_exception_handling_data.html#a61144e6db2029974d7988aa079db59e3">miosix::ExceptionHandlingData</a> +</li> +<li>~FastInterruptDisableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#aa060c8983f93de1724b51c361de76477">miosix::FastInterruptDisableLock</a> +</li> +<li>~FastInterruptEnableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#afb021a03eb3c46a8b8ee8d7854190f8c">miosix::FastInterruptEnableLock</a> +</li> +<li>~FastMutex() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#ad320fd1b0d905f2d4fa9e8e0567181d2">miosix::FastMutex</a> +</li> +<li>~InterruptDisableLock() +: <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#a8989ce6efe8d4930cf045e01b157b288">miosix::InterruptDisableLock</a> +</li> +<li>~InterruptEnableLock() +: <a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#a0e1b60ac838afe74d1f7a906e3bb2282">miosix::InterruptEnableLock</a> +</li> +<li>~Lock() +: <a class="el" href="classmiosix_1_1_lock.html#ad8e9566c5eead737472fda2fce2a0c88">miosix::Lock< T ></a> +</li> +<li>~PauseKernelLock() +: <a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a0980986878a2bc171af039d70a1e9e7a">miosix::PauseKernelLock</a> +</li> +<li>~RestartKernelLock() +: <a class="el" href="classmiosix_1_1_restart_kernel_lock.html#ac026033adfae754118e6025ad7ce01bb">miosix::RestartKernelLock</a> +</li> +<li>~Unlock() +: <a class="el" href="classmiosix_1_1_unlock.html#a53f826f17c0c7792d296c4a8dff4fef5">miosix::Unlock< T ></a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/functions_enum.html b/miosix/_doc/doxygen/html/functions_enum.html new file mode 100644 index 00000000..0c0ada1e --- /dev/null +++ b/miosix/_doc/doxygen/html/functions_enum.html @@ -0,0 +1,50 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members - Enumerations</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li class="current"><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>Options +: <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daaf">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2f">miosix::Mutex</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891">miosix::FastMutex</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/functions_eval.html b/miosix/_doc/doxygen/html/functions_eval.html new file mode 100644 index 00000000..6874240a --- /dev/null +++ b/miosix/_doc/doxygen/html/functions_eval.html @@ -0,0 +1,57 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members - Enumerator</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li class="current"><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>DEFAULT +: <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa03df086cf889e215d75222d10486b71e">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fa84dda8357cdf60e9ce2b81c0f78c36d8">miosix::Mutex</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891a3e00b8e92574e595293459333b1e9182">miosix::FastMutex</a> +</li> +<li>JOINABLE +: <a class="el" href="classmiosix_1_1_thread.html#acaef68f0e93f6ad933442d87c210daafa785d69b0e6b95b648735efe54b588df7">miosix::Thread</a> +</li> +<li>RECURSIVE +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a981dd8f3190f81f16a773b3de6ae0891aa70c27d1982ebadac457d4f1c45fa2c8">miosix::FastMutex</a> +, <a class="el" href="classmiosix_1_1_mutex.html#acdb0fa35e637a14b1504a8f58c8bba2fadadaee3cc9d507680b8652a09c3de4a5">miosix::Mutex</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/functions_func.html b/miosix/_doc/doxygen/html/functions_func.html new file mode 100644 index 00000000..1a00a9a9 --- /dev/null +++ b/miosix/_doc/doxygen/html/functions_func.html @@ -0,0 +1,478 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members - Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li class="current"><a href="functions_func.html"><span>Functions</span></a></li> + <li><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> + <div class="tabs3"> + <ul class="tablist"> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_e"><span>e</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_g"><span>g</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_j"><span>j</span></a></li> + <li><a href="#index_l"><span>l</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_q"><span>q</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + <li><a href="#index_u"><span>u</span></a></li> + <li><a href="#index_v"><span>v</span></a></li> + <li><a href="#index_w"><span>w</span></a></li> + <li><a href="#index_y"><span>y</span></a></li> + <li><a href="#index_~"><span>~</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>broadcast() +: <a class="el" href="classmiosix_1_1_condition_variable.html#adb8897a2ff31ecc320ff624285924600">miosix::ConditionVariable</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>ceHigh() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a7e2ba605d5a06df4e27c346f23b7559c">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>ceLow() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a357a64d9abe58149039a90813a0e710c">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>clear() +: <a class="el" href="classmiosix_1_1_timer.html#adb3725edbcdf2bdf9d3ec7912947af95">miosix::Timer</a> +</li> +<li>ConditionVariable() +: <a class="el" href="classmiosix_1_1_condition_variable.html#a071791f7cf57c7f6eed03b17cbb4bb5e">miosix::ConditionVariable</a> +</li> +<li>ControlSchedulerPriority() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#a4bd3eb3d3d89cf2082f9cbfc09ddb3ed">miosix::ControlSchedulerPriority</a> +</li> +<li>create() +: <a class="el" href="classmiosix_1_1_thread.html#a12d19634d30226cb4441a77b233a5bf2">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>detach() +: <a class="el" href="classmiosix_1_1_thread.html#ae7817dd59f317a04d3ce3793419d25a4">miosix::Thread</a> +</li> +<li>Directory() +: <a class="el" href="classmiosix_1_1_directory.html#a4511c8727dc6fc565a415d5e258d612b">miosix::Directory</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>EDFSchedulerPriority() +: <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#ac3b95b8d504e71004d2b64c8f4553074">miosix::EDFSchedulerPriority</a> +</li> +<li>ExceptionHandlingData() +: <a class="el" href="classmiosix_1_1_exception_handling_data.html#a24ba3640e643b05fa9212a213c012101">miosix::ExceptionHandlingData</a> +</li> +<li>exists() +: <a class="el" href="classmiosix_1_1_directory.html#abd96a4eb6ce45869b55ebe5fa1c6c43f">miosix::Directory</a> +, <a class="el" href="classmiosix_1_1_thread.html#adb06c8f5761db66d1089a61db71dcf92">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>FastInterruptDisableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#ac10ca2ad58013504750550337bdaf6cf">miosix::FastInterruptDisableLock</a> +</li> +<li>FastInterruptEnableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#a1d0dc9ea0ee452a36d300b84c5e30a83">miosix::FastInterruptEnableLock</a> +</li> +<li>FastMutex() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#aca5cd49cdb704db34488ac7ef16bbd12">miosix::FastMutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_g"></a>- g -</h3><ul> +<li>get() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ad15885f4c536e5e3ee7b6f95f5542209">miosix::ControlSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a1e1fa5e57a39e9bbec09eaca3043fe79">miosix::EDFSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_lock.html#a28807e63ba20acd9df2b55bccf8af2bf">miosix::Lock< T ></a> +, <a class="el" href="classmiosix_1_1_unlock.html#a0185d0ca22404fe71d69bf831ff3266c">miosix::Unlock< T ></a> +, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#aaed4edb129dd8ceadc7b36dc63e74cc5">miosix::PrioritySchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_queue.html#ade3ad87c4c3fdac0a2bdd755ff3c8971">miosix::Queue< T, len ></a> +</li> +<li>getAbsoluteFreeHeap() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#af09789fc33f2a1768cad7fad8cf7488b">miosix::MemoryProfiling</a> +</li> +<li>getAbsoluteFreeStack() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#af653e0d570d4cf3c358871c5c56e7f87">miosix::MemoryProfiling</a> +</li> +<li>getCurrentFreeHeap() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab49f252e7a4800d3b076102eb6562fed">miosix::MemoryProfiling</a> +</li> +<li>getCurrentFreeStack() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab4a3fc09f4d48b7761c52fbe18e683ee">miosix::MemoryProfiling</a> +</li> +<li>getCurrentThread() +: <a class="el" href="classmiosix_1_1_thread.html#a884bfd106afeb274c339d383702b4aec">miosix::Thread</a> +</li> +<li>getHeapSize() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#acc5945c41f0ccf00c35d256fe8dbf30a">miosix::MemoryProfiling</a> +</li> +<li>getPriority() +: <a class="el" href="classmiosix_1_1_thread.html#aacba6298a092d5335f6dbefe56a611ec">miosix::Thread</a> +</li> +<li>getStackSize() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ab01517dcb40ae74f6cb17a54baf5d00d">miosix::MemoryProfiling</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>init() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#affca2c005e549cf0d244064d69808313">miosix::SoftwareI2C< SDA, SCL ></a> +, <a class="el" href="classmiosix_1_1_software_s_p_i.html#a0d8dc57b9c5bbca82f830a286e1e43e3">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>instance() +: <a class="el" href="classmiosix_1_1_filesystem.html#a83ab051fd94eb41f38fb37c4c3c206b9">miosix::Filesystem</a> +</li> +<li>InterruptDisableLock() +: <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#aeee39d909e99f88789419bb2bbad59c7">miosix::InterruptDisableLock</a> +</li> +<li>InterruptEnableLock() +: <a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#ae02c7390bbaf3839a4401b4ea3172173">miosix::InterruptEnableLock</a> +</li> +<li>interval() +: <a class="el" href="classmiosix_1_1_timer.html#ade4ade4f99dfcb3b6fc0b02b3f112371">miosix::Timer</a> +</li> +<li>IRQexists() +: <a class="el" href="classmiosix_1_1_thread.html#a572b87e4c6174ad4137f964e40bbe515">miosix::Thread</a> +</li> +<li>IRQget() +: <a class="el" href="classmiosix_1_1_queue.html#a545ed38e44e319303e0d657de8195cec">miosix::Queue< T, len ></a> +</li> +<li>IRQgetCurrentThread() +: <a class="el" href="classmiosix_1_1_thread.html#ae3918e86d91bbe3062f907004ba7f579">miosix::Thread</a> +</li> +<li>IRQgetPriority() +: <a class="el" href="classmiosix_1_1_thread.html#a585c7966f59855aafd771c7733a38296">miosix::Thread</a> +</li> +<li>IRQinit() +: <a class="el" href="classmiosix__private_1_1_auxiliary_timer.html#ad1e3b40dd8f36c71f5306b5b3a8b8ea9">miosix_private::AuxiliaryTimer</a> +</li> +<li>IRQput() +: <a class="el" href="classmiosix_1_1_queue.html#aebf1e9ff8643933b679b5d6e2ecfe343">miosix::Queue< T, len ></a> +</li> +<li>IRQreset() +: <a class="el" href="classmiosix_1_1_queue.html#a8d7aea4c62e78d4221dbaab13538e695">miosix::Queue< T, len ></a> +</li> +<li>IRQtxComplete() +: <a class="el" href="classmiosix_1_1_console.html#a138cf29290498b2adc23bad89b7f1225">miosix::Console</a> +</li> +<li>IRQwait() +: <a class="el" href="classmiosix_1_1_thread.html#a6aed14f0f04e69f922aba8f0cf7ac0c6">miosix::Thread</a> +</li> +<li>IRQwakeup() +: <a class="el" href="classmiosix_1_1_thread.html#ab34c3cbac8aa609a5c6e4abc384a9faa">miosix::Thread</a> +</li> +<li>IRQwrite() +: <a class="el" href="classmiosix_1_1_console.html#a24a570ed29296d941477d90637c7f87d">miosix::Console</a> +</li> +<li>isDetached() +: <a class="el" href="classmiosix_1_1_thread.html#afb1d97df689c7104bec35858bbaf4ae6">miosix::Thread</a> +</li> +<li>isEmpty() +: <a class="el" href="classmiosix_1_1_queue.html#a8d18f593639d0d7eef52b6267f83ce34">miosix::Queue< T, len ></a> +</li> +<li>isFull() +: <a class="el" href="classmiosix_1_1_queue.html#affa922a8101a173168daca418eed8c4b">miosix::Queue< T, len ></a> +</li> +<li>isMounted() +: <a class="el" href="classmiosix_1_1_filesystem.html#abaa17c0d791fabf357b0ed7ab7738d94">miosix::Filesystem</a> +</li> +<li>isRunning() +: <a class="el" href="classmiosix_1_1_timer.html#a9644000ad11c2ee1208e597bed72ff5a">miosix::Timer</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_j"></a>- j -</h3><ul> +<li>join() +: <a class="el" href="classmiosix_1_1_thread.html#a968b43a36ecdf124d72a5d8ddfa2a3b9">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_l"></a>- l -</h3><ul> +<li>lock() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a0ad94f95d78f1316da8b622928b6ff61">miosix::FastMutex</a> +</li> +<li>Lock() +: <a class="el" href="classmiosix_1_1_lock.html#aefcff605f9b21d592febe4c1bffa7807">miosix::Lock< T ></a> +</li> +<li>lock() +: <a class="el" href="classmiosix_1_1_mutex.html#a6ff0ea4734654c2048ef44cec62b5ed6">miosix::Mutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>mount() +: <a class="el" href="classmiosix_1_1_filesystem.html#a4506b58ded0e57ce555c9d21a0683801">miosix::Filesystem</a> +</li> +<li>Mutex() +: <a class="el" href="classmiosix_1_1_mutex.html#a63a4d940d2bbb57522dcb23f0fc704a2">miosix::Mutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>next() +: <a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">miosix::Directory</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>open() +: <a class="el" href="classmiosix_1_1_directory.html#ab3b8f627404f790ca9e309dd90d4e8a0">miosix::Directory</a> +</li> +<li>operator()() +: <a class="el" href="classmiosix_1_1_lower_priority.html#ae223edc017a90abdf70ab8996438cef2">miosix::LowerPriority</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>PauseKernelLock() +: <a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a6666bc670b9eb36ce7797b9b231e4bf8">miosix::PauseKernelLock</a> +</li> +<li>PKwakeup() +: <a class="el" href="classmiosix_1_1_thread.html#a88af678dc4032a5f92da12917947d881">miosix::Thread</a> +</li> +<li>print() +: <a class="el" href="classmiosix_1_1_memory_profiling.html#ad49f0f486487a4fa165883eb45ad5f4e">miosix::MemoryProfiling</a> +</li> +<li>PrioritySchedulerPriority() +: <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a206ab3dfa014606172a906aef6c99545">miosix::PrioritySchedulerPriority</a> +</li> +<li>put() +: <a class="el" href="classmiosix_1_1_queue.html#a40eac0f03500a45a6ec3a5af3e0909be">miosix::Queue< T, len ></a> +</li> +</ul> + + +<h3><a class="anchor" id="index_q"></a>- q -</h3><ul> +<li>Queue() +: <a class="el" href="classmiosix_1_1_queue.html#a45ac6bfe191bc6d52089215b52863732">miosix::Queue< T, len ></a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>readChar() +: <a class="el" href="classmiosix_1_1_console.html#a4c62717fe282211b1b8b13c9897d4036">miosix::Console</a> +</li> +<li>readCharNonBlocking() +: <a class="el" href="classmiosix_1_1_console.html#a7b901496782fb87e9b8f62db0b694c15">miosix::Console</a> +</li> +<li>recvWithAck() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#ad16eb98c9e1089e21571d1f7c552a151">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>recvWithNack() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a48d8aeebedba01e3dc11866710b873fb">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>reset() +: <a class="el" href="classmiosix_1_1_queue.html#a36d52ae7f77126add31096faa97e45b0">miosix::Queue< T, len ></a> +</li> +<li>RestartKernelLock() +: <a class="el" href="classmiosix_1_1_restart_kernel_lock.html#a56fdd23f84789f624cf85cd3ff54d045">miosix::RestartKernelLock</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>send() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a6e0535020ec3adf027a4ac77481e6e01">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>sendRecvChar() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a28c74624fdf2699bbd9a16a0b4041df4">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendRecvLong() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#a2338776e2f0242f95b8e416b269ae4e7">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendRecvShort() +: <a class="el" href="classmiosix_1_1_software_s_p_i.html#aa4087c723fe51f7172c54c24a51e56c3">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a> +</li> +<li>sendStart() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#abcbeb09130637bce45c8827e8098a5ff">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>sendStop() +: <a class="el" href="classmiosix_1_1_software_i2_c.html#a66a312f667a52046e45035588caff0b4">miosix::SoftwareI2C< SDA, SCL ></a> +</li> +<li>setPriority() +: <a class="el" href="classmiosix_1_1_thread.html#af6c4237506c533c00a0144632685b17d">miosix::Thread</a> +</li> +<li>signal() +: <a class="el" href="classmiosix_1_1_condition_variable.html#adbc51a45a48f6afe98fea4581fc4f16d">miosix::ConditionVariable</a> +</li> +<li>sleep() +: <a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">miosix::Thread</a> +</li> +<li>sleepUntil() +: <a class="el" href="classmiosix_1_1_thread.html#aac116a322826366c7b3269db3ab4be73">miosix::Thread</a> +</li> +<li>start() +: <a class="el" href="classmiosix_1_1_timer.html#afe2e62decbd592394b3278febf6097f7">miosix::Timer</a> +</li> +<li>stop() +: <a class="el" href="classmiosix_1_1_timer.html#ad14fa7e00b7d9646b31bb85ecd475671">miosix::Timer</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>terminate() +: <a class="el" href="classmiosix_1_1_thread.html#ae086b5bf2b3b55972ad696ec820c8f5e">miosix::Thread</a> +</li> +<li>testTerminate() +: <a class="el" href="classmiosix_1_1_thread.html#a0ef492878827009d2d55442266d13b99">miosix::Thread</a> +</li> +<li>Timer() +: <a class="el" href="classmiosix_1_1_timer.html#a18fe7d4606d1370054aee4dbc956f3a2">miosix::Timer</a> +</li> +<li>tryLock() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#a41f2a4d790a2a7ee8695768d2deae95a">miosix::FastMutex</a> +, <a class="el" href="classmiosix_1_1_mutex.html#a3e7e51aa095528a36e49dd5f672ddc74">miosix::Mutex</a> +</li> +<li>txComplete() +: <a class="el" href="classmiosix_1_1_console.html#a139a35d7febd53431f04fd83c7d2955b">miosix::Console</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_u"></a>- u -</h3><ul> +<li>umount() +: <a class="el" href="classmiosix_1_1_filesystem.html#a47abdaf552093b29eb78c722789324e7">miosix::Filesystem</a> +</li> +<li>Unlock() +: <a class="el" href="classmiosix_1_1_unlock.html#a4c3c1864d2ba24597b2bd4913a36e248">miosix::Unlock< T ></a> +</li> +<li>unlock() +: <a class="el" href="classmiosix_1_1_mutex.html#a10974326b33d887fa7ad1f910b70ed50">miosix::Mutex</a> +, <a class="el" href="classmiosix_1_1_fast_mutex.html#a080ce00d76c005a73917038908fd824c">miosix::FastMutex</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_v"></a>- v -</h3><ul> +<li>validate() +: <a class="el" href="classmiosix_1_1_control_scheduler_priority.html#ae7b24bc4e0861dc5ca7ae50a758f9244">miosix::ControlSchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_priority_scheduler_priority.html#a17300acc93554e4a115a40f99a84f392">miosix::PrioritySchedulerPriority</a> +, <a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html#a87c2a3428d3d3af53391494e81cf3687">miosix::EDFSchedulerPriority</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_w"></a>- w -</h3><ul> +<li>wait() +: <a class="el" href="classmiosix_1_1_thread.html#a435fe4527c1fdfcbebf886cd748a3fd4">miosix::Thread</a> +, <a class="el" href="classmiosix_1_1_condition_variable.html#ae1e16bdd5262ac2918117db06ed01cd3">miosix::ConditionVariable</a> +</li> +<li>waitUntilNotEmpty() +: <a class="el" href="classmiosix_1_1_queue.html#af77abf62e5999b15fa5fcb3101f4801d">miosix::Queue< T, len ></a> +</li> +<li>waitUntilNotFull() +: <a class="el" href="classmiosix_1_1_queue.html#af3809d4c8d0ae31774ca5e985b1810e5">miosix::Queue< T, len ></a> +</li> +<li>wakeup() +: <a class="el" href="classmiosix_1_1_thread.html#af19b8a2ab852ea771a2e2b95bb0ba2a8">miosix::Thread</a> +</li> +<li>write() +: <a class="el" href="classmiosix_1_1_console.html#ad064039cfbaa9db84cb021944aa85bd1">miosix::Console</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_y"></a>- y -</h3><ul> +<li>yield() +: <a class="el" href="classmiosix_1_1_thread.html#a75823b1288a7defcb715fd6591a23b2d">miosix::Thread</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_0x7e"></a>- ~ -</h3><ul> +<li>~ExceptionHandlingData() +: <a class="el" href="classmiosix_1_1_exception_handling_data.html#a61144e6db2029974d7988aa079db59e3">miosix::ExceptionHandlingData</a> +</li> +<li>~FastInterruptDisableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html#aa060c8983f93de1724b51c361de76477">miosix::FastInterruptDisableLock</a> +</li> +<li>~FastInterruptEnableLock() +: <a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html#afb021a03eb3c46a8b8ee8d7854190f8c">miosix::FastInterruptEnableLock</a> +</li> +<li>~FastMutex() +: <a class="el" href="classmiosix_1_1_fast_mutex.html#ad320fd1b0d905f2d4fa9e8e0567181d2">miosix::FastMutex</a> +</li> +<li>~InterruptDisableLock() +: <a class="el" href="classmiosix_1_1_interrupt_disable_lock.html#a8989ce6efe8d4930cf045e01b157b288">miosix::InterruptDisableLock</a> +</li> +<li>~InterruptEnableLock() +: <a class="el" href="classmiosix_1_1_interrupt_enable_lock.html#a0e1b60ac838afe74d1f7a906e3bb2282">miosix::InterruptEnableLock</a> +</li> +<li>~Lock() +: <a class="el" href="classmiosix_1_1_lock.html#ad8e9566c5eead737472fda2fce2a0c88">miosix::Lock< T ></a> +</li> +<li>~PauseKernelLock() +: <a class="el" href="classmiosix_1_1_pause_kernel_lock.html#a0980986878a2bc171af039d70a1e9e7a">miosix::PauseKernelLock</a> +</li> +<li>~RestartKernelLock() +: <a class="el" href="classmiosix_1_1_restart_kernel_lock.html#ac026033adfae754118e6025ad7ce01bb">miosix::RestartKernelLock</a> +</li> +<li>~Unlock() +: <a class="el" href="classmiosix_1_1_unlock.html#a53f826f17c0c7792d296c4a8dff4fef5">miosix::Unlock< T ></a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/functions_vars.html b/miosix/_doc/doxygen/html/functions_vars.html new file mode 100644 index 00000000..e952ad92 --- /dev/null +++ b/miosix/_doc/doxygen/html/functions_vars.html @@ -0,0 +1,54 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members - Variables</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li class="current"><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Class List</span></a></li> + <li class="current"><a href="functions.html"><span>Class Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="functions.html"><span>All</span></a></li> + <li><a href="functions_func.html"><span>Functions</span></a></li> + <li class="current"><a href="functions_vars.html"><span>Variables</span></a></li> + <li><a href="functions_enum.html"><span>Enumerations</span></a></li> + <li><a href="functions_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>FILENAME_LEN +: <a class="el" href="classmiosix_1_1_directory.html#a079e87e4cbc008d223a03c54d87577bf">miosix::Directory</a> +</li> +<li>result +: <a class="el" href="classmiosix_1_1_thread.html#a448486b757b8ede4edaa8edc39962b17">miosix::Thread</a> +</li> +<li>waitingForJoin +: <a class="el" href="classmiosix_1_1_thread.html#a4d8096414686bc7519454101f55306d2">miosix::Thread</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/globals.html b/miosix/_doc/doxygen/html/globals.html new file mode 100644 index 00000000..e598fba3 --- /dev/null +++ b/miosix/_doc/doxygen/html/globals.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div class="contents"> +Here is a list of all documented file members with links to the documentation:<ul> +<li>JTAG_DISABLE_SLEEP +: <a class="el" href="group___settings.html#gae8275208fa2c8f8bc833fa8bc78ff350">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_CONTROL_BASED +: <a class="el" href="group___settings.html#ga18c8e73660707ad40a2ee8590f35db68">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_EDF +: <a class="el" href="group___settings.html#gaca4195a7b3efe86d766d5fbf6db64aa0">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_PRIORITY +: <a class="el" href="group___settings.html#ga2acdc2f0df96cf6cbc35f7fd78ddb70d">miosix_settings.h</a> +</li> +<li>swapBytes16() +: <a class="el" href="group___interfaces.html#gaac144bf3451c95e74bdd34327f019344">endianness.h</a> +</li> +<li>swapBytes32() +: <a class="el" href="group___interfaces.html#gae45d4bbe8a807a780b0033850c143a81">endianness.h</a> +</li> +<li>swapBytes64() +: <a class="el" href="group___interfaces.html#ga74d39ebb52b05eda594e47f0d90e7ad2">endianness.h</a> +</li> +<li>SYNC_AFTER_WRITE +: <a class="el" href="group___settings.html#ga7f95cdeac372c6633422b100d6b15bba">miosix_settings.h</a> +</li> +<li>toBigEndian16 +: <a class="el" href="group___interfaces.html#ga3d118b2a14e2880a0439c9bf9a06c6e5">endianness.h</a> +</li> +<li>toBigEndian32 +: <a class="el" href="group___interfaces.html#gaa6c617366016f8aade26bc9dea6cc26b">endianness.h</a> +</li> +<li>toBigEndian64 +: <a class="el" href="group___interfaces.html#ga9e5f305b36b75ad6f89becf211624ce2">endianness.h</a> +</li> +<li>toLittleEndian16 +: <a class="el" href="group___interfaces.html#gaf9a5d5c4095f445894e047a624beab1c">endianness.h</a> +</li> +<li>toLittleEndian32 +: <a class="el" href="group___interfaces.html#ga81fdb9bbd65db8d3613bcf48b33b6b3c">endianness.h</a> +</li> +<li>toLittleEndian64 +: <a class="el" href="group___interfaces.html#ga9854a77efaef5446bd7e14722017df59">endianness.h</a> +</li> +<li>WITH_BOOTLOG +: <a class="el" href="group___settings.html#ga2c6b4dab3da5b7b77fef128e1cd2fa79">miosix_settings.h</a> +</li> +<li>WITH_ERRLOG +: <a class="el" href="group___settings.html#ga77cf94725c645792e686ff791e47d703">miosix_settings.h</a> +</li> +<li>WITH_FILESYSTEM +: <a class="el" href="group___settings.html#ga35c68f7b13770080cccce5baafc24a30">miosix_settings.h</a> +</li> +<li>WITH_STDIN_BUFFER +: <a class="el" href="group___settings.html#gaad46faddaac4a765531e05ab44c52a3e">miosix_settings.h</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/globals_defs.html b/miosix/_doc/doxygen/html/globals_defs.html new file mode 100644 index 00000000..0264e619 --- /dev/null +++ b/miosix/_doc/doxygen/html/globals_defs.html @@ -0,0 +1,88 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li><a href="globals_func.html"><span>Functions</span></a></li> + <li class="current"><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>JTAG_DISABLE_SLEEP +: <a class="el" href="group___settings.html#gae8275208fa2c8f8bc833fa8bc78ff350">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_CONTROL_BASED +: <a class="el" href="group___settings.html#ga18c8e73660707ad40a2ee8590f35db68">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_EDF +: <a class="el" href="group___settings.html#gaca4195a7b3efe86d766d5fbf6db64aa0">miosix_settings.h</a> +</li> +<li>SCHED_TYPE_PRIORITY +: <a class="el" href="group___settings.html#ga2acdc2f0df96cf6cbc35f7fd78ddb70d">miosix_settings.h</a> +</li> +<li>SYNC_AFTER_WRITE +: <a class="el" href="group___settings.html#ga7f95cdeac372c6633422b100d6b15bba">miosix_settings.h</a> +</li> +<li>toBigEndian16 +: <a class="el" href="group___interfaces.html#ga3d118b2a14e2880a0439c9bf9a06c6e5">endianness.h</a> +</li> +<li>toBigEndian32 +: <a class="el" href="group___interfaces.html#gaa6c617366016f8aade26bc9dea6cc26b">endianness.h</a> +</li> +<li>toBigEndian64 +: <a class="el" href="group___interfaces.html#ga9e5f305b36b75ad6f89becf211624ce2">endianness.h</a> +</li> +<li>toLittleEndian16 +: <a class="el" href="group___interfaces.html#gaf9a5d5c4095f445894e047a624beab1c">endianness.h</a> +</li> +<li>toLittleEndian32 +: <a class="el" href="group___interfaces.html#ga81fdb9bbd65db8d3613bcf48b33b6b3c">endianness.h</a> +</li> +<li>toLittleEndian64 +: <a class="el" href="group___interfaces.html#ga9854a77efaef5446bd7e14722017df59">endianness.h</a> +</li> +<li>WITH_BOOTLOG +: <a class="el" href="group___settings.html#ga2c6b4dab3da5b7b77fef128e1cd2fa79">miosix_settings.h</a> +</li> +<li>WITH_ERRLOG +: <a class="el" href="group___settings.html#ga77cf94725c645792e686ff791e47d703">miosix_settings.h</a> +</li> +<li>WITH_FILESYSTEM +: <a class="el" href="group___settings.html#ga35c68f7b13770080cccce5baafc24a30">miosix_settings.h</a> +</li> +<li>WITH_STDIN_BUFFER +: <a class="el" href="group___settings.html#gaad46faddaac4a765531e05ab44c52a3e">miosix_settings.h</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/globals_func.html b/miosix/_doc/doxygen/html/globals_func.html new file mode 100644 index 00000000..59d16ef3 --- /dev/null +++ b/miosix/_doc/doxygen/html/globals_func.html @@ -0,0 +1,52 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="globals.html"><span>All</span></a></li> + <li class="current"><a href="globals_func.html"><span>Functions</span></a></li> + <li><a href="globals_defs.html"><span>Defines</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>swapBytes16() +: <a class="el" href="group___interfaces.html#gaac144bf3451c95e74bdd34327f019344">endianness.h</a> +</li> +<li>swapBytes32() +: <a class="el" href="group___interfaces.html#gae45d4bbe8a807a780b0033850c143a81">endianness.h</a> +</li> +<li>swapBytes64() +: <a class="el" href="group___interfaces.html#ga74d39ebb52b05eda594e47f0d90e7ad2">endianness.h</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/gpio_8h.html b/miosix/_doc/doxygen/html/gpio_8h.html new file mode 100644 index 00000000..0018ad88 --- /dev/null +++ b/miosix/_doc/doxygen/html/gpio_8h.html @@ -0,0 +1,92 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: gpio.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>gpio.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "interfaces-impl/gpio_impl.h"</code><br/> +<table class="memberdecls"> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>The interface to gpios provided by Miosix is in the form of templates, therefore this file can only include gpio_impl.h with the architecture dependand code.</p> +<p>The interface should be as follows: First a class Mode containing an enum Mode_ needs to be defined. Its minimum implementation is this: </p> +<div class="fragment"><pre class="fragment"> <span class="keyword">class </span>Mode + { + <span class="keyword">public</span>: + <span class="keyword">enum</span> Mode_ + { + INPUT, + OUTPUT + }; + <span class="keyword">private</span>: + Mode(); <span class="comment">//Just a wrapper class, disallow creating instances</span> + }; +</pre></div><p>This class should define the possible configurations of a gpio pin. The minimum required is INPUT and OUTPUT, but this can be extended to other options to reflect the hardware capabilities of gpios. For example, if gpios can be set as input with pull up, it is possible to add INPUT_PULL_UP to the enum.</p> +<p>Then a template Gpio class should be provided, with at least the following member functions: </p> +<div class="fragment"><pre class="fragment"> <span class="keyword">template</span><<span class="keyword">typename</span> P, <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> N> + <span class="keyword">class </span>Gpio + { + <span class="keyword">public</span>: + <span class="keyword">static</span> <span class="keywordtype">void</span> mode(Mode::Mode_ m); + <span class="keyword">static</span> <span class="keywordtype">void</span> high(); + <span class="keyword">static</span> <span class="keywordtype">void</span> low(); + <span class="keyword">static</span> <span class="keywordtype">int</span> value(); + <span class="keyword">private</span>: + Gpio();<span class="comment">//Only static member functions, disallow creating instances</span> + }; +</pre></div><p>mode() should take a Mode::Mode_ enum and set the mode of the gpio (input, output or other architecture specific)</p> +<p>high() should set a gpio configured as output to high logic level</p> +<p>low() should set a gpio configured as output to low logic level</p> +<p>value() should return either 1 or 0 to refect the state of a gpio configured as input</p> +<p>Lastly, a number of constants must be provided to be passed as first template parameter of the Gpio class, usually identifying the gpio port, while the second template parameter should be used to specify a gpio pin within a port.</p> +<p>The intended use is this: considering an architecture with two ports, PORTA and PORTB each with 8 pins. The header gpio_impl.h should provide two constants, for example named GPIOA_BASE and GPIOB_BASE.</p> +<p>The user can declare the hardware mapping between gpios and what is connected to them, usually in an header file. If for example PORTA.0 is connected to a button while PORTB.4 to a led, the header file might contain:</p> +<div class="fragment"><pre class="fragment"> <span class="keyword">typedef</span> Gpio<GPIOA_BASE,0> button; + <span class="keyword">typedef</span> Gpio<GPIOB_BASE,4> led; +</pre></div><p>This allows the rest of the code to be written in terms of leds and buttons, without a reference to which pin they are connected to, something that might change.</p> +<p>A simple code using these gpios could be: </p> +<div class="fragment"><pre class="fragment"> <span class="keywordtype">void</span> blinkUntilButtonPressed() + { + led::mode(Mode::OUTPUT); + button::mode(Mode::INPUT); + <span class="keywordflow">for</span>(;;) + { + <span class="keywordflow">if</span>(button::value()==1) <span class="keywordflow">break</span>; + led::high(); + Thread::sleep(250); + led::low(); + Thread::sleep(250); + } + } +</pre></div> </div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___drivers.html b/miosix/_doc/doxygen/html/group___drivers.html new file mode 100644 index 00000000..b1d23940 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___drivers.html @@ -0,0 +1,37 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Drivers</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Drivers</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +</table> +<p>Miosix drivers API</p> +<p>Contains functions and macros that can be used to write drivers for hardware peripherals. These functions, plus the IRQ methods of the Queue class provide a way to transfer data between an interrupt routine and user code, and a way to cause preemption inside an interrupt routine to wake a higher priority Thread waiting on some hardware peripheral.</p> +<p>Also contains the default drivers for each architecture. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___filesystem.html b/miosix/_doc/doxygen/html/group___filesystem.html new file mode 100644 index 00000000..34677e1d --- /dev/null +++ b/miosix/_doc/doxygen/html/group___filesystem.html @@ -0,0 +1,97 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Filesystem</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> </div> + <div class="headertitle"> +<h1>Filesystem</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html">miosix::Filesystem</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html">miosix::Directory</a></td></tr> +<tr><td colspan="2"><h2><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___filesystem.html#ga9fab0d0eb30aba32bb0c6ca21d72c845">miosix::Attrib</a> { <br/> + <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae">miosix::READ_ONLY</a> = 0x01, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43">miosix::HIDDEN</a> = 0x02, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9">miosix::SYSTEM</a> = 0x04, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d">miosix::VOLUME_ID</a> = 0x08, +<br/> + <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86">miosix::DIRECTORY</a> = 0x10, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4">miosix::ARCHIVE</a> = 0x20 +<br/> + }</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p><a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> related functions</p> +<p>File handling will not be described here since it is done using the C or C++ standard library (fopen, fprintf, istream, remove, mkdir, ...).<br/> + All file related function of the C and C++ standard library should work, except rename() and link() which are not implemented.<br/> + The maximum number of files that can be opened at the same time is defined in the constant MAX_OPEN_FILES in <a class="el" href="miosix__settings_8h.html">miosix/config/miosix_settings.h</a>, All files are opened in binary mode. Therefore there is no differnce between fopen("file.txt","r") and fopen("file.txt","rb"). For filesystem write access, the SYNC_AFTER_WRITE option in <a class="el" href="miosix__settings_8h.html">miosix_settings.h</a> allows to choose a faster or safer implementation.</p> +<p><a class="el" href="classmiosix_1_1_directory.html">Directory</a> listing is not done using the standard opendir() and readdir() functions, but using the <a class="el" href="classmiosix_1_1_directory.html">Directory</a> class.</p> +<p>Mounting and unmounting the filesystem is done through the <a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a> class. Note that the filesystem is mounted automatically at boot time, except in case of errors (like no uSD card in the socket). </p> +<hr/><h2>Enumeration Type Documentation</h2> +<a class="anchor" id="ga9fab0d0eb30aba32bb0c6ca21d72c845"></a><!-- doxytag: member="miosix::Attrib" ref="ga9fab0d0eb30aba32bb0c6ca21d72c845" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="group___filesystem.html#ga9fab0d0eb30aba32bb0c6ca21d72c845">miosix::Attrib</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>File attribures, as returned by <a class="el" href="classmiosix_1_1_directory.html#ace4d75cdcad650213a294c2fe7a41381">Directory::next()</a>. More flags can be set at the same time </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae"></a><!-- doxytag: member="READ_ONLY" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae" args="" -->READ_ONLY</em> </td><td> +<p>Entry is read-only. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43"></a><!-- doxytag: member="HIDDEN" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43" args="" -->HIDDEN</em> </td><td> +<p>Entry is hidden. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9"></a><!-- doxytag: member="SYSTEM" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9" args="" -->SYSTEM</em> </td><td> +<p>Entry is a system file. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d"></a><!-- doxytag: member="VOLUME_ID" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d" args="" -->VOLUME_ID</em> </td><td> +<p>Volume label (?). </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86"></a><!-- doxytag: member="DIRECTORY" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86" args="" -->DIRECTORY</em> </td><td> +<p>If this flag is set, entry is a directory, otherwise it's a file. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4"></a><!-- doxytag: member="ARCHIVE" ref="gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4" args="" -->ARCHIVE</em> </td><td> +<p>Entry is marked as archive. </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___hardware.html b/miosix/_doc/doxygen/html/group___hardware.html new file mode 100644 index 00000000..77697ac1 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___hardware.html @@ -0,0 +1,37 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Hardware</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Hardware</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +</table> +<p>Hardware related functions</p> +<p>Starting from Miosix 1.50 the kernel can be run on multiple platforms. It provides some facilities to access common features such as GPIOs in a platform independent way, and leaves the rest of the underlying hardware available for direct use. Including miosix.h in a source file will automaticaly include the header files with the register definitions of the selected microcontroller, so that it is possible to write code that makes use of its peripherals.</p> +<p>Some hardware resources, however, are used by the kernel, and must not be used by user code, to avoid conflicts This usually include a serial port, used for redirecting printf, an SPI or SD card hardware controller, for filesystem access, one or more hardware timers, used for preemption, and some interrupt handlers used for context switching. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___interfaces.html b/miosix/_doc/doxygen/html/group___interfaces.html new file mode 100644 index 00000000..501e4dc1 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___interfaces.html @@ -0,0 +1,405 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Interfaces</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#files">Files</a> | +<a href="#define-members">Defines</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>Interfaces</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html">miosix::Console</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a></td></tr> +<tr><td colspan="2"><h2><a name="files"></a> +Files</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="arch__registers_8h.html">arch_registers.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="bsp_8h.html">bsp.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="console_8h.html">console.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="delays_8h.html">delays.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="disk_8h.html">disk.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="endianness_8h.html">endianness.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="gpio_8h.html">gpio.h</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">file </td><td class="memItemRight" valign="bottom"><a class="el" href="portability_8h.html">portability.h</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaf9a5d5c4095f445894e047a624beab1c">toLittleEndian16</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga81fdb9bbd65db8d3613bcf48b33b6b3c">toLittleEndian32</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9854a77efaef5446bd7e14722017df59">toLittleEndian64</a>(x) (x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga3d118b2a14e2880a0439c9bf9a06c6e5">toBigEndian16</a>(x) swapBytes16(x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaa6c617366016f8aade26bc9dea6cc26b">toBigEndian32</a>(x) swapBytes32(x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9e5f305b36b75ad6f89becf211624ce2">toBigEndian64</a>(x) swapBytes64(x)</td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">miosix::shutdown</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">miosix::reboot</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">miosix::delayMs</a> (unsigned int mseconds)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">miosix::delayUs</a> (unsigned int useconds)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gaac144bf3451c95e74bdd34327f019344">swapBytes16</a> (unsigned short x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gae45d4bbe8a807a780b0033850c143a81">swapBytes32</a> (unsigned int x)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">__MIOSIX_INLINE unsigned long long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga74d39ebb52b05eda594e47f0d90e7ad2">swapBytes64</a> (unsigned long long x)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Interfaces between kernel and architecture specific code.</p> +<p>Starting from Miosix 1.53 all calls from kernel to architecture specific code is done through a set of functions, classes and macros grouped in a set of header files in the miosix/interfaces folder. There are multiple implementations of these functions/classes, one for each architecture supported by Miosix. This eases portability since adding a new architecture is done by implementing a well defined set of interfaces.</p> +<p>Some of these functions are not designed to be accessed by user code, for example the functions in <a class="el" href="portability_8h.html">portability.h</a> are used by the kernel to create threads and perform context switching, while the Disk class in <a class="el" href="disk_8h.html">disk.h</a> is used by the filesystem module to read and write from disk. Such functions are marked as \internal and therefore are not visible by default in this doxygen documentation, because are useless for application developers. If there is the need to port Miosix to another platform it is always possible to build the doxygen documentation manually including \internal functions. Using functions which are marked as \internal in user code might lead to undefined behaviour. </p> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="ga3d118b2a14e2880a0439c9bf9a06c6e5"></a><!-- doxytag: member="endianness.h::toBigEndian16" ref="ga3d118b2a14e2880a0439c9bf9a06c6e5" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toBigEndian16</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> swapBytes16(x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) short int from the system representation to big endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to big endian </dd></dl> + +</div> +</div> +<a class="anchor" id="gaa6c617366016f8aade26bc9dea6cc26b"></a><!-- doxytag: member="endianness.h::toBigEndian32" ref="gaa6c617366016f8aade26bc9dea6cc26b" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toBigEndian32</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> swapBytes32(x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) int from the system representation to big endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to big endian </dd></dl> + +</div> +</div> +<a class="anchor" id="ga9e5f305b36b75ad6f89becf211624ce2"></a><!-- doxytag: member="endianness.h::toBigEndian64" ref="ga9e5f305b36b75ad6f89becf211624ce2" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toBigEndian64</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> swapBytes64(x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) long long from the system representation to big endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to big endian </dd></dl> + +</div> +</div> +<a class="anchor" id="gaf9a5d5c4095f445894e047a624beab1c"></a><!-- doxytag: member="endianness.h::toLittleEndian16" ref="gaf9a5d5c4095f445894e047a624beab1c" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toLittleEndian16</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> (x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) short int from the system representation to little endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to little endian </dd></dl> + +</div> +</div> +<a class="anchor" id="ga81fdb9bbd65db8d3613bcf48b33b6b3c"></a><!-- doxytag: member="endianness.h::toLittleEndian32" ref="ga81fdb9bbd65db8d3613bcf48b33b6b3c" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toLittleEndian32</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> (x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) int from the system representation to little endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to little endian </dd></dl> + +</div> +</div> +<a class="anchor" id="ga9854a77efaef5446bd7e14722017df59"></a><!-- doxytag: member="endianness.h::toLittleEndian64" ref="ga9854a77efaef5446bd7e14722017df59" args="(x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define toLittleEndian64</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x</td> + <td> ) </td> + <td> (x)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Convert a (signed or unsigned) long long from the system representation to little endian </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>value to convert </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>value converted to little endian </dd></dl> + +</div> +</div> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="ga9d13aceddc0481fd1077e6fdfb31f9a7"></a><!-- doxytag: member="miosix::delayMs" ref="ga9d13aceddc0481fd1077e6fdfb31f9a7" args="(unsigned int mseconds)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::delayMs </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>mseconds</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Delay function. Accuracy depends on the underlying implementation which is architecture specific.<br/> + Delay time can be inaccurate if interrupts are enabled or the kernel is running due to time spent in interrupts and due to preemption.<br/> + It is implemented using busy wait, so can be safely used even when the kernel is paused or interrupts are disabled.<br/> + If the kernel is running it is *highly* recomended to use <a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">Thread::sleep</a> since it gives CPU time to other threads and/or it puts the CPU in low power mode. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>mseconds</em> </td><td>milliseconds to wait </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ga244f9474d20ffd5d905855f68aa3114f"></a><!-- doxytag: member="miosix::delayUs" ref="ga244f9474d20ffd5d905855f68aa3114f" args="(unsigned int useconds)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::delayUs </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>useconds</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Delay function. Accuracy depends on the underlying implementation which is architecture specific.<br/> + Delay time can be inaccurate if interrupts are enabled or the kernel is running due to time spent in interrupts and due to preemption.<br/> + It is implemented using busy wait, so can be safely used even when the kernel is paused or interrupts are disabled.<br/> + </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>useconds</em> </td><td>microseconds to wait. Only values between 1 and 1000 are allowed. For greater delays use <a class="el" href="classmiosix_1_1_thread.html#ad7f738dc69a918960fe814a062696c5c">Thread::sleep()</a> or <a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">delayMs()</a>. </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="ga6f70fdbc3b5d6afa41b5dbc5272cc6a0"></a><!-- doxytag: member="miosix::reboot" ref="ga6f70fdbc3b5d6afa41b5dbc5272cc6a0" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::reboot </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>The difference between this function and miosix_private::IRQsystemReboot() is that this function disables filesystem (if enabled), serial port (if enabled) while miosix_private::system_reboot() does not do all these things. miosix_private::IRQsystemReboot() is designed to reboot the system when an unrecoverable error occurs, and is used primarily in kernel code, <a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">reboot()</a> is designed to reboot the system in normal conditions.<br/> + This function does not return.<br/> + WARNING: close all files before using this function, since it unmounts the filesystem. </p> + +</div> +</div> +<a class="anchor" id="gae0495cbfc806a0db0cdf2ff023945516"></a><!-- doxytag: member="miosix::shutdown" ref="gae0495cbfc806a0db0cdf2ff023945516" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::shutdown </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This function disables filesystem (if enabled), serial port (if enabled) and shuts down the system, usually by putting the procesor in a deep sleep state.<br/> + The action to start a new boot is system-specific, can be for example a reset, powercycle or a special GPIO configured to wakeup the processor from deep sleep.<br/> + This function does not return.<br/> + WARNING: close all files before using this function, since it unmounts the filesystem.<br/> + </p> + +</div> +</div> +<a class="anchor" id="gaac144bf3451c95e74bdd34327f019344"></a><!-- doxytag: member="endianness.h::swapBytes16" ref="gaac144bf3451c95e74bdd34327f019344" args="(unsigned short x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned short swapBytes16 </td> + <td>(</td> + <td class="paramtype">unsigned short </td> + <td class="paramname"> <em>x</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>an short int </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>the same short with its bytes swapped </dd></dl> + +</div> +</div> +<a class="anchor" id="gae45d4bbe8a807a780b0033850c143a81"></a><!-- doxytag: member="endianness.h::swapBytes32" ref="gae45d4bbe8a807a780b0033850c143a81" args="(unsigned int x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned int swapBytes32 </td> + <td>(</td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>x</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>an int </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>the same int with its bytes swapped </dd></dl> + +</div> +</div> +<a class="anchor" id="ga74d39ebb52b05eda594e47f0d90e7ad2"></a><!-- doxytag: member="endianness.h::swapBytes64" ref="ga74d39ebb52b05eda594e47f0d90e7ad2" args="(unsigned long long x)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned long long swapBytes64 </td> + <td>(</td> + <td class="paramtype">unsigned long long </td> + <td class="paramname"> <em>x</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>x</em> </td><td>a long long </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>the same long long with its bytes swapped </dd></dl> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___kernel.html b/miosix/_doc/doxygen/html/group___kernel.html new file mode 100644 index 00000000..f80c61e5 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___kernel.html @@ -0,0 +1,254 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Kernel</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>Kernel</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">miosix::InterruptDisableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">miosix::InterruptEnableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">miosix::FastInterruptDisableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">miosix::FastInterruptEnableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">miosix::PauseKernelLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">miosix::RestartKernelLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html">miosix::Thread</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lower_priority.html">miosix::LowerPriority</a></td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">miosix::disableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">miosix::enableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">miosix::fastDisableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga882229b6c936a87454cb154a90751927">miosix::fastEnableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">miosix::pauseKernel</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">miosix::restartKernel</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gacabb0637ded36778470fa27eea329d84">miosix::areInterruptsEnabled</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gaabdbf06e8cf514d3113325a01927ccf5">miosix::isKernelRunning</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">long long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gad16c495ced6659e8bc0bb371362674ef">miosix::getTick</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Miosix kernel API</p> +<p>The most useful part of this API is the <a class="el" href="classmiosix_1_1_thread.html">Thread</a> class that allows to create and manage threads.</p> +<p>A note on IRQ functions/methods:<br/> + Functions and methods that do not begin with IRQ cannot be called inside IRQ or when interrupts are disabled.<br/> + Functions and methods that begin with IRQ cannot be called outside IRQ or when interrupts are enabled.<br/> + When the kernel is paused, you must read the comment of the function to see if it can be called since there is no general rule.<br/> + Only recently (starting from Miosix 1.53) some of the functions designed to be called with kernel paused are marked with the PK prefix. </p> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="gacabb0637ded36778470fa27eea329d84"></a><!-- doxytag: member="miosix::areInterruptsEnabled" ref="gacabb0637ded36778470fa27eea329d84" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::areInterruptsEnabled </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if interrupts are enabled </dd></dl> + +</div> +</div> +<a class="anchor" id="gacd7ef6e968c5c0b2ff45bf102388ea4d"></a><!-- doxytag: member="miosix::disableInterrupts" ref="gacd7ef6e968c5c0b2ff45bf102388ea4d" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::disableInterrupts </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Disable interrupts, if interrupts were enable prior to calling this function.</p> +<p>Please note that starting from Miosix 1.51 <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a> and <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a> can be nested. You can therefore call <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a> multiple times as long as each call is matched by a call to <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a>.<br/> + This replaced disable_and_save_interrupts() and restore_interrupts()</p> +<p><a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a> cannot be called within an interrupt routine, but can be called before the kernel is started (and does nothing in this case) </p> + +</div> +</div> +<a class="anchor" id="ga36adaaa176d004747d2a01b822c9fea5"></a><!-- doxytag: member="miosix::enableInterrupts" ref="ga36adaaa176d004747d2a01b822c9fea5" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::enableInterrupts </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Enable interrupts.<br/> + Please note that starting from Miosix 1.51 <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a> and <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a> can be nested. You can therefore call <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a> multiple times as long as each call is matched by a call to <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a>.<br/> + This replaced disable_and_save_interrupts() and restore_interrupts()</p> +<p><a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a> cannot be called within an interrupt routine, but can be called before the kernel is started (and does nothing in this case) </p> + +</div> +</div> +<a class="anchor" id="gaeeacb47660439066bb1d787593da9f4e"></a><!-- doxytag: member="miosix::fastDisableInterrupts" ref="gaeeacb47660439066bb1d787593da9f4e" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::fastDisableInterrupts </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Fast version of <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts()</a>.<br/> + Despite faster, it has a couple of preconditions:</p> +<ul> +<li>calls to <a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">fastDisableInterrupts()</a> can't be nested</li> +<li>it can't be used in code that is called before the kernel is started </li> +</ul> + +</div> +</div> +<a class="anchor" id="ga882229b6c936a87454cb154a90751927"></a><!-- doxytag: member="miosix::fastEnableInterrupts" ref="ga882229b6c936a87454cb154a90751927" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::fastEnableInterrupts </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Fast version of <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts()</a>.<br/> + Despite faster, it has a couple of preconditions:</p> +<ul> +<li>calls to <a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">fastDisableInterrupts()</a> can't be nested</li> +<li>it can't be used in code that is called before the kernel is started, because it will (incorreclty) lead to interrupts being enabled before the kernel is started </li> +</ul> + +</div> +</div> +<a class="anchor" id="gad16c495ced6659e8bc0bb371362674ef"></a><!-- doxytag: member="miosix::getTick" ref="gad16c495ced6659e8bc0bb371362674ef" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">long long miosix::getTick </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Returns the current kernel tick.<br/> +Can be called also with interrupts disabled and/or kernel paused. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>current kernel tick </dd></dl> + +</div> +</div> +<a class="anchor" id="gaabdbf06e8cf514d3113325a01927ccf5"></a><!-- doxytag: member="miosix::isKernelRunning" ref="gaabdbf06e8cf514d3113325a01927ccf5" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool miosix::isKernelRunning </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Return true if kernel is running, false if it is not started, or paused.<br/> + Warning: disabling/enabling interrupts does not affect the result returned by this function. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>true if kernel is running (started && not paused) </dd></dl> + +</div> +</div> +<a class="anchor" id="ga730c9359f8069cb2f785501ea763eb43"></a><!-- doxytag: member="miosix::pauseKernel" ref="ga730c9359f8069cb2f785501ea763eb43" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::pauseKernel </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Pause the kernel.<br/> +Interrupts will continue to occur, but no preemption is possible. Call to this function are cumulative: if you call <a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">pauseKernel()</a> two times, you need to call <a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">restartKernel()</a> two times.<br/> +Pausing the kernel must be avoided if possible because it is easy to cause deadlock. Calling file related functions (fopen, <a class="el" href="classmiosix_1_1_directory.html#ab3b8f627404f790ca9e309dd90d4e8a0">Directory::open()</a> ...), serial port related functions (printf ...) or kernel functions that cannot be called when the kernel is paused will cause deadlock. Therefore, if possible, it is better to use a <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> instead of pausing the kernel<br/> +This function is safe to be called even before the kernel is started. In this case it has no effect. </p> + +</div> +</div> +<a class="anchor" id="gad3bee49a8dd57a598b7d7aeeeaf8496c"></a><!-- doxytag: member="miosix::restartKernel" ref="gad3bee49a8dd57a598b7d7aeeeaf8496c" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::restartKernel </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Restart the kernel.<br/> +This function will yield immediately if a tick has been missed. Since calls to <a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">pauseKernel()</a> are cumulative, if you call <a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">pauseKernel()</a> two times, you need to call <a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">restartKernel()</a> two times.<br/> + This function is safe to be called even before the kernel is started. In this case it has no effect. </p> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___settings.html b/miosix/_doc/doxygen/html/group___settings.html new file mode 100644 index 00000000..e3275667 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___settings.html @@ -0,0 +1,235 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Settings</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#define-members">Defines</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<h1>Settings</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga2acdc2f0df96cf6cbc35f7fd78ddb70d">SCHED_TYPE_PRIORITY</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga18c8e73660707ad40a2ee8590f35db68">SCHED_TYPE_CONTROL_BASED</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gaca4195a7b3efe86d766d5fbf6db64aa0">SCHED_TYPE_EDF</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga35c68f7b13770080cccce5baafc24a30">WITH_FILESYSTEM</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga7f95cdeac372c6633422b100d6b15bba">SYNC_AFTER_WRITE</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gaad46faddaac4a765531e05ab44c52a3e">WITH_STDIN_BUFFER</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga2c6b4dab3da5b7b77fef128e1cd2fa79">WITH_BOOTLOG</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga77cf94725c645792e686ff791e47d703">WITH_ERRLOG</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gae8275208fa2c8f8bc833fa8bc78ff350">JTAG_DISABLE_SLEEP</a></td></tr> +<tr><td colspan="2"><h2><a name="var-members"></a> +Variables</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0ec1a8ab604e6a08eec2994d436346f7"></a><!-- doxytag: member="Settings::MAX_OPEN_FILES" ref="ga0ec1a8ab604e6a08eec2994d436346f7" args="" --> +const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga0ec1a8ab604e6a08eec2994d436346f7">miosix::MAX_OPEN_FILES</a> = 8</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of open files. Trying to open more will fail. <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga26c88a1771bb21a80aa22789d16291d1"></a><!-- doxytag: member="Settings::STACK_MIN" ref="ga26c88a1771bb21a80aa22789d16291d1" args="" --> +const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga26c88a1771bb21a80aa22789d16291d1">miosix::STACK_MIN</a> = 256</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Minimum stack size (MUST be divisible by 4). <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">miosix::STACK_DEFAULT_FOR_PTHREAD</a> = 2048</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const short int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">miosix::PRIORITY_MAX</a> = 4</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">miosix::MAIN_PRIORITY</a> = 1</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>If your application requires it, you can change the default settings for kernel and drivers.</p> +<p>Kernel settings are in miosix/kernel/kernel_settings.h,<br/> + while all other settings are in miosix/miosix_settings.h<br/> +</p> +<p>Don't forget to rebuild the kernel if you make modifications to these settings. </p> +<hr/><h2>Define Documentation</h2> +<a class="anchor" id="gae8275208fa2c8f8bc833fa8bc78ff350"></a><!-- doxytag: member="miosix_settings.h::JTAG_DISABLE_SLEEP" ref="gae8275208fa2c8f8bc833fa8bc78ff350" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define JTAG_DISABLE_SLEEP</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>JTAG debuggers lose communication with the device if it enters sleep mode, so to use debugging it is necessary to disble sleep in the idle thread. By default it is not defined (idle thread calls sleep). </p> + +</div> +</div> +<a class="anchor" id="ga18c8e73660707ad40a2ee8590f35db68"></a><!-- doxytag: member="miosix_settings.h::SCHED_TYPE_CONTROL_BASED" ref="ga18c8e73660707ad40a2ee8590f35db68" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCHED_TYPE_CONTROL_BASED</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If uncommented selects the control based scheduler </p> + +</div> +</div> +<a class="anchor" id="gaca4195a7b3efe86d766d5fbf6db64aa0"></a><!-- doxytag: member="miosix_settings.h::SCHED_TYPE_EDF" ref="gaca4195a7b3efe86d766d5fbf6db64aa0" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCHED_TYPE_EDF</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If uncommented selects the EDF scheduler </p> + +</div> +</div> +<a class="anchor" id="ga2acdc2f0df96cf6cbc35f7fd78ddb70d"></a><!-- doxytag: member="miosix_settings.h::SCHED_TYPE_PRIORITY" ref="ga2acdc2f0df96cf6cbc35f7fd78ddb70d" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCHED_TYPE_PRIORITY</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If uncommented selects the priority scheduler </p> + +</div> +</div> +<a class="anchor" id="ga7f95cdeac372c6633422b100d6b15bba"></a><!-- doxytag: member="miosix_settings.h::SYNC_AFTER_WRITE" ref="ga7f95cdeac372c6633422b100d6b15bba" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SYNC_AFTER_WRITE</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Increases filesystem write robustness. After each write operation the filesystem is synced so that a power failure happens data is not lost (unless power failure happens exactly between the write and the sync) Unfortunately write latency and throughput becomes twice as worse By default it is defined (slow but safe) </p> + +</div> +</div> +<a class="anchor" id="ga2c6b4dab3da5b7b77fef128e1cd2fa79"></a><!-- doxytag: member="miosix_settings.h::WITH_BOOTLOG" ref="ga2c6b4dab3da5b7b77fef128e1cd2fa79" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define WITH_BOOTLOG</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Uncomment to print bootlogs on stdout. By default it is defined (bootlogs are printed) </p> + +</div> +</div> +<a class="anchor" id="ga77cf94725c645792e686ff791e47d703"></a><!-- doxytag: member="miosix_settings.h::WITH_ERRLOG" ref="ga77cf94725c645792e686ff791e47d703" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define WITH_ERRLOG</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Uncomment for debug information on stdout. By default it is defined (error information is printed) </p> + +</div> +</div> +<a class="anchor" id="ga35c68f7b13770080cccce5baafc24a30"></a><!-- doxytag: member="miosix_settings.h::WITH_FILESYSTEM" ref="ga35c68f7b13770080cccce5baafc24a30" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define WITH_FILESYSTEM</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Allows to enable/disable filesystem support. By default it is defined (filesystem support is enabled) </p> + +</div> +</div> +<a class="anchor" id="gaad46faddaac4a765531e05ab44c52a3e"></a><!-- doxytag: member="miosix_settings.h::WITH_STDIN_BUFFER" ref="gaad46faddaac4a765531e05ab44c52a3e" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define WITH_STDIN_BUFFER</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>If defined, incoming data fron the serial port will be buffered prior to being delivered to stdin related functions (scanf, fgets, cin...). Buffer is flushed on newline or when full. This has a behaviour more similar to desktop operating systems but requires 1KB of RAM for the buffer. Despite counterintuitive, if you never use stdin related functions defining WITH_STDIN_BUFFER will reduce code size. By default it is defined (stdin is buffered) </p> + +</div> +</div> +<hr/><h2>Variable Documentation</h2> +<a class="anchor" id="gad66abb7a060d94617390e1838e4e3b01"></a><!-- doxytag: member="miosix::MAIN_PRIORITY" ref="gad66abb7a060d94617390e1838e4e3b01" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const unsigned char <a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">miosix::MAIN_PRIORITY</a> = 1</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Priority of main() The meaning of a thread's priority depends on the chosen scheduler. </p> + +</div> +</div> +<a class="anchor" id="ga8c0365b6cd111f990937319e4499962b"></a><!-- doxytag: member="miosix::PRIORITY_MAX" ref="ga8c0365b6cd111f990937319e4499962b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const short int <a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">miosix::PRIORITY_MAX</a> = 4</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Number of priorities (MUST be >1) PRIORITY_MAX-1 is the highest priority, 0 is the lowest. -1 is reserved as the priority of the idle thread. The meaning of a thread's priority depends on the chosen scheduler. </p> + +</div> +</div> +<a class="anchor" id="ga466ea8e233d84803e31f3e9d9d978cfd"></a><!-- doxytag: member="miosix::STACK_DEFAULT_FOR_PTHREAD" ref="ga466ea8e233d84803e31f3e9d9d978cfd" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const unsigned int <a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">miosix::STACK_DEFAULT_FOR_PTHREAD</a> = 2048</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Default stack size for pthread_create. The chosen value is enough to call C standard library functions such as printf/fopen which are stack-heavy </p> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___sync.html b/miosix/_doc/doxygen/html/group___sync.html new file mode 100644 index 00000000..33f68efb --- /dev/null +++ b/miosix/_doc/doxygen/html/group___sync.html @@ -0,0 +1,51 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Syncronization</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> </div> + <div class="headertitle"> +<h1>Syncronization</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html">miosix::FastMutex</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html">miosix::Mutex</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lock.html">miosix::Lock< T ></a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html">miosix::Unlock< T ></a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html">miosix::ConditionVariable</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html">miosix::Timer</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html">miosix::Queue< T, len ></a></td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Miosix syncronization API</p> +<p>Miosix provides the <a class="el" href="classmiosix_1_1_mutex.html">Mutex</a> class to guard critical sections,<br/> + the <a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a> class for thread synchronization,<br/> + the <a class="el" href="classmiosix_1_1_queue.html">Queue</a> class to transfer data between threads,<br/> + and the <a class="el" href="classmiosix_1_1_timer.html">Timer</a> class to measure time intervals. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/group___util.html b/miosix/_doc/doxygen/html/group___util.html new file mode 100644 index 00000000..03b808a8 --- /dev/null +++ b/miosix/_doc/doxygen/html/group___util.html @@ -0,0 +1,102 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Utilities</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<h1>Utilities</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html">miosix::MemoryProfiling</a></td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___util.html#gaa01c92389801f7962a0bd9f0bfc03a66">miosix::memDump</a> (char *start, int len)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___util.html#gadc3015d9be3c5eb12fe691ca0ca9251b">miosix::getMiosixVersion</a> ()</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>Some utilities functions.</p> +<p>The most notable ones are the utilities for memory profiling, grouped in the <a class="el" href="classmiosix_1_1_memory_profiling.html">MemoryProfiling</a> class. </p> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="gadc3015d9be3c5eb12fe691ca0ca9251b"></a><!-- doxytag: member="miosix::getMiosixVersion" ref="gadc3015d9be3c5eb12fe691ca0ca9251b" args="()" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const char * miosix::getMiosixVersion </td> + <td>(</td> + <td class="paramname"></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Allows to know the version of the kernel at runtime. </p> +<dl class="return"><dt><b>Returns:</b></dt><dd>a string with the kernel version. The format is "Miosix vX.XX (board, builddate, compiler)" where vX.XX is the kernel version number, like "v1.59" board is the board name, like "stm32f103ze_stm3210e-eval" builddate is the date the kernel was built, like "Oct 30 2011 00:58:10" compiler is the compiler version, like "gcc 4.5.2" </dd></dl> + +</div> +</div> +<a class="anchor" id="gaa01c92389801f7962a0bd9f0bfc03a66"></a><!-- doxytag: member="miosix::memDump" ref="gaa01c92389801f7962a0bd9f0bfc03a66" args="(char *start, int len)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::memDump </td> + <td>(</td> + <td class="paramtype">char * </td> + <td class="paramname"> <em>start</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int </td> + <td class="paramname"> <em>len</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>dump a memory area in this format 0x00000000 | 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 | ................ </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>start</em> </td><td>pointer to beginning of memory block to dump </td></tr> + <tr><td valign="top"></td><td valign="top"><em>len</em> </td><td>length of memory block to dump </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/index.html b/miosix/_doc/doxygen/html/index.html new file mode 100644 index 00000000..2d10eb62 --- /dev/null +++ b/miosix/_doc/doxygen/html/index.html @@ -0,0 +1,16 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Frameset//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-frameset.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix</title> +</head> +<frameset cols="250,*"> + <frame src="tree.html" name="treefrm"/> + <frame src="main.html" name="basefrm"/> + <noframes> + <body> + <a href="main.html">Frames are disabled. Click here to go to the main page.</a> + </body> + </noframes> +</frameset> +</html> diff --git a/miosix/_doc/doxygen/html/main.html b/miosix/_doc/doxygen/html/main.html new file mode 100644 index 00000000..27a16ab8 --- /dev/null +++ b/miosix/_doc/doxygen/html/main.html @@ -0,0 +1,34 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Miosix embedded OS</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li class="current"><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Miosix embedded OS </h1> </div> +</div> +<div class="contents"> +<h3 class="version">1.59 </h3><dl class="author"><dt><b>Author:</b></dt><dd>Terraneo Federico</dd></dl> +<p>This is the documentation of Miosix, a kernel designed for embedded systems. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/miosix__settings_8h.html b/miosix/_doc/doxygen/html/miosix__settings_8h.html new file mode 100644 index 00000000..1e47b3d3 --- /dev/null +++ b/miosix/_doc/doxygen/html/miosix__settings_8h.html @@ -0,0 +1,73 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix_settings.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#namespaces">Namespaces</a> | +<a href="#define-members">Defines</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<h1>miosix_settings.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "arch_settings.h"</code><br/> +<code>#include "board_settings.h"</code><br/> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html">miosix</a></td></tr> +<tr><td colspan="2"><h2><a name="define-members"></a> +Defines</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga2acdc2f0df96cf6cbc35f7fd78ddb70d">SCHED_TYPE_PRIORITY</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga18c8e73660707ad40a2ee8590f35db68">SCHED_TYPE_CONTROL_BASED</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gaca4195a7b3efe86d766d5fbf6db64aa0">SCHED_TYPE_EDF</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga35c68f7b13770080cccce5baafc24a30">WITH_FILESYSTEM</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga7f95cdeac372c6633422b100d6b15bba">SYNC_AFTER_WRITE</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gaad46faddaac4a765531e05ab44c52a3e">WITH_STDIN_BUFFER</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga2c6b4dab3da5b7b77fef128e1cd2fa79">WITH_BOOTLOG</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga77cf94725c645792e686ff791e47d703">WITH_ERRLOG</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gae8275208fa2c8f8bc833fa8bc78ff350">JTAG_DISABLE_SLEEP</a></td></tr> +<tr><td colspan="2"><h2><a name="var-members"></a> +Variables</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0ec1a8ab604e6a08eec2994d436346f7"></a><!-- doxytag: member="miosix_settings.h::MAX_OPEN_FILES" ref="ga0ec1a8ab604e6a08eec2994d436346f7" args="" --> +const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga0ec1a8ab604e6a08eec2994d436346f7">miosix::MAX_OPEN_FILES</a> = 8</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of open files. Trying to open more will fail. <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga26c88a1771bb21a80aa22789d16291d1"></a><!-- doxytag: member="miosix_settings.h::STACK_MIN" ref="ga26c88a1771bb21a80aa22789d16291d1" args="" --> +const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga26c88a1771bb21a80aa22789d16291d1">miosix::STACK_MIN</a> = 256</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Minimum stack size (MUST be divisible by 4). <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">miosix::STACK_DEFAULT_FOR_PTHREAD</a> = 2048</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const short int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">miosix::PRIORITY_MAX</a> = 4</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">miosix::MAIN_PRIORITY</a> = 1</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>NOTE: this file contains ONLY configuration options that are not dependent on architecture specific details. The other options are in the following files which are included here: miosix/arch/architecture name/common/arch_settings.h miosix/arch/architecture name/board name/board_settings.h </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/modules.html b/miosix/_doc/doxygen/html/modules.html new file mode 100644 index 00000000..a6c0f989 --- /dev/null +++ b/miosix/_doc/doxygen/html/modules.html @@ -0,0 +1,42 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Module Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li class="current"><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Modules</h1> </div> +</div> +<div class="contents"> +Here is a list of all modules:<ul> +<li><a class="el" href="group___kernel.html">Kernel</a></li> +<li><a class="el" href="group___sync.html">Syncronization</a></li> +<li><a class="el" href="group___interfaces.html">Interfaces</a></li> +<li><a class="el" href="group___hardware.html">Hardware</a></li> +<li><a class="el" href="group___filesystem.html">Filesystem</a></li> +<li><a class="el" href="group___drivers.html">Drivers</a></li> +<li><a class="el" href="group___util.html">Utilities</a></li> +<li><a class="el" href="group___settings.html">Settings</a></li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemembers.html b/miosix/_doc/doxygen/html/namespacemembers.html new file mode 100644 index 00000000..87b8c593 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemembers.html @@ -0,0 +1,278 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="namespacemembers.html"><span>All</span></a></li> + <li><a href="namespacemembers_func.html"><span>Functions</span></a></li> + <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li> + <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li> + <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> + <div class="tabs3"> + <ul class="tablist"> + <li><a href="#index_a"><span>a</span></a></li> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_c"><span>c</span></a></li> + <li><a href="#index_d"><span>d</span></a></li> + <li><a href="#index_e"><span>e</span></a></li> + <li><a href="#index_f"><span>f</span></a></li> + <li><a href="#index_g"><span>g</span></a></li> + <li><a href="#index_h"><span>h</span></a></li> + <li><a href="#index_i"><span>i</span></a></li> + <li><a href="#index_k"><span>k</span></a></li> + <li><a href="#index_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</span></a></li> + <li><a href="#index_o"><span>o</span></a></li> + <li><a href="#index_p"><span>p</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_s"><span>s</span></a></li> + <li><a href="#index_u"><span>u</span></a></li> + <li><a href="#index_v"><span>v</span></a></li> + </ul> + </div> +</div> +<div class="contents"> +Here is a list of all documented namespace members with links to the namespaces they belong to: + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>ARCHIVE +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4">miosix</a> +</li> +<li>areInterruptsEnabled() +: <a class="el" href="group___kernel.html#gacabb0637ded36778470fa27eea329d84">miosix</a> +</li> +<li>Attrib +: <a class="el" href="group___filesystem.html#ga9fab0d0eb30aba32bb0c6ca21d72c845">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>bootlog() +: <a class="el" href="namespacemiosix.html#a0e2bf0d427fe1eb214692830e46fb209">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>crc16() +: <a class="el" href="namespacemiosix.html#a9e8a0090904ff275d38d22f26919ff69">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_d"></a>- d -</h3><ul> +<li>delayMs() +: <a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">miosix</a> +</li> +<li>delayUs() +: <a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">miosix</a> +</li> +<li>DIRECTORY +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86">miosix</a> +</li> +<li>DISABLE_INTERRUPTS_NESTING +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a7b868b4e1fd949857af27acacd2f9cbb">miosix</a> +</li> +<li>disableInterrupts() +: <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_e"></a>- e -</h3><ul> +<li>enableInterrupts() +: <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">miosix</a> +</li> +<li>Error +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8">miosix</a> +</li> +<li>errorHandler() +: <a class="el" href="namespacemiosix.html#aecda173e5927720cd233599817c5da23">miosix</a> +</li> +<li>errorLog() +: <a class="el" href="namespacemiosix.html#ac57cb5a3e83dc0c859161bc4aa04d591">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>fastDisableInterrupts() +: <a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">miosix</a> +</li> +<li>fastEnableInterrupts() +: <a class="el" href="group___kernel.html#ga882229b6c936a87454cb154a90751927">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_g"></a>- g -</h3><ul> +<li>getMiosixVersion() +: <a class="el" href="group___util.html#gadc3015d9be3c5eb12fe691ca0ca9251b">miosix</a> +</li> +<li>getTick() +: <a class="el" href="group___kernel.html#gad16c495ced6659e8bc0bb371362674ef">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>HIDDEN +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>INTERRUPTS_ENABLED_AT_BOOT +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8ac5c5ef56383e34096e518226d8898f53">miosix</a> +</li> +<li>INVALID_PARAMETERS +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8af0fb70dd25fac18136ea28f9c0286b65">miosix</a> +</li> +<li>IRQbootlog() +: <a class="el" href="namespacemiosix.html#a77703dfc8874c826975fa54f79e7a3e5">miosix</a> +</li> +<li>IRQerrorLog() +: <a class="el" href="namespacemiosix.html#afa3e31f3fb49abc777a10380ca9ffe19">miosix</a> +</li> +<li>isKernelRunning() +: <a class="el" href="group___kernel.html#gaabdbf06e8cf514d3113325a01927ccf5">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_k"></a>- k -</h3><ul> +<li>kpi +: <a class="el" href="namespacemiosix.html#ab26854f238450057e4b1eb3687ac4f88">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>MAIN_PRIORITY +: <a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">miosix</a> +</li> +<li>MAX_OPEN_FILES +: <a class="el" href="group___settings.html#ga0ec1a8ab604e6a08eec2994d436346f7">miosix</a> +</li> +<li>memDump() +: <a class="el" href="group___util.html#gaa01c92389801f7962a0bd9f0bfc03a66">miosix</a> +</li> +<li>multFactor +: <a class="el" href="namespacemiosix.html#ac4774f319395e90899e2aa549444495b">miosix</a> +</li> +<li>MUTEX_DEADLOCK +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a19d15bb3cd3dd524578bc258113a95ea">miosix</a> +</li> +<li>MUTEX_UNLOCK_NOT_OWNER +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a9bb07c35ec33e49234a73ea04f49e5e8">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>NESTING_OVERFLOW +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8acfa2dba3f5a797e00a49aecb3385dcd6">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_o"></a>- o -</h3><ul> +<li>OUT_OF_MEMORY +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a4a9ecbff543a923809f4a669f5a2ff18">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>PAUSE_KERNEL_NESTING +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8aba75de60056149f80f47ed9b2249fdf2">miosix</a> +</li> +<li>pauseKernel() +: <a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">miosix</a> +</li> +<li>PRIORITY_MAX +: <a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">miosix</a> +</li> +<li>PROPAGATED_EXCEPTION +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a05e4098f64c514996a071e09d3f030ec">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>READ_ONLY +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae">miosix</a> +</li> +<li>reboot() +: <a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">miosix</a> +</li> +<li>restartKernel() +: <a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_s"></a>- s -</h3><ul> +<li>shutdown() +: <a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">miosix</a> +</li> +<li>STACK_DEFAULT_FOR_PTHREAD +: <a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">miosix</a> +</li> +<li>STACK_MIN +: <a class="el" href="group___settings.html#ga26c88a1771bb21a80aa22789d16291d1">miosix</a> +</li> +<li>STACK_OVERFLOW +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a772bd51dfe3b2db17e618c589e55e3b8">miosix</a> +</li> +<li>SYSTEM +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_u"></a>- u -</h3><ul> +<li>UNEXPECTED +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a047868d81b859f0eda3d4a172900e4d6">miosix</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_v"></a>- v -</h3><ul> +<li>VOLUME_ID +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d">miosix</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemembers_enum.html b/miosix/_doc/doxygen/html/namespacemembers_enum.html new file mode 100644 index 00000000..2d95f329 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemembers_enum.html @@ -0,0 +1,51 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespacemembers.html"><span>All</span></a></li> + <li><a href="namespacemembers_func.html"><span>Functions</span></a></li> + <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li> + <li class="current"><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li> + <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>Attrib +: <a class="el" href="group___filesystem.html#ga9fab0d0eb30aba32bb0c6ca21d72c845">miosix</a> +</li> +<li>Error +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8">miosix</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemembers_eval.html b/miosix/_doc/doxygen/html/namespacemembers_eval.html new file mode 100644 index 00000000..2acef303 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemembers_eval.html @@ -0,0 +1,96 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespacemembers.html"><span>All</span></a></li> + <li><a href="namespacemembers_func.html"><span>Functions</span></a></li> + <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li> + <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li> + <li class="current"><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>ARCHIVE +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4">miosix</a> +</li> +<li>DIRECTORY +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86">miosix</a> +</li> +<li>DISABLE_INTERRUPTS_NESTING +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a7b868b4e1fd949857af27acacd2f9cbb">miosix</a> +</li> +<li>HIDDEN +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43">miosix</a> +</li> +<li>INTERRUPTS_ENABLED_AT_BOOT +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8ac5c5ef56383e34096e518226d8898f53">miosix</a> +</li> +<li>INVALID_PARAMETERS +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8af0fb70dd25fac18136ea28f9c0286b65">miosix</a> +</li> +<li>MUTEX_DEADLOCK +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a19d15bb3cd3dd524578bc258113a95ea">miosix</a> +</li> +<li>MUTEX_UNLOCK_NOT_OWNER +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a9bb07c35ec33e49234a73ea04f49e5e8">miosix</a> +</li> +<li>NESTING_OVERFLOW +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8acfa2dba3f5a797e00a49aecb3385dcd6">miosix</a> +</li> +<li>OUT_OF_MEMORY +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a4a9ecbff543a923809f4a669f5a2ff18">miosix</a> +</li> +<li>PAUSE_KERNEL_NESTING +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8aba75de60056149f80f47ed9b2249fdf2">miosix</a> +</li> +<li>PROPAGATED_EXCEPTION +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a05e4098f64c514996a071e09d3f030ec">miosix</a> +</li> +<li>READ_ONLY +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae">miosix</a> +</li> +<li>STACK_OVERFLOW +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a772bd51dfe3b2db17e618c589e55e3b8">miosix</a> +</li> +<li>SYSTEM +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9">miosix</a> +</li> +<li>UNEXPECTED +: <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a047868d81b859f0eda3d4a172900e4d6">miosix</a> +</li> +<li>VOLUME_ID +: <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d">miosix</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemembers_func.html b/miosix/_doc/doxygen/html/namespacemembers_func.html new file mode 100644 index 00000000..aab24562 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemembers_func.html @@ -0,0 +1,108 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespacemembers.html"><span>All</span></a></li> + <li class="current"><a href="namespacemembers_func.html"><span>Functions</span></a></li> + <li><a href="namespacemembers_vars.html"><span>Variables</span></a></li> + <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li> + <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>areInterruptsEnabled() +: <a class="el" href="group___kernel.html#gacabb0637ded36778470fa27eea329d84">miosix</a> +</li> +<li>bootlog() +: <a class="el" href="namespacemiosix.html#a0e2bf0d427fe1eb214692830e46fb209">miosix</a> +</li> +<li>crc16() +: <a class="el" href="namespacemiosix.html#a9e8a0090904ff275d38d22f26919ff69">miosix</a> +</li> +<li>delayMs() +: <a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">miosix</a> +</li> +<li>delayUs() +: <a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">miosix</a> +</li> +<li>disableInterrupts() +: <a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">miosix</a> +</li> +<li>enableInterrupts() +: <a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">miosix</a> +</li> +<li>errorHandler() +: <a class="el" href="namespacemiosix.html#aecda173e5927720cd233599817c5da23">miosix</a> +</li> +<li>errorLog() +: <a class="el" href="namespacemiosix.html#ac57cb5a3e83dc0c859161bc4aa04d591">miosix</a> +</li> +<li>fastDisableInterrupts() +: <a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">miosix</a> +</li> +<li>fastEnableInterrupts() +: <a class="el" href="group___kernel.html#ga882229b6c936a87454cb154a90751927">miosix</a> +</li> +<li>getMiosixVersion() +: <a class="el" href="group___util.html#gadc3015d9be3c5eb12fe691ca0ca9251b">miosix</a> +</li> +<li>getTick() +: <a class="el" href="group___kernel.html#gad16c495ced6659e8bc0bb371362674ef">miosix</a> +</li> +<li>IRQbootlog() +: <a class="el" href="namespacemiosix.html#a77703dfc8874c826975fa54f79e7a3e5">miosix</a> +</li> +<li>IRQerrorLog() +: <a class="el" href="namespacemiosix.html#afa3e31f3fb49abc777a10380ca9ffe19">miosix</a> +</li> +<li>isKernelRunning() +: <a class="el" href="group___kernel.html#gaabdbf06e8cf514d3113325a01927ccf5">miosix</a> +</li> +<li>memDump() +: <a class="el" href="group___util.html#gaa01c92389801f7962a0bd9f0bfc03a66">miosix</a> +</li> +<li>pauseKernel() +: <a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">miosix</a> +</li> +<li>reboot() +: <a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">miosix</a> +</li> +<li>restartKernel() +: <a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">miosix</a> +</li> +<li>shutdown() +: <a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">miosix</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemembers_vars.html b/miosix/_doc/doxygen/html/namespacemembers_vars.html new file mode 100644 index 00000000..4e56b3fd --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemembers_vars.html @@ -0,0 +1,66 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Class Members</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li class="current"><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespacemembers.html"><span>All</span></a></li> + <li><a href="namespacemembers_func.html"><span>Functions</span></a></li> + <li class="current"><a href="namespacemembers_vars.html"><span>Variables</span></a></li> + <li><a href="namespacemembers_enum.html"><span>Enumerations</span></a></li> + <li><a href="namespacemembers_eval.html"><span>Enumerator</span></a></li> + </ul> + </div> +</div> +<div class="contents"> + <ul> +<li>kpi +: <a class="el" href="namespacemiosix.html#ab26854f238450057e4b1eb3687ac4f88">miosix</a> +</li> +<li>MAIN_PRIORITY +: <a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">miosix</a> +</li> +<li>MAX_OPEN_FILES +: <a class="el" href="group___settings.html#ga0ec1a8ab604e6a08eec2994d436346f7">miosix</a> +</li> +<li>multFactor +: <a class="el" href="namespacemiosix.html#ac4774f319395e90899e2aa549444495b">miosix</a> +</li> +<li>PRIORITY_MAX +: <a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">miosix</a> +</li> +<li>STACK_DEFAULT_FOR_PTHREAD +: <a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">miosix</a> +</li> +<li>STACK_MIN +: <a class="el" href="group___settings.html#ga26c88a1771bb21a80aa22789d16291d1">miosix</a> +</li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemiosix.html b/miosix/_doc/doxygen/html/namespacemiosix.html new file mode 100644 index 00000000..0620bf31 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemiosix.html @@ -0,0 +1,389 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix Namespace Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#enum-members">Enumerations</a> | +<a href="#func-members">Functions</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<h1>miosix Namespace Reference</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_console.html">Console</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_filesystem.html">Filesystem</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_directory.html">Directory</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html">InterruptDisableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html">InterruptEnableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html">FastInterruptDisableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html">FastInterruptEnableLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_pause_kernel_lock.html">PauseKernelLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_restart_kernel_lock.html">RestartKernelLock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_thread.html">Thread</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lower_priority.html">LowerPriority</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_control_scheduler_priority.html">ControlSchedulerPriority</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html">EDFSchedulerPriority</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html">PrioritySchedulerPriority</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_fast_mutex.html">FastMutex</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_mutex.html">Mutex</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_lock.html">Lock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_unlock.html">Unlock</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_condition_variable.html">ConditionVariable</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_timer.html">Timer</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_queue.html">Queue</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_exception_handling_data.html">ExceptionHandlingData</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_i2_c.html">SoftwareI2C</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_software_s_p_i.html">SoftwareSPI</a></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix_1_1_memory_profiling.html">MemoryProfiling</a></td></tr> +<tr><td colspan="2"><h2><a name="enum-members"></a> +Enumerations</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8">Error</a> { <br/> + <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8af0fb70dd25fac18136ea28f9c0286b65">INVALID_PARAMETERS</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a4a9ecbff543a923809f4a669f5a2ff18">OUT_OF_MEMORY</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a772bd51dfe3b2db17e618c589e55e3b8">STACK_OVERFLOW</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a047868d81b859f0eda3d4a172900e4d6">UNEXPECTED</a>, +<br/> + <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8aba75de60056149f80f47ed9b2249fdf2">PAUSE_KERNEL_NESTING</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a7b868b4e1fd949857af27acacd2f9cbb">DISABLE_INTERRUPTS_NESTING</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a19d15bb3cd3dd524578bc258113a95ea">MUTEX_DEADLOCK</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a9bb07c35ec33e49234a73ea04f49e5e8">MUTEX_UNLOCK_NOT_OWNER</a>, +<br/> + <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8acfa2dba3f5a797e00a49aecb3385dcd6">NESTING_OVERFLOW</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8a05e4098f64c514996a071e09d3f030ec">PROPAGATED_EXCEPTION</a>, +<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8ac5c5ef56383e34096e518226d8898f53">INTERRUPTS_ENABLED_AT_BOOT</a> +<br/> + }</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">enum </td><td class="memItemRight" valign="bottom"><a class="el" href="group___filesystem.html#ga9fab0d0eb30aba32bb0c6ca21d72c845">Attrib</a> { <br/> + <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a12e947f8f047d273e068bde84dc756ae">READ_ONLY</a> = 0x01, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a18d657bc5127e6fe6d0e3b1ede96ff43">HIDDEN</a> = 0x02, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845aafe01ea46399c95c49849a481b3ac6c9">SYSTEM</a> = 0x04, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a70a8eaf83cbb7e00925d35382689d59d">VOLUME_ID</a> = 0x08, +<br/> + <a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845a1dee5448b32ceee464cfd092b991de86">DIRECTORY</a> = 0x10, +<a class="el" href="group___filesystem.html#gga9fab0d0eb30aba32bb0c6ca21d72c845ab608cfd1ce6c8c0f131a6cfe5edb36d4">ARCHIVE</a> = 0x20 +<br/> + }</td></tr> +<tr><td colspan="2"><h2><a name="func-members"></a> +Functions</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#gae0495cbfc806a0db0cdf2ff023945516">shutdown</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga6f70fdbc3b5d6afa41b5dbc5272cc6a0">reboot</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga9d13aceddc0481fd1077e6fdfb31f9a7">delayMs</a> (unsigned int mseconds)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___interfaces.html#ga244f9474d20ffd5d905855f68aa3114f">delayUs</a> (unsigned int useconds)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#aecda173e5927720cd233599817c5da23">errorHandler</a> (<a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8">Error</a> e)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gacd7ef6e968c5c0b2ff45bf102388ea4d">disableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga36adaaa176d004747d2a01b822c9fea5">enableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga730c9359f8069cb2f785501ea763eb43">pauseKernel</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gad3bee49a8dd57a598b7d7aeeeaf8496c">restartKernel</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gacabb0637ded36778470fa27eea329d84">areInterruptsEnabled</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gaabdbf06e8cf514d3113325a01927ccf5">isKernelRunning</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">long long </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gad16c495ced6659e8bc0bb371362674ef">getTick</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#gaeeacb47660439066bb1d787593da9f4e">fastDisableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___kernel.html#ga882229b6c936a87454cb154a90751927">fastEnableInterrupts</a> ()</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#a0e2bf0d427fe1eb214692830e46fb209">bootlog</a> (const char *string)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#a77703dfc8874c826975fa54f79e7a3e5">IRQbootlog</a> (const char *string)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#ac57cb5a3e83dc0c859161bc4aa04d591">errorLog</a> (const char *string)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#afa3e31f3fb49abc777a10380ca9ffe19">IRQerrorLog</a> (const char *string)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">unsigned short </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#a9e8a0090904ff275d38d22f26919ff69">crc16</a> (unsigned char *message, unsigned int length)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="group___util.html#gaa01c92389801f7962a0bd9f0bfc03a66">memDump</a> (char *start, int len)</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const char * </td><td class="memItemRight" valign="bottom"><a class="el" href="group___util.html#gadc3015d9be3c5eb12fe691ca0ca9251b">getMiosixVersion</a> ()</td></tr> +<tr><td colspan="2"><h2><a name="var-members"></a> +Variables</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga0ec1a8ab604e6a08eec2994d436346f7"></a><!-- doxytag: member="miosix::MAX_OPEN_FILES" ref="ga0ec1a8ab604e6a08eec2994d436346f7" args="" --> +const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga0ec1a8ab604e6a08eec2994d436346f7">MAX_OPEN_FILES</a> = 8</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Maximum number of open files. Trying to open more will fail. <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top"><a class="anchor" id="ga26c88a1771bb21a80aa22789d16291d1"></a><!-- doxytag: member="miosix::STACK_MIN" ref="ga26c88a1771bb21a80aa22789d16291d1" args="" --> +const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga26c88a1771bb21a80aa22789d16291d1">STACK_MIN</a> = 256</td></tr> +<tr><td class="mdescLeft"> </td><td class="mdescRight">Minimum stack size (MUST be divisible by 4). <br/></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga466ea8e233d84803e31f3e9d9d978cfd">STACK_DEFAULT_FOR_PTHREAD</a> = 2048</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const short int </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#ga8c0365b6cd111f990937319e4499962b">PRIORITY_MAX</a> = 4</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const unsigned char </td><td class="memItemRight" valign="bottom"><a class="el" href="group___settings.html#gad66abb7a060d94617390e1838e4e3b01">MAIN_PRIORITY</a> = 1</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const float </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#ab26854f238450057e4b1eb3687ac4f88">kpi</a> = 0.5</td></tr> +<tr><td class="memItemLeft" align="right" valign="top">const int </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix.html#ac4774f319395e90899e2aa549444495b">multFactor</a> = static_cast<int>(1.0f/kpi)</td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>All user available kernel functions, classes are inside this namespace. </p> +<hr/><h2>Enumeration Type Documentation</h2> +<a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8"></a><!-- doxytag: member="miosix::Error" ref="ac0146189e7df18439dc2f4103f07cfe8" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">enum <a class="el" href="namespacemiosix.html#ac0146189e7df18439dc2f4103f07cfe8">miosix::Error</a></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>This enum will be passed as argument to the error handler.<br/> + If the error is marked UNRECOVERABLE, then the error handler will not return. </p> +<dl><dt><b>Enumerator: </b></dt><dd><table border="0" cellspacing="2" cellpadding="0"> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8af0fb70dd25fac18136ea28f9c0286b65"></a><!-- doxytag: member="INVALID_PARAMETERS" ref="ac0146189e7df18439dc2f4103f07cfe8af0fb70dd25fac18136ea28f9c0286b65" args="" -->INVALID_PARAMETERS</em> </td><td> +<p>A function/method was called with invalid parameters.<br/> + Error is recoverable. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a4a9ecbff543a923809f4a669f5a2ff18"></a><!-- doxytag: member="OUT_OF_MEMORY" ref="ac0146189e7df18439dc2f4103f07cfe8a4a9ecbff543a923809f4a669f5a2ff18" args="" -->OUT_OF_MEMORY</em> </td><td> +<p>The heap is full, malloc/new returned NULL.<br/> + Whether error is recoverable is architecture specific. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a772bd51dfe3b2db17e618c589e55e3b8"></a><!-- doxytag: member="STACK_OVERFLOW" ref="ac0146189e7df18439dc2f4103f07cfe8a772bd51dfe3b2db17e618c589e55e3b8" args="" -->STACK_OVERFLOW</em> </td><td> +<p>The stack of a thread overflowed.<br/> +Error is UNRECOVERABLE. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a047868d81b859f0eda3d4a172900e4d6"></a><!-- doxytag: member="UNEXPECTED" ref="ac0146189e7df18439dc2f4103f07cfe8a047868d81b859f0eda3d4a172900e4d6" args="" -->UNEXPECTED</em> </td><td> +<p>Unexpected error occurred.<br/> +Error is UNRECOVERABLE. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8aba75de60056149f80f47ed9b2249fdf2"></a><!-- doxytag: member="PAUSE_KERNEL_NESTING" ref="ac0146189e7df18439dc2f4103f07cfe8aba75de60056149f80f47ed9b2249fdf2" args="" -->PAUSE_KERNEL_NESTING</em> </td><td> +<p>A call to restartKernel that does not match a previous call to pauseKernel<br/> +Error is UNRECOVERABLE </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a7b868b4e1fd949857af27acacd2f9cbb"></a><!-- doxytag: member="DISABLE_INTERRUPTS_NESTING" ref="ac0146189e7df18439dc2f4103f07cfe8a7b868b4e1fd949857af27acacd2f9cbb" args="" -->DISABLE_INTERRUPTS_NESTING</em> </td><td> +<p>A call to enableInterrupts that does not match a previous call to disableInterrupts<br/> +Error is UNRECOVERABLE </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a19d15bb3cd3dd524578bc258113a95ea"></a><!-- doxytag: member="MUTEX_DEADLOCK" ref="ac0146189e7df18439dc2f4103f07cfe8a19d15bb3cd3dd524578bc258113a95ea" args="" -->MUTEX_DEADLOCK</em> </td><td> +<p>An attempt to lock twice a non recursive mutex happened.<br/> + Error is UNRECOVERABLE </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a9bb07c35ec33e49234a73ea04f49e5e8"></a><!-- doxytag: member="MUTEX_UNLOCK_NOT_OWNER" ref="ac0146189e7df18439dc2f4103f07cfe8a9bb07c35ec33e49234a73ea04f49e5e8" args="" -->MUTEX_UNLOCK_NOT_OWNER</em> </td><td> +<p>An attempt to call unlock() on a mutex without first calling lock has been detected. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8acfa2dba3f5a797e00a49aecb3385dcd6"></a><!-- doxytag: member="NESTING_OVERFLOW" ref="ac0146189e7df18439dc2f4103f07cfe8acfa2dba3f5a797e00a49aecb3385dcd6" args="" -->NESTING_OVERFLOW</em> </td><td> +<p>The calls to pauseKernel or disableInterrupts were nested too much. Error is UNRECOVERABLE </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8a05e4098f64c514996a071e09d3f030ec"></a><!-- doxytag: member="PROPAGATED_EXCEPTION" ref="ac0146189e7df18439dc2f4103f07cfe8a05e4098f64c514996a071e09d3f030ec" args="" -->PROPAGATED_EXCEPTION</em> </td><td> +<p>An uncaught exception propagated throug a thread's entry point. Error is recoverable. </p> +</td></tr> +<tr><td valign="top"><em><a class="anchor" id="ac0146189e7df18439dc2f4103f07cfe8ac5c5ef56383e34096e518226d8898f53"></a><!-- doxytag: member="INTERRUPTS_ENABLED_AT_BOOT" ref="ac0146189e7df18439dc2f4103f07cfe8ac5c5ef56383e34096e518226d8898f53" args="" -->INTERRUPTS_ENABLED_AT_BOOT</em> </td><td> +<p>Interrupts are wrongly enabled during boot Error is unrecoverable </p> +</td></tr> +</table> +</dd> +</dl> + +</div> +</div> +<hr/><h2>Function Documentation</h2> +<a class="anchor" id="a0e2bf0d427fe1eb214692830e46fb209"></a><!-- doxytag: member="miosix::bootlog" ref="a0e2bf0d427fe1eb214692830e46fb209" args="(const char *string)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::bootlog </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>string</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Print boot logs on the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can only be called when the kernel is running. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>to print </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a9e8a0090904ff275d38d22f26919ff69"></a><!-- doxytag: member="miosix::crc16" ref="a9e8a0090904ff275d38d22f26919ff69" args="(unsigned char *message, unsigned int length)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">unsigned short miosix::crc16 </td> + <td>(</td> + <td class="paramtype">unsigned char * </td> + <td class="paramname"> <em>message</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">unsigned int </td> + <td class="paramname"> <em>length</em></td><td> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td><td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Calculate the ccitt crc16 on a string of bytes </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>message</em> </td><td>string of bytes </td></tr> + <tr><td valign="top"></td><td valign="top"><em>length</em> </td><td>message length </td></tr> + </table> + </dd> +</dl> +<dl class="return"><dt><b>Returns:</b></dt><dd>the crc16 </dd></dl> + +</div> +</div> +<a class="anchor" id="aecda173e5927720cd233599817c5da23"></a><!-- doxytag: member="miosix::errorHandler" ref="aecda173e5927720cd233599817c5da23" args="(Error e)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::errorHandler </td> + <td>(</td> + <td class="paramtype">Error </td> + <td class="paramname"> <em>e</em></td> + <td> ) </td> + <td></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Handles errors generated by kernel. Prints an error message on the <a class="el" href="classmiosix_1_1_console.html">Console</a> (only if WITH_ERRLOG is defined in miosix_config.h). For information about possible errors, see the enum Error Can be called with the kernel not started, started, paused, with interrupts disabled and within an interrupt routine. </p> + +</div> +</div> +<a class="anchor" id="ac57cb5a3e83dc0c859161bc4aa04d591"></a><!-- doxytag: member="miosix::errorLog" ref="ac57cb5a3e83dc0c859161bc4aa04d591" args="(const char *string)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::errorLog </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>string</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Print eror logs on the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can only be called when the kernel is running. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>to print </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="a77703dfc8874c826975fa54f79e7a3e5"></a><!-- doxytag: member="miosix::IRQbootlog" ref="a77703dfc8874c826975fa54f79e7a3e5" args="(const char *string)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::IRQbootlog </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>string</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Print boot logs on the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can only be called when the kernel is not yet running or paused, or within an IRQ. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>to print </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<a class="anchor" id="afa3e31f3fb49abc777a10380ca9ffe19"></a><!-- doxytag: member="miosix::IRQerrorLog" ref="afa3e31f3fb49abc777a10380ca9ffe19" args="(const char *string)" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void miosix::IRQerrorLog </td> + <td>(</td> + <td class="paramtype">const char * </td> + <td class="paramname"> <em>string</em></td> + <td> ) </td> + <td><code> [inline]</code></td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Print error logs on the <a class="el" href="classmiosix_1_1_console.html">Console</a>. Can only be called when the kernel is not yet running or paused, or within an IRQ. </p> +<dl><dt><b>Parameters:</b></dt><dd> + <table border="0" cellspacing="2" cellpadding="0"> + <tr><td valign="top"></td><td valign="top"><em>string</em> </td><td>to print </td></tr> + </table> + </dd> +</dl> + +</div> +</div> +<hr/><h2>Variable Documentation</h2> +<a class="anchor" id="ab26854f238450057e4b1eb3687ac4f88"></a><!-- doxytag: member="miosix::kpi" ref="ab26854f238450057e4b1eb3687ac4f88" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const float <a class="el" href="namespacemiosix.html#ab26854f238450057e4b1eb3687ac4f88">miosix::kpi</a> = 0.5</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Run the scheduler using fixed point math only. Faster but less precise. Note that the inner integral regulators are always fixed point, this affects round partitioning and the external PI regulator. Also note this imposes a number of limits:</p> +<ul> +<li>the number of threads has a maximum of 64 (this constrain is enforced in PKaddThread()</li> +<li>the max "priority" is limited to 63 (this constraint is enforced by priority valdation, as usual)</li> +<li>both krr and zrr must be less than 1.99f (this constraint is not enforced, if a wrong value is set strange things may happen)</li> +<li>the maximum average burst must be less than 8192. Individual bursts may exceed this, but the su of all bursts in the Tr variable can't exceed 64 (max # threads) * 8191 = ~524287 (this constraint is enforced by clamping Tr to that value) </li> +</ul> + +</div> +</div> +<a class="anchor" id="ac4774f319395e90899e2aa549444495b"></a><!-- doxytag: member="miosix::multFactor" ref="ac4774f319395e90899e2aa549444495b" args="" --> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const int <a class="el" href="namespacemiosix.html#ac4774f319395e90899e2aa549444495b">miosix::multFactor</a> = static_cast<int>(1.0f/kpi)</td> + </tr> + </table> +</div> +<div class="memdoc"> +<p>Implementation detail resulting from a fixed point implementation of the inner integral regulators. Never change this, change kpi instead. </p> + +</div> +</div> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespacemiosix__pivate.html b/miosix/_doc/doxygen/html/namespacemiosix__pivate.html new file mode 100644 index 00000000..3bca6981 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespacemiosix__pivate.html @@ -0,0 +1,47 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: miosix_pivate Namespace Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="namespaces.html"><span>Namespace List</span></a></li> + <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>miosix_pivate Namespace Reference</h1> </div> +</div> +<div class="contents"> +<table class="memberdecls"> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>contains architecture-specific functions. These functions are separated from the functions in kernel.h because:<br/> +</p> +<ul> +<li>to port the kernel to another processor you only need to rewrite these functions.</li> +<li>these functions are only useful for writing hardare drivers, most user code does not need them. </li> +</ul> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/namespaces.html b/miosix/_doc/doxygen/html/namespaces.html new file mode 100644 index 00000000..b2229537 --- /dev/null +++ b/miosix/_doc/doxygen/html/namespaces.html @@ -0,0 +1,42 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: Namespace Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li class="current"><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="namespaces.html"><span>Namespace List</span></a></li> + <li><a href="namespacemembers.html"><span>Namespace Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="headertitle"> +<h1>Namespace List</h1> </div> +</div> +<div class="contents"> +Here is a list of all documented namespaces with brief descriptions:<table> + <tr><td class="indexkey"><a class="el" href="namespacemiosix.html">miosix</a></td><td class="indexvalue"></td></tr> + <tr><td class="indexkey"><a class="el" href="namespacemiosix__pivate.html">miosix_pivate</a></td><td class="indexvalue"></td></tr> +</table> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/nav_f.png b/miosix/_doc/doxygen/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..1b07a16207e67c95fe2ee17e7016e6d08ac7ac99 GIT binary patch literal 159 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imV6fm|Vqjp{%*48zfq@~-)5S5Qg7NKLPd+C@ z9+p7s(%btTE}qY@et1h^W8!HA#l8#OVSAlVy#1%}sO#vln&gc$_RZWTu}#AGMe#+q z3vL0sgR28(1<xuDdz|C9&P~rvZ}MZKNgaQ-E_ojxy1!@NjPw6icb*XTkWjdrJ7vRE Q1_lNOPgg&ebxsLQ0P=f3sQ>@~ literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/nav_h.png b/miosix/_doc/doxygen/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..01f5fa6a596e36bd12c2d6ceff1b0169fda7e699 GIT binary patch literal 97 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imVBq0kVqjp<dFjBwz`&s4>Eakt!T9#>MotC; z9%jeAMjH->Zkx_6u9z)zN5rdW)q2L}c~O7=GaSojY5ybeVlGINr>mdKI;Vst04h2g Aod5s; literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/open.png b/miosix/_doc/doxygen/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..7b35d2c2c389743089632fe24c3104f2173d97af GIT binary patch literal 118 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?Y&~5ZLn;{G&NUQdP~c&n zd}GxzDF+AM1)Q-4h6e&8BI~@0>|L1bT9$76H%TOK59dR-vlBQO7Sx{jb?D_|hVwBz WM-DIi|A~Qtfx*+&&t;ucLK6Vf2PM(~ literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/portability_8h.html b/miosix/_doc/doxygen/html/portability_8h.html new file mode 100644 index 00000000..46b18cc2 --- /dev/null +++ b/miosix/_doc/doxygen/html/portability_8h.html @@ -0,0 +1,54 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml"> +<head> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<title>Miosix: portability.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<link href="doxygen.css" rel="stylesheet" type="text/css"/> +</head> +<body> +<!-- Generated by Doxygen 1.7.1 --> +<div class="navigation" id="top"> + <div class="tabs"> + <ul class="tablist"> + <li><a href="main.html"><span>Main Page</span></a></li> + <li><a href="modules.html"><span>Modules</span></a></li> + <li><a href="namespaces.html"><span>Namespaces</span></a></li> + <li><a href="annotated.html"><span>Classes</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + </ul> + </div> + <div class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>File Members</span></a></li> + </ul> + </div> +</div> +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Classes</a> | +<a href="#namespaces">Namespaces</a> </div> + <div class="headertitle"> +<h1>portability.h File Reference</h1> </div> +</div> +<div class="contents"> +<code>#include "<a class="el" href="miosix__settings_8h.html">config/miosix_settings.h</a>"</code><br/> +<code>#include "interfaces-impl/portability_impl.h"</code><br/> +<table class="memberdecls"> +<tr><td colspan="2"><h2><a name="nested-classes"></a> +Classes</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">class </td><td class="memItemRight" valign="bottom"><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html">miosix_private::AuxiliaryTimer</a></td></tr> +<tr><td colspan="2"><h2><a name="namespaces"></a> +Namespaces</h2></td></tr> +<tr><td class="memItemLeft" align="right" valign="top">namespace </td><td class="memItemRight" valign="bottom"><a class="el" href="namespacemiosix__pivate.html">miosix_pivate</a></td></tr> +</table> +<hr/><a name="_details"></a><h2>Detailed Description</h2> +<p>This file is the interface from the Miosix kernel to the hardware. It ccontains what is required to perform a context switch, disable interrupts, set up the stack frame and registers of a newly created thread, and contains iterrupt handlers for preemption and yield.</p> +<p>Since some of the functions in this file must be inline for speed reasons, and context switch code must be macros, at the end of this file the file portability_impl.h is included. This file should contain the implementation of those inline functions. </p> +</div> +<hr class="footer"/><address class="footer"><small>Generated on Sat Nov 12 2011 for Miosix by +<a href="http://www.doxygen.org/index.html"> +<img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.7.1 </small></address> +</body> +</html> diff --git a/miosix/_doc/doxygen/html/tab_a.png b/miosix/_doc/doxygen/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..2d99ef23fed78c7683f0b5aa803d937060d288c4 GIT binary patch literal 140 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq@~|)5S5Qg7NL#-JA^$ zA}r<4PcEF(F+=NFlkbch^`30+&$+ez_2IQz*S<0D%xk}yViH{2HXdY|G@(WIhM(G_ wJ@E<?POd$<ulDLTi@JCF-uai8>HcSU<;Y|bsd=%Mfq{X+)78&qol`;+0DbN>%m4rY literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/tab_b.png b/miosix/_doc/doxygen/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..b2c3d2be3c7e518fbca6bb30f571882e72fc506d GIT binary patch literal 178 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jY)5S5Qg7NL$+q{Pq zBpNQ-*93=M?%0y#q#Uqruf^t0|9w^`XS&$km(Q&Z{_XizeW%=$Dh)x!sdGd4o$hs3 zDleHE{>ICtVBh1K!>w(fd3TGv37Qf6@FCZ;nHS6ow|CBtm3%(6u&d|tsjDt}Y6dS3 jEU<0n^KzNe@rTjYLF=WK%=7CE3=9mOu6{1-oD!M<<TOUD literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/tab_h.png b/miosix/_doc/doxygen/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..c11f48f19bbe1f178d95397b98075bdd6d989328 GIT binary patch literal 192 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jj)5S5Qg7NL$+nh}a z5)BXg|1aIu;nuZ?xhZ2-q}(N*|7VQ)h0Pq2w|JDF{rE=l{rTzMh7(@Jb#knf^C<D3 z^!-Ss`;4tF*ZUN*EtmBQ3GzLcvd{eRNXoqGVT)*4K;ry)GyXk3|G}%L_T(|m8@tNG yb~k-pmynn_?ON~Br88$ob#~0^3E2Gd2Rnna(t{TPwhasn3=E#GelF{r5}E-2JW$pE literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/tab_s.png b/miosix/_doc/doxygen/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..978943ac807718de0e69e5a585a8f0a1e5999285 GIT binary patch literal 189 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jL)5S5Qg7NL$*PKlO z3=R*y)0I>;ggjkq7OF1uTxc#TpLr`M_kt4d<$kFrx1IOglmB#ka*STeQ~#(lOO84f z&F$3h-`}Y*zvG;8qS>SQY)xPKX7gAS_RD_1ah&h<g+w>q-y2-{rAqcYewH#>pZ5G( v&fKov*p1tscyTmld5JhLl2Ywb+;4MK`497fBdZx07#KWV{an^LB{Ts57s^S4 literal 0 HcmV?d00001 diff --git a/miosix/_doc/doxygen/html/tabs.css b/miosix/_doc/doxygen/html/tabs.css new file mode 100644 index 00000000..21920562 --- /dev/null +++ b/miosix/_doc/doxygen/html/tabs.css @@ -0,0 +1,59 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; +} + +.tabs2 { + font-size: 10px; +} +.tabs3 { + font-size: 9px; +} + +.tablist { + margin: 0; + padding: 0; + display: table; +} + +.tablist li { + float: left; + display: table-cell; + background-image: url('tab_b.png'); + line-height: 36px; + list-style: none; +} + +.tablist a { + display: block; + padding: 0 20px; + font-weight: bold; + background-image:url('tab_s.png'); + background-repeat:no-repeat; + background-position:right; + color: #283A5D; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; + outline: none; +} + +.tabs3 .tablist a { + padding: 0 10px; +} + +.tablist a:hover { + background-image: url('tab_h.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); + text-decoration: none; +} + +.tablist li.current a { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} diff --git a/miosix/_doc/doxygen/html/tree.html b/miosix/_doc/doxygen/html/tree.html new file mode 100644 index 00000000..dc51f3f1 --- /dev/null +++ b/miosix/_doc/doxygen/html/tree.html @@ -0,0 +1,131 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> + <head> + <meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> + <meta http-equiv="Content-Style-Type" content="text/css" /> + <meta http-equiv="Content-Language" content="en" /> + <link rel="stylesheet" href="doxygen.css"/> + <title>TreeView</title> + <script type="text/javascript"> + <!-- // Hide script from old browsers + + function toggleFolder(id, imageNode) + { + var folder = document.getElementById(id); + var l = imageNode.src.length; + if (imageNode.src.substring(l-20,l)=="ftv2folderclosed.png" || + imageNode.src.substring(l-18,l)=="ftv2folderopen.png") + { + imageNode = imageNode.previousSibling; + l = imageNode.src.length; + } + if (folder == null) + { + } + else if (folder.style.display == "block") + { + if (imageNode != null) + { + imageNode.nextSibling.src = "ftv2folderclosed.png"; + if (imageNode.src.substring(l-13,l) == "ftv2mnode.png") + { + imageNode.src = "ftv2pnode.png"; + } + else if (imageNode.src.substring(l-17,l) == "ftv2mlastnode.png") + { + imageNode.src = "ftv2plastnode.png"; + } + } + folder.style.display = "none"; + } + else + { + if (imageNode != null) + { + imageNode.nextSibling.src = "ftv2folderopen.png"; + if (imageNode.src.substring(l-13,l) == "ftv2pnode.png") + { + imageNode.src = "ftv2mnode.png"; + } + else if (imageNode.src.substring(l-17,l) == "ftv2plastnode.png") + { + imageNode.src = "ftv2mlastnode.png"; + } + } + folder.style.display = "block"; + } + } + + // End script hiding --> + </script> + </head> + + <body class="ftvtree"> + <div class="directory"> + <h3 class="swap"><span>Miosix</span></h3> + <div style="display: block;"> + <p><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="main.html" target="basefrm">Miosix embedded OS</a></p> + <p><img src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('folder1', this)"/><img src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('folder1', this)"/><a class="el" href="modules.html" target="basefrm">Modules</a></p> + <div id="folder1"> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___kernel.html" target="basefrm">Kernel</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___sync.html" target="basefrm">Syncronization</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___interfaces.html" target="basefrm">Interfaces</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___hardware.html" target="basefrm">Hardware</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___filesystem.html" target="basefrm">Filesystem</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___drivers.html" target="basefrm">Drivers</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___util.html" target="basefrm">Utilities</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="group___settings.html" target="basefrm">Settings</a></p> + </div> + <p><img src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('folder2', this)"/><img src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('folder2', this)"/><a class="el" href="annotated.html" target="basefrm">Class List</a></p> + <div id="folder2"> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix__private_1_1_auxiliary_timer.html" target="basefrm">miosix_private::AuxiliaryTimer</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_condition_variable.html" target="basefrm">miosix::ConditionVariable</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_console.html" target="basefrm">miosix::Console</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_control_scheduler_priority.html" target="basefrm">miosix::ControlSchedulerPriority</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_directory.html" target="basefrm">miosix::Directory</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_e_d_f_scheduler_priority.html" target="basefrm">miosix::EDFSchedulerPriority</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_exception_handling_data.html" target="basefrm">miosix::ExceptionHandlingData</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_fast_interrupt_disable_lock.html" target="basefrm">miosix::FastInterruptDisableLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_fast_interrupt_enable_lock.html" target="basefrm">miosix::FastInterruptEnableLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_fast_mutex.html" target="basefrm">miosix::FastMutex</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_filesystem.html" target="basefrm">miosix::Filesystem</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_interrupt_disable_lock.html" target="basefrm">miosix::InterruptDisableLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_interrupt_enable_lock.html" target="basefrm">miosix::InterruptEnableLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_lock.html" target="basefrm">miosix::Lock< T ></a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_lower_priority.html" target="basefrm">miosix::LowerPriority</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_memory_profiling.html" target="basefrm">miosix::MemoryProfiling</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_mutex.html" target="basefrm">miosix::Mutex</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_pause_kernel_lock.html" target="basefrm">miosix::PauseKernelLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_priority_scheduler_priority.html" target="basefrm">miosix::PrioritySchedulerPriority</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_queue.html" target="basefrm">miosix::Queue< T, len ></a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_restart_kernel_lock.html" target="basefrm">miosix::RestartKernelLock</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_software_i2_c.html" target="basefrm">miosix::SoftwareI2C< SDA, SCL ></a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_software_s_p_i.html" target="basefrm">miosix::SoftwareSPI< SI, SO, SCK, CE, numNops ></a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_thread.html" target="basefrm">miosix::Thread</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_timer.html" target="basefrm">miosix::Timer</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="classmiosix_1_1_unlock.html" target="basefrm">miosix::Unlock< T ></a></p> + </div> + <p><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="functions.html" target="basefrm">Class Members</a></p> + <p><img src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('folder3', this)"/><img src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('folder3', this)"/><a class="el" href="namespaces.html" target="basefrm">Namespace List</a></p> + <div id="folder3"> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="namespacemiosix.html" target="basefrm">miosix</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="namespacemiosix__pivate.html" target="basefrm">miosix_pivate</a></p> + </div> + <p><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="namespacemembers.html" target="basefrm">Namespace Members</a></p> + <p><img src="ftv2pnode.png" alt="o" width="16" height="22" onclick="toggleFolder('folder4', this)"/><img src="ftv2folderclosed.png" alt="+" width="24" height="22" onclick="toggleFolder('folder4', this)"/><a class="el" href="files.html" target="basefrm">File List</a></p> + <div id="folder4"> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="arch__registers_8h.html" target="basefrm">arch_registers.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="bsp_8h.html" target="basefrm">bsp.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="console_8h.html" target="basefrm">console.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="delays_8h.html" target="basefrm">delays.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="disk_8h.html" target="basefrm">disk.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="endianness_8h.html" target="basefrm">endianness.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="gpio_8h.html" target="basefrm">gpio.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="miosix__settings_8h.html" target="basefrm">miosix_settings.h</a></p> + <p><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="portability_8h.html" target="basefrm">portability.h</a></p> + </div> + <p><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2doc.png" alt="*" width="24" height="22" /><a class="el" href="globals.html" target="basefrm">File Members</a></p> + </div> + </div> + </body> +</html> diff --git a/miosix/doc/doxygen/index.html b/miosix/_doc/doxygen/index.html similarity index 100% rename from miosix/doc/doxygen/index.html rename to miosix/_doc/doxygen/index.html diff --git a/miosix/doc/pdfdoc/features/Miosix features.odt b/miosix/_doc/pdfdoc/features/Miosix features.odt similarity index 100% rename from miosix/doc/pdfdoc/features/Miosix features.odt rename to miosix/_doc/pdfdoc/features/Miosix features.odt diff --git a/miosix/doc/pdfdoc/features/Miosix features.pdf b/miosix/_doc/pdfdoc/features/Miosix features.pdf similarity index 100% rename from miosix/doc/pdfdoc/features/Miosix features.pdf rename to miosix/_doc/pdfdoc/features/Miosix features.pdf diff --git a/miosix/doc/textdoc/Changelog.txt b/miosix/_doc/textdoc/Changelog.txt similarity index 98% rename from miosix/doc/textdoc/Changelog.txt rename to miosix/_doc/textdoc/Changelog.txt index 28df29e3..a180804d 100644 --- a/miosix/doc/textdoc/Changelog.txt +++ b/miosix/_doc/textdoc/Changelog.txt @@ -1,5 +1,13 @@ Changelog for Miosix np embedded OS +- Moved the bootloaders, compiler and testsuite directories inside miosix/_tools +- Reorganized directory structure, all subdirectories of the miosix directory + that do not contain code that is compiled into the Miosix kernel now start + with an underscore, to be easily recognizable. These are: the _doc directory + containing documentation, the _examples directory containing examples, and + the _tools directory. +- Added first (non working) inplementation of the new file abstraction + layer. - Improved pauseKernel() and restartKernel() implementation using atomic operations. Tests show a +20% to +40% performance improvement for pauseKernel() and restartKernel(), and a +15% performance improvement diff --git a/miosix/doc/textdoc/Directories.txt b/miosix/_doc/textdoc/Directories.txt similarity index 100% rename from miosix/doc/textdoc/Directories.txt rename to miosix/_doc/textdoc/Directories.txt diff --git a/miosix/doc/textdoc/Disable exceptions.txt b/miosix/_doc/textdoc/Disable exceptions.txt similarity index 100% rename from miosix/doc/textdoc/Disable exceptions.txt rename to miosix/_doc/textdoc/Disable exceptions.txt diff --git a/miosix/doc/textdoc/Error debug.txt b/miosix/_doc/textdoc/Error debug.txt similarity index 100% rename from miosix/doc/textdoc/Error debug.txt rename to miosix/_doc/textdoc/Error debug.txt diff --git a/miosix/doc/textdoc/Filesystem benchmarks.txt b/miosix/_doc/textdoc/Filesystem benchmarks.txt similarity index 100% rename from miosix/doc/textdoc/Filesystem benchmarks.txt rename to miosix/_doc/textdoc/Filesystem benchmarks.txt diff --git a/miosix/doc/textdoc/Todo.txt b/miosix/_doc/textdoc/Todo.txt similarity index 100% rename from miosix/doc/textdoc/Todo.txt rename to miosix/_doc/textdoc/Todo.txt diff --git a/miosix/doc/textdoc/gcc threadsafety.txt b/miosix/_doc/textdoc/gcc threadsafety.txt similarity index 100% rename from miosix/doc/textdoc/gcc threadsafety.txt rename to miosix/_doc/textdoc/gcc threadsafety.txt diff --git a/miosix/doc/textdoc/newlib threadsafety.txt b/miosix/_doc/textdoc/newlib threadsafety.txt similarity index 100% rename from miosix/doc/textdoc/newlib threadsafety.txt rename to miosix/_doc/textdoc/newlib threadsafety.txt diff --git a/miosix/doc/textdoc/stm32-bootloader.txt b/miosix/_doc/textdoc/stm32-bootloader.txt similarity index 100% rename from miosix/doc/textdoc/stm32-bootloader.txt rename to miosix/_doc/textdoc/stm32-bootloader.txt diff --git a/miosix/examples/asm/Readme.txt b/miosix/_examples/asm/Readme.txt similarity index 100% rename from miosix/examples/asm/Readme.txt rename to miosix/_examples/asm/Readme.txt diff --git a/miosix/examples/asm/main.s b/miosix/_examples/asm/main.s similarity index 100% rename from miosix/examples/asm/main.s rename to miosix/_examples/asm/main.s diff --git a/miosix/examples/sad_trombone/Makefile b/miosix/_examples/sad_trombone/Makefile similarity index 100% rename from miosix/examples/sad_trombone/Makefile rename to miosix/_examples/sad_trombone/Makefile diff --git a/miosix/examples/sad_trombone/Readme.txt b/miosix/_examples/sad_trombone/Readme.txt similarity index 100% rename from miosix/examples/sad_trombone/Readme.txt rename to miosix/_examples/sad_trombone/Readme.txt diff --git a/miosix/examples/sad_trombone/adpcm.c b/miosix/_examples/sad_trombone/adpcm.c similarity index 100% rename from miosix/examples/sad_trombone/adpcm.c rename to miosix/_examples/sad_trombone/adpcm.c diff --git a/miosix/examples/sad_trombone/adpcm.h b/miosix/_examples/sad_trombone/adpcm.h similarity index 100% rename from miosix/examples/sad_trombone/adpcm.h rename to miosix/_examples/sad_trombone/adpcm.h diff --git a/miosix/examples/sad_trombone/circuit.jpeg b/miosix/_examples/sad_trombone/circuit.jpeg similarity index 100% rename from miosix/examples/sad_trombone/circuit.jpeg rename to miosix/_examples/sad_trombone/circuit.jpeg diff --git a/miosix/examples/sad_trombone/convert.cpp b/miosix/_examples/sad_trombone/convert.cpp similarity index 100% rename from miosix/examples/sad_trombone/convert.cpp rename to miosix/_examples/sad_trombone/convert.cpp diff --git a/miosix/examples/sad_trombone/main.cpp b/miosix/_examples/sad_trombone/main.cpp similarity index 100% rename from miosix/examples/sad_trombone/main.cpp rename to miosix/_examples/sad_trombone/main.cpp diff --git a/miosix/examples/sad_trombone/player.cpp b/miosix/_examples/sad_trombone/player.cpp similarity index 100% rename from miosix/examples/sad_trombone/player.cpp rename to miosix/_examples/sad_trombone/player.cpp diff --git a/miosix/examples/sad_trombone/player.h b/miosix/_examples/sad_trombone/player.h similarity index 100% rename from miosix/examples/sad_trombone/player.h rename to miosix/_examples/sad_trombone/player.h diff --git a/miosix/examples/sad_trombone/sad_trombone.h b/miosix/_examples/sad_trombone/sad_trombone.h similarity index 100% rename from miosix/examples/sad_trombone/sad_trombone.h rename to miosix/_examples/sad_trombone/sad_trombone.h diff --git a/miosix/examples/sad_trombone/sad_trombone.wav b/miosix/_examples/sad_trombone/sad_trombone.wav similarity index 100% rename from miosix/examples/sad_trombone/sad_trombone.wav rename to miosix/_examples/sad_trombone/sad_trombone.wav diff --git a/miosix/examples/thread_native/Readme.txt b/miosix/_examples/thread_native/Readme.txt similarity index 100% rename from miosix/examples/thread_native/Readme.txt rename to miosix/_examples/thread_native/Readme.txt diff --git a/miosix/examples/thread_native/native_thread_example.cpp b/miosix/_examples/thread_native/native_thread_example.cpp similarity index 100% rename from miosix/examples/thread_native/native_thread_example.cpp rename to miosix/_examples/thread_native/native_thread_example.cpp diff --git a/miosix/examples/thread_pthread/Readme.txt b/miosix/_examples/thread_pthread/Readme.txt similarity index 100% rename from miosix/examples/thread_pthread/Readme.txt rename to miosix/_examples/thread_pthread/Readme.txt diff --git a/miosix/examples/thread_pthread/pthread_example.cpp b/miosix/_examples/thread_pthread/pthread_example.cpp similarity index 100% rename from miosix/examples/thread_pthread/pthread_example.cpp rename to miosix/_examples/thread_pthread/pthread_example.cpp diff --git a/miosix/bootloaders/stm32/Readme.txt b/miosix/_tools/bootloaders/stm32/Readme.txt similarity index 100% rename from miosix/bootloaders/stm32/Readme.txt rename to miosix/_tools/bootloaders/stm32/Readme.txt diff --git a/miosix/bootloaders/stm32/pc_loader/CMakeLists.txt b/miosix/_tools/bootloaders/stm32/pc_loader/CMakeLists.txt similarity index 100% rename from miosix/bootloaders/stm32/pc_loader/CMakeLists.txt rename to miosix/_tools/bootloaders/stm32/pc_loader/CMakeLists.txt diff --git a/miosix/bootloaders/stm32/pc_loader/main.cpp b/miosix/_tools/bootloaders/stm32/pc_loader/main.cpp similarity index 100% rename from miosix/bootloaders/stm32/pc_loader/main.cpp rename to miosix/_tools/bootloaders/stm32/pc_loader/main.cpp diff --git a/miosix/bootloaders/stm32/pc_loader/pc_loader b/miosix/_tools/bootloaders/stm32/pc_loader/pc_loader similarity index 100% rename from miosix/bootloaders/stm32/pc_loader/pc_loader rename to miosix/_tools/bootloaders/stm32/pc_loader/pc_loader diff --git a/miosix/bootloaders/stm32/pc_loader/serialstream.cpp b/miosix/_tools/bootloaders/stm32/pc_loader/serialstream.cpp similarity index 100% rename from miosix/bootloaders/stm32/pc_loader/serialstream.cpp rename to miosix/_tools/bootloaders/stm32/pc_loader/serialstream.cpp diff --git a/miosix/bootloaders/stm32/pc_loader/serialstream.h b/miosix/_tools/bootloaders/stm32/pc_loader/serialstream.h similarity index 100% rename from miosix/bootloaders/stm32/pc_loader/serialstream.h rename to miosix/_tools/bootloaders/stm32/pc_loader/serialstream.h diff --git a/miosix/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin b/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin rename to miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.bin diff --git a/miosix/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex b/miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex rename to miosix/_tools/bootloaders/stm32/uc_loader_ethboardv2/bootloader.hex diff --git a/miosix/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.bin b/miosix/_tools/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.bin similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.bin rename to miosix/_tools/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.bin diff --git a/miosix/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.hex b/miosix/_tools/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.hex similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.hex rename to miosix/_tools/bootloaders/stm32/uc_loader_stm3210e-eval/bootloader.hex diff --git a/miosix/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.bin b/miosix/_tools/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.bin similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.bin rename to miosix/_tools/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.bin diff --git a/miosix/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.hex b/miosix/_tools/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.hex similarity index 100% rename from miosix/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.hex rename to miosix/_tools/bootloaders/stm32/uc_loader_stm3220g-eval/bootloader.hex diff --git a/miosix/check_global_objects.pl b/miosix/_tools/check_global_objects.pl similarity index 100% rename from miosix/check_global_objects.pl rename to miosix/_tools/check_global_objects.pl diff --git a/miosix/compiler/Readme.txt b/miosix/_tools/compiler/Readme.txt similarity index 100% rename from miosix/compiler/Readme.txt rename to miosix/_tools/compiler/Readme.txt diff --git a/miosix/compiler/cleanup.sh b/miosix/_tools/compiler/cleanup.sh similarity index 100% rename from miosix/compiler/cleanup.sh rename to miosix/_tools/compiler/cleanup.sh diff --git a/miosix/compiler/download.sh b/miosix/_tools/compiler/download.sh similarity index 100% rename from miosix/compiler/download.sh rename to miosix/_tools/compiler/download.sh diff --git a/miosix/compiler/install-script.sh b/miosix/_tools/compiler/install-script.sh similarity index 100% rename from miosix/compiler/install-script.sh rename to miosix/_tools/compiler/install-script.sh diff --git a/miosix/compiler/lpc21isp_148_src.zip b/miosix/_tools/compiler/lpc21isp_148_src.zip similarity index 100% rename from miosix/compiler/lpc21isp_148_src.zip rename to miosix/_tools/compiler/lpc21isp_148_src.zip diff --git a/miosix/compiler/patches/gcc.patch b/miosix/_tools/compiler/patches/gcc.patch similarity index 100% rename from miosix/compiler/patches/gcc.patch rename to miosix/_tools/compiler/patches/gcc.patch diff --git a/miosix/compiler/patches/gcc.txt b/miosix/_tools/compiler/patches/gcc.txt similarity index 100% rename from miosix/compiler/patches/gcc.txt rename to miosix/_tools/compiler/patches/gcc.txt diff --git a/miosix/compiler/patches/newlib.patch b/miosix/_tools/compiler/patches/newlib.patch similarity index 100% rename from miosix/compiler/patches/newlib.patch rename to miosix/_tools/compiler/patches/newlib.patch diff --git a/miosix/compiler/patches/newlib.txt b/miosix/_tools/compiler/patches/newlib.txt similarity index 100% rename from miosix/compiler/patches/newlib.txt rename to miosix/_tools/compiler/patches/newlib.txt diff --git a/miosix/compiler/uninstall.sh b/miosix/_tools/compiler/uninstall.sh similarity index 100% rename from miosix/compiler/uninstall.sh rename to miosix/_tools/compiler/uninstall.sh diff --git a/miosix/temp/delay_test/delay_test.cpp b/miosix/_tools/delay_test/delay_test.cpp similarity index 100% rename from miosix/temp/delay_test/delay_test.cpp rename to miosix/_tools/delay_test/delay_test.cpp diff --git a/miosix/temp/feedforward_profiling/CMakeLists.txt b/miosix/_tools/feedforward_profiling/CMakeLists.txt similarity index 100% rename from miosix/temp/feedforward_profiling/CMakeLists.txt rename to miosix/_tools/feedforward_profiling/CMakeLists.txt diff --git a/miosix/temp/feedforward_profiling/Readme.txt b/miosix/_tools/feedforward_profiling/Readme.txt similarity index 100% rename from miosix/temp/feedforward_profiling/Readme.txt rename to miosix/_tools/feedforward_profiling/Readme.txt diff --git a/miosix/temp/feedforward_profiling/fdstream.h b/miosix/_tools/feedforward_profiling/fdstream.h similarity index 100% rename from miosix/temp/feedforward_profiling/fdstream.h rename to miosix/_tools/feedforward_profiling/fdstream.h diff --git a/miosix/temp/feedforward_profiling/fdstream.tcc b/miosix/_tools/feedforward_profiling/fdstream.tcc similarity index 100% rename from miosix/temp/feedforward_profiling/fdstream.tcc rename to miosix/_tools/feedforward_profiling/fdstream.tcc diff --git a/miosix/temp/feedforward_profiling/feedforward.png b/miosix/_tools/feedforward_profiling/feedforward.png similarity index 100% rename from miosix/temp/feedforward_profiling/feedforward.png rename to miosix/_tools/feedforward_profiling/feedforward.png diff --git a/miosix/temp/feedforward_profiling/ff_off.txt b/miosix/_tools/feedforward_profiling/ff_off.txt similarity index 100% rename from miosix/temp/feedforward_profiling/ff_off.txt rename to miosix/_tools/feedforward_profiling/ff_off.txt diff --git a/miosix/temp/feedforward_profiling/ff_on.txt b/miosix/_tools/feedforward_profiling/ff_on.txt similarity index 100% rename from miosix/temp/feedforward_profiling/ff_on.txt rename to miosix/_tools/feedforward_profiling/ff_on.txt diff --git a/miosix/temp/feedforward_profiling/ff_reinit.txt b/miosix/_tools/feedforward_profiling/ff_reinit.txt similarity index 100% rename from miosix/temp/feedforward_profiling/ff_reinit.txt rename to miosix/_tools/feedforward_profiling/ff_reinit.txt diff --git a/miosix/temp/feedforward_profiling/gdb_init.script b/miosix/_tools/feedforward_profiling/gdb_init.script similarity index 100% rename from miosix/temp/feedforward_profiling/gdb_init.script rename to miosix/_tools/feedforward_profiling/gdb_init.script diff --git a/miosix/temp/feedforward_profiling/jtag_profiler.cpp b/miosix/_tools/feedforward_profiling/jtag_profiler.cpp similarity index 100% rename from miosix/temp/feedforward_profiling/jtag_profiler.cpp rename to miosix/_tools/feedforward_profiling/jtag_profiler.cpp diff --git a/miosix/temp/feedforward_profiling/plot.sci b/miosix/_tools/feedforward_profiling/plot.sci similarity index 100% rename from miosix/temp/feedforward_profiling/plot.sci rename to miosix/_tools/feedforward_profiling/plot.sci diff --git a/miosix/temp/feedforward_profiling/plot.sh b/miosix/_tools/feedforward_profiling/plot.sh similarity index 100% rename from miosix/temp/feedforward_profiling/plot.sh rename to miosix/_tools/feedforward_profiling/plot.sh diff --git a/miosix/temp/feedforward_profiling/test.cpp b/miosix/_tools/feedforward_profiling/test.cpp similarity index 100% rename from miosix/temp/feedforward_profiling/test.cpp rename to miosix/_tools/feedforward_profiling/test.cpp diff --git a/miosix/temp/loc_counter.sh b/miosix/_tools/loc_counter.sh similarity index 100% rename from miosix/temp/loc_counter.sh rename to miosix/_tools/loc_counter.sh diff --git a/miosix/temp/ram_test/main.cpp b/miosix/_tools/ram_test/main.cpp similarity index 100% rename from miosix/temp/ram_test/main.cpp rename to miosix/_tools/ram_test/main.cpp diff --git a/miosix/temp/ram_test/sha1.cpp b/miosix/_tools/ram_test/sha1.cpp similarity index 100% rename from miosix/temp/ram_test/sha1.cpp rename to miosix/_tools/ram_test/sha1.cpp diff --git a/miosix/temp/ram_test/sha1.h b/miosix/_tools/ram_test/sha1.h similarity index 100% rename from miosix/temp/ram_test/sha1.h rename to miosix/_tools/ram_test/sha1.h diff --git a/miosix/testsuite/Readme.txt b/miosix/_tools/testsuite/Readme.txt similarity index 80% rename from miosix/testsuite/Readme.txt rename to miosix/_tools/testsuite/Readme.txt index 2291905a..e3305737 100644 --- a/miosix/testsuite/Readme.txt +++ b/miosix/_tools/testsuite/Readme.txt @@ -7,4 +7,4 @@ main.cpp to SRC := \ -miosix/testsuite/testsuite.cpp \ No newline at end of file +miosix/_tools/testsuite/testsuite.cpp \ No newline at end of file diff --git a/miosix/testsuite/testsuite.cpp b/miosix/_tools/testsuite/testsuite.cpp similarity index 100% rename from miosix/testsuite/testsuite.cpp rename to miosix/_tools/testsuite/testsuite.cpp diff --git a/miosix/temp/conflict_table.cpp b/miosix/_tools/unused/conflict_table.cpp similarity index 100% rename from miosix/temp/conflict_table.cpp rename to miosix/_tools/unused/conflict_table.cpp diff --git a/miosix/temp/conflict_table.h b/miosix/_tools/unused/conflict_table.h similarity index 100% rename from miosix/temp/conflict_table.h rename to miosix/_tools/unused/conflict_table.h diff --git a/miosix/temp/pthread_key.cpp b/miosix/_tools/unused/pthread_key.cpp similarity index 100% rename from miosix/temp/pthread_key.cpp rename to miosix/_tools/unused/pthread_key.cpp diff --git a/miosix/doc/pdfdoc/suspend/Suspend to FLASH.odt b/miosix/doc/pdfdoc/suspend/Suspend to FLASH.odt deleted file mode 100644 index 222673635ea3daabe70eea5bcc79ffeb6e65736d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 59878 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 diff --git a/miosix/doc/pdfdoc/suspend/Suspend to FLASH.pdf b/miosix/doc/pdfdoc/suspend/Suspend to FLASH.pdf deleted file mode 100644 index d94c43f9e2aead2fe04d2f46bbc01189799effc3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 116706 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 ZaY<rP3Al(iG&D7|FyvBIb@g}S0stVS=THCu diff --git a/miosix/temp/simulation.sci b/miosix/temp/simulation.sci deleted file mode 100644 index d71c5733..00000000 --- a/miosix/temp/simulation.sci +++ /dev/null @@ -1,236 +0,0 @@ -clear -global SkedData -SkedData = struct('SP_Tr',0,'alfa',0,'alfaBlock',0,... - 'krr',0,'zrr',0,'kpi',0,'bmin',0,'bmax',0,... - 'SP_Tp',0,... - 'eTp',0,'eTr',0,'eTro',0,'bc',0,'bco',0,'b',0,'bo',0,... - 'Tp',0,'Tr',0,'t',0,... - 'dmod',0,'dmodo',0); -global SimRes -SimRes = struct('Ntot',0,... - 'NfirstCur',0,.... - 'mt',[],... - 'mSP_Tr',[],'mTr',[],... - 'mSP_Tp',[],'mTp',[],... - 'mb',[],'mbc',[]); - -function s=step(t) - if t>=0 s=1; else s=0; end; -endfunction - -function r=ramp(t) - r=t*step(t); -endfunction - -function ExecSkedRegulators() - global SkedData; - // External PI (round duration) - SkedData.eTr = SkedData.SP_Tr-SkedData.Tr; - - SkedData.bc = SkedData.bco+SkedData.krr*SkedData.eTr-SkedData.krr*SkedData.zrr*SkedData.eTro; - - SkedData.bco = SkedData.bc; - - SkedData.eTro = SkedData.eTr; - SkedData.SP_Tp = SkedData.alfa*(SkedData.bc+SkedData.Tr); - // Internal I with AW (CPU usage within round) - SkedData.eTp = SkedData.SP_Tp-SkedData.Tp; - SkedData.b = SkedData.bo+SkedData.kpi*SkedData.eTp; - SkedData.b = min(max(SkedData.b,SkedData.bmin),SkedData.bmax); - SkedData.bo = SkedData.b; -endfunction - -function ExecProcPool() - global SkedData; - // Generate burst disturbances (use multiplicative) - x = max(1.1,1+0.8*(rand()-0.5)); - SkedData.dmod = 1;//0.9*SkedData.dmodo+0.1*x; - SkedData.dmodo = SkedData.dmod; - // Compute processes and round times - SkedData.Tp = max(SkedData.b.*SkedData.dmod.*(ones(SkedData.b)-SkedData.alfaBlock),0); - SkedData.Tr = sum(SkedData.Tp); - SkedData.t = SkedData.t+SkedData.Tr; -endfunction - -function AddProcessAtBottom() - global SkedData; - SkedData.alfa = [SkedData.alfa;0]; - SkedData.alfaBlock = [SkedData.alfaBlock;0]; - SkedData.Tp = [SkedData.Tp;0]; - SkedData.bo = [SkedData.bo;0]; -endfunction - -function RemProcessFromTop() - global SkedData; - global SimRes; - N = length(SkedData.alfa); - SkedData.alfa = [SkedData.alfa(2:N)]; - SkedData.alfaBlock = [SkedData.alfaBlock(2:N)]; - SkedData.Tp = [SkedData.Tp(2:N)]; - SkedData.bo = [SkedData.bo(2:N)]; - SimRes.NfirstCur = SimRes.NfirstCur+1; -endfunction - -function RemProcessFromBottom() - global SkedData; - global SimRes; - N = length(SkedData.alfa); - SkedData.alfa = [SkedData.alfa(1:N-1)]; - SkedData.alfaBlock = [SkedData.alfaBlock(1:N-1)]; - SkedData.Tp = [SkedData.Tp(1:N-1)]; - SkedData.bo = [SkedData.bo(1:N-1)]; - SimRes.NfirstCur = SimRes.NfirstCur; -endfunction - -function GetSimRes() - global SkedData; - global SimRes; - SimRes.mt = [SimRes.mt,SkedData.t]; - SimRes.mSP_Tr = [SimRes.mSP_Tr,SkedData.SP_Tr]; - SimRes.mTr = [SimRes.mTr,SkedData.Tr]; - SimRes.mbc = [SimRes.mbc,SkedData.bc]; - N = length(SkedData.alfa); - dex = SimRes.NfirstCur:SimRes.NfirstCur+N-1; - cnan = zeros(SimRes.Ntot,1);//%nan*ones(SimRes.Ntot,1); - vSP_Tp = cnan; - vSP_Tp(dex) = SkedData.alfa*(SkedData.Tr+SkedData.bc); - SimRes.mSP_Tp = [SimRes.mSP_Tp,vSP_Tp]; - vTp = cnan; - vTp(dex) = SkedData.Tp; - SimRes.mTp = [SimRes.mTp,vTp]; - vb = cnan; - vb(dex) = SkedData.b; - SimRes.mb = [SimRes.mb,vb]; -endfunction - - -//-------------------------------------------- - - -SimRes.Ntot = 12; // Total number of processes entering/exiting the test -SimRes.NfirstCur = 1; // Index of the first process of running set -SkedData.alfa = [0.2 0.3 0.5]'; // which consists of three processes -SkedData.alfaBlock = [0 0 0 ]'; // 1 blocks the process, 0 makes it run - -// Controller parameters -SkedData.kpi = 0.25; -SkedData.krr = 1.4; -SkedData.zrr = 0.88; -SkedData.bmin = 0; -SkedData.bmax = 1.5; - -// Simulation duration -Nrounds = 8000; // 8000 - - -for i=1:Nrounds //SkedData.t - SkedData.SP_Tr = 1+0.005*ramp(i-0200)-0.005*ramp(i-400)... - -0.010*ramp(i-1200)+0.010*ramp(i-1300)... - +0.002*ramp(i-2200)-0.002*ramp(i-2600)... - -0.004*ramp(i-3200)+0.004*ramp(i-3400)... - -0.800*step(i-3800)+1.300*step(i-4500)... - +0.025*ramp(i-5500)-0.025*ramp(i-5600)... - -0.025*ramp(i-6200)+0.025*ramp(i-6300); - - //if i==0030 - // SkedData.alfaBlock = [0 1 0 ]'; - //end; - //if i==0100 - // SkedData.alfaBlock = [0 0 0 ]'; - //end; - if i==0500 - AddProcessAtBottom(); - SkedData.alfa = [0.2 0.25 0.4 0.15]'; - end; - if i==1000 - SkedData.alfa = [0.1 0.15 0.2 0.55]'; - end; - if i==2000 - AddProcessAtBottom(); - AddProcessAtBottom(); - AddProcessAtBottom(); - AddProcessAtBottom(); - SkedData.alfa=[0.06 0.08 0.10 0.12 0.14 0.15 0.17 0.18]'; - end; - //if i==2100 - // SkedData.alfaBlock = [0 0 1 0 0 1 0 1]'; - //end; - //if i==2450 - // SkedData.alfaBlock = [0 0 0 0 0 0 0 0]'; - //end; - if i==2500 - RemProcessFromBottom(); - RemProcessFromBottom(); - SkedData.alfa=[0.05 0.05 0.05 0.10 0.10 0.65]'; - end; - if i==3000 - AddProcessAtBottom(); - SkedData.alfa=[0.60 0.05 0.05 0.10 0.10 0.05 0.05]'; - end; - if i==4000 - RemProcessFromBottom(); - RemProcessFromBottom(); - SkedData.alfa=[0.8 0.05 0.05 0.05 0.05]'; - end; - if i==4500 - AddProcessAtBottom(); - SkedData.alfa=[0.1 0.1 0.2 0.2 0.2 0.2]'; - end; - if i==4800 - RemProcessFromBottom(); - AddProcessAtBottom(); - AddProcessAtBottom(); - SkedData.alfa=[0.30 0.05 0.06 0.07 0.10 0.15 0.27]'; - end; - ExecSkedRegulators(); - ExecProcPool(); - GetSimRes(); -end - -//SimRes.mt = 1:length(SimRes.mt); - -hf=scf(0); clf; -hf.figure_size = [1100,700]; -drawlater(); -subplot(221); //SimRes.mt - plot([1:1:8000],SimRes.mSP_Tr,'r'); - plot([1:1:8000],SimRes.mTr,'k'); - plot([1:1:8000],SimRes.mbc,'g'); - title('Round duration (black) vs set point (red) and burst correction (green)'); - ax = get("current_axes"); - ax.data_bounds = [0,0;8000,4.5]; // [0,0;max(SimRes.mt),4.5] - ax.tight_limits = "on"; - ylabel("time units"); -subplot(222); - plot([1:1:8000],SimRes.mSP_Tp,'r'); - plot([1:1:8000],SimRes.mTp,'k'); - title('Processes CPU use (black) vs set point (red)'); - ax = get("current_axes"); - ax.data_bounds = [0,0;8000,1.5]; // [0,0;max(SimRes.mt),1.5]; - ax.tight_limits = "on"; -subplot(223); - for i = 0:SimRes.Ntot-1 - //plot([0,max(SimRes.mt)],[1.5*i,1.5*i],'y'); - plot([1:1:8000],SimRes.mSP_Tp(i+1,:)+1.5*i,'r'); - plot([1:1:8000],SimRes.mTp(i+1,:)+1.5*i,'k'); - //plot([0,max(SimRes.mt)],[1.5*i,1.5*i]+1,'g'); - end - title('Individual processes CPU use'); - ax = get("current_axes"); - ax.data_bounds = [0,0;8000,12]; // [0,0;max(SimRes.mt),18]; - ax.tight_limits = "on"; - xlabel("time units"); -subplot(224); - for i = 0:SimRes.Ntot-1 - plot([0,max(SimRes.mt)],[1.5*i,1.5*i],'y'); - plot([1:1:8000],(SimRes.mb(i+1,:)... - -SkedData.bmin)/(SkedData.bmax-SkedData.bmin)+1.5*i,'k'); - plot([0,max(SimRes.mt)],[1.5*i,1.5*i]+1,'g'); - end - title('Normalised bursts'); - ax = get("current_axes"); - ax.data_bounds = [0,0;8000,12]; // [0,0;max(SimRes.mt),18]; - ax.tight_limits = "on"; - xlabel("time units"); -drawnow(); - -- GitLab