From cdbff5a67e42f6567e7c5ee5ccf129a6d3717f55 Mon Sep 17 00:00:00 2001 From: schneider <schneider@blinkenlichts.net> Date: Sat, 25 Apr 2020 19:31:09 +0200 Subject: [PATCH] feat(spo2): Drop in Maxim SpO2 estimation code --- .../MAXREFDES117_Code_Documentation.pdf | Bin 0 -> 177884 bytes .../Code_Documentation/MainPage.html | 1 + .../html/MAXREFDES117_Block_Diagram.png | Bin 0 -> 21392 bytes .../html/MAXREFDES117_firmware_Flowchart.png | Bin 0 -> 16061 bytes .../html/_adafruit___neo_pixel_8cpp.html | 123 ++ .../_adafruit___neo_pixel_8cpp_source.html | 1320 +++++++++++++++++ .../html/_adafruit___neo_pixel_8h.html | 670 +++++++++ .../html/_adafruit___neo_pixel_8h.js | 37 + .../html/_adafruit___neo_pixel_8h_source.html | 299 ++++ .../html/_m_a_x30102_8cpp.html | 377 +++++ .../html/_m_a_x30102_8cpp.js | 9 + .../html/_m_a_x30102_8cpp_source.html | 266 ++++ .../html/_m_a_x30102_8h.html | 737 +++++++++ .../Code_Documentation/html/_m_a_x30102_8h.js | 32 + .../html/_m_a_x30102_8h_source.html | 191 +++ .../html/_r_d117___a_r_d_u_i_n_o_8ino.html | 324 ++++ .../html/_r_d117___a_r_d_u_i_n_o_8ino.js | 14 + .../_r_d117___a_r_d_u_i_n_o_8ino_source.html | 330 +++++ .../html/_soft_i2_c_master_8h.html | 654 ++++++++ .../html/_soft_i2_c_master_8h.js | 33 + .../html/_soft_i2_c_master_8h_source.html | 655 ++++++++ .../html/algorithm_8cpp.html | 485 ++++++ .../Code_Documentation/html/algorithm_8cpp.js | 9 + .../html/algorithm_8cpp_source.html | 406 +++++ .../Code_Documentation/html/algorithm_8h.html | 694 +++++++++ .../Code_Documentation/html/algorithm_8h.js | 22 + .../html/algorithm_8h_source.html | 191 +++ .../Code_Documentation/html/annotated.html | 125 ++ .../Code_Documentation/html/annotated.js | 4 + .../Code_Documentation/html/bc_s.png | Bin 0 -> 668 bytes .../Code_Documentation/html/bdwn.png | Bin 0 -> 146 bytes .../html/class_adafruit___neo_pixel.html | 668 +++++++++ .../html/class_adafruit___neo_pixel.js | 23 + .../Code_Documentation/html/classes.html | 129 ++ .../Code_Documentation/html/closed.png | Bin 0 -> 131 bytes .../dir_1496e1f9c0637ae9073f7370a2521bf1.html | 134 ++ .../dir_1496e1f9c0637ae9073f7370a2521bf1.js | 11 + .../dir_19b53f07f52837a342947cc20e6d978f.html | 121 ++ .../dir_19b53f07f52837a342947cc20e6d978f.js | 5 + .../dir_70c5cd4c8bba287fe799894cc0903ca4.html | 126 ++ .../dir_70c5cd4c8bba287fe799894cc0903ca4.js | 6 + .../dir_d4a9a7556cca61907ce453116086a23a.html | 121 ++ .../dir_d4a9a7556cca61907ce453116086a23a.js | 5 + .../Code_Documentation/html/doxygen.css | 1172 +++++++++++++++ .../Code_Documentation/html/doxygen.png | Bin 0 -> 3812 bytes .../Code_Documentation/html/dynsections.js | 78 + .../Code_Documentation/html/files.html | 130 ++ .../Code_Documentation/html/files.js | 4 + .../Code_Documentation/html/ftv2blank.png | Bin 0 -> 86 bytes .../Code_Documentation/html/ftv2cl.png | Bin 0 -> 456 bytes .../Code_Documentation/html/ftv2doc.png | Bin 0 -> 730 bytes .../html/ftv2folderclosed.png | Bin 0 -> 567 bytes .../html/ftv2folderopen.png | Bin 0 -> 621 bytes .../Code_Documentation/html/ftv2lastnode.png | Bin 0 -> 86 bytes .../Code_Documentation/html/ftv2link.png | Bin 0 -> 730 bytes .../Code_Documentation/html/ftv2mlastnode.png | Bin 0 -> 244 bytes .../Code_Documentation/html/ftv2mnode.png | Bin 0 -> 244 bytes .../Code_Documentation/html/ftv2mo.png | Bin 0 -> 401 bytes .../Code_Documentation/html/ftv2node.png | Bin 0 -> 86 bytes .../Code_Documentation/html/ftv2ns.png | Bin 0 -> 392 bytes .../Code_Documentation/html/ftv2plastnode.png | Bin 0 -> 231 bytes .../Code_Documentation/html/ftv2pnode.png | Bin 0 -> 231 bytes .../Code_Documentation/html/ftv2splitbar.png | Bin 0 -> 309 bytes .../Code_Documentation/html/ftv2vertline.png | Bin 0 -> 86 bytes .../Code_Documentation/html/functions.html | 172 +++ .../html/functions_func.html | 172 +++ .../Code_Documentation/html/globals.html | 368 +++++ .../Code_Documentation/html/globals_defs.html | 260 ++++ .../Code_Documentation/html/globals_func.html | 177 +++ .../Code_Documentation/html/globals_type.html | 129 ++ .../Code_Documentation/html/globals_vars.html | 154 ++ .../Code_Documentation/html/index.html | 125 ++ .../Code_Documentation/html/jquery.js | 77 + .../Code_Documentation/html/main_8cpp.html | 339 +++++ .../Code_Documentation/html/main_8cpp.js | 14 + .../html/main_8cpp_source.html | 298 ++++ .../html/max30102_8cpp.html | 354 +++++ .../Code_Documentation/html/max30102_8cpp.js | 8 + .../html/max30102_8cpp_source.html | 263 ++++ .../Code_Documentation/html/max30102_8h.html | 741 +++++++++ .../Code_Documentation/html/max30102_8h.js | 32 + .../html/max30102_8h_source.html | 196 +++ .../Code_Documentation/html/maxim-logo-1.jpg | Bin 0 -> 5329 bytes .../Code_Documentation/html/nav_f.png | Bin 0 -> 149 bytes .../Code_Documentation/html/nav_g.png | Bin 0 -> 95 bytes .../Code_Documentation/html/nav_h.png | Bin 0 -> 96 bytes .../Code_Documentation/html/navtree.css | 143 ++ .../Code_Documentation/html/navtree.js | 519 +++++++ .../Code_Documentation/html/navtreeindex0.js | 95 ++ .../Code_Documentation/html/open.png | Bin 0 -> 122 bytes .../Code_Documentation/html/resize.js | 93 ++ .../html/search/all_5f.html | 25 + .../Code_Documentation/html/search/all_5f.js | 6 + .../html/search/all_61.html | 25 + .../Code_Documentation/html/search/all_61.js | 8 + .../html/search/all_62.html | 25 + .../Code_Documentation/html/search/all_62.js | 4 + .../html/search/all_63.html | 25 + .../Code_Documentation/html/search/all_63.js | 5 + .../html/search/all_66.html | 25 + .../Code_Documentation/html/search/all_66.js | 5 + .../html/search/all_67.html | 25 + .../Code_Documentation/html/search/all_67.js | 6 + .../html/search/all_68.html | 25 + .../Code_Documentation/html/search/all_68.js | 5 + .../html/search/all_69.html | 25 + .../Code_Documentation/html/search/all_69.js | 6 + .../html/search/all_6c.html | 25 + .../Code_Documentation/html/search/all_6c.js | 4 + .../html/search/all_6d.html | 25 + .../Code_Documentation/html/search/all_6d.js | 22 + .../html/search/all_6e.html | 25 + .../Code_Documentation/html/search/all_6e.js | 6 + .../html/search/all_70.html | 25 + .../Code_Documentation/html/search/all_70.js | 4 + .../html/search/all_72.html | 25 + .../Code_Documentation/html/search/all_72.js | 25 + .../html/search/all_73.html | 25 + .../Code_Documentation/html/search/all_73.js | 16 + .../html/search/all_74.html | 25 + .../Code_Documentation/html/search/all_74.js | 4 + .../html/search/all_75.html | 25 + .../Code_Documentation/html/search/all_75.js | 5 + .../html/search/all_7e.html | 25 + .../Code_Documentation/html/search/all_7e.js | 4 + .../html/search/classes_61.html | 25 + .../html/search/classes_61.js | 4 + .../Code_Documentation/html/search/close.png | Bin 0 -> 273 bytes .../html/search/defines_5f.html | 25 + .../html/search/defines_5f.js | 5 + .../html/search/defines_62.html | 25 + .../html/search/defines_62.js | 4 + .../html/search/defines_66.html | 25 + .../html/search/defines_66.js | 5 + .../html/search/defines_68.html | 25 + .../html/search/defines_68.js | 5 + .../html/search/defines_69.html | 25 + .../html/search/defines_69.js | 5 + .../html/search/defines_6d.html | 25 + .../html/search/defines_6d.js | 6 + .../html/search/defines_6e.html | 25 + .../html/search/defines_6e.js | 35 + .../html/search/defines_72.html | 25 + .../html/search/defines_72.js | 25 + .../html/search/defines_73.html | 25 + .../html/search/defines_73.js | 10 + .../html/search/defines_74.html | 25 + .../html/search/defines_74.js | 4 + .../html/search/files_61.html | 25 + .../html/search/files_61.js | 5 + .../html/search/files_6d.html | 25 + .../html/search/files_6d.js | 6 + .../html/search/files_72.html | 25 + .../html/search/files_72.js | 4 + .../html/search/files_73.html | 25 + .../html/search/files_73.js | 4 + .../html/search/functions_5f.html | 25 + .../html/search/functions_5f.js | 4 + .../html/search/functions_61.html | 25 + .../html/search/functions_61.js | 4 + .../html/search/functions_62.html | 25 + .../html/search/functions_62.js | 4 + .../html/search/functions_63.html | 25 + .../html/search/functions_63.js | 6 + .../html/search/functions_67.html | 25 + .../html/search/functions_67.js | 6 + .../html/search/functions_69.html | 25 + .../html/search/functions_69.js | 4 + .../html/search/functions_6c.html | 25 + .../html/search/functions_6c.js | 4 + .../html/search/functions_6d.html | 25 + .../html/search/functions_6d.js | 15 + .../html/search/functions_6e.html | 25 + .../html/search/functions_6e.js | 4 + .../html/search/functions_70.html | 25 + .../html/search/functions_70.js | 4 + .../html/search/functions_73.html | 25 + .../html/search/functions_73.js | 8 + .../html/search/functions_75.html | 25 + .../html/search/functions_75.js | 5 + .../html/search/functions_7e.html | 25 + .../html/search/functions_7e.js | 4 + .../html/search/mag_sel.png | Bin 0 -> 563 bytes .../html/search/nomatches.html | 12 + .../html/search/pages_6d.html | 25 + .../html/search/pages_6d.js | 4 + .../Code_Documentation/html/search/search.css | 238 +++ .../Code_Documentation/html/search/search.js | 805 ++++++++++ .../html/search/search_l.png | Bin 0 -> 604 bytes .../html/search/search_m.png | Bin 0 -> 158 bytes .../html/search/search_r.png | Bin 0 -> 612 bytes .../html/search/typedefs_6e.html | 25 + .../html/search/typedefs_6e.js | 4 + .../html/search/variables_61.html | 25 + .../html/search/variables_61.js | 6 + .../html/search/variables_63.html | 25 + .../html/search/variables_63.js | 5 + .../html/search/variables_6e.html | 25 + .../html/search/variables_6e.js | 6 + .../html/search/variables_75.html | 25 + .../html/search/variables_75.js | 5 + .../Code_Documentation/html/sync_off.png | Bin 0 -> 837 bytes .../Code_Documentation/html/sync_on.png | Bin 0 -> 830 bytes .../Code_Documentation/html/tab_a.png | Bin 0 -> 147 bytes .../Code_Documentation/html/tab_b.png | Bin 0 -> 160 bytes .../Code_Documentation/html/tab_h.png | Bin 0 -> 169 bytes .../Code_Documentation/html/tab_s.png | Bin 0 -> 177 bytes .../Code_Documentation/html/tabs.css | 60 + .../RD117_MBED/MAX30102/MAX30102.cpp | 220 +++ .../rd117_mbed/RD117_MBED/MAX30102/MAX30102.h | 97 ++ .../RD117_MBED/algorithm/algorithm.cpp | 363 +++++ .../RD117_MBED/algorithm/algorithm.h | 100 ++ .../Maxim/rd117_mbed/RD117_MBED/main.cpp | 219 +++ 213 files changed, 19223 insertions(+) create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png create mode 100644 lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css create mode 100644 lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp create mode 100644 lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h create mode 100644 lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp create mode 100644 lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h create mode 100644 lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MAXREFDES117_Code_Documentation.pdf new file mode 100644 index 0000000000000000000000000000000000000000..8a3a781d4bd547688da15fc7a9159859a61fec8a GIT binary patch literal 177884 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%0AtczX9`;0YN%jlY^G-nYHypFgU{bG1FeWK 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 BAPWEh literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html new file mode 100644 index 000000000..ef34a5b82 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/MainPage.html @@ -0,0 +1 @@ +<meta http-equiv="Refresh" content="0; url=html\index.html"> \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_Block_Diagram.png new file mode 100644 index 0000000000000000000000000000000000000000..80f3301aa8c2165a625e0edbdc0ced433b1181ac GIT binary patch literal 21392 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 Ag#Z8m literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/MAXREFDES117_firmware_Flowchart.png new file mode 100644 index 0000000000000000000000000000000000000000..f71455986af0687dbca1a601e0e09f0065b76217 GIT binary patch literal 16061 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 Jmvv4FO#s0C6=VPa literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html new file mode 100644 index 000000000..0907ba25c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp.html @@ -0,0 +1,123 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8cpp.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Adafruit_NeoPixel.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>"</code><br/> +</div> +<p><a href="_adafruit___neo_pixel_8cpp_source.html">Go to the source code of this file.</a></p> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html new file mode 100644 index 000000000..536c863d8 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8cpp_source.html @@ -0,0 +1,1320 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8cpp_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Adafruit_NeoPixel.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_adafruit___neo_pixel_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*-------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> Arduino library to control a wide variety of WS2811- and WS2812-based RGB</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> LED devices such as Adafruit FLORA RGB Smart Pixels and NeoPixel strips.</span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> Currently handles 400 and 800 KHz bitstreams on 8, 12 and 16 MHz ATmega</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> MCUs, with LEDs wired for various color orders. 8 MHz MCUs provide</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> output on PORTB and PORTD, while 16 MHz chips can handle most output pins</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> (possible exception with upper PORT registers on the Arduino Mega).</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"></span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> Written by Phil Burgess / Paint Your Dragon for Adafruit Industries,</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> contributions by PJRC, Michael Miller and other members of the open</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> source community.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"></span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> Adafruit invests time and resources providing this open source code,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> please support Adafruit and open-source hardware by purchasing products</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> from Adafruit!</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"></span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> -------------------------------------------------------------------------</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> This file is part of the Adafruit NeoPixel library.</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"></span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> NeoPixel is free software: you can redistribute it and/or modify</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> it under the terms of the GNU Lesser General Public License as</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="comment"> published by the Free Software Foundation, either version 3 of</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment"> the License, or (at your option) any later version.</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"></span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> NeoPixel is distributed in the hope that it will be useful,</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> GNU Lesser General Public License for more details.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"></span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> You should have received a copy of the GNU Lesser General Public</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> License along with NeoPixel. If not, see</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> <http://www.gnu.org/licenses/>.</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> -------------------------------------------------------------------------*/</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> </div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="preprocessor">#include "<a class="code" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a>"</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> </div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// Constructor when length, pin and type are known at compile-time:</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58"> 38</a></span> <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel::Adafruit_NeoPixel</a>(uint16_t n, uint8_t p, <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t) :</div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span>  brightness(0), pixels(NULL), endTime(0), begun(<a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>)</div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> {</div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span>  <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a>(t);</div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span>  <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(n);</div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span>  <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a>(p);</div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> }</div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> </div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// via Michael Vogt/neophob: empty constructor is used when strand length</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// isn't known at compile-time; situations where program config might be</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// read from internal flash memory or an SD card, or arrive via serial</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// command. If using this constructor, MUST follow up with updateType(),</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// updateLength(), etc. to establish the strand type, length and pin number!</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320"> 51</a></span> <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel::Adafruit_NeoPixel</a>() :</div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span>  pin(-1), brightness(0), pixels(NULL), endTime(0), begun(<a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>),</div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span>  numLEDs(0), numBytes(0), rOffset(1), gOffset(0), bOffset(2), wOffset(1)</div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> #ifdef <a class="code" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469">NEO_KHZ400</a></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span>  , is800KHz(<a class="code" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>)</div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> #endif</div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> {</div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> }</div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> </div> +<div class="line"><a name="l00060"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db"> 60</a></span> <a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel::~Adafruit_NeoPixel</a>() {</div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span>  <span class="keywordflow">if</span>(pixels) free(pixels);</div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span>  <span class="keywordflow">if</span>(pin >= 0) pinMode(pin, INPUT);</div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> }</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> </div> +<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7"> 65</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel::begin</a>(<span class="keywordtype">void</span>) {</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span>  <span class="keywordflow">if</span>(pin >= 0) {</div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span>  pinMode(pin, OUTPUT);</div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span>  digitalWrite(pin, LOW);</div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span>  }</div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span>  begun = <span class="keyword">true</span>;</div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> }</div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> </div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944"> 73</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel::updateLength</a>(uint16_t n) {</div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span>  <span class="keywordflow">if</span>(pixels) free(pixels); <span class="comment">// Free existing data (if any)</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> </div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span>  <span class="comment">// Allocate new data -- note: ALL PIXELS ARE CLEARED</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span>  numBytes = n * ((wOffset == rOffset) ? 3 : 4);</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>((pixels = (uint8_t *)malloc(numBytes))) {</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  memset(pixels, 0, numBytes);</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  numLEDs = n;</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  numLEDs = numBytes = 0;</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  }</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> }</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> </div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b"> 86</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel::updateType</a>(<a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t) {</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordtype">boolean</span> oldThreeBytesPerPixel = (wOffset == rOffset); <span class="comment">// false if RGBW</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  wOffset = (t >> 6) & 0b11; <span class="comment">// See notes in header file</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  rOffset = (t >> 4) & 0b11; <span class="comment">// regarding R/G/B/W offsets</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  gOffset = (t >> 2) & 0b11;</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  bOffset = t & 0b11;</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"></span> is800KHz = (t < 256); <span class="comment">// 400 KHz flag is 1<<8</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// If bytes-per-pixel has changed (and pixel data was previously</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  <span class="comment">// allocated), re-allocate to new size. Will clear any data.</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">if</span>(pixels) {</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordtype">boolean</span> newThreeBytesPerPixel = (wOffset == rOffset);</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">if</span>(newThreeBytesPerPixel != oldThreeBytesPerPixel) <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(numLEDs);</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  }</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> }</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> </div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="preprocessor">#ifdef ESP8266</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="preprocessor"></span><span class="comment">// ESP8266 show() is external to enforce ICACHE_RAM_ATTR execution</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="keyword">extern</span> <span class="stringliteral">"C"</span> <span class="keywordtype">void</span> ICACHE_RAM_ATTR espShow(</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  uint8_t pin, uint8_t *pixels, uint32_t numBytes, uint8_t type);</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> <span class="preprocessor">#endif // ESP8266</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7"> 111</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel::show</a>(<span class="keywordtype">void</span>) {</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> </div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  <span class="keywordflow">if</span>(!pixels) <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">// Data latch = 50+ microsecond pause in the output stream. Rather than</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <span class="comment">// put a delay at the end of the function, the ending time is noted and</span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  <span class="comment">// the function will simply hold off (if needed) on issuing the</span></div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">// subsequent round of data until the latch time has elapsed. This</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// allows the mainline code to start generating the next frame of data</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// rather than stalling for the latch.</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">while</span>(!<a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a>());</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <span class="comment">// endTime is a private member (rather than global var) so that mutliple</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="comment">// instances on different pins can be quickly issued in succession (each</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="comment">// instance doesn't delay the next).</span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> </div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="comment">// In order to make this code runtime-configurable to work with any pin,</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="comment">// SBI/CBI instructions are eschewed in favor of full PORT writes via the</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="comment">// OUT or ST instructions. It relies on two facts: that peripheral</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="comment">// functions (such as PWM) take precedence on output pins, so our PORT-</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="comment">// wide writes won't interfere, and that interrupts are globally disabled</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="comment">// while data is being issued to the LEDs, so no other code will be</span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="comment">// accessing the PORT. The code takes an initial 'snapshot' of the PORT</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="comment">// state, computes 'pin high' and 'pin low' values, and writes these back</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="comment">// to the PORT register as needed.</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> </div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  noInterrupts(); <span class="comment">// Need 100% focus on instruction timing</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> </div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="preprocessor"></span><span class="comment">// AVR MCUs -- ATmega & ATtiny (no XMEGA) ---------------------------------</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> </div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keyword">volatile</span> uint16_t</div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  i = numBytes; <span class="comment">// Loop counter</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keyword">volatile</span> uint8_t</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  *ptr = pixels, <span class="comment">// Pointer to next byte</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  b = *ptr++, <span class="comment">// Current byte value</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  hi, <span class="comment">// PORT w/output bit set high</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  lo; <span class="comment">// PORT w/output bit set low</span></div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> </div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <span class="comment">// Hand-tuned assembly code issues data to the LED drivers at a specific</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="comment">// rate. There's separate code for different CPU speeds (8, 12, 16 MHz)</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  <span class="comment">// for both the WS2811 (400 KHz) and WS2812 (800 KHz) drivers. The</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <span class="comment">// datastream timing for the LED drivers allows a little wiggle room each</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  <span class="comment">// way (listed in the datasheets), so the conditions for compiling each</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// case are set up for a range of frequencies rather than just the exact</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// 8, 12 or 16 MHz values, permitting use with some close-but-not-spot-on</span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="comment">// devices (e.g. 16.5 MHz DigiSpark). The ranges were arrived at based</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">// on the datasheet figures and have not been extensively tested outside</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="comment">// the canonical 8/12/16 MHz speeds; there's no guarantee these will work</span></div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  <span class="comment">// close to the extremes (or possibly they could be pushed further).</span></div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="comment">// Keep in mind only one CPU speed case actually gets compiled; the</span></div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// resulting program isn't as massive as it might look from source here.</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> </div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="comment">// 8 MHz(ish) AVR ---------------------------------------------------------</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor">#if (F_CPU >= 7400000UL) && (F_CPU <= 9500000UL)</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keyword">volatile</span> uint8_t n1, n2 = 0; <span class="comment">// First, next bits out</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> </div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="comment">// Squeezing an 800 KHz stream out of an 8 MHz chip requires code</span></div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">// specific to each PORT register. At present this is only written</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="comment">// to work with pins on PORTD or PORTB, the most likely use case --</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="comment">// this covers all the pins on the Adafruit Flora and the bulk of</span></div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="comment">// digital pins on the Arduino Pro 8 MHz (keep in mind, this code</span></div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">// doesn't even get compiled for 16 MHz boards like the Uno, Mega,</span></div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="comment">// Leonardo, etc., so don't bother extending this out of hand).</span></div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  <span class="comment">// Additional PORTs could be added if you really need them, just</span></div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">// duplicate the else and loop and change the PORT. Each add'l</span></div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="comment">// PORT will require about 150(ish) bytes of program space.</span></div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> </div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="comment">// 10 instruction clocks per bit: HHxxxxxLLL</span></div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="comment">// OUT instructions: ^ ^ ^ (T=0,2,7)</span></div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span> <span class="preprocessor">#ifdef PORTD // PORTD isn't present on ATtiny85, etc.</span></div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  <span class="keywordflow">if</span>(port == &PORTD) {</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> </div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  hi = PORTD | pinMask;</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  lo = PORTD & ~pinMask;</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  n1 = lo;</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">if</span>(b & 0x80) n1 = hi;</div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span> </div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <span class="comment">// Dirty trick: RJMPs proceeding to the next instruction are used</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="comment">// to delay two clock cycles in one instruction word (rather than</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="comment">// using two NOPs). This was necessary in order to squeeze the</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="comment">// loop down to exactly 64 words -- the maximum possible for a</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="comment">// relative branch.</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="stringliteral">"headD:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Clk Pseudocode</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  <span class="comment">// Bit 7:</span></div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n2 = lo</span></div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n1</span></div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="stringliteral">"sbrc %[byte] , 6"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x40)</span></div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n2 = hi</span></div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="comment">// Bit 6:</span></div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n1 = lo</span></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n2</span></div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="stringliteral">"sbrc %[byte] , 5"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x20)</span></div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n1 = hi</span></div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  <span class="comment">// Bit 5:</span></div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n2 = lo</span></div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n1</span></div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  <span class="stringliteral">"sbrc %[byte] , 4"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x10)</span></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n2 = hi</span></div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="comment">// Bit 4:</span></div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n1 = lo</span></div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n2</span></div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  <span class="stringliteral">"sbrc %[byte] , 3"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x08)</span></div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n1 = hi</span></div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="comment">// Bit 3:</span></div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n2 = lo</span></div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n1</span></div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="stringliteral">"sbrc %[byte] , 2"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x04)</span></div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n2 = hi</span></div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="comment">// Bit 2:</span></div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n1 = lo</span></div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n2</span></div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="stringliteral">"sbrc %[byte] , 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x02)</span></div> +<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n1 = hi</span></div> +<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="comment">// Bit 1:</span></div> +<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n2 = lo</span></div> +<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n1</span></div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop</span></div> +<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="stringliteral">"sbrc %[byte] , 0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x01)</span></div> +<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n2 = hi</span></div> +<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (don't act on Z flag yet)</span></div> +<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  <span class="comment">// Bit 0:</span></div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi</span></div> +<div class="line"><a name="l00269"></a><span class="lineno"> 269</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 n1 = lo</span></div> +<div class="line"><a name="l00270"></a><span class="lineno"> 270</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = n2</span></div> +<div class="line"><a name="l00271"></a><span class="lineno"> 271</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++</span></div> +<div class="line"><a name="l00272"></a><span class="lineno"> 272</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x80)</span></div> +<div class="line"><a name="l00273"></a><span class="lineno"> 273</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 n1 = hi</span></div> +<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo</span></div> +<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  <span class="stringliteral">"brne headD"</span> <span class="stringliteral">"\n"</span> <span class="comment">// 2 while(i) (Z flag set above)</span></div> +<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  : [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  [n1] <span class="stringliteral">"+r"</span> (n1),</div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  [n2] <span class="stringliteral">"+r"</span> (n2),</div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  : [port] <span class="stringliteral">"I"</span> (_SFR_IO_ADDR(PORTD)),</div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  [ptr] <span class="stringliteral">"e"</span> (ptr),</div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span> </div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(port == &PORTB) {</div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span> </div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span> <span class="preprocessor">#endif // PORTD</span></div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  <span class="comment">// Same as above, just switched to PORTB and stripped of comments.</span></div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  hi = PORTB | pinMask;</div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  lo = PORTB & ~pinMask;</div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  n1 = lo;</div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">if</span>(b & 0x80) n1 = hi;</div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div> +<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span>  <span class="stringliteral">"headB:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00299"></a><span class="lineno"> 299</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00301"></a><span class="lineno"> 301</span>  <span class="stringliteral">"sbrc %[byte] , 6"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  <span class="stringliteral">"sbrc %[byte] , 5"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00313"></a><span class="lineno"> 313</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="stringliteral">"sbrc %[byte] , 4"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="stringliteral">"sbrc %[byte] , 3"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  <span class="stringliteral">"sbrc %[byte] , 2"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00336"></a><span class="lineno"> 336</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  <span class="stringliteral">"sbrc %[byte] , 1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00346"></a><span class="lineno"> 346</span>  <span class="stringliteral">"mov %[n2] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="stringliteral">"out %[port] , %[n1]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00348"></a><span class="lineno"> 348</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="stringliteral">"sbrc %[byte] , 0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="stringliteral">"mov %[n2] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="stringliteral">"mov %[n1] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="stringliteral">"out %[port] , %[n2]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="stringliteral">"mov %[n1] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="stringliteral">"brne headB"</span> <span class="stringliteral">"\n"</span></div> +<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  : [byte] <span class="stringliteral">"+r"</span> (b), [n1] <span class="stringliteral">"+r"</span> (n1), [n2] <span class="stringliteral">"+r"</span> (n2), [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  : [port] <span class="stringliteral">"I"</span> (_SFR_IO_ADDR(PORTB)), [ptr] <span class="stringliteral">"e"</span> (ptr), [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00363"></a><span class="lineno"> 363</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div> +<div class="line"><a name="l00365"></a><span class="lineno"> 365</span> <span class="preprocessor">#ifdef PORTD</span></div> +<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> <span class="preprocessor"></span> } <span class="comment">// endif PORTB</span></div> +<div class="line"><a name="l00367"></a><span class="lineno"> 367</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00368"></a><span class="lineno"> 368</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00369"></a><span class="lineno"> 369</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00370"></a><span class="lineno"> 370</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// end 800 KHz, do 400 KHz</span></div> +<div class="line"><a name="l00371"></a><span class="lineno"> 371</span> </div> +<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="comment">// Timing is more relaxed; unrolling the inner loop for each bit is</span></div> +<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="comment">// not necessary. Still using the peculiar RJMPs as 2X NOPs, not out</span></div> +<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="comment">// of need but just to trim the code size down a little.</span></div> +<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="comment">// This 400-KHz-datastream-on-8-MHz-CPU code is not quite identical</span></div> +<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="comment">// to the 800-on-16 code later -- the hi/lo timing between WS2811 and</span></div> +<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="comment">// WS2812 is not simply a 2:1 scale!</span></div> +<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> </div> +<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="comment">// 20 inst. clocks per bit: HHHHxxxxxxLLLLLLLLLL</span></div> +<div class="line"><a name="l00380"></a><span class="lineno"> 380</span>  <span class="comment">// ST instructions: ^ ^ ^ (T=0,4,10)</span></div> +<div class="line"><a name="l00381"></a><span class="lineno"> 381</span> </div> +<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  <span class="keyword">volatile</span> uint8_t next, bit;</div> +<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> </div> +<div class="line"><a name="l00384"></a><span class="lineno"> 384</span>  hi = *port | pinMask;</div> +<div class="line"><a name="l00385"></a><span class="lineno"> 385</span>  lo = *port & ~pinMask;</div> +<div class="line"><a name="l00386"></a><span class="lineno"> 386</span>  next = lo;</div> +<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  bit = 8;</div> +<div class="line"><a name="l00388"></a><span class="lineno"> 388</span> </div> +<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="stringliteral">"head20:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Clk Pseudocode (T = 0)</span></div> +<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="stringliteral">"st %a[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = hi (T = 2)</span></div> +<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 128)</span></div> +<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="stringliteral">"mov %[next], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 4)</span></div> +<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="stringliteral">"st %a[port], %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = next (T = 6)</span></div> +<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="stringliteral">"mov %[next] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 next = lo (T = 7)</span></div> +<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">"dec %[bit]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit-- (T = 8)</span></div> +<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="stringliteral">"breq nextbyte20"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(bit == 0)</span></div> +<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 b <<= 1 (T = 10)</span></div> +<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 12)</span></div> +<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 14)</span></div> +<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 16)</span></div> +<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 18)</span></div> +<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="stringliteral">"rjmp head20"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 -> head20 (next bit out)</span></div> +<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="stringliteral">"nextbyte20:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 10)</span></div> +<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 12)</span></div> +<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 13)</span></div> +<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="stringliteral">"ldi %[bit] , 8"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit = 8 (T = 14)</span></div> +<div class="line"><a name="l00408"></a><span class="lineno"> 408</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++ (T = 16)</span></div> +<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (T = 18)</span></div> +<div class="line"><a name="l00410"></a><span class="lineno"> 410</span>  <span class="stringliteral">"brne head20"</span> <span class="stringliteral">"\n"</span> <span class="comment">// 2 if(i != 0) -> (next byte)</span></div> +<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  : [port] <span class="stringliteral">"+e"</span> (port),</div> +<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  [bit] <span class="stringliteral">"+r"</span> (bit),</div> +<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  [next] <span class="stringliteral">"+r"</span> (next),</div> +<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  : [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  [lo] <span class="stringliteral">"r"</span> (lo),</div> +<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  [ptr] <span class="stringliteral">"e"</span> (ptr));</div> +<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  }</div> +<div class="line"><a name="l00420"></a><span class="lineno"> 420</span> <span class="preprocessor">#endif // NEO_KHZ400</span></div> +<div class="line"><a name="l00421"></a><span class="lineno"> 421</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00422"></a><span class="lineno"> 422</span> <span class="comment">// 12 MHz(ish) AVR --------------------------------------------------------</span></div> +<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> <span class="preprocessor">#elif (F_CPU >= 11100000UL) && (F_CPU <= 14300000UL)</span></div> +<div class="line"><a name="l00424"></a><span class="lineno"> 424</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00426"></a><span class="lineno"> 426</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00427"></a><span class="lineno"> 427</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00428"></a><span class="lineno"> 428</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="comment">// In the 12 MHz case, an optimized 800 KHz datastream (no dead time</span></div> +<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="comment">// between bytes) requires a PORT-specific loop similar to the 8 MHz</span></div> +<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="comment">// code (but a little more relaxed in this case).</span></div> +<div class="line"><a name="l00432"></a><span class="lineno"> 432</span> </div> +<div class="line"><a name="l00433"></a><span class="lineno"> 433</span>  <span class="comment">// 15 instruction clocks per bit: HHHHxxxxxxLLLLL</span></div> +<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="comment">// OUT instructions: ^ ^ ^ (T=0,4,10)</span></div> +<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> </div> +<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="keyword">volatile</span> uint8_t next;</div> +<div class="line"><a name="l00437"></a><span class="lineno"> 437</span> </div> +<div class="line"><a name="l00438"></a><span class="lineno"> 438</span> <span class="preprocessor">#ifdef PORTD</span></div> +<div class="line"><a name="l00439"></a><span class="lineno"> 439</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="keywordflow">if</span>(port == &PORTD) {</div> +<div class="line"><a name="l00441"></a><span class="lineno"> 441</span> </div> +<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  hi = PORTD | pinMask;</div> +<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  lo = PORTD & ~pinMask;</div> +<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  next = lo;</div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="keywordflow">if</span>(b & 0x80) next = hi;</div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span> </div> +<div class="line"><a name="l00447"></a><span class="lineno"> 447</span>  <span class="comment">// Don't "optimize" the OUT calls into the bitTime subroutine;</span></div> +<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="comment">// we're exploiting the RCALL and RET as 3- and 4-cycle NOPs!</span></div> +<div class="line"><a name="l00449"></a><span class="lineno"> 449</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="stringliteral">"headD:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 0)</span></div> +<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 1)</span></div> +<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 7 (T = 15)</span></div> +<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 6</span></div> +<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 5</span></div> +<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 4</span></div> +<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00460"></a><span class="lineno"> 460</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 3</span></div> +<div class="line"><a name="l00461"></a><span class="lineno"> 461</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00462"></a><span class="lineno"> 462</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 2</span></div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  <span class="stringliteral">"rcall bitTimeD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Bit 1</span></div> +<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  <span class="comment">// Bit 0:</span></div> +<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = hi (T = 1)</span></div> +<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 3)</span></div> +<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++ (T = 5)</span></div> +<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="stringliteral">"out %[port] , %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = next (T = 6)</span></div> +<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="stringliteral">"mov %[next] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 next = lo (T = 7)</span></div> +<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x80) (T = 8)</span></div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="stringliteral">"mov %[next] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 9)</span></div> +<div class="line"><a name="l00473"></a><span class="lineno"> 473</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 (T = 10)</span></div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo (T = 11)</span></div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (T = 13)</span></div> +<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="stringliteral">"brne headD"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 if(i != 0) -> (next byte)</span></div> +<div class="line"><a name="l00477"></a><span class="lineno"> 477</span>  <span class="stringliteral">"rjmp doneD"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="stringliteral">"bitTimeD:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// nop nop nop (T = 4)</span></div> +<div class="line"><a name="l00479"></a><span class="lineno"> 479</span>  <span class="stringliteral">"out %[port], %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = next (T = 5)</span></div> +<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="stringliteral">"mov %[next], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 next = lo (T = 6)</span></div> +<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 b <<= 1 (T = 7)</span></div> +<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="stringliteral">"sbrc %[byte], 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 0x80) (T = 8)</span></div> +<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="stringliteral">"mov %[next], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 9)</span></div> +<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 (T = 10)</span></div> +<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="stringliteral">"out %[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 PORT = lo (T = 11)</span></div> +<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="stringliteral">"ret"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 4 nop nop nop nop (T = 15)</span></div> +<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="stringliteral">"doneD:"</span> <span class="stringliteral">"\n"</span></div> +<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  : [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  [next] <span class="stringliteral">"+r"</span> (next),</div> +<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  : [port] <span class="stringliteral">"I"</span> (_SFR_IO_ADDR(PORTD)),</div> +<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  [ptr] <span class="stringliteral">"e"</span> (ptr),</div> +<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00495"></a><span class="lineno"> 495</span> </div> +<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  } <span class="keywordflow">else</span> <span class="keywordflow">if</span>(port == &PORTB) {</div> +<div class="line"><a name="l00497"></a><span class="lineno"> 497</span> </div> +<div class="line"><a name="l00498"></a><span class="lineno"> 498</span> <span class="preprocessor">#endif // PORTD</span></div> +<div class="line"><a name="l00499"></a><span class="lineno"> 499</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  hi = PORTB | pinMask;</div> +<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  lo = PORTB & ~pinMask;</div> +<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  next = lo;</div> +<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="keywordflow">if</span>(b & 0x80) next = hi;</div> +<div class="line"><a name="l00504"></a><span class="lineno"> 504</span> </div> +<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="comment">// Same as above, just set for PORTB & stripped of comments</span></div> +<div class="line"><a name="l00506"></a><span class="lineno"> 506</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="stringliteral">"headB:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00508"></a><span class="lineno"> 508</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00515"></a><span class="lineno"> 515</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00517"></a><span class="lineno"> 517</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="stringliteral">"out %[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="stringliteral">"rcall bitTimeB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="stringliteral">"out %[port] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  <span class="stringliteral">"out %[port] , %[next]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  <span class="stringliteral">"mov %[next] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  <span class="stringliteral">"mov %[next] , %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00530"></a><span class="lineno"> 530</span>  <span class="stringliteral">"out %[port] , %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00532"></a><span class="lineno"> 532</span>  <span class="stringliteral">"brne headB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00533"></a><span class="lineno"> 533</span>  <span class="stringliteral">"rjmp doneB"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00534"></a><span class="lineno"> 534</span>  <span class="stringliteral">"bitTimeB:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00535"></a><span class="lineno"> 535</span>  <span class="stringliteral">"out %[port], %[next]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00536"></a><span class="lineno"> 536</span>  <span class="stringliteral">"mov %[next], %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00537"></a><span class="lineno"> 537</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00538"></a><span class="lineno"> 538</span>  <span class="stringliteral">"sbrc %[byte], 7"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00539"></a><span class="lineno"> 539</span>  <span class="stringliteral">"mov %[next], %[hi]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00540"></a><span class="lineno"> 540</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00541"></a><span class="lineno"> 541</span>  <span class="stringliteral">"out %[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00542"></a><span class="lineno"> 542</span>  <span class="stringliteral">"ret"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00543"></a><span class="lineno"> 543</span>  <span class="stringliteral">"doneB:"</span> <span class="stringliteral">"\n"</span></div> +<div class="line"><a name="l00544"></a><span class="lineno"> 544</span>  : [byte] <span class="stringliteral">"+r"</span> (b), [next] <span class="stringliteral">"+r"</span> (next), [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00545"></a><span class="lineno"> 545</span>  : [port] <span class="stringliteral">"I"</span> (_SFR_IO_ADDR(PORTB)), [ptr] <span class="stringliteral">"e"</span> (ptr), [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00546"></a><span class="lineno"> 546</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00547"></a><span class="lineno"> 547</span> </div> +<div class="line"><a name="l00548"></a><span class="lineno"> 548</span> <span class="preprocessor">#ifdef PORTD</span></div> +<div class="line"><a name="l00549"></a><span class="lineno"> 549</span> <span class="preprocessor"></span> }</div> +<div class="line"><a name="l00550"></a><span class="lineno"> 550</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00551"></a><span class="lineno"> 551</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00552"></a><span class="lineno"> 552</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00553"></a><span class="lineno"> 553</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz</span></div> +<div class="line"><a name="l00554"></a><span class="lineno"> 554</span> </div> +<div class="line"><a name="l00555"></a><span class="lineno"> 555</span>  <span class="comment">// 30 instruction clocks per bit: HHHHHHxxxxxxxxxLLLLLLLLLLLLLLL</span></div> +<div class="line"><a name="l00556"></a><span class="lineno"> 556</span>  <span class="comment">// ST instructions: ^ ^ ^ (T=0,6,15)</span></div> +<div class="line"><a name="l00557"></a><span class="lineno"> 557</span> </div> +<div class="line"><a name="l00558"></a><span class="lineno"> 558</span>  <span class="keyword">volatile</span> uint8_t next, bit;</div> +<div class="line"><a name="l00559"></a><span class="lineno"> 559</span> </div> +<div class="line"><a name="l00560"></a><span class="lineno"> 560</span>  hi = *port | pinMask;</div> +<div class="line"><a name="l00561"></a><span class="lineno"> 561</span>  lo = *port & ~pinMask;</div> +<div class="line"><a name="l00562"></a><span class="lineno"> 562</span>  next = lo;</div> +<div class="line"><a name="l00563"></a><span class="lineno"> 563</span>  bit = 8;</div> +<div class="line"><a name="l00564"></a><span class="lineno"> 564</span> </div> +<div class="line"><a name="l00565"></a><span class="lineno"> 565</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00566"></a><span class="lineno"> 566</span>  <span class="stringliteral">"head30:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Clk Pseudocode (T = 0)</span></div> +<div class="line"><a name="l00567"></a><span class="lineno"> 567</span>  <span class="stringliteral">"st %a[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = hi (T = 2)</span></div> +<div class="line"><a name="l00568"></a><span class="lineno"> 568</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 128)</span></div> +<div class="line"><a name="l00569"></a><span class="lineno"> 569</span>  <span class="stringliteral">"mov %[next], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 4)</span></div> +<div class="line"><a name="l00570"></a><span class="lineno"> 570</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 6)</span></div> +<div class="line"><a name="l00571"></a><span class="lineno"> 571</span>  <span class="stringliteral">"st %a[port], %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = next (T = 8)</span></div> +<div class="line"><a name="l00572"></a><span class="lineno"> 572</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 10)</span></div> +<div class="line"><a name="l00573"></a><span class="lineno"> 573</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 12)</span></div> +<div class="line"><a name="l00574"></a><span class="lineno"> 574</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 14)</span></div> +<div class="line"><a name="l00575"></a><span class="lineno"> 575</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 15)</span></div> +<div class="line"><a name="l00576"></a><span class="lineno"> 576</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 17)</span></div> +<div class="line"><a name="l00577"></a><span class="lineno"> 577</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 19)</span></div> +<div class="line"><a name="l00578"></a><span class="lineno"> 578</span>  <span class="stringliteral">"dec %[bit]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit-- (T = 20)</span></div> +<div class="line"><a name="l00579"></a><span class="lineno"> 579</span>  <span class="stringliteral">"breq nextbyte30"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(bit == 0)</span></div> +<div class="line"><a name="l00580"></a><span class="lineno"> 580</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 b <<= 1 (T = 22)</span></div> +<div class="line"><a name="l00581"></a><span class="lineno"> 581</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 24)</span></div> +<div class="line"><a name="l00582"></a><span class="lineno"> 582</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 26)</span></div> +<div class="line"><a name="l00583"></a><span class="lineno"> 583</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 28)</span></div> +<div class="line"><a name="l00584"></a><span class="lineno"> 584</span>  <span class="stringliteral">"rjmp head30"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 -> head30 (next bit out)</span></div> +<div class="line"><a name="l00585"></a><span class="lineno"> 585</span>  <span class="stringliteral">"nextbyte30:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 22)</span></div> +<div class="line"><a name="l00586"></a><span class="lineno"> 586</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 23)</span></div> +<div class="line"><a name="l00587"></a><span class="lineno"> 587</span>  <span class="stringliteral">"ldi %[bit] , 8"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit = 8 (T = 24)</span></div> +<div class="line"><a name="l00588"></a><span class="lineno"> 588</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++ (T = 26)</span></div> +<div class="line"><a name="l00589"></a><span class="lineno"> 589</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (T = 28)</span></div> +<div class="line"><a name="l00590"></a><span class="lineno"> 590</span>  <span class="stringliteral">"brne head30"</span> <span class="stringliteral">"\n"</span> <span class="comment">// 1-2 if(i != 0) -> (next byte)</span></div> +<div class="line"><a name="l00591"></a><span class="lineno"> 591</span>  : [port] <span class="stringliteral">"+e"</span> (port),</div> +<div class="line"><a name="l00592"></a><span class="lineno"> 592</span>  [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00593"></a><span class="lineno"> 593</span>  [bit] <span class="stringliteral">"+r"</span> (bit),</div> +<div class="line"><a name="l00594"></a><span class="lineno"> 594</span>  [next] <span class="stringliteral">"+r"</span> (next),</div> +<div class="line"><a name="l00595"></a><span class="lineno"> 595</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00596"></a><span class="lineno"> 596</span>  : [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00597"></a><span class="lineno"> 597</span>  [lo] <span class="stringliteral">"r"</span> (lo),</div> +<div class="line"><a name="l00598"></a><span class="lineno"> 598</span>  [ptr] <span class="stringliteral">"e"</span> (ptr));</div> +<div class="line"><a name="l00599"></a><span class="lineno"> 599</span>  }</div> +<div class="line"><a name="l00600"></a><span class="lineno"> 600</span> <span class="preprocessor">#endif // NEO_KHZ400</span></div> +<div class="line"><a name="l00601"></a><span class="lineno"> 601</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00602"></a><span class="lineno"> 602</span> <span class="comment">// 16 MHz(ish) AVR --------------------------------------------------------</span></div> +<div class="line"><a name="l00603"></a><span class="lineno"> 603</span> <span class="preprocessor">#elif (F_CPU >= 15400000UL) && (F_CPU <= 19000000L)</span></div> +<div class="line"><a name="l00604"></a><span class="lineno"> 604</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00605"></a><span class="lineno"> 605</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00606"></a><span class="lineno"> 606</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00607"></a><span class="lineno"> 607</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00608"></a><span class="lineno"> 608</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00609"></a><span class="lineno"> 609</span>  <span class="comment">// WS2811 and WS2812 have different hi/lo duty cycles; this is</span></div> +<div class="line"><a name="l00610"></a><span class="lineno"> 610</span>  <span class="comment">// similar but NOT an exact copy of the prior 400-on-8 code.</span></div> +<div class="line"><a name="l00611"></a><span class="lineno"> 611</span> </div> +<div class="line"><a name="l00612"></a><span class="lineno"> 612</span>  <span class="comment">// 20 inst. clocks per bit: HHHHHxxxxxxxxLLLLLLL</span></div> +<div class="line"><a name="l00613"></a><span class="lineno"> 613</span>  <span class="comment">// ST instructions: ^ ^ ^ (T=0,5,13)</span></div> +<div class="line"><a name="l00614"></a><span class="lineno"> 614</span> </div> +<div class="line"><a name="l00615"></a><span class="lineno"> 615</span>  <span class="keyword">volatile</span> uint8_t next, bit;</div> +<div class="line"><a name="l00616"></a><span class="lineno"> 616</span> </div> +<div class="line"><a name="l00617"></a><span class="lineno"> 617</span>  hi = *port | pinMask;</div> +<div class="line"><a name="l00618"></a><span class="lineno"> 618</span>  lo = *port & ~pinMask;</div> +<div class="line"><a name="l00619"></a><span class="lineno"> 619</span>  next = lo;</div> +<div class="line"><a name="l00620"></a><span class="lineno"> 620</span>  bit = 8;</div> +<div class="line"><a name="l00621"></a><span class="lineno"> 621</span> </div> +<div class="line"><a name="l00622"></a><span class="lineno"> 622</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00623"></a><span class="lineno"> 623</span>  <span class="stringliteral">"head20:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Clk Pseudocode (T = 0)</span></div> +<div class="line"><a name="l00624"></a><span class="lineno"> 624</span>  <span class="stringliteral">"st %a[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = hi (T = 2)</span></div> +<div class="line"><a name="l00625"></a><span class="lineno"> 625</span>  <span class="stringliteral">"sbrc %[byte], 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 128)</span></div> +<div class="line"><a name="l00626"></a><span class="lineno"> 626</span>  <span class="stringliteral">"mov %[next], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 4)</span></div> +<div class="line"><a name="l00627"></a><span class="lineno"> 627</span>  <span class="stringliteral">"dec %[bit]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit-- (T = 5)</span></div> +<div class="line"><a name="l00628"></a><span class="lineno"> 628</span>  <span class="stringliteral">"st %a[port], %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = next (T = 7)</span></div> +<div class="line"><a name="l00629"></a><span class="lineno"> 629</span>  <span class="stringliteral">"mov %[next] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 next = lo (T = 8)</span></div> +<div class="line"><a name="l00630"></a><span class="lineno"> 630</span>  <span class="stringliteral">"breq nextbyte20"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(bit == 0) (from dec above)</span></div> +<div class="line"><a name="l00631"></a><span class="lineno"> 631</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 b <<= 1 (T = 10)</span></div> +<div class="line"><a name="l00632"></a><span class="lineno"> 632</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 12)</span></div> +<div class="line"><a name="l00633"></a><span class="lineno"> 633</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 13)</span></div> +<div class="line"><a name="l00634"></a><span class="lineno"> 634</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 15)</span></div> +<div class="line"><a name="l00635"></a><span class="lineno"> 635</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 16)</span></div> +<div class="line"><a name="l00636"></a><span class="lineno"> 636</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 18)</span></div> +<div class="line"><a name="l00637"></a><span class="lineno"> 637</span>  <span class="stringliteral">"rjmp head20"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 -> head20 (next bit out)</span></div> +<div class="line"><a name="l00638"></a><span class="lineno"> 638</span>  <span class="stringliteral">"nextbyte20:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 10)</span></div> +<div class="line"><a name="l00639"></a><span class="lineno"> 639</span>  <span class="stringliteral">"ldi %[bit] , 8"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit = 8 (T = 11)</span></div> +<div class="line"><a name="l00640"></a><span class="lineno"> 640</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++ (T = 13)</span></div> +<div class="line"><a name="l00641"></a><span class="lineno"> 641</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 15)</span></div> +<div class="line"><a name="l00642"></a><span class="lineno"> 642</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 16)</span></div> +<div class="line"><a name="l00643"></a><span class="lineno"> 643</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (T = 18)</span></div> +<div class="line"><a name="l00644"></a><span class="lineno"> 644</span>  <span class="stringliteral">"brne head20"</span> <span class="stringliteral">"\n"</span> <span class="comment">// 2 if(i != 0) -> (next byte)</span></div> +<div class="line"><a name="l00645"></a><span class="lineno"> 645</span>  : [port] <span class="stringliteral">"+e"</span> (port),</div> +<div class="line"><a name="l00646"></a><span class="lineno"> 646</span>  [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00647"></a><span class="lineno"> 647</span>  [bit] <span class="stringliteral">"+r"</span> (bit),</div> +<div class="line"><a name="l00648"></a><span class="lineno"> 648</span>  [next] <span class="stringliteral">"+r"</span> (next),</div> +<div class="line"><a name="l00649"></a><span class="lineno"> 649</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00650"></a><span class="lineno"> 650</span>  : [ptr] <span class="stringliteral">"e"</span> (ptr),</div> +<div class="line"><a name="l00651"></a><span class="lineno"> 651</span>  [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00652"></a><span class="lineno"> 652</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00653"></a><span class="lineno"> 653</span> </div> +<div class="line"><a name="l00654"></a><span class="lineno"> 654</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00655"></a><span class="lineno"> 655</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz</span></div> +<div class="line"><a name="l00656"></a><span class="lineno"> 656</span> </div> +<div class="line"><a name="l00657"></a><span class="lineno"> 657</span>  <span class="comment">// The 400 KHz clock on 16 MHz MCU is the most 'relaxed' version.</span></div> +<div class="line"><a name="l00658"></a><span class="lineno"> 658</span> </div> +<div class="line"><a name="l00659"></a><span class="lineno"> 659</span>  <span class="comment">// 40 inst. clocks per bit: HHHHHHHHxxxxxxxxxxxxLLLLLLLLLLLLLLLLLLLL</span></div> +<div class="line"><a name="l00660"></a><span class="lineno"> 660</span>  <span class="comment">// ST instructions: ^ ^ ^ (T=0,8,20)</span></div> +<div class="line"><a name="l00661"></a><span class="lineno"> 661</span> </div> +<div class="line"><a name="l00662"></a><span class="lineno"> 662</span>  <span class="keyword">volatile</span> uint8_t next, bit;</div> +<div class="line"><a name="l00663"></a><span class="lineno"> 663</span> </div> +<div class="line"><a name="l00664"></a><span class="lineno"> 664</span>  hi = *port | pinMask;</div> +<div class="line"><a name="l00665"></a><span class="lineno"> 665</span>  lo = *port & ~pinMask;</div> +<div class="line"><a name="l00666"></a><span class="lineno"> 666</span>  next = lo;</div> +<div class="line"><a name="l00667"></a><span class="lineno"> 667</span>  bit = 8;</div> +<div class="line"><a name="l00668"></a><span class="lineno"> 668</span> </div> +<div class="line"><a name="l00669"></a><span class="lineno"> 669</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00670"></a><span class="lineno"> 670</span>  <span class="stringliteral">"head40:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// Clk Pseudocode (T = 0)</span></div> +<div class="line"><a name="l00671"></a><span class="lineno"> 671</span>  <span class="stringliteral">"st %a[port], %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = hi (T = 2)</span></div> +<div class="line"><a name="l00672"></a><span class="lineno"> 672</span>  <span class="stringliteral">"sbrc %[byte] , 7"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(b & 128)</span></div> +<div class="line"><a name="l00673"></a><span class="lineno"> 673</span>  <span class="stringliteral">"mov %[next] , %[hi]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 0-1 next = hi (T = 4)</span></div> +<div class="line"><a name="l00674"></a><span class="lineno"> 674</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 6)</span></div> +<div class="line"><a name="l00675"></a><span class="lineno"> 675</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 8)</span></div> +<div class="line"><a name="l00676"></a><span class="lineno"> 676</span>  <span class="stringliteral">"st %a[port], %[next]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = next (T = 10)</span></div> +<div class="line"><a name="l00677"></a><span class="lineno"> 677</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 12)</span></div> +<div class="line"><a name="l00678"></a><span class="lineno"> 678</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 14)</span></div> +<div class="line"><a name="l00679"></a><span class="lineno"> 679</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 16)</span></div> +<div class="line"><a name="l00680"></a><span class="lineno"> 680</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 18)</span></div> +<div class="line"><a name="l00681"></a><span class="lineno"> 681</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 20)</span></div> +<div class="line"><a name="l00682"></a><span class="lineno"> 682</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 22)</span></div> +<div class="line"><a name="l00683"></a><span class="lineno"> 683</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 23)</span></div> +<div class="line"><a name="l00684"></a><span class="lineno"> 684</span>  <span class="stringliteral">"mov %[next] , %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 next = lo (T = 24)</span></div> +<div class="line"><a name="l00685"></a><span class="lineno"> 685</span>  <span class="stringliteral">"dec %[bit]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit-- (T = 25)</span></div> +<div class="line"><a name="l00686"></a><span class="lineno"> 686</span>  <span class="stringliteral">"breq nextbyte40"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1-2 if(bit == 0)</span></div> +<div class="line"><a name="l00687"></a><span class="lineno"> 687</span>  <span class="stringliteral">"rol %[byte]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 b <<= 1 (T = 27)</span></div> +<div class="line"><a name="l00688"></a><span class="lineno"> 688</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 nop (T = 28)</span></div> +<div class="line"><a name="l00689"></a><span class="lineno"> 689</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 30)</span></div> +<div class="line"><a name="l00690"></a><span class="lineno"> 690</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 32)</span></div> +<div class="line"><a name="l00691"></a><span class="lineno"> 691</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 34)</span></div> +<div class="line"><a name="l00692"></a><span class="lineno"> 692</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 36)</span></div> +<div class="line"><a name="l00693"></a><span class="lineno"> 693</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 38)</span></div> +<div class="line"><a name="l00694"></a><span class="lineno"> 694</span>  <span class="stringliteral">"rjmp head40"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 -> head40 (next bit out)</span></div> +<div class="line"><a name="l00695"></a><span class="lineno"> 695</span>  <span class="stringliteral">"nextbyte40:"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// (T = 27)</span></div> +<div class="line"><a name="l00696"></a><span class="lineno"> 696</span>  <span class="stringliteral">"ldi %[bit] , 8"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 1 bit = 8 (T = 28)</span></div> +<div class="line"><a name="l00697"></a><span class="lineno"> 697</span>  <span class="stringliteral">"ld %[byte] , %a[ptr]+"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 b = *ptr++ (T = 30)</span></div> +<div class="line"><a name="l00698"></a><span class="lineno"> 698</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 32)</span></div> +<div class="line"><a name="l00699"></a><span class="lineno"> 699</span>  <span class="stringliteral">"st %a[port], %[lo]"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 PORT = lo (T = 34)</span></div> +<div class="line"><a name="l00700"></a><span class="lineno"> 700</span>  <span class="stringliteral">"rjmp .+0"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 nop nop (T = 36)</span></div> +<div class="line"><a name="l00701"></a><span class="lineno"> 701</span>  <span class="stringliteral">"sbiw %[count], 1"</span> <span class="stringliteral">"\n\t"</span> <span class="comment">// 2 i-- (T = 38)</span></div> +<div class="line"><a name="l00702"></a><span class="lineno"> 702</span>  <span class="stringliteral">"brne head40"</span> <span class="stringliteral">"\n"</span> <span class="comment">// 1-2 if(i != 0) -> (next byte)</span></div> +<div class="line"><a name="l00703"></a><span class="lineno"> 703</span>  : [port] <span class="stringliteral">"+e"</span> (port),</div> +<div class="line"><a name="l00704"></a><span class="lineno"> 704</span>  [byte] <span class="stringliteral">"+r"</span> (b),</div> +<div class="line"><a name="l00705"></a><span class="lineno"> 705</span>  [bit] <span class="stringliteral">"+r"</span> (bit),</div> +<div class="line"><a name="l00706"></a><span class="lineno"> 706</span>  [next] <span class="stringliteral">"+r"</span> (next),</div> +<div class="line"><a name="l00707"></a><span class="lineno"> 707</span>  [count] <span class="stringliteral">"+w"</span> (i)</div> +<div class="line"><a name="l00708"></a><span class="lineno"> 708</span>  : [ptr] <span class="stringliteral">"e"</span> (ptr),</div> +<div class="line"><a name="l00709"></a><span class="lineno"> 709</span>  [hi] <span class="stringliteral">"r"</span> (hi),</div> +<div class="line"><a name="l00710"></a><span class="lineno"> 710</span>  [lo] <span class="stringliteral">"r"</span> (lo));</div> +<div class="line"><a name="l00711"></a><span class="lineno"> 711</span>  }</div> +<div class="line"><a name="l00712"></a><span class="lineno"> 712</span> <span class="preprocessor">#endif // NEO_KHZ400</span></div> +<div class="line"><a name="l00713"></a><span class="lineno"> 713</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00714"></a><span class="lineno"> 714</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00715"></a><span class="lineno"> 715</span> <span class="preprocessor"></span><span class="preprocessor"> #error "CPU SPEED NOT SUPPORTED"</span></div> +<div class="line"><a name="l00716"></a><span class="lineno"> 716</span> <span class="preprocessor"></span><span class="preprocessor">#endif // end F_CPU ifdefs on __AVR__</span></div> +<div class="line"><a name="l00717"></a><span class="lineno"> 717</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00718"></a><span class="lineno"> 718</span> <span class="comment">// END AVR ----------------------------------------------------------------</span></div> +<div class="line"><a name="l00719"></a><span class="lineno"> 719</span> </div> +<div class="line"><a name="l00720"></a><span class="lineno"> 720</span> </div> +<div class="line"><a name="l00721"></a><span class="lineno"> 721</span> <span class="preprocessor">#elif defined(__arm__)</span></div> +<div class="line"><a name="l00722"></a><span class="lineno"> 722</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00723"></a><span class="lineno"> 723</span> <span class="comment">// ARM MCUs -- Teensy 3.0, 3.1, LC, Arduino Due ---------------------------</span></div> +<div class="line"><a name="l00724"></a><span class="lineno"> 724</span> </div> +<div class="line"><a name="l00725"></a><span class="lineno"> 725</span> <span class="preprocessor">#if defined(__MK20DX128__) || defined(__MK20DX256__) // Teensy 3.0 & 3.1</span></div> +<div class="line"><a name="l00726"></a><span class="lineno"> 726</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800_T0H (F_CPU / 4000000)</span></div> +<div class="line"><a name="l00727"></a><span class="lineno"> 727</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800_T1H (F_CPU / 1250000)</span></div> +<div class="line"><a name="l00728"></a><span class="lineno"> 728</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_800 (F_CPU / 800000)</span></div> +<div class="line"><a name="l00729"></a><span class="lineno"> 729</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400_T0H (F_CPU / 2000000)</span></div> +<div class="line"><a name="l00730"></a><span class="lineno"> 730</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400_T1H (F_CPU / 833333)</span></div> +<div class="line"><a name="l00731"></a><span class="lineno"> 731</span> <span class="preprocessor"></span><span class="preprocessor">#define CYCLES_400 (F_CPU / 400000)</span></div> +<div class="line"><a name="l00732"></a><span class="lineno"> 732</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00733"></a><span class="lineno"> 733</span>  uint8_t *p = pixels,</div> +<div class="line"><a name="l00734"></a><span class="lineno"> 734</span>  *end = p + numBytes, pix, mask;</div> +<div class="line"><a name="l00735"></a><span class="lineno"> 735</span>  <span class="keyword">volatile</span> uint8_t *<span class="keyword">set</span> = portSetRegister(pin),</div> +<div class="line"><a name="l00736"></a><span class="lineno"> 736</span>  *clr = portClearRegister(pin);</div> +<div class="line"><a name="l00737"></a><span class="lineno"> 737</span>  uint32_t cyc;</div> +<div class="line"><a name="l00738"></a><span class="lineno"> 738</span> </div> +<div class="line"><a name="l00739"></a><span class="lineno"> 739</span>  ARM_DEMCR |= ARM_DEMCR_TRCENA;</div> +<div class="line"><a name="l00740"></a><span class="lineno"> 740</span>  ARM_DWT_CTRL |= ARM_DWT_CTRL_CYCCNTENA;</div> +<div class="line"><a name="l00741"></a><span class="lineno"> 741</span> </div> +<div class="line"><a name="l00742"></a><span class="lineno"> 742</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00743"></a><span class="lineno"> 743</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00744"></a><span class="lineno"> 744</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00745"></a><span class="lineno"> 745</span> <span class="preprocessor"></span> cyc = ARM_DWT_CYCCNT + CYCLES_800;</div> +<div class="line"><a name="l00746"></a><span class="lineno"> 746</span>  <span class="keywordflow">while</span>(p < end) {</div> +<div class="line"><a name="l00747"></a><span class="lineno"> 747</span>  pix = *p++;</div> +<div class="line"><a name="l00748"></a><span class="lineno"> 748</span>  <span class="keywordflow">for</span>(mask = 0x80; mask; mask >>= 1) {</div> +<div class="line"><a name="l00749"></a><span class="lineno"> 749</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_800);</div> +<div class="line"><a name="l00750"></a><span class="lineno"> 750</span>  cyc = ARM_DWT_CYCCNT;</div> +<div class="line"><a name="l00751"></a><span class="lineno"> 751</span>  *<span class="keyword">set</span> = 1;</div> +<div class="line"><a name="l00752"></a><span class="lineno"> 752</span>  <span class="keywordflow">if</span>(pix & mask) {</div> +<div class="line"><a name="l00753"></a><span class="lineno"> 753</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_800_T1H);</div> +<div class="line"><a name="l00754"></a><span class="lineno"> 754</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00755"></a><span class="lineno"> 755</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_800_T0H);</div> +<div class="line"><a name="l00756"></a><span class="lineno"> 756</span>  }</div> +<div class="line"><a name="l00757"></a><span class="lineno"> 757</span>  *clr = 1;</div> +<div class="line"><a name="l00758"></a><span class="lineno"> 758</span>  }</div> +<div class="line"><a name="l00759"></a><span class="lineno"> 759</span>  }</div> +<div class="line"><a name="l00760"></a><span class="lineno"> 760</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_800);</div> +<div class="line"><a name="l00761"></a><span class="lineno"> 761</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00762"></a><span class="lineno"> 762</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// 400 kHz bitstream</span></div> +<div class="line"><a name="l00763"></a><span class="lineno"> 763</span>  cyc = ARM_DWT_CYCCNT + CYCLES_400;</div> +<div class="line"><a name="l00764"></a><span class="lineno"> 764</span>  <span class="keywordflow">while</span>(p < end) {</div> +<div class="line"><a name="l00765"></a><span class="lineno"> 765</span>  pix = *p++;</div> +<div class="line"><a name="l00766"></a><span class="lineno"> 766</span>  <span class="keywordflow">for</span>(mask = 0x80; mask; mask >>= 1) {</div> +<div class="line"><a name="l00767"></a><span class="lineno"> 767</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_400);</div> +<div class="line"><a name="l00768"></a><span class="lineno"> 768</span>  cyc = ARM_DWT_CYCCNT;</div> +<div class="line"><a name="l00769"></a><span class="lineno"> 769</span>  *<span class="keyword">set</span> = 1;</div> +<div class="line"><a name="l00770"></a><span class="lineno"> 770</span>  <span class="keywordflow">if</span>(pix & mask) {</div> +<div class="line"><a name="l00771"></a><span class="lineno"> 771</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_400_T1H);</div> +<div class="line"><a name="l00772"></a><span class="lineno"> 772</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00773"></a><span class="lineno"> 773</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_400_T0H);</div> +<div class="line"><a name="l00774"></a><span class="lineno"> 774</span>  }</div> +<div class="line"><a name="l00775"></a><span class="lineno"> 775</span>  *clr = 1;</div> +<div class="line"><a name="l00776"></a><span class="lineno"> 776</span>  }</div> +<div class="line"><a name="l00777"></a><span class="lineno"> 777</span>  }</div> +<div class="line"><a name="l00778"></a><span class="lineno"> 778</span>  <span class="keywordflow">while</span>(ARM_DWT_CYCCNT - cyc < CYCLES_400);</div> +<div class="line"><a name="l00779"></a><span class="lineno"> 779</span>  }</div> +<div class="line"><a name="l00780"></a><span class="lineno"> 780</span> <span class="preprocessor">#endif // NEO_KHZ400</span></div> +<div class="line"><a name="l00781"></a><span class="lineno"> 781</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00782"></a><span class="lineno"> 782</span> <span class="preprocessor">#elif defined(__MKL26Z64__) // Teensy-LC</span></div> +<div class="line"><a name="l00783"></a><span class="lineno"> 783</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00784"></a><span class="lineno"> 784</span> <span class="preprocessor">#if F_CPU == 48000000</span></div> +<div class="line"><a name="l00785"></a><span class="lineno"> 785</span> <span class="preprocessor"></span> uint8_t *p = pixels,</div> +<div class="line"><a name="l00786"></a><span class="lineno"> 786</span>  pix, count, dly,</div> +<div class="line"><a name="l00787"></a><span class="lineno"> 787</span>  bitmask = digitalPinToBitMask(pin);</div> +<div class="line"><a name="l00788"></a><span class="lineno"> 788</span>  <span class="keyword">volatile</span> uint8_t *reg = portSetRegister(pin);</div> +<div class="line"><a name="l00789"></a><span class="lineno"> 789</span>  uint32_t num = numBytes;</div> +<div class="line"><a name="l00790"></a><span class="lineno"> 790</span>  <span class="keyword">asm</span> <span class="keyword">volatile</span>(</div> +<div class="line"><a name="l00791"></a><span class="lineno"> 791</span>  <span class="stringliteral">"L%=_begin:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00792"></a><span class="lineno"> 792</span>  <span class="stringliteral">"ldrb %[pix], [%[p], #0]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00793"></a><span class="lineno"> 793</span>  <span class="stringliteral">"lsl %[pix], #24"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00794"></a><span class="lineno"> 794</span>  <span class="stringliteral">"movs %[count], #7"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00795"></a><span class="lineno"> 795</span>  <span class="stringliteral">"L%=_loop:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00796"></a><span class="lineno"> 796</span>  <span class="stringliteral">"lsl %[pix], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00797"></a><span class="lineno"> 797</span>  <span class="stringliteral">"bcs L%=_loop_one"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00798"></a><span class="lineno"> 798</span>  <span class="stringliteral">"L%=_loop_zero:"</span></div> +<div class="line"><a name="l00799"></a><span class="lineno"> 799</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #0]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00800"></a><span class="lineno"> 800</span>  <span class="stringliteral">"movs %[dly], #4"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00801"></a><span class="lineno"> 801</span>  <span class="stringliteral">"L%=_loop_delay_T0H:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00802"></a><span class="lineno"> 802</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00803"></a><span class="lineno"> 803</span>  <span class="stringliteral">"bne L%=_loop_delay_T0H"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00804"></a><span class="lineno"> 804</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #4]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00805"></a><span class="lineno"> 805</span>  <span class="stringliteral">"movs %[dly], #13"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00806"></a><span class="lineno"> 806</span>  <span class="stringliteral">"L%=_loop_delay_T0L:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00807"></a><span class="lineno"> 807</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00808"></a><span class="lineno"> 808</span>  <span class="stringliteral">"bne L%=_loop_delay_T0L"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00809"></a><span class="lineno"> 809</span>  <span class="stringliteral">"b L%=_next"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00810"></a><span class="lineno"> 810</span>  <span class="stringliteral">"L%=_loop_one:"</span></div> +<div class="line"><a name="l00811"></a><span class="lineno"> 811</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #0]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00812"></a><span class="lineno"> 812</span>  <span class="stringliteral">"movs %[dly], #13"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00813"></a><span class="lineno"> 813</span>  <span class="stringliteral">"L%=_loop_delay_T1H:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00814"></a><span class="lineno"> 814</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00815"></a><span class="lineno"> 815</span>  <span class="stringliteral">"bne L%=_loop_delay_T1H"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00816"></a><span class="lineno"> 816</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #4]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00817"></a><span class="lineno"> 817</span>  <span class="stringliteral">"movs %[dly], #4"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00818"></a><span class="lineno"> 818</span>  <span class="stringliteral">"L%=_loop_delay_T1L:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00819"></a><span class="lineno"> 819</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00820"></a><span class="lineno"> 820</span>  <span class="stringliteral">"bne L%=_loop_delay_T1L"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00821"></a><span class="lineno"> 821</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00822"></a><span class="lineno"> 822</span>  <span class="stringliteral">"L%=_next:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00823"></a><span class="lineno"> 823</span>  <span class="stringliteral">"sub %[count], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00824"></a><span class="lineno"> 824</span>  <span class="stringliteral">"bne L%=_loop"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00825"></a><span class="lineno"> 825</span>  <span class="stringliteral">"lsl %[pix], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00826"></a><span class="lineno"> 826</span>  <span class="stringliteral">"bcs L%=_last_one"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00827"></a><span class="lineno"> 827</span>  <span class="stringliteral">"L%=_last_zero:"</span></div> +<div class="line"><a name="l00828"></a><span class="lineno"> 828</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #0]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00829"></a><span class="lineno"> 829</span>  <span class="stringliteral">"movs %[dly], #4"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00830"></a><span class="lineno"> 830</span>  <span class="stringliteral">"L%=_last_delay_T0H:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00831"></a><span class="lineno"> 831</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00832"></a><span class="lineno"> 832</span>  <span class="stringliteral">"bne L%=_last_delay_T0H"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00833"></a><span class="lineno"> 833</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #4]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00834"></a><span class="lineno"> 834</span>  <span class="stringliteral">"movs %[dly], #10"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00835"></a><span class="lineno"> 835</span>  <span class="stringliteral">"L%=_last_delay_T0L:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00836"></a><span class="lineno"> 836</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00837"></a><span class="lineno"> 837</span>  <span class="stringliteral">"bne L%=_last_delay_T0L"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00838"></a><span class="lineno"> 838</span>  <span class="stringliteral">"b L%=_repeat"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00839"></a><span class="lineno"> 839</span>  <span class="stringliteral">"L%=_last_one:"</span></div> +<div class="line"><a name="l00840"></a><span class="lineno"> 840</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #0]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00841"></a><span class="lineno"> 841</span>  <span class="stringliteral">"movs %[dly], #13"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00842"></a><span class="lineno"> 842</span>  <span class="stringliteral">"L%=_last_delay_T1H:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00843"></a><span class="lineno"> 843</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00844"></a><span class="lineno"> 844</span>  <span class="stringliteral">"bne L%=_last_delay_T1H"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00845"></a><span class="lineno"> 845</span>  <span class="stringliteral">"strb %[bitmask], [%[reg], #4]"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00846"></a><span class="lineno"> 846</span>  <span class="stringliteral">"movs %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00847"></a><span class="lineno"> 847</span>  <span class="stringliteral">"L%=_last_delay_T1L:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00848"></a><span class="lineno"> 848</span>  <span class="stringliteral">"sub %[dly], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00849"></a><span class="lineno"> 849</span>  <span class="stringliteral">"bne L%=_last_delay_T1L"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00850"></a><span class="lineno"> 850</span>  <span class="stringliteral">"nop"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00851"></a><span class="lineno"> 851</span>  <span class="stringliteral">"L%=_repeat:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00852"></a><span class="lineno"> 852</span>  <span class="stringliteral">"add %[p], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00853"></a><span class="lineno"> 853</span>  <span class="stringliteral">"sub %[num], #1"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00854"></a><span class="lineno"> 854</span>  <span class="stringliteral">"bne L%=_begin"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00855"></a><span class="lineno"> 855</span>  <span class="stringliteral">"L%=_done:"</span> <span class="stringliteral">"\n\t"</span></div> +<div class="line"><a name="l00856"></a><span class="lineno"> 856</span>  : [p] <span class="stringliteral">"+r"</span> (p),</div> +<div class="line"><a name="l00857"></a><span class="lineno"> 857</span>  [pix] <span class="stringliteral">"=&r"</span> (pix),</div> +<div class="line"><a name="l00858"></a><span class="lineno"> 858</span>  [count] <span class="stringliteral">"=&r"</span> (count),</div> +<div class="line"><a name="l00859"></a><span class="lineno"> 859</span>  [dly] <span class="stringliteral">"=&r"</span> (dly),</div> +<div class="line"><a name="l00860"></a><span class="lineno"> 860</span>  [num] <span class="stringliteral">"+r"</span> (num)</div> +<div class="line"><a name="l00861"></a><span class="lineno"> 861</span>  : [bitmask] <span class="stringliteral">"r"</span> (bitmask),</div> +<div class="line"><a name="l00862"></a><span class="lineno"> 862</span>  [reg] <span class="stringliteral">"r"</span> (reg)</div> +<div class="line"><a name="l00863"></a><span class="lineno"> 863</span>  );</div> +<div class="line"><a name="l00864"></a><span class="lineno"> 864</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00865"></a><span class="lineno"> 865</span> <span class="preprocessor"></span><span class="preprocessor">#error "Sorry, only 48 MHz is supported, please set Tools > CPU Speed to 48 MHz"</span></div> +<div class="line"><a name="l00866"></a><span class="lineno"> 866</span> <span class="preprocessor"></span><span class="preprocessor">#endif // F_CPU == 48000000</span></div> +<div class="line"><a name="l00867"></a><span class="lineno"> 867</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00868"></a><span class="lineno"> 868</span> <span class="preprocessor">#elif defined(__SAMD21G18A__) // Arduino Zero</span></div> +<div class="line"><a name="l00869"></a><span class="lineno"> 869</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00870"></a><span class="lineno"> 870</span>  <span class="comment">// Tried this with a timer/counter, couldn't quite get adequate</span></div> +<div class="line"><a name="l00871"></a><span class="lineno"> 871</span>  <span class="comment">// resolution. So yay, you get a load of goofball NOPs...</span></div> +<div class="line"><a name="l00872"></a><span class="lineno"> 872</span> </div> +<div class="line"><a name="l00873"></a><span class="lineno"> 873</span>  uint8_t *ptr, *end, p, bitMask, portNum;</div> +<div class="line"><a name="l00874"></a><span class="lineno"> 874</span>  uint32_t pinMask;</div> +<div class="line"><a name="l00875"></a><span class="lineno"> 875</span> </div> +<div class="line"><a name="l00876"></a><span class="lineno"> 876</span>  portNum = g_APinDescription[pin].ulPort;</div> +<div class="line"><a name="l00877"></a><span class="lineno"> 877</span>  pinMask = 1ul << g_APinDescription[pin].ulPin;</div> +<div class="line"><a name="l00878"></a><span class="lineno"> 878</span>  ptr = pixels;</div> +<div class="line"><a name="l00879"></a><span class="lineno"> 879</span>  end = ptr + numBytes;</div> +<div class="line"><a name="l00880"></a><span class="lineno"> 880</span>  p = *ptr++;</div> +<div class="line"><a name="l00881"></a><span class="lineno"> 881</span>  bitMask = 0x80;</div> +<div class="line"><a name="l00882"></a><span class="lineno"> 882</span> </div> +<div class="line"><a name="l00883"></a><span class="lineno"> 883</span>  <span class="keyword">volatile</span> uint32_t *<span class="keyword">set</span> = &(PORT->Group[portNum].OUTSET.reg),</div> +<div class="line"><a name="l00884"></a><span class="lineno"> 884</span>  *clr = &(PORT->Group[portNum].OUTCLR.reg);</div> +<div class="line"><a name="l00885"></a><span class="lineno"> 885</span> </div> +<div class="line"><a name="l00886"></a><span class="lineno"> 886</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00887"></a><span class="lineno"> 887</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00888"></a><span class="lineno"> 888</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00889"></a><span class="lineno"> 889</span> <span class="preprocessor"></span> <span class="keywordflow">for</span>(;;) {</div> +<div class="line"><a name="l00890"></a><span class="lineno"> 890</span>  *<span class="keyword">set</span> = pinMask;</div> +<div class="line"><a name="l00891"></a><span class="lineno"> 891</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00892"></a><span class="lineno"> 892</span>  <span class="keywordflow">if</span>(p & bitMask) {</div> +<div class="line"><a name="l00893"></a><span class="lineno"> 893</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00894"></a><span class="lineno"> 894</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00895"></a><span class="lineno"> 895</span>  <span class="stringliteral">"nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00896"></a><span class="lineno"> 896</span>  *clr = pinMask;</div> +<div class="line"><a name="l00897"></a><span class="lineno"> 897</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00898"></a><span class="lineno"> 898</span>  *clr = pinMask;</div> +<div class="line"><a name="l00899"></a><span class="lineno"> 899</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00900"></a><span class="lineno"> 900</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00901"></a><span class="lineno"> 901</span>  <span class="stringliteral">"nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00902"></a><span class="lineno"> 902</span>  }</div> +<div class="line"><a name="l00903"></a><span class="lineno"> 903</span>  <span class="keywordflow">if</span>(bitMask >>= 1) {</div> +<div class="line"><a name="l00904"></a><span class="lineno"> 904</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00905"></a><span class="lineno"> 905</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00906"></a><span class="lineno"> 906</span>  <span class="keywordflow">if</span>(ptr >= end) <span class="keywordflow">break</span>;</div> +<div class="line"><a name="l00907"></a><span class="lineno"> 907</span>  p = *ptr++;</div> +<div class="line"><a name="l00908"></a><span class="lineno"> 908</span>  bitMask = 0x80;</div> +<div class="line"><a name="l00909"></a><span class="lineno"> 909</span>  }</div> +<div class="line"><a name="l00910"></a><span class="lineno"> 910</span>  }</div> +<div class="line"><a name="l00911"></a><span class="lineno"> 911</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00912"></a><span class="lineno"> 912</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz bitstream</span></div> +<div class="line"><a name="l00913"></a><span class="lineno"> 913</span>  <span class="keywordflow">for</span>(;;) {</div> +<div class="line"><a name="l00914"></a><span class="lineno"> 914</span>  *<span class="keyword">set</span> = pinMask;</div> +<div class="line"><a name="l00915"></a><span class="lineno"> 915</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00916"></a><span class="lineno"> 916</span>  <span class="keywordflow">if</span>(p & bitMask) {</div> +<div class="line"><a name="l00917"></a><span class="lineno"> 917</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00918"></a><span class="lineno"> 918</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00919"></a><span class="lineno"> 919</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00920"></a><span class="lineno"> 920</span>  <span class="stringliteral">"nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00921"></a><span class="lineno"> 921</span>  *clr = pinMask;</div> +<div class="line"><a name="l00922"></a><span class="lineno"> 922</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00923"></a><span class="lineno"> 923</span>  *clr = pinMask;</div> +<div class="line"><a name="l00924"></a><span class="lineno"> 924</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00925"></a><span class="lineno"> 925</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00926"></a><span class="lineno"> 926</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00927"></a><span class="lineno"> 927</span>  <span class="stringliteral">"nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00928"></a><span class="lineno"> 928</span>  }</div> +<div class="line"><a name="l00929"></a><span class="lineno"> 929</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00930"></a><span class="lineno"> 930</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00931"></a><span class="lineno"> 931</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span></div> +<div class="line"><a name="l00932"></a><span class="lineno"> 932</span>  <span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00933"></a><span class="lineno"> 933</span>  <span class="keywordflow">if</span>(bitMask >>= 1) {</div> +<div class="line"><a name="l00934"></a><span class="lineno"> 934</span>  <span class="keyword">asm</span>(<span class="stringliteral">"nop; nop; nop; nop; nop; nop; nop;"</span>);</div> +<div class="line"><a name="l00935"></a><span class="lineno"> 935</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00936"></a><span class="lineno"> 936</span>  <span class="keywordflow">if</span>(ptr >= end) <span class="keywordflow">break</span>;</div> +<div class="line"><a name="l00937"></a><span class="lineno"> 937</span>  p = *ptr++;</div> +<div class="line"><a name="l00938"></a><span class="lineno"> 938</span>  bitMask = 0x80;</div> +<div class="line"><a name="l00939"></a><span class="lineno"> 939</span>  }</div> +<div class="line"><a name="l00940"></a><span class="lineno"> 940</span>  }</div> +<div class="line"><a name="l00941"></a><span class="lineno"> 941</span>  }</div> +<div class="line"><a name="l00942"></a><span class="lineno"> 942</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00943"></a><span class="lineno"> 943</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00944"></a><span class="lineno"> 944</span> </div> +<div class="line"><a name="l00945"></a><span class="lineno"> 945</span> <span class="preprocessor">#else // Other ARM architecture -- Presumed Arduino Due</span></div> +<div class="line"><a name="l00946"></a><span class="lineno"> 946</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00947"></a><span class="lineno"> 947</span> <span class="preprocessor"> #define SCALE VARIANT_MCK / 2UL / 1000000UL</span></div> +<div class="line"><a name="l00948"></a><span class="lineno"> 948</span> <span class="preprocessor"></span><span class="preprocessor"> #define INST (2UL * F_CPU / VARIANT_MCK)</span></div> +<div class="line"><a name="l00949"></a><span class="lineno"> 949</span> <span class="preprocessor"></span><span class="preprocessor"> #define TIME_800_0 ((int)(0.40 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00950"></a><span class="lineno"> 950</span> <span class="preprocessor"></span><span class="preprocessor"> #define TIME_800_1 ((int)(0.80 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00951"></a><span class="lineno"> 951</span> <span class="preprocessor"></span><span class="preprocessor"> #define PERIOD_800 ((int)(1.25 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00952"></a><span class="lineno"> 952</span> <span class="preprocessor"></span><span class="preprocessor"> #define TIME_400_0 ((int)(0.50 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00953"></a><span class="lineno"> 953</span> <span class="preprocessor"></span><span class="preprocessor"> #define TIME_400_1 ((int)(1.20 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00954"></a><span class="lineno"> 954</span> <span class="preprocessor"></span><span class="preprocessor"> #define PERIOD_400 ((int)(2.50 * SCALE + 0.5) - (5 * INST))</span></div> +<div class="line"><a name="l00955"></a><span class="lineno"> 955</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00956"></a><span class="lineno"> 956</span>  <span class="keywordtype">int</span> pinMask, time0, time1, period, t;</div> +<div class="line"><a name="l00957"></a><span class="lineno"> 957</span>  Pio *port;</div> +<div class="line"><a name="l00958"></a><span class="lineno"> 958</span>  <span class="keyword">volatile</span> WoReg *portSet, *portClear, *timeValue, *timeReset;</div> +<div class="line"><a name="l00959"></a><span class="lineno"> 959</span>  uint8_t *p, *end, pix, mask;</div> +<div class="line"><a name="l00960"></a><span class="lineno"> 960</span> </div> +<div class="line"><a name="l00961"></a><span class="lineno"> 961</span>  pmc_set_writeprotect(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00962"></a><span class="lineno"> 962</span>  pmc_enable_periph_clk((uint32_t)TC3_IRQn);</div> +<div class="line"><a name="l00963"></a><span class="lineno"> 963</span>  TC_Configure(TC1, 0,</div> +<div class="line"><a name="l00964"></a><span class="lineno"> 964</span>  TC_CMR_WAVE | TC_CMR_WAVSEL_UP | TC_CMR_TCCLKS_TIMER_CLOCK1);</div> +<div class="line"><a name="l00965"></a><span class="lineno"> 965</span>  TC_Start(TC1, 0);</div> +<div class="line"><a name="l00966"></a><span class="lineno"> 966</span> </div> +<div class="line"><a name="l00967"></a><span class="lineno"> 967</span>  pinMask = g_APinDescription[pin].ulPin; <span class="comment">// Don't 'optimize' these into</span></div> +<div class="line"><a name="l00968"></a><span class="lineno"> 968</span>  port = g_APinDescription[pin].pPort; <span class="comment">// declarations above. Want to</span></div> +<div class="line"><a name="l00969"></a><span class="lineno"> 969</span>  portSet = &(port->PIO_SODR); <span class="comment">// burn a few cycles after</span></div> +<div class="line"><a name="l00970"></a><span class="lineno"> 970</span>  portClear = &(port->PIO_CODR); <span class="comment">// starting timer to minimize</span></div> +<div class="line"><a name="l00971"></a><span class="lineno"> 971</span>  timeValue = &(TC1->TC_CHANNEL[0].TC_CV); <span class="comment">// the initial 'while'.</span></div> +<div class="line"><a name="l00972"></a><span class="lineno"> 972</span>  timeReset = &(TC1->TC_CHANNEL[0].TC_CCR);</div> +<div class="line"><a name="l00973"></a><span class="lineno"> 973</span>  p = pixels;</div> +<div class="line"><a name="l00974"></a><span class="lineno"> 974</span>  end = p + numBytes;</div> +<div class="line"><a name="l00975"></a><span class="lineno"> 975</span>  pix = *p++;</div> +<div class="line"><a name="l00976"></a><span class="lineno"> 976</span>  mask = 0x80;</div> +<div class="line"><a name="l00977"></a><span class="lineno"> 977</span> </div> +<div class="line"><a name="l00978"></a><span class="lineno"> 978</span> <span class="preprocessor">#ifdef NEO_KHZ400 // 800 KHz check needed only if 400 KHz support enabled</span></div> +<div class="line"><a name="l00979"></a><span class="lineno"> 979</span> <span class="preprocessor"></span> <span class="keywordflow">if</span>(is800KHz) {</div> +<div class="line"><a name="l00980"></a><span class="lineno"> 980</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00981"></a><span class="lineno"> 981</span> <span class="preprocessor"></span> time0 = TIME_800_0;</div> +<div class="line"><a name="l00982"></a><span class="lineno"> 982</span>  time1 = TIME_800_1;</div> +<div class="line"><a name="l00983"></a><span class="lineno"> 983</span>  period = PERIOD_800;</div> +<div class="line"><a name="l00984"></a><span class="lineno"> 984</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00985"></a><span class="lineno"> 985</span> <span class="preprocessor"></span> } <span class="keywordflow">else</span> { <span class="comment">// 400 KHz bitstream</span></div> +<div class="line"><a name="l00986"></a><span class="lineno"> 986</span>  time0 = TIME_400_0;</div> +<div class="line"><a name="l00987"></a><span class="lineno"> 987</span>  time1 = TIME_400_1;</div> +<div class="line"><a name="l00988"></a><span class="lineno"> 988</span>  period = PERIOD_400;</div> +<div class="line"><a name="l00989"></a><span class="lineno"> 989</span>  }</div> +<div class="line"><a name="l00990"></a><span class="lineno"> 990</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00991"></a><span class="lineno"> 991</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00992"></a><span class="lineno"> 992</span>  <span class="keywordflow">for</span>(t = time0;; t = time0) {</div> +<div class="line"><a name="l00993"></a><span class="lineno"> 993</span>  <span class="keywordflow">if</span>(pix & mask) t = time1;</div> +<div class="line"><a name="l00994"></a><span class="lineno"> 994</span>  <span class="keywordflow">while</span>(*timeValue < period);</div> +<div class="line"><a name="l00995"></a><span class="lineno"> 995</span>  *portSet = pinMask;</div> +<div class="line"><a name="l00996"></a><span class="lineno"> 996</span>  *timeReset = TC_CCR_CLKEN | TC_CCR_SWTRG;</div> +<div class="line"><a name="l00997"></a><span class="lineno"> 997</span>  <span class="keywordflow">while</span>(*timeValue < t);</div> +<div class="line"><a name="l00998"></a><span class="lineno"> 998</span>  *portClear = pinMask;</div> +<div class="line"><a name="l00999"></a><span class="lineno"> 999</span>  <span class="keywordflow">if</span>(!(mask >>= 1)) { <span class="comment">// This 'inside-out' loop logic utilizes</span></div> +<div class="line"><a name="l01000"></a><span class="lineno"> 1000</span>  <span class="keywordflow">if</span>(p >= end) <span class="keywordflow">break</span>; <span class="comment">// idle time to minimize inter-byte delays.</span></div> +<div class="line"><a name="l01001"></a><span class="lineno"> 1001</span>  pix = *p++;</div> +<div class="line"><a name="l01002"></a><span class="lineno"> 1002</span>  mask = 0x80;</div> +<div class="line"><a name="l01003"></a><span class="lineno"> 1003</span>  }</div> +<div class="line"><a name="l01004"></a><span class="lineno"> 1004</span>  }</div> +<div class="line"><a name="l01005"></a><span class="lineno"> 1005</span>  <span class="keywordflow">while</span>(*timeValue < period); <span class="comment">// Wait for last bit</span></div> +<div class="line"><a name="l01006"></a><span class="lineno"> 1006</span>  TC_Stop(TC1, 0);</div> +<div class="line"><a name="l01007"></a><span class="lineno"> 1007</span> </div> +<div class="line"><a name="l01008"></a><span class="lineno"> 1008</span> <span class="preprocessor">#endif // end Due</span></div> +<div class="line"><a name="l01009"></a><span class="lineno"> 1009</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l01010"></a><span class="lineno"> 1010</span> <span class="comment">// END ARM ----------------------------------------------------------------</span></div> +<div class="line"><a name="l01011"></a><span class="lineno"> 1011</span> </div> +<div class="line"><a name="l01012"></a><span class="lineno"> 1012</span> </div> +<div class="line"><a name="l01013"></a><span class="lineno"> 1013</span> <span class="preprocessor">#elif defined(ESP8266)</span></div> +<div class="line"><a name="l01014"></a><span class="lineno"> 1014</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l01015"></a><span class="lineno"> 1015</span> <span class="comment">// ESP8266 ----------------------------------------------------------------</span></div> +<div class="line"><a name="l01016"></a><span class="lineno"> 1016</span> </div> +<div class="line"><a name="l01017"></a><span class="lineno"> 1017</span>  <span class="comment">// ESP8266 show() is external to enforce ICACHE_RAM_ATTR execution</span></div> +<div class="line"><a name="l01018"></a><span class="lineno"> 1018</span>  espShow(pin, pixels, numBytes, is800KHz);</div> +<div class="line"><a name="l01019"></a><span class="lineno"> 1019</span> </div> +<div class="line"><a name="l01020"></a><span class="lineno"> 1020</span> <span class="preprocessor">#endif // ESP8266</span></div> +<div class="line"><a name="l01021"></a><span class="lineno"> 1021</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l01022"></a><span class="lineno"> 1022</span> </div> +<div class="line"><a name="l01023"></a><span class="lineno"> 1023</span> <span class="comment">// END ARCHITECTURE SELECT ------------------------------------------------</span></div> +<div class="line"><a name="l01024"></a><span class="lineno"> 1024</span> </div> +<div class="line"><a name="l01025"></a><span class="lineno"> 1025</span> </div> +<div class="line"><a name="l01026"></a><span class="lineno"> 1026</span>  interrupts();</div> +<div class="line"><a name="l01027"></a><span class="lineno"> 1027</span>  endTime = micros(); <span class="comment">// Save EOD time for latch on next call</span></div> +<div class="line"><a name="l01028"></a><span class="lineno"> 1028</span> }</div> +<div class="line"><a name="l01029"></a><span class="lineno"> 1029</span> </div> +<div class="line"><a name="l01030"></a><span class="lineno"> 1030</span> <span class="comment">// Set the output pin number</span></div> +<div class="line"><a name="l01031"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b"> 1031</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel::setPin</a>(uint8_t p) {</div> +<div class="line"><a name="l01032"></a><span class="lineno"> 1032</span>  <span class="keywordflow">if</span>(begun && (pin >= 0)) pinMode(pin, INPUT);</div> +<div class="line"><a name="l01033"></a><span class="lineno"> 1033</span>  <span class="keywordflow">if</span>(p >= 0) {</div> +<div class="line"><a name="l01034"></a><span class="lineno"> 1034</span>  pin = p;</div> +<div class="line"><a name="l01035"></a><span class="lineno"> 1035</span>  <span class="keywordflow">if</span>(begun) {</div> +<div class="line"><a name="l01036"></a><span class="lineno"> 1036</span>  pinMode(p, OUTPUT);</div> +<div class="line"><a name="l01037"></a><span class="lineno"> 1037</span>  digitalWrite(p, LOW);</div> +<div class="line"><a name="l01038"></a><span class="lineno"> 1038</span>  }</div> +<div class="line"><a name="l01039"></a><span class="lineno"> 1039</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l01040"></a><span class="lineno"> 1040</span> <span class="preprocessor"></span> port = portOutputRegister(digitalPinToPort(p));</div> +<div class="line"><a name="l01041"></a><span class="lineno"> 1041</span>  pinMask = digitalPinToBitMask(p);</div> +<div class="line"><a name="l01042"></a><span class="lineno"> 1042</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l01043"></a><span class="lineno"> 1043</span> <span class="preprocessor"></span> }</div> +<div class="line"><a name="l01044"></a><span class="lineno"> 1044</span> }</div> +<div class="line"><a name="l01045"></a><span class="lineno"> 1045</span> </div> +<div class="line"><a name="l01046"></a><span class="lineno"> 1046</span> <span class="comment">// Set pixel color from separate R,G,B components:</span></div> +<div class="line"><a name="l01047"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1"> 1047</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">Adafruit_NeoPixel::setPixelColor</a>(</div> +<div class="line"><a name="l01048"></a><span class="lineno"> 1048</span>  uint16_t n, uint8_t r, uint8_t g, uint8_t b) {</div> +<div class="line"><a name="l01049"></a><span class="lineno"> 1049</span> </div> +<div class="line"><a name="l01050"></a><span class="lineno"> 1050</span>  <span class="keywordflow">if</span>(n < numLEDs) {</div> +<div class="line"><a name="l01051"></a><span class="lineno"> 1051</span>  <span class="keywordflow">if</span>(brightness) { <span class="comment">// See notes in setBrightness()</span></div> +<div class="line"><a name="l01052"></a><span class="lineno"> 1052</span>  r = (r * brightness) >> 8;</div> +<div class="line"><a name="l01053"></a><span class="lineno"> 1053</span>  g = (g * brightness) >> 8;</div> +<div class="line"><a name="l01054"></a><span class="lineno"> 1054</span>  b = (b * brightness) >> 8;</div> +<div class="line"><a name="l01055"></a><span class="lineno"> 1055</span>  }</div> +<div class="line"><a name="l01056"></a><span class="lineno"> 1056</span>  uint8_t *p;</div> +<div class="line"><a name="l01057"></a><span class="lineno"> 1057</span>  <span class="keywordflow">if</span>(wOffset == rOffset) { <span class="comment">// Is an RGB-type strip</span></div> +<div class="line"><a name="l01058"></a><span class="lineno"> 1058</span>  p = &pixels[n * 3]; <span class="comment">// 3 bytes per pixel</span></div> +<div class="line"><a name="l01059"></a><span class="lineno"> 1059</span>  } <span class="keywordflow">else</span> { <span class="comment">// Is a WRGB-type strip</span></div> +<div class="line"><a name="l01060"></a><span class="lineno"> 1060</span>  p = &pixels[n * 4]; <span class="comment">// 4 bytes per pixel</span></div> +<div class="line"><a name="l01061"></a><span class="lineno"> 1061</span>  p[wOffset] = 0; <span class="comment">// But only R,G,B passed -- set W to 0</span></div> +<div class="line"><a name="l01062"></a><span class="lineno"> 1062</span>  }</div> +<div class="line"><a name="l01063"></a><span class="lineno"> 1063</span>  p[rOffset] = r; <span class="comment">// R,G,B always stored</span></div> +<div class="line"><a name="l01064"></a><span class="lineno"> 1064</span>  p[gOffset] = g;</div> +<div class="line"><a name="l01065"></a><span class="lineno"> 1065</span>  p[bOffset] = b;</div> +<div class="line"><a name="l01066"></a><span class="lineno"> 1066</span>  }</div> +<div class="line"><a name="l01067"></a><span class="lineno"> 1067</span> }</div> +<div class="line"><a name="l01068"></a><span class="lineno"> 1068</span> </div> +<div class="line"><a name="l01069"></a><span class="lineno"> 1069</span> <span class="comment">// Set pixel color from 'packed' 32-bit RGB color:</span></div> +<div class="line"><a name="l01070"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8"> 1070</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">Adafruit_NeoPixel::setPixelColor</a>(uint16_t n, uint32_t c) {</div> +<div class="line"><a name="l01071"></a><span class="lineno"> 1071</span>  <span class="keywordflow">if</span>(n < numLEDs) {</div> +<div class="line"><a name="l01072"></a><span class="lineno"> 1072</span>  uint8_t *p,</div> +<div class="line"><a name="l01073"></a><span class="lineno"> 1073</span>  r = (uint8_t)(c >> 16),</div> +<div class="line"><a name="l01074"></a><span class="lineno"> 1074</span>  g = (uint8_t)(c >> 8),</div> +<div class="line"><a name="l01075"></a><span class="lineno"> 1075</span>  b = (uint8_t)c;</div> +<div class="line"><a name="l01076"></a><span class="lineno"> 1076</span>  <span class="keywordflow">if</span>(brightness) { <span class="comment">// See notes in setBrightness()</span></div> +<div class="line"><a name="l01077"></a><span class="lineno"> 1077</span>  r = (r * brightness) >> 8;</div> +<div class="line"><a name="l01078"></a><span class="lineno"> 1078</span>  g = (g * brightness) >> 8;</div> +<div class="line"><a name="l01079"></a><span class="lineno"> 1079</span>  b = (b * brightness) >> 8;</div> +<div class="line"><a name="l01080"></a><span class="lineno"> 1080</span>  }</div> +<div class="line"><a name="l01081"></a><span class="lineno"> 1081</span>  <span class="keywordflow">if</span>(wOffset == rOffset) {</div> +<div class="line"><a name="l01082"></a><span class="lineno"> 1082</span>  p = &pixels[n * 3];</div> +<div class="line"><a name="l01083"></a><span class="lineno"> 1083</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l01084"></a><span class="lineno"> 1084</span>  p = &pixels[n * 4];</div> +<div class="line"><a name="l01085"></a><span class="lineno"> 1085</span>  uint8_t w = (uint8_t)(c >> 24);</div> +<div class="line"><a name="l01086"></a><span class="lineno"> 1086</span>  p[wOffset] = brightness ? ((w * brightness) >> 8) : w;</div> +<div class="line"><a name="l01087"></a><span class="lineno"> 1087</span>  }</div> +<div class="line"><a name="l01088"></a><span class="lineno"> 1088</span>  p[rOffset] = r;</div> +<div class="line"><a name="l01089"></a><span class="lineno"> 1089</span>  p[gOffset] = g;</div> +<div class="line"><a name="l01090"></a><span class="lineno"> 1090</span>  p[bOffset] = b;</div> +<div class="line"><a name="l01091"></a><span class="lineno"> 1091</span>  }</div> +<div class="line"><a name="l01092"></a><span class="lineno"> 1092</span> }</div> +<div class="line"><a name="l01093"></a><span class="lineno"> 1093</span> </div> +<div class="line"><a name="l01094"></a><span class="lineno"> 1094</span> <span class="comment">// Convert separate R,G,B into packed 32-bit RGB color.</span></div> +<div class="line"><a name="l01095"></a><span class="lineno"> 1095</span> <span class="comment">// Packed format is always RGB, regardless of LED strand color order.</span></div> +<div class="line"><a name="l01096"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec"> 1096</a></span> uint32_t <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel::Color</a>(uint8_t r, uint8_t g, uint8_t b) {</div> +<div class="line"><a name="l01097"></a><span class="lineno"> 1097</span>  <span class="keywordflow">return</span> ((uint32_t)r << 16) | ((uint32_t)g << 8) | b;</div> +<div class="line"><a name="l01098"></a><span class="lineno"> 1098</span> }</div> +<div class="line"><a name="l01099"></a><span class="lineno"> 1099</span> </div> +<div class="line"><a name="l01100"></a><span class="lineno"> 1100</span> <span class="comment">// Convert separate R,G,B,W into packed 32-bit WRGB color.</span></div> +<div class="line"><a name="l01101"></a><span class="lineno"> 1101</span> <span class="comment">// Packed format is always WRGB, regardless of LED strand color order.</span></div> +<div class="line"><a name="l01102"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738"> 1102</a></span> uint32_t <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel::Color</a>(uint8_t r, uint8_t g, uint8_t b, uint8_t w) {</div> +<div class="line"><a name="l01103"></a><span class="lineno"> 1103</span>  <span class="keywordflow">return</span> ((uint32_t)w << 24) | ((uint32_t)r << 16) | ((uint32_t)g << 8) | b;</div> +<div class="line"><a name="l01104"></a><span class="lineno"> 1104</span> }</div> +<div class="line"><a name="l01105"></a><span class="lineno"> 1105</span> </div> +<div class="line"><a name="l01106"></a><span class="lineno"> 1106</span> <span class="comment">// Query color from previously-set pixel (returns packed 32-bit RGB value)</span></div> +<div class="line"><a name="l01107"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa"> 1107</a></span> uint32_t <a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel::getPixelColor</a>(uint16_t n)<span class="keyword"> const </span>{</div> +<div class="line"><a name="l01108"></a><span class="lineno"> 1108</span>  <span class="keywordflow">if</span>(n >= numLEDs) <span class="keywordflow">return</span> 0; <span class="comment">// Out of bounds, return no color.</span></div> +<div class="line"><a name="l01109"></a><span class="lineno"> 1109</span> </div> +<div class="line"><a name="l01110"></a><span class="lineno"> 1110</span>  uint8_t *p;</div> +<div class="line"><a name="l01111"></a><span class="lineno"> 1111</span> </div> +<div class="line"><a name="l01112"></a><span class="lineno"> 1112</span>  <span class="keywordflow">if</span>(wOffset == rOffset) { <span class="comment">// Is RGB-type device</span></div> +<div class="line"><a name="l01113"></a><span class="lineno"> 1113</span>  p = &pixels[n * 3];</div> +<div class="line"><a name="l01114"></a><span class="lineno"> 1114</span>  <span class="keywordflow">if</span>(brightness) {</div> +<div class="line"><a name="l01115"></a><span class="lineno"> 1115</span>  <span class="comment">// Stored color was decimated by setBrightness(). Returned value</span></div> +<div class="line"><a name="l01116"></a><span class="lineno"> 1116</span>  <span class="comment">// attempts to scale back to an approximation of the original 24-bit</span></div> +<div class="line"><a name="l01117"></a><span class="lineno"> 1117</span>  <span class="comment">// value used when setting the pixel color, but there will always be</span></div> +<div class="line"><a name="l01118"></a><span class="lineno"> 1118</span>  <span class="comment">// some error -- those bits are simply gone. Issue is most</span></div> +<div class="line"><a name="l01119"></a><span class="lineno"> 1119</span>  <span class="comment">// pronounced at low brightness levels.</span></div> +<div class="line"><a name="l01120"></a><span class="lineno"> 1120</span>  <span class="keywordflow">return</span> (((uint32_t)(p[rOffset] << 8) / brightness) << 16) |</div> +<div class="line"><a name="l01121"></a><span class="lineno"> 1121</span>  (((uint32_t)(p[gOffset] << 8) / brightness) << 8) |</div> +<div class="line"><a name="l01122"></a><span class="lineno"> 1122</span>  ( (uint32_t)(p[bOffset] << 8) / brightness );</div> +<div class="line"><a name="l01123"></a><span class="lineno"> 1123</span>  } <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l01124"></a><span class="lineno"> 1124</span>  <span class="comment">// No brightness adjustment has been made -- return 'raw' color</span></div> +<div class="line"><a name="l01125"></a><span class="lineno"> 1125</span>  <span class="keywordflow">return</span> ((uint32_t)p[rOffset] << 16) |</div> +<div class="line"><a name="l01126"></a><span class="lineno"> 1126</span>  ((uint32_t)p[gOffset] << 8) |</div> +<div class="line"><a name="l01127"></a><span class="lineno"> 1127</span>  (uint32_t)p[bOffset];</div> +<div class="line"><a name="l01128"></a><span class="lineno"> 1128</span>  }</div> +<div class="line"><a name="l01129"></a><span class="lineno"> 1129</span>  } <span class="keywordflow">else</span> { <span class="comment">// Is RGBW-type device</span></div> +<div class="line"><a name="l01130"></a><span class="lineno"> 1130</span>  p = &pixels[n * 4];</div> +<div class="line"><a name="l01131"></a><span class="lineno"> 1131</span>  <span class="keywordflow">if</span>(brightness) { <span class="comment">// Return scaled color</span></div> +<div class="line"><a name="l01132"></a><span class="lineno"> 1132</span>  <span class="keywordflow">return</span> (((uint32_t)(p[wOffset] << 8) / brightness) << 24) |</div> +<div class="line"><a name="l01133"></a><span class="lineno"> 1133</span>  (((uint32_t)(p[rOffset] << 8) / brightness) << 16) |</div> +<div class="line"><a name="l01134"></a><span class="lineno"> 1134</span>  (((uint32_t)(p[gOffset] << 8) / brightness) << 8) |</div> +<div class="line"><a name="l01135"></a><span class="lineno"> 1135</span>  ( (uint32_t)(p[bOffset] << 8) / brightness );</div> +<div class="line"><a name="l01136"></a><span class="lineno"> 1136</span>  } <span class="keywordflow">else</span> { <span class="comment">// Return raw color</span></div> +<div class="line"><a name="l01137"></a><span class="lineno"> 1137</span>  <span class="keywordflow">return</span> ((uint32_t)p[wOffset] << 24) |</div> +<div class="line"><a name="l01138"></a><span class="lineno"> 1138</span>  ((uint32_t)p[rOffset] << 16) |</div> +<div class="line"><a name="l01139"></a><span class="lineno"> 1139</span>  ((uint32_t)p[gOffset] << 8) |</div> +<div class="line"><a name="l01140"></a><span class="lineno"> 1140</span>  (uint32_t)p[bOffset];</div> +<div class="line"><a name="l01141"></a><span class="lineno"> 1141</span>  }</div> +<div class="line"><a name="l01142"></a><span class="lineno"> 1142</span>  }</div> +<div class="line"><a name="l01143"></a><span class="lineno"> 1143</span> }</div> +<div class="line"><a name="l01144"></a><span class="lineno"> 1144</span> </div> +<div class="line"><a name="l01145"></a><span class="lineno"> 1145</span> <span class="comment">// Returns pointer to pixels[] array. Pixel data is stored in device-</span></div> +<div class="line"><a name="l01146"></a><span class="lineno"> 1146</span> <span class="comment">// native format and is not translated here. Application will need to be</span></div> +<div class="line"><a name="l01147"></a><span class="lineno"> 1147</span> <span class="comment">// aware of specific pixel data format and handle colors appropriately.</span></div> +<div class="line"><a name="l01148"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067"> 1148</a></span> uint8_t *<a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel::getPixels</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div> +<div class="line"><a name="l01149"></a><span class="lineno"> 1149</span>  <span class="keywordflow">return</span> pixels;</div> +<div class="line"><a name="l01150"></a><span class="lineno"> 1150</span> }</div> +<div class="line"><a name="l01151"></a><span class="lineno"> 1151</span> </div> +<div class="line"><a name="l01152"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b"> 1152</a></span> uint16_t <a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel::numPixels</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div> +<div class="line"><a name="l01153"></a><span class="lineno"> 1153</span>  <span class="keywordflow">return</span> numLEDs;</div> +<div class="line"><a name="l01154"></a><span class="lineno"> 1154</span> }</div> +<div class="line"><a name="l01155"></a><span class="lineno"> 1155</span> </div> +<div class="line"><a name="l01156"></a><span class="lineno"> 1156</span> <span class="comment">// Adjust output brightness; 0=darkest (off), 255=brightest. This does</span></div> +<div class="line"><a name="l01157"></a><span class="lineno"> 1157</span> <span class="comment">// NOT immediately affect what's currently displayed on the LEDs. The</span></div> +<div class="line"><a name="l01158"></a><span class="lineno"> 1158</span> <span class="comment">// next call to show() will refresh the LEDs at this level. However,</span></div> +<div class="line"><a name="l01159"></a><span class="lineno"> 1159</span> <span class="comment">// this process is potentially "lossy," especially when increasing</span></div> +<div class="line"><a name="l01160"></a><span class="lineno"> 1160</span> <span class="comment">// brightness. The tight timing in the WS2811/WS2812 code means there</span></div> +<div class="line"><a name="l01161"></a><span class="lineno"> 1161</span> <span class="comment">// aren't enough free cycles to perform this scaling on the fly as data</span></div> +<div class="line"><a name="l01162"></a><span class="lineno"> 1162</span> <span class="comment">// is issued. So we make a pass through the existing color data in RAM</span></div> +<div class="line"><a name="l01163"></a><span class="lineno"> 1163</span> <span class="comment">// and scale it (subsequent graphics commands also work at this</span></div> +<div class="line"><a name="l01164"></a><span class="lineno"> 1164</span> <span class="comment">// brightness level). If there's a significant step up in brightness,</span></div> +<div class="line"><a name="l01165"></a><span class="lineno"> 1165</span> <span class="comment">// the limited number of steps (quantization) in the old data will be</span></div> +<div class="line"><a name="l01166"></a><span class="lineno"> 1166</span> <span class="comment">// quite visible in the re-scaled version. For a non-destructive</span></div> +<div class="line"><a name="l01167"></a><span class="lineno"> 1167</span> <span class="comment">// change, you'll need to re-render the full strip data. C'est la vie.</span></div> +<div class="line"><a name="l01168"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53"> 1168</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel::setBrightness</a>(uint8_t b) {</div> +<div class="line"><a name="l01169"></a><span class="lineno"> 1169</span>  <span class="comment">// Stored brightness value is different than what's passed.</span></div> +<div class="line"><a name="l01170"></a><span class="lineno"> 1170</span>  <span class="comment">// This simplifies the actual scaling math later, allowing a fast</span></div> +<div class="line"><a name="l01171"></a><span class="lineno"> 1171</span>  <span class="comment">// 8x8-bit multiply and taking the MSB. 'brightness' is a uint8_t,</span></div> +<div class="line"><a name="l01172"></a><span class="lineno"> 1172</span>  <span class="comment">// adding 1 here may (intentionally) roll over...so 0 = max brightness</span></div> +<div class="line"><a name="l01173"></a><span class="lineno"> 1173</span>  <span class="comment">// (color values are interpreted literally; no scaling), 1 = min</span></div> +<div class="line"><a name="l01174"></a><span class="lineno"> 1174</span>  <span class="comment">// brightness (off), 255 = just below max brightness.</span></div> +<div class="line"><a name="l01175"></a><span class="lineno"> 1175</span>  uint8_t newBrightness = b + 1;</div> +<div class="line"><a name="l01176"></a><span class="lineno"> 1176</span>  <span class="keywordflow">if</span>(newBrightness != brightness) { <span class="comment">// Compare against prior value</span></div> +<div class="line"><a name="l01177"></a><span class="lineno"> 1177</span>  <span class="comment">// Brightness has changed -- re-scale existing data in RAM</span></div> +<div class="line"><a name="l01178"></a><span class="lineno"> 1178</span>  uint8_t c,</div> +<div class="line"><a name="l01179"></a><span class="lineno"> 1179</span>  *ptr = pixels,</div> +<div class="line"><a name="l01180"></a><span class="lineno"> 1180</span>  oldBrightness = brightness - 1; <span class="comment">// De-wrap old brightness value</span></div> +<div class="line"><a name="l01181"></a><span class="lineno"> 1181</span>  uint16_t scale;</div> +<div class="line"><a name="l01182"></a><span class="lineno"> 1182</span>  <span class="keywordflow">if</span>(oldBrightness == 0) scale = 0; <span class="comment">// Avoid /0</span></div> +<div class="line"><a name="l01183"></a><span class="lineno"> 1183</span>  <span class="keywordflow">else</span> <span class="keywordflow">if</span>(b == 255) scale = 65535 / oldBrightness;</div> +<div class="line"><a name="l01184"></a><span class="lineno"> 1184</span>  <span class="keywordflow">else</span> scale = (((uint16_t)newBrightness << 8) - 1) / oldBrightness;</div> +<div class="line"><a name="l01185"></a><span class="lineno"> 1185</span>  <span class="keywordflow">for</span>(uint16_t i=0; i<numBytes; i++) {</div> +<div class="line"><a name="l01186"></a><span class="lineno"> 1186</span>  c = *ptr;</div> +<div class="line"><a name="l01187"></a><span class="lineno"> 1187</span>  *ptr++ = (c * scale) >> 8;</div> +<div class="line"><a name="l01188"></a><span class="lineno"> 1188</span>  }</div> +<div class="line"><a name="l01189"></a><span class="lineno"> 1189</span>  brightness = newBrightness;</div> +<div class="line"><a name="l01190"></a><span class="lineno"> 1190</span>  }</div> +<div class="line"><a name="l01191"></a><span class="lineno"> 1191</span> }</div> +<div class="line"><a name="l01192"></a><span class="lineno"> 1192</span> </div> +<div class="line"><a name="l01193"></a><span class="lineno"> 1193</span> <span class="comment">//Return the brightness value</span></div> +<div class="line"><a name="l01194"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f"> 1194</a></span> uint8_t <a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel::getBrightness</a>(<span class="keywordtype">void</span>)<span class="keyword"> const </span>{</div> +<div class="line"><a name="l01195"></a><span class="lineno"> 1195</span>  <span class="keywordflow">return</span> brightness - 1;</div> +<div class="line"><a name="l01196"></a><span class="lineno"> 1196</span> }</div> +<div class="line"><a name="l01197"></a><span class="lineno"> 1197</span> </div> +<div class="line"><a name="l01198"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204"> 1198</a></span> <span class="keywordtype">void</span> <a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel::clear</a>() {</div> +<div class="line"><a name="l01199"></a><span class="lineno"> 1199</span>  memset(pixels, 0, numBytes);</div> +<div class="line"><a name="l01200"></a><span class="lineno"> 1200</span> }</div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html new file mode 100644 index 000000000..e2da5f83b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.html @@ -0,0 +1,670 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#nested-classes">Data Structures</a> | +<a href="#define-members">Macros</a> | +<a href="#typedef-members">Typedefs</a> </div> + <div class="headertitle"> +<div class="title">Adafruit_NeoPixel.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <WProgram.h></code><br/> +<code>#include <pins_arduino.h></code><br/> +</div> +<p><a href="_adafruit___neo_pixel_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="nested-classes"></a> +Data Structures</h2></td></tr> +<tr class="memitem:"><td class="memItemLeft" align="right" valign="top">class  </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:aa4f80df5ab240d93359f40956462f758"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758">NEO_RGB</a>   ((0 << 6) | (0 << 4) | (1 << 2) | (2))</td></tr> +<tr class="separator:aa4f80df5ab240d93359f40956462f758"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7d6aaa56c8e2603312cba8dbdf9c5661"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661">NEO_RBG</a>   ((0 << 6) | (0 << 4) | (2 << 2) | (1))</td></tr> +<tr class="separator:a7d6aaa56c8e2603312cba8dbdf9c5661"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a95d0d6b0a1f52bc72d9dcea2b3a48e3f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a>   ((1 << 6) | (1 << 4) | (0 << 2) | (2))</td></tr> +<tr class="separator:a95d0d6b0a1f52bc72d9dcea2b3a48e3f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abca04ce54125372080f2fbf2afdcf027"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027">NEO_GBR</a>   ((2 << 6) | (2 << 4) | (0 << 2) | (1))</td></tr> +<tr class="separator:abca04ce54125372080f2fbf2afdcf027"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afde6ec00a4ec8fad0267ae1a6689379e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e">NEO_BRG</a>   ((1 << 6) | (1 << 4) | (2 << 2) | (0))</td></tr> +<tr class="separator:afde6ec00a4ec8fad0267ae1a6689379e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9129664a08911b56227dd641116f105f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f">NEO_BGR</a>   ((2 << 6) | (2 << 4) | (1 << 2) | (0))</td></tr> +<tr class="separator:a9129664a08911b56227dd641116f105f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4ee056fd3d7b09538908b35643a2508a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a">NEO_WRGB</a>   ((0 << 6) | (1 << 4) | (2 << 2) | (3))</td></tr> +<tr class="separator:a4ee056fd3d7b09538908b35643a2508a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a266a08af576ed4331db48b16bf572d29"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29">NEO_WRBG</a>   ((0 << 6) | (1 << 4) | (3 << 2) | (2))</td></tr> +<tr class="separator:a266a08af576ed4331db48b16bf572d29"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a59561d96a0f8a526ee3448e7b104d8b3"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3">NEO_WGRB</a>   ((0 << 6) | (2 << 4) | (1 << 2) | (3))</td></tr> +<tr class="separator:a59561d96a0f8a526ee3448e7b104d8b3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af722c80d41894df25c363b9ebf371b4e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e">NEO_WGBR</a>   ((0 << 6) | (3 << 4) | (1 << 2) | (2))</td></tr> +<tr class="separator:af722c80d41894df25c363b9ebf371b4e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3eed3aeba511a2478a1ee8c17516732b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b">NEO_WBRG</a>   ((0 << 6) | (2 << 4) | (3 << 2) | (1))</td></tr> +<tr class="separator:a3eed3aeba511a2478a1ee8c17516732b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a015eeccbf1bd19907c34d7b39b63bb84"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84">NEO_WBGR</a>   ((0 << 6) | (3 << 4) | (2 << 2) | (1))</td></tr> +<tr class="separator:a015eeccbf1bd19907c34d7b39b63bb84"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a122c6bb3e44525d2f975dcd89b094267"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267">NEO_RWGB</a>   ((1 << 6) | (0 << 4) | (2 << 2) | (3))</td></tr> +<tr class="separator:a122c6bb3e44525d2f975dcd89b094267"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9254ebc9367c071457d0321f64c9d5fa"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa">NEO_RWBG</a>   ((1 << 6) | (0 << 4) | (3 << 2) | (2))</td></tr> +<tr class="separator:a9254ebc9367c071457d0321f64c9d5fa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abcce73b2eafdf1bb331a8f02fba95d10"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10">NEO_RGWB</a>   ((2 << 6) | (0 << 4) | (1 << 2) | (3))</td></tr> +<tr class="separator:abcce73b2eafdf1bb331a8f02fba95d10"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a71f7c6e45f4c63fceca6b5b73c7a7c9d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d">NEO_RGBW</a>   ((3 << 6) | (0 << 4) | (1 << 2) | (2))</td></tr> +<tr class="separator:a71f7c6e45f4c63fceca6b5b73c7a7c9d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7b6b551a990b498bed36aadba4a498d5"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5">NEO_RBWG</a>   ((2 << 6) | (0 << 4) | (3 << 2) | (1))</td></tr> +<tr class="separator:a7b6b551a990b498bed36aadba4a498d5"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a198dc192119c166c544efc3e89fdd1cd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd">NEO_RBGW</a>   ((3 << 6) | (0 << 4) | (2 << 2) | (1))</td></tr> +<tr class="separator:a198dc192119c166c544efc3e89fdd1cd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa29b3544b4257e851de2e214894d1236"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236">NEO_GWRB</a>   ((1 << 6) | (2 << 4) | (0 << 2) | (3))</td></tr> +<tr class="separator:aa29b3544b4257e851de2e214894d1236"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aaaaa406f36f1c596526579944ca7043d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d">NEO_GWBR</a>   ((1 << 6) | (3 << 4) | (0 << 2) | (2))</td></tr> +<tr class="separator:aaaaa406f36f1c596526579944ca7043d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a35a185ff488486a74745e9094892558c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c">NEO_GRWB</a>   ((2 << 6) | (1 << 4) | (0 << 2) | (3))</td></tr> +<tr class="separator:a35a185ff488486a74745e9094892558c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a722066abc60b560235b3b22082c2e68e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e">NEO_GRBW</a>   ((3 << 6) | (1 << 4) | (0 << 2) | (2))</td></tr> +<tr class="separator:a722066abc60b560235b3b22082c2e68e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a20be9abdf372b9c71d9fdacc3e6a9d1a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a">NEO_GBWR</a>   ((2 << 6) | (3 << 4) | (0 << 2) | (1))</td></tr> +<tr class="separator:a20be9abdf372b9c71d9fdacc3e6a9d1a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af60d024b8f8954960e59056c57520080"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080">NEO_GBRW</a>   ((3 << 6) | (2 << 4) | (0 << 2) | (1))</td></tr> +<tr class="separator:af60d024b8f8954960e59056c57520080"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aaf438f131d0fa8a0be6791a553145860"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860">NEO_BWRG</a>   ((1 << 6) | (2 << 4) | (3 << 2) | (0))</td></tr> +<tr class="separator:aaf438f131d0fa8a0be6791a553145860"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2595b8689ce5bd39634d017620ae57b8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8">NEO_BWGR</a>   ((1 << 6) | (3 << 4) | (2 << 2) | (0))</td></tr> +<tr class="separator:a2595b8689ce5bd39634d017620ae57b8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4b4571bfc0a3ebfb4720ce4e5fbe9acf"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf">NEO_BRWG</a>   ((2 << 6) | (1 << 4) | (3 << 2) | (0))</td></tr> +<tr class="separator:a4b4571bfc0a3ebfb4720ce4e5fbe9acf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad617c46d4a64cd4ec8d0ed1a0f30073"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073">NEO_BRGW</a>   ((3 << 6) | (1 << 4) | (2 << 2) | (0))</td></tr> +<tr class="separator:aad617c46d4a64cd4ec8d0ed1a0f30073"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a143de1c7084e1f833beecbdae00b321c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c">NEO_BGWR</a>   ((2 << 6) | (3 << 4) | (1 << 2) | (0))</td></tr> +<tr class="separator:a143de1c7084e1f833beecbdae00b321c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5b49f89982b6e60d20f7aaab79030d54"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54">NEO_BGRW</a>   ((3 << 6) | (2 << 4) | (1 << 2) | (0))</td></tr> +<tr class="separator:a5b49f89982b6e60d20f7aaab79030d54"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a475fef7028a743310aa4311a97899d5d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>   0x0000</td></tr> +<tr class="separator:a475fef7028a743310aa4311a97899d5d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9c4067fd0cceb0432d1758fc07ede469"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469">NEO_KHZ400</a>   0x0100</td></tr> +<tr class="separator:a9c4067fd0cceb0432d1758fc07ede469"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="typedef-members"></a> +Typedefs</h2></td></tr> +<tr class="memitem:a6ff31bc7214a3ae338a80ed6142d69ff"><td class="memItemLeft" align="right" valign="top">typedef uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a></td></tr> +<tr class="separator:a6ff31bc7214a3ae338a80ed6142d69ff"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a9129664a08911b56227dd641116f105f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BGR   ((2 << 6) | (2 << 4) | (1 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00059">59</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5b49f89982b6e60d20f7aaab79030d54"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BGRW   ((3 << 6) | (2 << 4) | (1 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00089">89</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a143de1c7084e1f833beecbdae00b321c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BGWR   ((2 << 6) | (3 << 4) | (1 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00088">88</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="afde6ec00a4ec8fad0267ae1a6689379e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BRG   ((1 << 6) | (1 << 4) | (2 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00058">58</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aad617c46d4a64cd4ec8d0ed1a0f30073"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BRGW   ((3 << 6) | (1 << 4) | (2 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00087">87</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a4b4571bfc0a3ebfb4720ce4e5fbe9acf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BRWG   ((2 << 6) | (1 << 4) | (3 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00086">86</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a2595b8689ce5bd39634d017620ae57b8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BWGR   ((1 << 6) | (3 << 4) | (2 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00085">85</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aaf438f131d0fa8a0be6791a553145860"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_BWRG   ((1 << 6) | (2 << 4) | (3 << 2) | (0))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00084">84</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="abca04ce54125372080f2fbf2afdcf027"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GBR   ((2 << 6) | (2 << 4) | (0 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00057">57</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af60d024b8f8954960e59056c57520080"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GBRW   ((3 << 6) | (2 << 4) | (0 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00082">82</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a20be9abdf372b9c71d9fdacc3e6a9d1a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GBWR   ((2 << 6) | (3 << 4) | (0 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00081">81</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a95d0d6b0a1f52bc72d9dcea2b3a48e3f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GRB   ((1 << 6) | (1 << 4) | (0 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00056">56</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a722066abc60b560235b3b22082c2e68e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GRBW   ((3 << 6) | (1 << 4) | (0 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00080">80</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a35a185ff488486a74745e9094892558c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GRWB   ((2 << 6) | (1 << 4) | (0 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00079">79</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aaaaa406f36f1c596526579944ca7043d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GWBR   ((1 << 6) | (3 << 4) | (0 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00078">78</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa29b3544b4257e851de2e214894d1236"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_GWRB   ((1 << 6) | (2 << 4) | (0 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00077">77</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9c4067fd0cceb0432d1758fc07ede469"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_KHZ400   0x0100</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00102">102</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a475fef7028a743310aa4311a97899d5d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_KHZ800   0x0000</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00100">100</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7d6aaa56c8e2603312cba8dbdf9c5661"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RBG   ((0 << 6) | (0 << 4) | (2 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00055">55</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a198dc192119c166c544efc3e89fdd1cd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RBGW   ((3 << 6) | (0 << 4) | (2 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00075">75</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7b6b551a990b498bed36aadba4a498d5"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RBWG   ((2 << 6) | (0 << 4) | (3 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00074">74</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa4f80df5ab240d93359f40956462f758"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RGB   ((0 << 6) | (0 << 4) | (1 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00054">54</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a71f7c6e45f4c63fceca6b5b73c7a7c9d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RGBW   ((3 << 6) | (0 << 4) | (1 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00073">73</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="abcce73b2eafdf1bb331a8f02fba95d10"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RGWB   ((2 << 6) | (0 << 4) | (1 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00072">72</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9254ebc9367c071457d0321f64c9d5fa"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RWBG   ((1 << 6) | (0 << 4) | (3 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00071">71</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a122c6bb3e44525d2f975dcd89b094267"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_RWGB   ((1 << 6) | (0 << 4) | (2 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00070">70</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a015eeccbf1bd19907c34d7b39b63bb84"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WBGR   ((0 << 6) | (3 << 4) | (2 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00068">68</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3eed3aeba511a2478a1ee8c17516732b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WBRG   ((0 << 6) | (2 << 4) | (3 << 2) | (1))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00067">67</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af722c80d41894df25c363b9ebf371b4e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WGBR   ((0 << 6) | (3 << 4) | (1 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00066">66</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a59561d96a0f8a526ee3448e7b104d8b3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WGRB   ((0 << 6) | (2 << 4) | (1 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00065">65</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a266a08af576ed4331db48b16bf572d29"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WRBG   ((0 << 6) | (1 << 4) | (3 << 2) | (2))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00064">64</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a4ee056fd3d7b09538908b35643a2508a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define NEO_WRGB   ((0 << 6) | (1 << 4) | (2 << 2) | (3))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00063">63</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<h2 class="groupheader">Typedef Documentation</h2> +<a class="anchor" id="a6ff31bc7214a3ae338a80ed6142d69ff"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">typedef uint8_t <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00111">111</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js new file mode 100644 index 000000000..ee5a3ab29 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h.js @@ -0,0 +1,37 @@ +var _adafruit___neo_pixel_8h = +[ + [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html", "class_adafruit___neo_pixel" ], + [ "NEO_BGR", "_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f", null ], + [ "NEO_BGRW", "_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54", null ], + [ "NEO_BGWR", "_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c", null ], + [ "NEO_BRG", "_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e", null ], + [ "NEO_BRGW", "_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073", null ], + [ "NEO_BRWG", "_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf", null ], + [ "NEO_BWGR", "_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8", null ], + [ "NEO_BWRG", "_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860", null ], + [ "NEO_GBR", "_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027", null ], + [ "NEO_GBRW", "_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080", null ], + [ "NEO_GBWR", "_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a", null ], + [ "NEO_GRB", "_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f", null ], + [ "NEO_GRBW", "_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e", null ], + [ "NEO_GRWB", "_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c", null ], + [ "NEO_GWBR", "_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d", null ], + [ "NEO_GWRB", "_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236", null ], + [ "NEO_KHZ400", "_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469", null ], + [ "NEO_KHZ800", "_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d", null ], + [ "NEO_RBG", "_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661", null ], + [ "NEO_RBGW", "_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd", null ], + [ "NEO_RBWG", "_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5", null ], + [ "NEO_RGB", "_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758", null ], + [ "NEO_RGBW", "_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d", null ], + [ "NEO_RGWB", "_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10", null ], + [ "NEO_RWBG", "_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa", null ], + [ "NEO_RWGB", "_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267", null ], + [ "NEO_WBGR", "_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84", null ], + [ "NEO_WBRG", "_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b", null ], + [ "NEO_WGBR", "_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e", null ], + [ "NEO_WGRB", "_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3", null ], + [ "NEO_WRBG", "_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29", null ], + [ "NEO_WRGB", "_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a", null ], + [ "neoPixelType", "_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html new file mode 100644 index 000000000..d42bfc4d2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_adafruit___neo_pixel_8h_source.html @@ -0,0 +1,299 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/Adafruit_NeoPixel.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_adafruit___neo_pixel_8h_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Adafruit_NeoPixel.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_adafruit___neo_pixel_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/*--------------------------------------------------------------------</span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> This file is part of the Adafruit NeoPixel library.</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"></span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> NeoPixel is free software: you can redistribute it and/or modify</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> it under the terms of the GNU Lesser General Public License as</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> published by the Free Software Foundation, either version 3 of</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> the License, or (at your option) any later version.</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"></span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> NeoPixel is distributed in the hope that it will be useful,</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> GNU Lesser General Public License for more details.</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"></span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> You should have received a copy of the GNU Lesser General Public</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> License along with NeoPixel. If not, see</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> <http://www.gnu.org/licenses/>.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> --------------------------------------------------------------------*/</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> </div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="preprocessor">#ifndef ADAFRUIT_NEOPIXEL_H</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="preprocessor"></span><span class="preprocessor">#define ADAFRUIT_NEOPIXEL_H</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> <span class="preprocessor">#if (ARDUINO >= 100)</span></div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="preprocessor"></span><span class="preprocessor"> #include <Arduino.h></span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="preprocessor"></span><span class="preprocessor"> #include <WProgram.h></span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="preprocessor"> #include <pins_arduino.h></span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">// The order of primary colors in the NeoPixel data stream can vary</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">// among device types, manufacturers and even different revisions of</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">// the same item. The third parameter to the Adafruit_NeoPixel</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">// constructor encodes the per-pixel byte offsets of the red, green</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">// and blue primaries (plus white, if present) in the data stream --</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">// the following #defines provide an easier-to-use named version for</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">// each permutation. e.g. NEO_GRB indicates a NeoPixel-compatible</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">// device expecting three bytes per pixel, with the first byte</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">// containing the green value, second containing red and third</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">// containing blue. The in-memory representation of a chain of</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">// NeoPixels is the same as the data-stream order; no re-ordering of</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">// bytes is required when issuing data to the chain.</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> </div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">// Bits 5,4 of this value are the offset (0-3) from the first byte of</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">// a pixel to the location of the red color byte. Bits 3,2 are the</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">// green offset and 1,0 are the blue offset. If it is an RGBW-type</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">// device (supporting a white primary in addition to R,G,B), bits 7,6</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">// are the offset to the white byte...otherwise, bits 7,6 are set to</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">// the same value as 5,4 (red) to indicate an RGB (not RGBW) device.</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">// i.e. binary representation:</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">// 0bWWRRGGBB for RGBW devices</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">// 0bRRRRGGBB for RGB</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> </div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">// RGB NeoPixel permutations; white and red offsets are always same</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">// Offset: W R G B</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758"> 54</a></span> <span class="preprocessor">#define NEO_RGB ((0 << 6) | (0 << 4) | (1 << 2) | (2))</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661"> 55</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RBG ((0 << 6) | (0 << 4) | (2 << 2) | (1))</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f"> 56</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GRB ((1 << 6) | (1 << 4) | (0 << 2) | (2))</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027"> 57</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GBR ((2 << 6) | (2 << 4) | (0 << 2) | (1))</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e"> 58</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BRG ((1 << 6) | (1 << 4) | (2 << 2) | (0))</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f"> 59</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BGR ((2 << 6) | (2 << 4) | (1 << 2) | (0))</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">// RGBW NeoPixel permutations; all 4 offsets are distinct</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="comment">// Offset: W R G B</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a"> 63</a></span> <span class="preprocessor">#define NEO_WRGB ((0 << 6) | (1 << 4) | (2 << 2) | (3))</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29"> 64</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_WRBG ((0 << 6) | (1 << 4) | (3 << 2) | (2))</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3"> 65</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_WGRB ((0 << 6) | (2 << 4) | (1 << 2) | (3))</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e"> 66</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_WGBR ((0 << 6) | (3 << 4) | (1 << 2) | (2))</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b"> 67</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_WBRG ((0 << 6) | (2 << 4) | (3 << 2) | (1))</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84"> 68</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_WBGR ((0 << 6) | (3 << 4) | (2 << 2) | (1))</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267"> 70</a></span> <span class="preprocessor">#define NEO_RWGB ((1 << 6) | (0 << 4) | (2 << 2) | (3))</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa"> 71</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RWBG ((1 << 6) | (0 << 4) | (3 << 2) | (2))</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10"> 72</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RGWB ((2 << 6) | (0 << 4) | (1 << 2) | (3))</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d"> 73</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RGBW ((3 << 6) | (0 << 4) | (1 << 2) | (2))</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5"> 74</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RBWG ((2 << 6) | (0 << 4) | (3 << 2) | (1))</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd"> 75</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_RBGW ((3 << 6) | (0 << 4) | (2 << 2) | (1))</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236"> 77</a></span> <span class="preprocessor">#define NEO_GWRB ((1 << 6) | (2 << 4) | (0 << 2) | (3))</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d"> 78</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GWBR ((1 << 6) | (3 << 4) | (0 << 2) | (2))</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c"> 79</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GRWB ((2 << 6) | (1 << 4) | (0 << 2) | (3))</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e"> 80</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GRBW ((3 << 6) | (1 << 4) | (0 << 2) | (2))</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a"> 81</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GBWR ((2 << 6) | (3 << 4) | (0 << 2) | (1))</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080"> 82</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_GBRW ((3 << 6) | (2 << 4) | (0 << 2) | (1))</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860"> 84</a></span> <span class="preprocessor">#define NEO_BWRG ((1 << 6) | (2 << 4) | (3 << 2) | (0))</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8"> 85</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BWGR ((1 << 6) | (3 << 4) | (2 << 2) | (0))</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf"> 86</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BRWG ((2 << 6) | (1 << 4) | (3 << 2) | (0))</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073"> 87</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BRGW ((3 << 6) | (1 << 4) | (2 << 2) | (0))</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c"> 88</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BGWR ((2 << 6) | (3 << 4) | (1 << 2) | (0))</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54"> 89</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_BGRW ((3 << 6) | (2 << 4) | (1 << 2) | (0))</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="comment">// Add NEO_KHZ400 to the color order value to indicate a 400 KHz</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// device. All but the earliest v1 NeoPixels expect an 800 KHz data</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// stream, this is the default if unspecified. Because flash space</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// is very limited on ATtiny devices (e.g. Trinket, Gemma), v1</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="comment">// NeoPixels aren't handled by default on those chips, though it can</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">// be enabled by removing the ifndef/endif below -- but code will be</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// bigger. Conversely, can disable the NEO_KHZ400 line on other MCUs</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// to remove v1 support and save a little space.</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> +<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d"> 100</a></span> <span class="preprocessor">#define NEO_KHZ800 0x0000 // 800 KHz datastream</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"></span><span class="preprocessor">#ifndef __AVR_ATtiny85__</span></div> +<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469"> 102</a></span> <span class="preprocessor"></span><span class="preprocessor">#define NEO_KHZ400 0x0100 // 400 KHz datastream</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="comment">// If 400 KHz support is enabled, the third parameter to the constructor</span></div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> <span class="comment">// requires a 16-bit value (in order to select 400 vs 800 KHz speed).</span></div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// If only 800 KHz is enabled (as is default on ATtiny), an 8-bit value</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="comment">// is sufficient to encode pixel color order, saving some space.</span></div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#ifdef NEO_KHZ400</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff"> 111</a></span> <span class="preprocessor"></span><span class="keyword">typedef</span> uint8_t <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>;</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"></span><span class="keyword">typedef</span> uint16_t <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a>;</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00116"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html"> 116</a></span> <span class="keyword">class </span><a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> {</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> </div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="keyword">public</span>:</div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> </div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// Constructor: number of LEDs, pin number, LED type</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a>(uint16_t n, uint8_t p=6, <a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t=<a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a> + <a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>);</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a>(<span class="keywordtype">void</span>);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <a class="code" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">~Adafruit_NeoPixel</a>();</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> </div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordtype">void</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a>(<span class="keywordtype">void</span>),</div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>(<span class="keywordtype">void</span>),</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <a class="code" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a>(uint8_t p),</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint8_t r, uint8_t g, uint8_t b),</div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w),</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(uint16_t n, uint32_t c),</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <a class="code" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">setBrightness</a>(uint8_t),</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <a class="code" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a>(),</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a>(uint16_t n),</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <a class="code" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a>(<a class="code" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t);</div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  uint8_t</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  *<a class="code" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">getPixels</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>,</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <a class="code" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">getBrightness</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  uint16_t</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">numPixels</a>(<span class="keywordtype">void</span>) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keyword">static</span> uint32_t</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a>(uint8_t r, uint8_t g, uint8_t b),</div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <a class="code" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a>(uint8_t r, uint8_t g, uint8_t b, uint8_t w);</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  uint32_t</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <a class="code" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">getPixelColor</a>(uint16_t n) <span class="keyword">const</span>;</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keyword">inline</span> <span class="keywordtype">bool</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"><a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e"> 147</a></span>  <a class="code" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a>(<span class="keywordtype">void</span>) { <span class="keywordflow">return</span> (micros() - endTime) >= 50L; }</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keyword">private</span>:</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> </div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordtype">boolean</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor">#ifdef NEO_KHZ400 // If 400 KHz NeoPixel support enabled...</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"></span> is800KHz, <span class="comment">// ...true if 800 KHz pixels</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"></span> begun; <span class="comment">// true if begin() previously called</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  uint16_t</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  numLEDs, <span class="comment">// Number of RGB LEDs in strip</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  numBytes; <span class="comment">// Size of 'pixels' buffer below (3 or 4 bytes/pixel)</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  int8_t</div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  pin; <span class="comment">// Output pin number (-1 if not yet set)</span></div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  uint8_t</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  brightness,</div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  *pixels, <span class="comment">// Holds LED color values (3 or 4 bytes each)</span></div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  rOffset, <span class="comment">// Index of red byte within each 3- or 4-byte pixel</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  gOffset, <span class="comment">// Index of green byte</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  bOffset, <span class="comment">// Index of blue byte</span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  wOffset; <span class="comment">// Index of white byte (same as rOffset if no white)</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  uint32_t</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  endTime; <span class="comment">// Latch timing reference</span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#ifdef __AVR__</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"></span> <span class="keyword">volatile</span> uint8_t</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  *port; <span class="comment">// Output PORT register</span></div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  uint8_t</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  pinMask; <span class="comment">// Output PORT bitmask</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> };</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> </div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor">#endif // ADAFRUIT_NEOPIXEL_H</span></div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html new file mode 100644 index 000000000..fa6543908 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.html @@ -0,0 +1,377 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_m_a_x30102_8cpp.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">MAX30102.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "mbed.h"</code><br/> +<code>#include "<a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>"</code><br/> +</div> +<p><a href="_m_a_x30102_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:ae3e7ab47cd5395225bf7c67b8ee84976"><td class="memItemLeft" align="right" valign="top">I2C </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a> (I2C_SDA, I2C_SCL)</td></tr> +<tr class="separator:ae3e7ab47cd5395225bf7c67b8ee84976"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr> +<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft"> </td><td class="mdescRight">Write a value to a MAX30102 register. <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr> +<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr> +<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft"> </td><td class="mdescRight">Read a MAX30102 register. <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr> +<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr> +<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the MAX30102. <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr> +<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr> +<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft"> </td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register. <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr> +<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1df3bb178b66379a2975c56395c47d9b"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">maxim_max30102_reset</a> ()</td></tr> +<tr class="memdesc:a1df3bb178b66379a2975c56395c47d9b"><td class="mdescLeft"> </td><td class="mdescRight">Reset the MAX30102. <a href="#a1df3bb178b66379a2975c56395c47d9b"></a><br/></td></tr> +<tr class="separator:a1df3bb178b66379a2975c56395c47d9b"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><hr/> +<p>Project: MAXREFDES117# Filename: <a class="el" href="_m_a_x30102_8cpp.html">max30102.cpp</a> Description: This module is an embedded controller driver for the MAX30102 <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> +</div><h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ae3e7ab47cd5395225bf7c67b8ee84976"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">I2C i2c </td> + <td>(</td> + <td class="paramtype">I2C_SDA </td> + <td class="paramname">, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">I2C_SCL </td> + <td class="paramname"> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_init </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Initialize the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00115">115</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_fifo </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_led</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_led</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a set of samples from the MAX30102 FIFO register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00152">152</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t * </td> + <td class="paramname"><em>puch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00090">90</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a1df3bb178b66379a2975c56395c47d9b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_reset </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Reset the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00205">205</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_write_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Write a value to a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js new file mode 100644 index 000000000..16c93c096 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp.js @@ -0,0 +1,9 @@ +var _m_a_x30102_8cpp = +[ + [ "i2c", "_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976", null ], + [ "maxim_max30102_init", "_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df", null ], + [ "maxim_max30102_read_fifo", "_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ], + [ "maxim_max30102_read_reg", "_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f", null ], + [ "maxim_max30102_reset", "_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b", null ], + [ "maxim_max30102_write_reg", "_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html new file mode 100644 index 000000000..da5160050 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8cpp_source.html @@ -0,0 +1,266 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_m_a_x30102_8cpp_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">MAX30102.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_m_a_x30102_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">*</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">*</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">*</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">*</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "mbed.h"</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "<a class="code" href="_m_a_x30102_8h.html">MAX30102.h</a>"</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#ifdef TARGET_MAX32600MBED</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"></span>I2C <a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>(I2C1_SDA, I2C1_SCL);</div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"></span>I2C <a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>(I2C_SDA, I2C_SCL);</div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6"> 68</a></span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data)</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> {</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordtype">char</span> ach_i2c_data[2];</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  ach_i2c_data[0]=uch_addr;</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  ach_i2c_data[1]=uch_data;</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  </div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, ach_i2c_data, 2, <span class="keyword">false</span>)==0)</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> }</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> </div> +<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f"> 90</a></span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data)</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> {</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordtype">char</span> ch_i2c_data;</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  ch_i2c_data=uch_addr;</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, &ch_i2c_data, 1, <span class="keyword">true</span>)!=0)</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.read(<a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>, &ch_i2c_data, 1, <span class="keyword">false</span>)==0)</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  {</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  *puch_data=(uint8_t) ch_i2c_data;</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  }</div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> }</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> </div> +<div class="line"><a name="l00115"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df"> 115</a></span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>()</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> {</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>,0xc0)) <span class="comment">// INTR setting</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>,0x00))</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>,0x00)) <span class="comment">//FIFO_WR_PTR[4:0]</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>,0x00)) <span class="comment">//OVF_COUNTER[4:0]</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>,0x00)) <span class="comment">//FIFO_RD_PTR[4:0]</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>,0x0f)) <span class="comment">//sample avg = 1, fifo rollover=false, fifo almost full = 17</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x03)) <span class="comment">//0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED</span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>,0x27)) <span class="comment">// SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS)</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>,0x24)) <span class="comment">//Choose value for ~ 7mA for LED1</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>,0x24)) <span class="comment">// Choose value for ~ 7mA for LED2</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>,0x7f)) <span class="comment">// Choose value for ~ 25mA for Pilot LED</span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; </div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> }</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> </div> +<div class="line"><a name="l00152"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968"> 152</a></span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led)</div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> {</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  uint32_t un_temp;</div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="keywordtype">unsigned</span> <span class="keywordtype">char</span> uch_temp;</div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  *pun_red_led=0;</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  *pun_ir_led=0;</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordtype">char</span> ach_i2c_data[6];</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  </div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="comment">//read and clear status register</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>, &uch_temp);</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>, &uch_temp);</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  </div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  ach_i2c_data[0]=<a class="code" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>;</div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.write(<a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>, ach_i2c_data, 1, <span class="keyword">true</span>)!=0)</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span>(<a class="code" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">i2c</a>.read(<a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>, ach_i2c_data, 6, <span class="keyword">false</span>)!=0)</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  {</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[0];</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  un_temp<<=16;</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[1];</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  un_temp<<=8;</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[2];</div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  </div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[3];</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  un_temp<<=16;</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[4];</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  un_temp<<=8;</div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  un_temp=(<span class="keywordtype">unsigned</span> char) ach_i2c_data[5];</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  *pun_red_led&=0x03FFFF; <span class="comment">//Mask MSB [23:18]</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  *pun_ir_led&=0x03FFFF; <span class="comment">//Mask MSB [23:18]</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  </div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  </div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> }</div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> </div> +<div class="line"><a name="l00205"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd"> 205</a></span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>()</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span> {</div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">if</span>(!<a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x40))</div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; </div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span> }</div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html new file mode 100644 index 000000000..e568cf7d1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.html @@ -0,0 +1,737 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_m_a_x30102_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">MAX30102.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "mbed.h"</code><br/> +</div> +<p><a href="_m_a_x30102_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:a7978167075eb8954c1090fc7ce9647c6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>   0xAE</td></tr> +<tr class="separator:a7978167075eb8954c1090fc7ce9647c6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a11a0148c64950f3315f38d957cd43d37"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>   0xAF</td></tr> +<tr class="separator:a11a0148c64950f3315f38d957cd43d37"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7d161a2394a67a2176d549edb94f4191"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>   0x00</td></tr> +<tr class="separator:a7d161a2394a67a2176d549edb94f4191"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a61d809a1e313a2787b23e96de9554c4a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>   0x01</td></tr> +<tr class="separator:a61d809a1e313a2787b23e96de9554c4a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>   0x02</td></tr> +<tr class="separator:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab8d58d945ad576d492f669c7b9affbf1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>   0x03</td></tr> +<tr class="separator:ab8d58d945ad576d492f669c7b9affbf1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8c69cb46224fb35783f5b60e75b115"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>   0x04</td></tr> +<tr class="separator:aba8c69cb46224fb35783f5b60e75b115"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af9c8026aa9a22fad4c22ee6b10613707"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>   0x05</td></tr> +<tr class="separator:af9c8026aa9a22fad4c22ee6b10613707"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>   0x06</td></tr> +<tr class="separator:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a05bf6ede83fa400eac4dd65788d996fd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>   0x07</td></tr> +<tr class="separator:a05bf6ede83fa400eac4dd65788d996fd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>   0x08</td></tr> +<tr class="separator:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>   0x09</td></tr> +<tr class="separator:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a38546015e987a72b8c9eb13228237dd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>   0x0A</td></tr> +<tr class="separator:a38546015e987a72b8c9eb13228237dd0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5f3a6641b201203d41ed3d23b638a96b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>   0x0C</td></tr> +<tr class="separator:a5f3a6641b201203d41ed3d23b638a96b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>   0x0D</td></tr> +<tr class="separator:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a371750304ec49457d3d38f60428f8ff1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>   0x10</td></tr> +<tr class="separator:a371750304ec49457d3d38f60428f8ff1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">REG_MULTI_LED_CTRL1</a>   0x11</td></tr> +<tr class="separator:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a05ed274928d49bb6ddd6def6e45fac10"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">REG_MULTI_LED_CTRL2</a>   0x12</td></tr> +<tr class="separator:a05ed274928d49bb6ddd6def6e45fac10"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a579a9e43d89bdda85d9ccb206339d681"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">REG_TEMP_INTR</a>   0x1F</td></tr> +<tr class="separator:a579a9e43d89bdda85d9ccb206339d681"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">REG_TEMP_FRAC</a>   0x20</td></tr> +<tr class="separator:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad16bc92e2f92e516ca396214861a6379"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">REG_TEMP_CONFIG</a>   0x21</td></tr> +<tr class="separator:ad16bc92e2f92e516ca396214861a6379"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">REG_PROX_INT_THRESH</a>   0x30</td></tr> +<tr class="separator:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">REG_REV_ID</a>   0xFE</td></tr> +<tr class="separator:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">REG_PART_ID</a>   0xFF</td></tr> +<tr class="separator:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr> +<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the MAX30102. <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr> +<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr> +<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft"> </td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register. <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr> +<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr> +<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft"> </td><td class="mdescRight">Write a value to a MAX30102 register. <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr> +<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr> +<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft"> </td><td class="mdescRight">Read a MAX30102 register. <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr> +<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">maxim_max30102_reset</a> (void)</td></tr> +<tr class="memdesc:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="mdescLeft"> </td><td class="mdescRight">Reset the MAX30102. <a href="#a94ab5935f6ce28aa5ce31aa842eb83dd"></a><br/></td></tr> +<tr class="separator:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><hr/> +<p>Project: MAXREFDES117# Filename: <a class="el" href="_m_a_x30102_8h.html">max30102.h</a> Description: This module is an embedded controller driver header file for MAX30102 <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> +</div><h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a11a0148c64950f3315f38d957cd43d37"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_READ_ADDR   0xAF</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00065">65</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7978167075eb8954c1090fc7ce9647c6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_WRITE_ADDR   0xAE</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00064">64</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad1b1bbfe23c9461e0ae75b71b9f805ca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_CONFIG   0x08</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00076">76</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a05bf6ede83fa400eac4dd65788d996fd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_DATA   0x07</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00075">75</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3b9d75d4ac3cb579e8b46dea27f4303f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_RD_PTR   0x06</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00074">74</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aba8c69cb46224fb35783f5b60e75b115"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_WR_PTR   0x04</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00072">72</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae07f3c26106a0a37b6eddd8d2653137d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_ENABLE_1   0x02</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00070">70</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab8d58d945ad576d492f669c7b9affbf1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_ENABLE_2   0x03</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00071">71</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7d161a2394a67a2176d549edb94f4191"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_STATUS_1   0x00</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a61d809a1e313a2787b23e96de9554c4a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_STATUS_2   0x01</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00069">69</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5f3a6641b201203d41ed3d23b638a96b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_LED1_PA   0x0C</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00079">79</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7df43b0f854c9caf2fe04ccdebb18d21"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_LED2_PA   0x0D</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00080">80</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="accdea52b28f1bd3f4cd63d05ab12887f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MODE_CONFIG   0x09</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00077">77</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9d333cff4d002cb1d09a319e6917bc5c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MULTI_LED_CTRL1   0x11</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00082">82</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a05ed274928d49bb6ddd6def6e45fac10"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MULTI_LED_CTRL2   0x12</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00083">83</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af9c8026aa9a22fad4c22ee6b10613707"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_OVF_COUNTER   0x05</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00073">73</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a46083d1b6d3e1d5f89b0f1598dc6d163"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PART_ID   0xFF</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00089">89</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a371750304ec49457d3d38f60428f8ff1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PILOT_PA   0x10</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00081">81</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3d80b09e301a0155949b7c337ce5f5ab"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PROX_INT_THRESH   0x30</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00087">87</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a16f4b970762f7e8aa1f5c7a780a48c23"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_REV_ID   0xFE</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00088">88</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a38546015e987a72b8c9eb13228237dd0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_SPO2_CONFIG   0x0A</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00078">78</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad16bc92e2f92e516ca396214861a6379"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_CONFIG   0x21</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00086">86</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5321d8a33f1225ab437032e0e8ecbb3d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_FRAC   0x20</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00085">85</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a579a9e43d89bdda85d9ccb206339d681"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_INTR   0x1F</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_m_a_x30102_8h_source.html#l00084">84</a> of file <a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_init </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Initialize the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00115">115</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_fifo </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_led</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_led</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a set of samples from the MAX30102 FIFO register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00152">152</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t * </td> + <td class="paramname"><em>puch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00090">90</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a94ab5935f6ce28aa5ce31aa842eb83dd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_reset </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Reset the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00205">205</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_write_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Write a value to a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="_m_a_x30102_8cpp_source.html#l00068">68</a> of file <a class="el" href="_m_a_x30102_8cpp_source.html">MAX30102.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js new file mode 100644 index 000000000..064f9661b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h.js @@ -0,0 +1,32 @@ +var _m_a_x30102_8h = +[ + [ "I2C_READ_ADDR", "_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37", null ], + [ "I2C_WRITE_ADDR", "_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6", null ], + [ "REG_FIFO_CONFIG", "_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca", null ], + [ "REG_FIFO_DATA", "_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd", null ], + [ "REG_FIFO_RD_PTR", "_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f", null ], + [ "REG_FIFO_WR_PTR", "_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115", null ], + [ "REG_INTR_ENABLE_1", "_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d", null ], + [ "REG_INTR_ENABLE_2", "_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1", null ], + [ "REG_INTR_STATUS_1", "_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191", null ], + [ "REG_INTR_STATUS_2", "_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a", null ], + [ "REG_LED1_PA", "_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b", null ], + [ "REG_LED2_PA", "_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21", null ], + [ "REG_MODE_CONFIG", "_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f", null ], + [ "REG_MULTI_LED_CTRL1", "_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c", null ], + [ "REG_MULTI_LED_CTRL2", "_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10", null ], + [ "REG_OVF_COUNTER", "_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707", null ], + [ "REG_PART_ID", "_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163", null ], + [ "REG_PILOT_PA", "_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1", null ], + [ "REG_PROX_INT_THRESH", "_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab", null ], + [ "REG_REV_ID", "_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23", null ], + [ "REG_SPO2_CONFIG", "_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0", null ], + [ "REG_TEMP_CONFIG", "_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379", null ], + [ "REG_TEMP_FRAC", "_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d", null ], + [ "REG_TEMP_INTR", "_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681", null ], + [ "maxim_max30102_init", "_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df", null ], + [ "maxim_max30102_read_fifo", "_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ], + [ "maxim_max30102_read_reg", "_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f", null ], + [ "maxim_max30102_reset", "_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd", null ], + [ "maxim_max30102_write_reg", "_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html new file mode 100644 index 000000000..eb9ec8d29 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_m_a_x30102_8h_source.html @@ -0,0 +1,191 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102/MAX30102.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_m_a_x30102_8h_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">MAX30102.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_m_a_x30102_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">*</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">*</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">*</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">*</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#ifndef MAX30102_H_</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"></span><span class="preprocessor">#define MAX30102_H_</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "mbed.h"</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> +<div class="line"><a name="l00064"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6"> 64</a></span> <span class="preprocessor">#define I2C_WRITE_ADDR 0xAE</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37"> 65</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_READ_ADDR 0xAF</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="comment">//register addresses</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191"> 68</a></span> <span class="preprocessor">#define REG_INTR_STATUS_1 0x00</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a"> 69</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_STATUS_2 0x01</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d"> 70</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_1 0x02</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1"> 71</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_2 0x03</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115"> 72</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_WR_PTR 0x04</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707"> 73</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_OVF_COUNTER 0x05</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f"> 74</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_RD_PTR 0x06</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd"> 75</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_DATA 0x07</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca"> 76</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_CONFIG 0x08</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f"> 77</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MODE_CONFIG 0x09</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0"> 78</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_SPO2_CONFIG 0x0A</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b"> 79</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_LED1_PA 0x0C</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21"> 80</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_LED2_PA 0x0D</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1"> 81</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PILOT_PA 0x10</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c"> 82</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL1 0x11</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10"> 83</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL2 0x12</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681"> 84</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_INTR 0x1F</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d"> 85</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_FRAC 0x20</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379"> 86</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_CONFIG 0x21</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab"> 87</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PROX_INT_THRESH 0x30</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23"> 88</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_REV_ID 0xFE</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163"> 89</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PART_ID 0xFF</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led);</div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data);</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data);</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">bool</span> <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(<span class="keywordtype">void</span>);</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor">#endif </span><span class="comment">/* MAX30102_H_ */</span><span class="preprocessor"></span></div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li><li class="navelem"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html new file mode 100644 index 000000000..27f63e70a --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.html @@ -0,0 +1,324 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/RD117_ARDUINO.ino File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_r_d117___a_r_d_u_i_n_o_8ino.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<div class="title">RD117_ARDUINO.ino File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <Arduino.h></code><br/> +<code>#include "<a class="el" href="algorithm_8h_source.html">algorithm.h</a>"</code><br/> +<code>#include "<a class="el" href="max30102_8h_source.html">max30102.h</a>"</code><br/> +</div> +<p><a href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:a2134a5a06f0865c945543a1f07eba387"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>   255</td></tr> +<tr class="separator:a2134a5a06f0865c945543a1f07eba387"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a4fc01d736fe50cf5b977f755b675f11d"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d">setup</a> ()</td></tr> +<tr class="separator:a4fc01d736fe50cf5b977f755b675f11d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afe461d27b9c48d5921c00d521181f12f"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f">loop</a> ()</td></tr> +<tr class="separator:afe461d27b9c48d5921c00d521181f12f"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> +Variables</h2></td></tr> +<tr class="memitem:a602d2fccfb9f55d84f81b0c4d6f01589"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a> [100]</td></tr> +<tr class="separator:a602d2fccfb9f55d84f81b0c4d6f01589"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aac1c23af668ef1d6750bfd4a5f6422fe"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a> [100]</td></tr> +<tr class="separator:aac1c23af668ef1d6750bfd4a5f6422fe"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a></td></tr> +<tr class="separator:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a54d8056bd9812e0b8f73f911dcc21dfd"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a></td></tr> +<tr class="separator:a54d8056bd9812e0b8f73f911dcc21dfd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2518324dce002f592cf6d7f0b1ad9024"><td class="memItemLeft" align="right" valign="top">int8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a></td></tr> +<tr class="separator:a2518324dce002f592cf6d7f0b1ad9024"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a></td></tr> +<tr class="separator:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a43fb8ea97a26647405ca359095323280"><td class="memItemLeft" align="right" valign="top">int8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a></td></tr> +<tr class="separator:a43fb8ea97a26647405ca359095323280"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a></td></tr> +<tr class="separator:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a2134a5a06f0865c945543a1f07eba387"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define MAX_BRIGHTNESS   255</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00088">88</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="afe461d27b9c48d5921c00d521181f12f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void loop </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00144">144</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="a4fc01d736fe50cf5b977f755b675f11d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setup </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00108">108</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<h2 class="groupheader">Variable Documentation</h2> +<a class="anchor" id="a602d2fccfb9f55d84f81b0c4d6f01589"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t aun_ir_buffer[100]</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00096">96</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="aac1c23af668ef1d6750bfd4a5f6422fe"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t aun_red_buffer[100]</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00097">97</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="a43fb8ea97a26647405ca359095323280"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int8_t ch_hr_valid</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00103">103</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="a2518324dce002f592cf6d7f0b1ad9024"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int8_t ch_spo2_valid</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00101">101</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="a3171c70bfa71c3a4f960bf3e8203d13f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_heart_rate</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00102">102</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="ac16b6dd0e762f0ccc30e7102f97260d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_ir_buffer_length</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00099">99</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="a54d8056bd9812e0b8f73f911dcc21dfd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_spo2</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00100">100</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +<a class="anchor" id="ac5e493da8cbdd1414d56e8f08282fcc2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t uch_dummy</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html#l00104">104</a> of file <a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">RD117_ARDUINO.ino</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js new file mode 100644 index 000000000..0c3b4a8a1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino.js @@ -0,0 +1,14 @@ +var _r_d117___a_r_d_u_i_n_o_8ino = +[ + [ "MAX_BRIGHTNESS", "_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387", null ], + [ "loop", "_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f", null ], + [ "setup", "_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d", null ], + [ "aun_ir_buffer", "_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589", null ], + [ "aun_red_buffer", "_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe", null ], + [ "ch_hr_valid", "_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280", null ], + [ "ch_spo2_valid", "_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024", null ], + [ "n_heart_rate", "_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f", null ], + [ "n_ir_buffer_length", "_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6", null ], + [ "n_spo2", "_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd", null ], + [ "uch_dummy", "_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html new file mode 100644 index 000000000..bb557886f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_r_d117___a_r_d_u_i_n_o_8ino_source.html @@ -0,0 +1,330 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/RD117_ARDUINO.ino Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_r_d117___a_r_d_u_i_n_o_8ino_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">RD117_ARDUINO.ino</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_r_d117___a_r_d_u_i_n_o_8ino.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">*</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">*</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">*</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">*</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor">#include <Arduino.h></span></div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span> <span class="preprocessor">#include "<a class="code" href="algorithm_8h.html">algorithm.h</a>"</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor">#include "<a class="code" href="max30102_8h.html">max30102.h</a>"</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span> </div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> <span class="comment">//if Adafruit Flora development board is chosen, include NeoPixel library and define an NeoPixel object</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span> <span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"></span><span class="preprocessor">#include "<a class="code" href="_adafruit___neo_pixel_8h.html">adafruit_neopixel.h</a>"</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#define BRIGHTNESS_DIVISOR 8 //to lower the max brightness of the neopixel LED</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span> <span class="preprocessor"></span><a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> LED = <a class="code" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a>(1, 8, <a class="code" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a> + <a class="code" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>);</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387"> 88</a></span> <span class="preprocessor">#define MAX_BRIGHTNESS 255</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"></span><span class="comment">//Arduino Uno doesn't have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated. Samples become 16-bit data.</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> uint16_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[100]; <span class="comment">//infrared LED sensor data</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> uint16_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[100]; <span class="comment">//red LED sensor data</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589"> 96</a></span> <span class="preprocessor"></span>uint32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[100]; <span class="comment">//infrared LED sensor data</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe"> 97</a></span> uint32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[100]; <span class="comment">//red LED sensor data</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6"> 99</a></span> <span class="preprocessor"></span>int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>; <span class="comment">//data length</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd"> 100</a></span> int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>; <span class="comment">//SPO2 value</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024"> 101</a></span> int8_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>; <span class="comment">//indicator to show if the SPO2 calculation is valid</span></div> +<div class="line"><a name="l00102"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f"> 102</a></span> int32_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>; <span class="comment">//heart rate value</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280"> 103</a></span> int8_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>; <span class="comment">//indicator to show if the heart rate calculation is valid</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2"> 104</a></span> uint8_t <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>;</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> </div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// the setup routine runs once when you press reset:</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d"> 108</a></span> <span class="keywordtype">void</span> <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d">setup</a>() {</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB) </span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="preprocessor"></span> pinMode(13, OUTPUT); <span class="comment">//LED output pin on Lilypad</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span> <span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="preprocessor"></span> <span class="comment">//Initialize the LED</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  LED.<a class="code" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a>();</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  LED.<a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>();</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(); <span class="comment">//resets the MAX30102</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="comment">// initialize serial communication at 115200 bits per second:</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  Serial.begin(115200);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  pinMode(10, INPUT); <span class="comment">//pin D10 connects to the interrupt output pin of the MAX30102</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  delay(1000);</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>,&<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>); <span class="comment">//Reads/clears the interrupt status register</span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">while</span>(Serial.available()==0) <span class="comment">//wait until user presses a key</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  {</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  Serial.write(27); <span class="comment">// ESC command</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  Serial.print(F(<span class="stringliteral">"[2J"</span>)); <span class="comment">// clear screen command</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB) </span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"></span> Serial.println(F(<span class="stringliteral">"Lilypad"</span>));</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="preprocessor"></span><span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="preprocessor"></span> Serial.println(F(<span class="stringliteral">"Adafruit Flora"</span>));</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor"></span> Serial.println(F(<span class="stringliteral">"Press any key to start conversion"</span>));</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  delay(1000);</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  }</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>=Serial.read();</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>(); <span class="comment">//initialize the MAX30102</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> }</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> </div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// the loop routine runs over and over again forever:</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f"> 144</a></span> <span class="keywordtype">void</span> <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f">loop</a>() {</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  uint32_t un_min, un_max, un_prev_data, un_brightness; <span class="comment">//variables to calculate the on-board LED brightness that reflects the heartbeats</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  int32_t i;</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <span class="keywordtype">float</span> f_temp;</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  </div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  un_brightness=0;</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  un_min=0x3FFFF;</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  un_max=0;</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  </div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>=100; <span class="comment">//buffer length of 100 stores 4 seconds of samples running at 25sps</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//read the first 100 samples, and determine the signal range</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="keywordflow">for</span>(i=0;i<<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>;i++)</div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  {</div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="keywordflow">while</span>(digitalRead(10)==1); <span class="comment">//wait until the interrupt pin asserts</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>+i), (<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>+i)); <span class="comment">//read from MAX30102 FIFO</span></div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  </div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  <span class="keywordflow">if</span>(un_min><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  un_min=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]; <span class="comment">//update signal min</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  <span class="keywordflow">if</span>(un_max<<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  un_max=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]; <span class="comment">//update signal max</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  Serial.print(F(<span class="stringliteral">"red="</span>));</div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i], DEC);</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  Serial.print(F(<span class="stringliteral">", ir="</span>));</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  Serial.println(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i], DEC);</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  }</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  un_prev_data=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">//calculate heart rate and SpO2 after first 100 samples (first 4 seconds of samples)</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> </div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="comment">//Continuously taking samples from MAX30102. Heart rate and SpO2 are calculated every 1 second</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">while</span>(1)</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  {</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  i=0;</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  un_min=0x3FFFF;</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  un_max=0;</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> </div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="comment">//dumping the first 25 sets of samples in the memory and shift the last 75 sets of samples to the top</span></div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">for</span>(i=25;i<100;i++)</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  {</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i-25]=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i-25]=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i];</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> </div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="comment">//update the signal min and max</span></div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  <span class="keywordflow">if</span>(un_min><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  un_min=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  <span class="keywordflow">if</span>(un_max<<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  un_max=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  }</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span> </div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="comment">//take 25 sets of samples before calculating the heart rate.</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  <span class="keywordflow">for</span>(i=75;i<100;i++)</div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  {</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  un_prev_data=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i-1];</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">while</span>(digitalRead(10)==1);</div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  digitalWrite(9, !digitalRead(9));</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>+i), (<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>+i));</div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="comment">//calculate the brightness of the LED</span></div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  <span class="keywordflow">if</span>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]>un_prev_data)</div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  {</div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  f_temp=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i]-un_prev_data;</div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  f_temp/=(un_max-un_min);</div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  f_temp*=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  f_temp=un_brightness-f_temp;</div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <span class="keywordflow">if</span>(f_temp<0)</div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  un_brightness=0;</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  un_brightness=(int)f_temp;</div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  }</div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  {</div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  f_temp=un_prev_data-<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  f_temp/=(un_max-un_min);</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  f_temp*=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  un_brightness+=(int)f_temp;</div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  <span class="keywordflow">if</span>(un_brightness><a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>)</div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  un_brightness=<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  }</div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor">#if defined(ARDUINO_AVR_LILYPAD_USB) </span></div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> <span class="preprocessor"></span> analogWrite(13, un_brightness);</div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8)</span></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"></span> LED.<a class="code" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a>(0, un_brightness/BRIGHTNESS_DIVISOR, 0, 0);</div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  LED.<a class="code" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a>();</div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="comment">//send samples and calculation result to terminal program through UART</span></div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  Serial.print(F(<span class="stringliteral">"red="</span>));</div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>[i], DEC);</div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  Serial.print(F(<span class="stringliteral">", ir="</span>));</div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>[i], DEC);</div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  </div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  Serial.print(F(<span class="stringliteral">", HR="</span>));</div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, DEC);</div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  </div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  Serial.print(F(<span class="stringliteral">", HRvalid="</span>));</div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>, DEC);</div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  </div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  Serial.print(F(<span class="stringliteral">", SPO2="</span>));</div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  Serial.print(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, DEC);</div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span> </div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  Serial.print(F(<span class="stringliteral">", SPO2Valid="</span>));</div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  Serial.println(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, DEC);</div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  }</div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a602d2fccfb9f55d84f81b0c4d6f01589">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#aac1c23af668ef1d6750bfd4a5f6422fe">aun_red_buffer</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a54d8056bd9812e0b8f73f911dcc21dfd">n_spo2</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &<a class="code" href="_r_d117___a_r_d_u_i_n_o_8ino.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  }</div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> }</div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span>  </div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html new file mode 100644 index 000000000..7ac8bbe70 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.html @@ -0,0 +1,654 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/SoftI2CMaster.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_soft_i2_c_master_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">SoftI2CMaster.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <avr/io.h></code><br/> +<code>#include <Arduino.h></code><br/> +</div> +<p><a href="_soft_i2_c_master_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:ae00bf2b1fa56ce97ea467dc60682022c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c">SOFTI2DMASTER_H_</a></td></tr> +<tr class="separator:ae00bf2b1fa56ce97ea467dc60682022c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa3215f0aa766367f5d34bee80929152"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152">I2C_TIMEOUT</a>   100</td></tr> +<tr class="separator:afa3215f0aa766367f5d34bee80929152"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a206ca6aa556565db88a5302050eb3936"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a>   0</td></tr> +<tr class="separator:a206ca6aa556565db88a5302050eb3936"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0e1c9e6ca00fe824f98e8b7310589f5f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f">I2C_SLOWMODE</a>   1</td></tr> +<tr class="separator:a0e1c9e6ca00fe824f98e8b7310589f5f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a8c3c7226e23b36189d1ec6b7d3504499"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>   1</td></tr> +<tr class="separator:a8c3c7226e23b36189d1ec6b7d3504499"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9e64b8013968d3d107154c4044643481"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>   (F_CPU/<a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>)</td></tr> +<tr class="separator:a9e64b8013968d3d107154c4044643481"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3bf497cc1d59d184775241e80a21085e"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e">_SOFTI2C_H</a>   1</td></tr> +<tr class="separator:a3bf497cc1d59d184775241e80a21085e"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a954e80e3d9812f381eb05af7e7081cc2"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2">I2C_FASTMODE</a>   0</td></tr> +<tr class="separator:a954e80e3d9812f381eb05af7e7081cc2"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae704dfa4c0384f5d618fbfd14e0dec80"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80">I2C_TIMEOUT_DELAY_LOOPS</a>   (<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/1000UL)*I2C_TIMEOUT/4000UL</td></tr> +<tr class="separator:ae704dfa4c0384f5d618fbfd14e0dec80"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a970e76c45294e29445ecbf139e6c386a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>   1</td></tr> +<tr class="separator:a970e76c45294e29445ecbf139e6c386a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2af652afc14dc884cb2b42683d45c8df"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a>   (((<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/25000L)/2-19)/3)</td></tr> +<tr class="separator:a2af652afc14dc884cb2b42683d45c8df"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab5c0fbe837494c5f9130a5914854250d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d">I2C_READ</a>   1</td></tr> +<tr class="separator:ab5c0fbe837494c5f9130a5914854250d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9536bf85bced4f4e549a82fb18eb6140"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140">I2C_WRITE</a>   0</td></tr> +<tr class="separator:a9536bf85bced4f4e549a82fb18eb6140"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a16bb6708250d17ee2118d29e4865a653"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>   (_SFR_IO_ADDR(SDA_PORT) - 1)</td></tr> +<tr class="separator:a16bb6708250d17ee2118d29e4865a653"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5020a160f5b8f0a1697cfadbe778424b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>   (_SFR_IO_ADDR(SCL_PORT) - 1)</td></tr> +<tr class="separator:a5020a160f5b8f0a1697cfadbe778424b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae154abbe60d159b6f4951ade68cc5fae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae">SDA_OUT</a>   _SFR_IO_ADDR(SDA_PORT)</td></tr> +<tr class="separator:ae154abbe60d159b6f4951ade68cc5fae"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a07204a69a1872edbb272cde4d0c1e23f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f">SCL_OUT</a>   _SFR_IO_ADDR(SCL_PORT)</td></tr> +<tr class="separator:a07204a69a1872edbb272cde4d0c1e23f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac4b553fc156d15aeeeaaf6cfe7695c83"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>   (_SFR_IO_ADDR(SDA_PORT) - 2)</td></tr> +<tr class="separator:ac4b553fc156d15aeeeaaf6cfe7695c83"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a10c618a025b8bdb8ea596fdc24197f49"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>   (_SFR_IO_ADDR(SCL_PORT) - 2)</td></tr> +<tr class="separator:a10c618a025b8bdb8ea596fdc24197f49"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0e6fc492b674d6ccceccb06e3bbf907b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b">__tmp_reg__</a>   0</td></tr> +<tr class="separator:a0e6fc492b674d6ccceccb06e3bbf907b"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a342f1dd5ca489cfb78fffa200fcee9d9"><td class="memItemLeft" align="right" valign="top">boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="el" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(void)</td></tr> +<tr class="separator:a342f1dd5ca489cfb78fffa200fcee9d9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2ccdf1a08647bd236d7988a794dc403c"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a> (void)</td></tr> +<tr class="separator:a2ccdf1a08647bd236d7988a794dc403c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a55c46a9ce2c4eaec0c5878436a4a6b5b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a> (void)</td></tr> +<tr class="separator:a55c46a9ce2c4eaec0c5878436a4a6b5b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad5dc48c57198db1ee444a61405d2ea3d"><td class="memItemLeft" align="right" valign="top">boolean </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a> (void)</td></tr> +<tr class="separator:ad5dc48c57198db1ee444a61405d2ea3d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a876a5d83cf8b5fa662b04a81657d8d30"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a> (uint8_t addr)</td></tr> +<tr class="separator:a876a5d83cf8b5fa662b04a81657d8d30"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a68105c3bb259544bcc000c21b8e5d355"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a> (uint8_t addr)</td></tr> +<tr class="separator:a68105c3bb259544bcc000c21b8e5d355"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5e2e89e9b3cb2a075d3d46bb148a42e9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a> (uint8_t addr)</td></tr> +<tr class="separator:a5e2e89e9b3cb2a075d3d46bb148a42e9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad35d4e4f52ca74b503d5e5e1e0a3f5f3"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a> (void)</td></tr> +<tr class="separator:ad35d4e4f52ca74b503d5e5e1e0a3f5f3"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5abe73d680cae254aafa5227e6d87a13"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a> (uint8_t value)</td></tr> +<tr class="separator:a5abe73d680cae254aafa5227e6d87a13"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a717c8440b070832a7d3375cfd5a526ef"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a> (bool last)</td></tr> +<tr class="separator:a717c8440b070832a7d3375cfd5a526ef"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a0e6fc492b674d6ccceccb06e3bbf907b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define __tmp_reg__   0</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00199">199</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3bf497cc1d59d184775241e80a21085e"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define _SOFTI2C_H   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00085">85</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a8c3c7226e23b36189d1ec6b7d3504499"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define FAC   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00081">81</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9e64b8013968d3d107154c4044643481"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_CPUFREQ   (F_CPU/<a class="el" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499">FAC</a>)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00082">82</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a2af652afc14dc884cb2b42683d45c8df"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_DELAY_COUNTER   (((<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/25000L)/2-19)/3)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00174">174</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a954e80e3d9812f381eb05af7e7081cc2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_FASTMODE   0</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00129">129</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a970e76c45294e29445ecbf139e6c386a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_MAX_STRETCH   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00161">161</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a206ca6aa556565db88a5302050eb3936"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_NOINTERRUPT   0</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00079">79</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab5c0fbe837494c5f9130a5914854250d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_READ   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00187">187</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a0e1c9e6ca00fe824f98e8b7310589f5f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_SLOWMODE   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00080">80</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="afa3215f0aa766367f5d34bee80929152"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_TIMEOUT   100</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00078">78</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae704dfa4c0384f5d618fbfd14e0dec80"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_TIMEOUT_DELAY_LOOPS   (<a class="el" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481">I2C_CPUFREQ</a>/1000UL)*I2C_TIMEOUT/4000UL</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00159">159</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9536bf85bced4f4e549a82fb18eb6140"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_WRITE   0</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00188">188</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5020a160f5b8f0a1697cfadbe778424b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCL_DDR   (_SFR_IO_ADDR(SCL_PORT) - 1)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00192">192</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a10c618a025b8bdb8ea596fdc24197f49"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCL_IN   (_SFR_IO_ADDR(SCL_PORT) - 2)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00196">196</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a07204a69a1872edbb272cde4d0c1e23f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SCL_OUT   _SFR_IO_ADDR(SCL_PORT)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00194">194</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a16bb6708250d17ee2118d29e4865a653"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SDA_DDR   (_SFR_IO_ADDR(SDA_PORT) - 1)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00191">191</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ac4b553fc156d15aeeeaaf6cfe7695c83"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SDA_IN   (_SFR_IO_ADDR(SDA_PORT) - 2)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00195">195</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae154abbe60d159b6f4951ade68cc5fae"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SDA_OUT   _SFR_IO_ADDR(SDA_PORT)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00193">193</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae00bf2b1fa56ce97ea467dc60682022c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define SOFTI2DMASTER_H_</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00059">59</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a342f1dd5ca489cfb78fffa200fcee9d9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void __attribute__ </td> + <td>(</td> + <td class="paramtype">(noinline) </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="a2ccdf1a08647bd236d7988a794dc403c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void i2c_delay_half </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00207">207</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad5dc48c57198db1ee444a61405d2ea3d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">boolean i2c_init </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00272">272</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a717c8440b070832a7d3375cfd5a526ef"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t i2c_read </td> + <td>(</td> + <td class="paramtype">bool </td> + <td class="paramname"><em>last</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00462">462</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a68105c3bb259544bcc000c21b8e5d355"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool i2c_rep_start </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00313">313</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a876a5d83cf8b5fa662b04a81657d8d30"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool i2c_start </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00295">295</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5e2e89e9b3cb2a075d3d46bb148a42e9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void i2c_start_wait </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>addr</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00338">338</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad35d4e4f52ca74b503d5e5e1e0a3f5f3"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void i2c_stop </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00365">365</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a55c46a9ce2c4eaec0c5878436a4a6b5b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void i2c_wait_scl_high </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00225">225</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5abe73d680cae254aafa5227e6d87a13"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool i2c_write </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>value</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_soft_i2_c_master_8h_source.html#l00385">385</a> of file <a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js new file mode 100644 index 000000000..bc44398ce --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h.js @@ -0,0 +1,33 @@ +var _soft_i2_c_master_8h = +[ + [ "__tmp_reg__", "_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b", null ], + [ "_SOFTI2C_H", "_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e", null ], + [ "FAC", "_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499", null ], + [ "I2C_CPUFREQ", "_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481", null ], + [ "I2C_DELAY_COUNTER", "_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df", null ], + [ "I2C_FASTMODE", "_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2", null ], + [ "I2C_MAX_STRETCH", "_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a", null ], + [ "I2C_NOINTERRUPT", "_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936", null ], + [ "I2C_READ", "_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d", null ], + [ "I2C_SLOWMODE", "_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f", null ], + [ "I2C_TIMEOUT", "_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152", null ], + [ "I2C_TIMEOUT_DELAY_LOOPS", "_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80", null ], + [ "I2C_WRITE", "_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140", null ], + [ "SCL_DDR", "_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b", null ], + [ "SCL_IN", "_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49", null ], + [ "SCL_OUT", "_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f", null ], + [ "SDA_DDR", "_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653", null ], + [ "SDA_IN", "_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83", null ], + [ "SDA_OUT", "_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae", null ], + [ "SOFTI2DMASTER_H_", "_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c", null ], + [ "__attribute__", "_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9", null ], + [ "i2c_delay_half", "_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c", null ], + [ "i2c_init", "_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d", null ], + [ "i2c_read", "_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef", null ], + [ "i2c_rep_start", "_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355", null ], + [ "i2c_start", "_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30", null ], + [ "i2c_start_wait", "_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9", null ], + [ "i2c_stop", "_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3", null ], + [ "i2c_wait_scl_high", "_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b", null ], + [ "i2c_write", "_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html new file mode 100644 index 000000000..c7e7c80fb --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/_soft_i2_c_master_8h_source.html @@ -0,0 +1,655 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/SoftI2CMaster.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('_soft_i2_c_master_8h_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">SoftI2CMaster.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="_soft_i2_c_master_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> <span class="comment">/* Arduino SoftI2C library. </span></div> +<div class="line"><a name="l00002"></a><span class="lineno"> 2</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00003"></a><span class="lineno"> 3</span> <span class="comment"> * This is a very fast and very light-weight software I2C-master library </span></div> +<div class="line"><a name="l00004"></a><span class="lineno"> 4</span> <span class="comment"> * written in assembler. It is based on Peter Fleury's I2C software</span></div> +<div class="line"><a name="l00005"></a><span class="lineno"> 5</span> <span class="comment"> * library: http://homepage.hispeed.ch/peterfleury/avr-software.html</span></div> +<div class="line"><a name="l00006"></a><span class="lineno"> 6</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00007"></a><span class="lineno"> 7</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00008"></a><span class="lineno"> 8</span> <span class="comment"> * This Library is free software: you can redistribute it and/or modify</span></div> +<div class="line"><a name="l00009"></a><span class="lineno"> 9</span> <span class="comment"> * it under the terms of the GNU General Public License as published by</span></div> +<div class="line"><a name="l00010"></a><span class="lineno"> 10</span> <span class="comment"> * the Free Software Foundation, either version 3 of the License, or</span></div> +<div class="line"><a name="l00011"></a><span class="lineno"> 11</span> <span class="comment"> * (at your option) any later version.</span></div> +<div class="line"><a name="l00012"></a><span class="lineno"> 12</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00013"></a><span class="lineno"> 13</span> <span class="comment"> * This Library is distributed in the hope that it will be useful,</span></div> +<div class="line"><a name="l00014"></a><span class="lineno"> 14</span> <span class="comment"> * but WITHOUT ANY WARRANTY; without even the implied warranty of</span></div> +<div class="line"><a name="l00015"></a><span class="lineno"> 15</span> <span class="comment"> * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the</span></div> +<div class="line"><a name="l00016"></a><span class="lineno"> 16</span> <span class="comment"> * GNU General Public License for more details.</span></div> +<div class="line"><a name="l00017"></a><span class="lineno"> 17</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00018"></a><span class="lineno"> 18</span> <span class="comment"> * You should have received a copy of the GNU General Public License</span></div> +<div class="line"><a name="l00019"></a><span class="lineno"> 19</span> <span class="comment"> * along with the Arduino I2cMaster Library. If not, see</span></div> +<div class="line"><a name="l00020"></a><span class="lineno"> 20</span> <span class="comment"> * <http://www.gnu.org/licenses/>.</span></div> +<div class="line"><a name="l00021"></a><span class="lineno"> 21</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00022"></a><span class="lineno"> 22</span> </div> +<div class="line"><a name="l00023"></a><span class="lineno"> 23</span> <span class="comment">/* In order to use the library, you need to define SDA_PIN, SCL_PIN,</span></div> +<div class="line"><a name="l00024"></a><span class="lineno"> 24</span> <span class="comment"> * SDA_PORT and SCL_PORT before including this file. Have a look at</span></div> +<div class="line"><a name="l00025"></a><span class="lineno"> 25</span> <span class="comment"> * http://www.arduino.cc/en/Reference/PortManipulation for finding out</span></div> +<div class="line"><a name="l00026"></a><span class="lineno"> 26</span> <span class="comment"> * which values to use. For example, if you use digital pin 3 (corresponding </span></div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment"> * to PD3) for SDA and digital pin 13 (corresponding to PB5)</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment"> * for SCL on a standard Arduino,</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment"> * you have to use the following definitions: </span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment"> * #define SDA_PIN 3 </span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment"> * #define SDA_PORT PORTD</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment"> * #define SCL_PIN 5</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment"> * #define SCL_PORT PORTB</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment"> *</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment"> * You can also define the following constants (see also below):</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment"> * - I2C_CPUFREQ, when changing CPU clock frequency dynamically</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment"> * - I2C_FASTMODE = 1 meaning that the I2C bus allows speeds up to 400 kHz</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment"> * - I2C_SLOWMODE = 1 meaning that the I2C bus will allow only up to 25 kHz </span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment"> * - I2C_NOINTERRUPT = 1 in order to prohibit interrupts while </span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment"> * communicating (see below). This can be useful if you use the library </span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment"> * for communicationg with SMbus devices, which have timeouts.</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment"> * Note, however, that interrupts are disabled from issuing a start condition</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment"> * until issuing a stop condition. So use this option with care!</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment"> * - I2C_TIMEOUT = 0..10000 mssec in order to return from the I2C functions</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment"> * in case of a I2C bus lockup (i.e., SCL constantly low). 0 means no timeout</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> </div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">/* Changelog:</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment"> * Version 1.1: </span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment"> * - removed I2C_CLOCK_STRETCHING</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment"> * - added I2C_TIMEOUT time in msec (0..10000) until timeout or 0 if no timeout</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment"> * - changed i2c_init to return true iff both SDA and SCL are high</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment"> * - changed interrupt disabling so that the previous IRQ state is restored</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment"> * Version 1.0: basic functionality</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment"> */</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> </div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="preprocessor">#ifndef SOFTI2CMASTER_H_</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00059"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c"> 59</a></span> <span class="preprocessor">#define SOFTI2DMASTER_H_</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="preprocessor">#include <avr/io.h></span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include <Arduino.h></span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> </div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#if defined(ARDUINO_AVR_FLORA8) || defined(ARDUINO_AVR_LILYPAD_USB)</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_PORT PORTD</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_PIN 1</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"> 67</span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_PORT PORTD</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_PIN 0</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"> 70</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00071"></a><span class="lineno"> 71</span> <span class="preprocessor">#ifdef ARDUINO_AVR_UNO</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"> 72</span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_PORT PORTC</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"> 73</span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_PIN 4</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_PORT PORTC</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_PIN 5</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#afa3215f0aa766367f5d34bee80929152"> 78</a></span> <span class="preprocessor">#define I2C_TIMEOUT 100</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936"> 79</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_NOINTERRUPT 0</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a0e1c9e6ca00fe824f98e8b7310589f5f"> 80</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_SLOWMODE 1</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a8c3c7226e23b36189d1ec6b7d3504499"> 81</a></span> <span class="preprocessor"></span><span class="preprocessor">#define FAC 1</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a9e64b8013968d3d107154c4044643481"> 82</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_CPUFREQ (F_CPU/FAC)</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span> <span class="preprocessor">#ifndef _SOFTI2C_H</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e"> 85</a></span> <span class="preprocessor"></span><span class="preprocessor">#define _SOFTI2C_H 1</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> <span class="comment">// Init function. Needs to be called once in the beginning.</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="comment">// Returns false if SDA or SCL are low, which probably means </span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="comment">// a I2C bus lockup or that the lines are not pulled up.</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keywordtype">boolean</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(<span class="keywordtype">void</span>);</div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="comment">// Start transfer function: <addr> is the 8-bit I2C address (including the R/W</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="comment">// bit). </span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(uint8_t addr); </div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> </div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="comment">// Similar to start function, but wait for an ACK! Be careful, this can </span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="comment">// result in an infinite loop!</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a>(uint8_t addr);</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> </div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="comment">// Repeated start function: After having claimed the bus with a start condition,</span></div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// you can address another or the same chip again without an intervening </span></div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="comment">// stop condition.</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(uint8_t addr);</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span> </div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span> <span class="comment">// Issue a stop condition, freeing the bus.</span></div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>(<span class="keywordtype">void</span>) asm("ass_i2c_stop");</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> </div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> <span class="comment">// Write one byte to the slave chip that had been addressed</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span> <span class="comment">// by the previous start call. <value> is the byte to be sent.</span></div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span> <span class="comment">// Return: true if the slave replies with an "acknowledge", false otherwise</span></div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uint8_t value) asm("ass_i2c_write");</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span> <span class="comment">// Read one byte. If <last> is true, we send a NAK after having received </span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span> <span class="comment">// the byte in order to terminate the read sequence. </span></div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span> uint8_t <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keywordtype">bool</span> last);</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span> </div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span> <span class="comment">// You can set I2C_CPUFREQ independently of F_CPU if you </span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span> <span class="comment">// change the CPU frequency on the fly. If you do not define it,</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> <span class="comment">// it will use the value of F_CPU</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span> <span class="preprocessor">#ifndef I2C_CPUFREQ</span></div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_CPUFREQ F_CPU</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span> <span class="comment">// If I2C_FASTMODE is set to 1, then the highest possible frequency below 400kHz</span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span> <span class="comment">// is selected. Be aware that not all slave chips may be able to deal with that!</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> <span class="preprocessor">#ifndef I2C_FASTMODE</span></div> +<div class="line"><a name="l00129"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a954e80e3d9812f381eb05af7e7081cc2"> 129</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_FASTMODE 0</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span> <span class="comment">// If I2C_FASTMODE is not defined or defined to be 0, then you can set</span></div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span> <span class="comment">// I2C_SLOWMODE to 1. In this case, the I2C frequency will not be higher </span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span> <span class="comment">// than 25KHz. This could be useful for problematic buses.</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span> <span class="preprocessor">#ifndef I2C_SLOWMODE</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_SLOWMODE 0</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span> <span class="comment">// if I2C_NOINTERRUPT is 1, then the I2C routines are not interruptable.</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span> <span class="comment">// This is most probably only necessary if you are using a 1MHz system clock,</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span> <span class="comment">// you are communicating with a SMBus device, and you want to avoid timeouts.</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span> <span class="comment">// Be aware that the interrupt bit is enabled after each call. So the</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span> <span class="comment">// I2C functions should not be called in interrupt routines or critical regions.</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span> <span class="preprocessor">#ifndef I2C_NOINTERRUPT</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_NOINTERRUPT 0</span></div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> <span class="comment">// I2C_TIMEOUT can be set to a value between 1 and 10000.</span></div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="comment">// If it is defined and nonzero, it leads to a timeout if the</span></div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="comment">// SCL is low longer than I2C_TIMEOUT milliseconds, i.e., max timeout is 10 sec</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="preprocessor">#ifndef I2C_TIMEOUT</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_TIMEOUT 0</span></div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor"></span><span class="preprocessor">#else </span></div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> <span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT > 10000</span></div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor"></span><span class="preprocessor">#error I2C_TIMEOUT is too large</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00159"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae704dfa4c0384f5d618fbfd14e0dec80"> 159</a></span> <span class="preprocessor">#define I2C_TIMEOUT_DELAY_LOOPS (I2C_CPUFREQ/1000UL)*I2C_TIMEOUT/4000UL</span></div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span> <span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS < 1</span></div> +<div class="line"><a name="l00161"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a"> 161</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH 1</span></div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span> <span class="preprocessor"></span><span class="preprocessor">#else</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span> <span class="preprocessor"></span><span class="preprocessor">#if I2C_TIMEOUT_DELAY_LOOPS > 60000UL</span></div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH 60000UL</span></div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span> <span class="preprocessor"></span><span class="preprocessor">#else</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_MAX_STRETCH I2C_TIMEOUT_DELAY_LOOPS</span></div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span> <span class="preprocessor">#if I2C_FASTMODE</span></div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/400000L)/2-19)/3)</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span> <span class="preprocessor"></span><span class="preprocessor">#else</span></div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span> <span class="preprocessor"></span><span class="preprocessor">#if I2C_SLOWMODE</span></div> +<div class="line"><a name="l00174"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df"> 174</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/25000L)/2-19)/3)</span></div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span> <span class="preprocessor"></span><span class="preprocessor">#else</span></div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_DELAY_COUNTER (((I2C_CPUFREQ/100000L)/2-19)/3)</span></div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span> <span class="comment">// Table of I2C bus speed in kbit/sec:</span></div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span> <span class="comment">// CPU clock: 1MHz 2MHz 4MHz 8MHz 16MHz 20MHz</span></div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span> <span class="comment">// Fast I2C mode 40 80 150 300 400 400</span></div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span> <span class="comment">// Standard I2C mode 40 80 100 100 100 100</span></div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span> <span class="comment">// Slow I2C mode 25 25 25 25 25 25 </span></div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span> </div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span> <span class="comment">// constants for reading & writing</span></div> +<div class="line"><a name="l00187"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ab5c0fbe837494c5f9130a5914854250d"> 187</a></span> <span class="preprocessor">#define I2C_READ 1</span></div> +<div class="line"><a name="l00188"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a9536bf85bced4f4e549a82fb18eb6140"> 188</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_WRITE 0</span></div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span> <span class="comment">// map the IO register back into the IO address space</span></div> +<div class="line"><a name="l00191"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653"> 191</a></span> <span class="preprocessor">#define SDA_DDR (_SFR_IO_ADDR(SDA_PORT) - 1)</span></div> +<div class="line"><a name="l00192"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b"> 192</a></span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_DDR (_SFR_IO_ADDR(SCL_PORT) - 1)</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae"> 193</a></span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_OUT _SFR_IO_ADDR(SDA_PORT)</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f"> 194</a></span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_OUT _SFR_IO_ADDR(SCL_PORT)</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83"> 195</a></span> <span class="preprocessor"></span><span class="preprocessor">#define SDA_IN (_SFR_IO_ADDR(SDA_PORT) - 2)</span></div> +<div class="line"><a name="l00196"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49"> 196</a></span> <span class="preprocessor"></span><span class="preprocessor">#define SCL_IN (_SFR_IO_ADDR(SCL_PORT) - 2)</span></div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span> <span class="preprocessor">#ifndef __tmp_reg__</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b"> 199</a></span> <span class="preprocessor"></span><span class="preprocessor">#define __tmp_reg__ 0</span></div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> <span class="preprocessor"></span><span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  </div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="comment">// Internal delay functions.</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a>(<span class="keywordtype">void</span>) asm("ass_i2c_delay_half");</div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9">__attribute__</a> ((noinline)) <a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a>(<span class="keywordtype">void</span>) asm("ass_i2c_wait_scl_high");</div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> </div> +<div class="line"><a name="l00207"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c"> 207</a></span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a2ccdf1a08647bd236d7988a794dc403c">i2c_delay_half</a>(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span> { <span class="comment">// function call 3 cycles => 3C</span></div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span> <span class="preprocessor">#if I2C_DELAY_COUNTER < 1</span></div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span> <span class="preprocessor"></span> __asm__ __volatile__ (<span class="stringliteral">" ret"</span>);</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="comment">// 7 cycles for call and return</span></div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span> <span class="preprocessor"></span> __asm__ __volatile__ </div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  (</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="stringliteral">" ldi r25, %[DELAY] ;load delay constant ;; 4C \n\t"</span></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="stringliteral">"_Lidelay: \n\t"</span></div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  <span class="stringliteral">" dec r25 ;decrement counter ;; 4C+xC \n\t"</span></div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  <span class="stringliteral">" brne _Lidelay ;;5C+(x-1)2C+xC\n\t"</span></div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  <span class="stringliteral">" ret ;; 9C+(x-1)2C+xC = 7C+xC"</span> </div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  : : [DELAY] <span class="stringliteral">"M"</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> : <span class="stringliteral">"r25"</span>);</div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  <span class="comment">// 7 cycles + 3 times x cycles</span></div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span> <span class="preprocessor"></span>}</div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span> </div> +<div class="line"><a name="l00225"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b"> 225</a></span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a55c46a9ce2c4eaec0c5878436a4a6b5b">i2c_wait_scl_high</a>(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span> {</div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span> <span class="preprocessor">#if I2C_TIMEOUT <= 0</span></div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span> <span class="preprocessor"></span> __asm__ __volatile__ </div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  (<span class="stringliteral">"_Li2c_wait_stretch: \n\t"</span></div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait for SCL high \n\t"</span> </div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  <span class="stringliteral">" rjmp _Li2c_wait_stretch \n\t"</span></div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  <span class="stringliteral">" cln ;signal: no timeout \n\t"</span></div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  : : [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN));</div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> <span class="preprocessor"></span> __asm__ __volatile__ </div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  ( <span class="stringliteral">" ldi r27, %[HISTRETCH] ;load delay counter \n\t"</span></div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  <span class="stringliteral">" ldi r26, %[LOSTRETCH] \n\t"</span></div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="stringliteral">"_Lwait_stretch: \n\t"</span></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  <span class="stringliteral">" clr __tmp_reg__ ;do next loop 255 times \n\t"</span></div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span>  <span class="stringliteral">"_Lwait_stretch_inner_loop: \n\t"</span></div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="stringliteral">" rcall _Lcheck_scl_level ;call check function ;; 12C \n\t"</span></div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  <span class="stringliteral">" brpl _Lstretch_done ;done if N=0 ;; +1 = 13C\n\t"</span></div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  <span class="stringliteral">" dec __tmp_reg__ ;dec inner loop counter;; +1 = 14C\n\t"</span></div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  <span class="stringliteral">" brne _Lwait_stretch_inner_loop ;; +2 = 16C\n\t"</span></div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  <span class="stringliteral">" sbiw r26,1 ;dec outer loop counter \n\t"</span></div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="stringliteral">" brne _Lwait_stretch ;continue with outer loop \n\t"</span></div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  <span class="stringliteral">" sen ;timeout -> set N-bit=1 \n\t"</span></div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  <span class="stringliteral">" rjmp _Lwait_return ;and return with N=1\n\t"</span></div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  <span class="stringliteral">"_Lstretch_done: ;SCL=1 sensed \n\t"</span> </div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span>  <span class="stringliteral">" cln ;OK -> clear N-bit \n\t"</span></div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span>  <span class="stringliteral">" rjmp _Lwait_return ; and return with N=0 \n\t"</span></div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div> +<div class="line"><a name="l00254"></a><span class="lineno"> 254</span>  <span class="stringliteral">"_Lcheck_scl_level: ;; call = 3C\n\t"</span></div> +<div class="line"><a name="l00255"></a><span class="lineno"> 255</span>  <span class="stringliteral">" cln ;; +1C = 4C \n\t"</span></div> +<div class="line"><a name="l00256"></a><span class="lineno"> 256</span>  <span class="stringliteral">" sbic %[SCLIN],%[SCLPIN] ;skip if SCL still low ;; +2C = 6C \n\t"</span></div> +<div class="line"><a name="l00257"></a><span class="lineno"> 257</span>  <span class="stringliteral">" rjmp _Lscl_high ;; +0C = 6C \n\t"</span></div> +<div class="line"><a name="l00258"></a><span class="lineno"> 258</span>  <span class="stringliteral">" sen ;; +1 = 7C\n\t "</span></div> +<div class="line"><a name="l00259"></a><span class="lineno"> 259</span>  <span class="stringliteral">"_Lscl_high: "</span></div> +<div class="line"><a name="l00260"></a><span class="lineno"> 260</span>  <span class="stringliteral">" nop ;; +1C = 8C \n\t"</span></div> +<div class="line"><a name="l00261"></a><span class="lineno"> 261</span>  <span class="stringliteral">" ret ;return N-Bit=1 if low ;; +4 = 12C\n\t"</span></div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> </div> +<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <span class="stringliteral">"_Lwait_return:"</span></div> +<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  : : [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), </div> +<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  [HISTRETCH] <span class="stringliteral">"M"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>>>8), </div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span>  [LOSTRETCH] <span class="stringliteral">"M"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a970e76c45294e29445ecbf139e6c386a">I2C_MAX_STRETCH</a>&0xFF)</div> +<div class="line"><a name="l00267"></a><span class="lineno"> 267</span>  : <span class="stringliteral">"r26"</span>, <span class="stringliteral">"r27"</span>);</div> +<div class="line"><a name="l00268"></a><span class="lineno"> 268</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00269"></a><span class="lineno"> 269</span> <span class="preprocessor"></span>}</div> +<div class="line"><a name="l00270"></a><span class="lineno"> 270</span> </div> +<div class="line"><a name="l00271"></a><span class="lineno"> 271</span> </div> +<div class="line"><a name="l00272"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d"> 272</a></span> <span class="keywordtype">boolean</span> <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00273"></a><span class="lineno"> 273</span> {</div> +<div class="line"><a name="l00274"></a><span class="lineno"> 274</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00275"></a><span class="lineno"> 275</span>  (<span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00276"></a><span class="lineno"> 276</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  <span class="stringliteral">" cbi %[SDAOUT],%[SDAPIN] ;clear SDA output value \n\t"</span> </div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  <span class="stringliteral">" cbi %[SCLOUT],%[SCLPIN] ;clear SCL output value \n\t"</span> </div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  <span class="stringliteral">" clr r24 ;set return value to false \n\t"</span></div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="stringliteral">" clr r25 ;set return value to false \n\t"</span></div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="stringliteral">" sbis %[SDAIN],%[SDAPIN] ;check for SDA high\n\t"</span></div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  <span class="stringliteral">" ret ;if low return with false \n\t"</span> </div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for SCL high \n\t"</span></div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  <span class="stringliteral">" ret ;if low return with false \n\t"</span> </div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="stringliteral">" ldi r24,1 ;set return value to true \n\t"</span></div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  : :</div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  [SCLDDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), </div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>), [SCLOUT] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f">SCL_OUT</a>),</div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), </div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  [SDAIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>), [SDAOUT] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae">SDA_OUT</a>)); </div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span> }</div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span> </div> +<div class="line"><a name="l00295"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30"> 295</a></span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(uint8_t addr)</div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> {</div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span>  (</div> +<div class="line"><a name="l00299"></a><span class="lineno"> 299</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div> +<div class="line"><a name="l00300"></a><span class="lineno"> 300</span>  <span class="stringliteral">" cli ;clear IRQ bit \n\t"</span></div> +<div class="line"><a name="l00301"></a><span class="lineno"> 301</span> #endif</div> +<div class="line"><a name="l00302"></a><span class="lineno"> 302</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00303"></a><span class="lineno"> 303</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00304"></a><span class="lineno"> 304</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00305"></a><span class="lineno"> 305</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;wait T/2 \n\t"</span></div> +<div class="line"><a name="l00306"></a><span class="lineno"> 306</span>  <span class="stringliteral">" rcall ass_i2c_write ;now write address \n\t"</span></div> +<div class="line"><a name="l00307"></a><span class="lineno"> 307</span>  <span class="stringliteral">" ret"</span></div> +<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  : : [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN),</div> +<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),[SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN)); </div> +<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// we never return here!</span></div> +<div class="line"><a name="l00311"></a><span class="lineno"> 311</span> }</div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span> </div> +<div class="line"><a name="l00313"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355"> 313</a></span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(uint8_t addr)</div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span> {</div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00316"></a><span class="lineno"> 316</span> </div> +<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  (</div> +<div class="line"><a name="l00318"></a><span class="lineno"> 318</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div> +<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="stringliteral">" cli \n\t"</span></div> +<div class="line"><a name="l00320"></a><span class="lineno"> 320</span> #endif</div> +<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t"</span> </div> +<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00323"></a><span class="lineno"> 323</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00326"></a><span class="lineno"> 326</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00327"></a><span class="lineno"> 327</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00328"></a><span class="lineno"> 328</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00329"></a><span class="lineno"> 329</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00330"></a><span class="lineno"> 330</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00331"></a><span class="lineno"> 331</span>  <span class="stringliteral">" rcall ass_i2c_write \n\t"</span></div> +<div class="line"><a name="l00332"></a><span class="lineno"> 332</span>  <span class="stringliteral">" ret"</span></div> +<div class="line"><a name="l00333"></a><span class="lineno"> 333</span>  : : [SCLDDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN),[SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div> +<div class="line"><a name="l00334"></a><span class="lineno"> 334</span>  [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN)); </div> +<div class="line"><a name="l00335"></a><span class="lineno"> 335</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// just to fool the compiler</span></div> +<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> }</div> +<div class="line"><a name="l00337"></a><span class="lineno"> 337</span> </div> +<div class="line"><a name="l00338"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9"> 338</a></span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#a5e2e89e9b3cb2a075d3d46bb148a42e9">i2c_start_wait</a>(uint8_t addr)</div> +<div class="line"><a name="l00339"></a><span class="lineno"> 339</span> {</div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  (</div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  <span class="stringliteral">" push r24 ;save original parameter \n\t"</span></div> +<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  <span class="stringliteral">"_Li2c_start_wait1: \n\t"</span></div> +<div class="line"><a name="l00344"></a><span class="lineno"> 344</span>  <span class="stringliteral">" pop r24 ;restore original parameter\n\t"</span></div> +<div class="line"><a name="l00345"></a><span class="lineno"> 345</span>  <span class="stringliteral">" push r24 ;and save again \n\t"</span></div> +<div class="line"><a name="l00346"></a><span class="lineno"> 346</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div> +<div class="line"><a name="l00347"></a><span class="lineno"> 347</span>  <span class="stringliteral">" cli ;disable interrupts \n\t"</span></div> +<div class="line"><a name="l00348"></a><span class="lineno"> 348</span> #endif</div> +<div class="line"><a name="l00349"></a><span class="lineno"> 349</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00350"></a><span class="lineno"> 350</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00351"></a><span class="lineno"> 351</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00352"></a><span class="lineno"> 352</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 \n\t"</span> </div> +<div class="line"><a name="l00353"></a><span class="lineno"> 353</span>  <span class="stringliteral">" rcall ass_i2c_write ;write address \n\t"</span> </div> +<div class="line"><a name="l00354"></a><span class="lineno"> 354</span>  <span class="stringliteral">" tst r24 ;if device not busy -> done \n\t"</span> </div> +<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  <span class="stringliteral">" brne _Li2c_start_wait_done \n\t"</span> </div> +<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="stringliteral">" rcall ass_i2c_stop ;terminate write & enable IRQ \n\t"</span> </div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  <span class="stringliteral">" rjmp _Li2c_start_wait1 ;device busy, poll ack again \n\t"</span> </div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="stringliteral">"_Li2c_start_wait_done: \n\t"</span></div> +<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  <span class="stringliteral">" pop __tmp_reg__ ;pop off orig argument \n\t"</span></div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  <span class="stringliteral">" ret "</span></div> +<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  : : [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN),</div> +<div class="line"><a name="l00362"></a><span class="lineno"> 362</span>  [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),[SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN)); </div> +<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> }</div> +<div class="line"><a name="l00364"></a><span class="lineno"> 364</span> </div> +<div class="line"><a name="l00365"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3"> 365</a></span> <span class="keywordtype">void</span> <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>(<span class="keywordtype">void</span>)</div> +<div class="line"><a name="l00366"></a><span class="lineno"> 366</span> {</div> +<div class="line"><a name="l00367"></a><span class="lineno"> 367</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00368"></a><span class="lineno"> 368</span>  (</div> +<div class="line"><a name="l00369"></a><span class="lineno"> 369</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low \n\t"</span> </div> +<div class="line"><a name="l00370"></a><span class="lineno"> 370</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low \n\t"</span> </div> +<div class="line"><a name="l00371"></a><span class="lineno"> 371</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;T/2 delay \n\t"</span></div> +<div class="line"><a name="l00372"></a><span class="lineno"> 372</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL \n\t"</span> </div> +<div class="line"><a name="l00373"></a><span class="lineno"> 373</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;T/2 delay \n\t"</span></div> +<div class="line"><a name="l00374"></a><span class="lineno"> 374</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for clock stretching slave\n\t"</span></div> +<div class="line"><a name="l00375"></a><span class="lineno"> 375</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high ;wait until SCL=H\n\t"</span> </div> +<div class="line"><a name="l00376"></a><span class="lineno"> 376</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00377"></a><span class="lineno"> 377</span>  <span class="stringliteral">" rcall ass_i2c_delay_half \n\t"</span></div> +<div class="line"><a name="l00378"></a><span class="lineno"> 378</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a206ca6aa556565db88a5302050eb3936">I2C_NOINTERRUPT</a></div> +<div class="line"><a name="l00379"></a><span class="lineno"> 379</span>  <span class="stringliteral">" sei ;enable interrupts again!\n\t"</span></div> +<div class="line"><a name="l00380"></a><span class="lineno"> 380</span> #endif</div> +<div class="line"><a name="l00381"></a><span class="lineno"> 381</span>  : : [SCLDDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div> +<div class="line"><a name="l00382"></a><span class="lineno"> 382</span>  [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN)); </div> +<div class="line"><a name="l00383"></a><span class="lineno"> 383</span> }</div> +<div class="line"><a name="l00384"></a><span class="lineno"> 384</span> </div> +<div class="line"><a name="l00385"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13"> 385</a></span> <span class="keywordtype">bool</span> <a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uint8_t value)</div> +<div class="line"><a name="l00386"></a><span class="lineno"> 386</span> {</div> +<div class="line"><a name="l00387"></a><span class="lineno"> 387</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00388"></a><span class="lineno"> 388</span>  (</div> +<div class="line"><a name="l00389"></a><span class="lineno"> 389</span>  <span class="stringliteral">" sec ;set carry flag \n\t"</span></div> +<div class="line"><a name="l00390"></a><span class="lineno"> 390</span>  <span class="stringliteral">" rol r24 ;shift in carry and shift out MSB \n\t"</span></div> +<div class="line"><a name="l00391"></a><span class="lineno"> 391</span>  <span class="stringliteral">" rjmp _Li2c_write_first \n\t"</span></div> +<div class="line"><a name="l00392"></a><span class="lineno"> 392</span>  <span class="stringliteral">"_Li2c_write_bit:\n\t"</span></div> +<div class="line"><a name="l00393"></a><span class="lineno"> 393</span>  <span class="stringliteral">" lsl r24 ;left shift into carry ;; 1C\n\t"</span></div> +<div class="line"><a name="l00394"></a><span class="lineno"> 394</span>  <span class="stringliteral">"_Li2c_write_first:\n\t"</span></div> +<div class="line"><a name="l00395"></a><span class="lineno"> 395</span>  <span class="stringliteral">" breq _Li2c_get_ack ;jump if TXreg is empty;; +1 = 2C \n\t"</span></div> +<div class="line"><a name="l00396"></a><span class="lineno"> 396</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 4C \n\t"</span></div> +<div class="line"><a name="l00397"></a><span class="lineno"> 397</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00398"></a><span class="lineno"> 398</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00399"></a><span class="lineno"> 399</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00400"></a><span class="lineno"> 400</span>  <span class="stringliteral">" brcc _Li2c_write_low ;;+1/+2=5/6C\n\t"</span></div> +<div class="line"><a name="l00401"></a><span class="lineno"> 401</span>  <span class="stringliteral">" nop ;; +1 = 7C \n\t"</span></div> +<div class="line"><a name="l00402"></a><span class="lineno"> 402</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA ;; +2 = 9C \n\t"</span></div> +<div class="line"><a name="l00403"></a><span class="lineno"> 403</span>  <span class="stringliteral">" rjmp _Li2c_write_high ;; +2 = 11C \n\t"</span></div> +<div class="line"><a name="l00404"></a><span class="lineno"> 404</span>  <span class="stringliteral">"_Li2c_write_low: \n\t"</span></div> +<div class="line"><a name="l00405"></a><span class="lineno"> 405</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; +2 = 9C \n\t"</span></div> +<div class="line"><a name="l00406"></a><span class="lineno"> 406</span>  <span class="stringliteral">" rjmp _Li2c_write_high ;;+2 = 11C \n\t"</span></div> +<div class="line"><a name="l00407"></a><span class="lineno"> 407</span>  <span class="stringliteral">"_Li2c_write_high: \n\t"</span></div> +<div class="line"><a name="l00408"></a><span class="lineno"> 408</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00409"></a><span class="lineno"> 409</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;;+X = 11C+X\n\t"</span></div> +<div class="line"><a name="l00410"></a><span class="lineno"> 410</span> #endif</div> +<div class="line"><a name="l00411"></a><span class="lineno"> 411</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;;+2 = 13C+X\n\t"</span></div> +<div class="line"><a name="l00412"></a><span class="lineno"> 412</span>  <span class="stringliteral">" cln ;clear N-bit ;;+1 = 14C+X\n\t"</span></div> +<div class="line"><a name="l00413"></a><span class="lineno"> 413</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00414"></a><span class="lineno"> 414</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00415"></a><span class="lineno"> 415</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00416"></a><span class="lineno"> 416</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;check for SCL high ;;+2 = 16C+X\n\t"</span></div> +<div class="line"><a name="l00417"></a><span class="lineno"> 417</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00418"></a><span class="lineno"> 418</span>  <span class="stringliteral">" brpl _Ldelay_scl_high ;;+2 = 18C+X\n\t"</span></div> +<div class="line"><a name="l00419"></a><span class="lineno"> 419</span>  <span class="stringliteral">"_Li2c_write_return_false: \n\t"</span></div> +<div class="line"><a name="l00420"></a><span class="lineno"> 420</span>  <span class="stringliteral">" clr r24 ; return false because of timeout \n\t"</span></div> +<div class="line"><a name="l00421"></a><span class="lineno"> 421</span>  <span class="stringliteral">" rjmp _Li2c_write_return \n\t"</span></div> +<div class="line"><a name="l00422"></a><span class="lineno"> 422</span>  <span class="stringliteral">"_Ldelay_scl_high: \n\t"</span></div> +<div class="line"><a name="l00423"></a><span class="lineno"> 423</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00424"></a><span class="lineno"> 424</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;;+X= 18C+2X\n\t"</span></div> +<div class="line"><a name="l00425"></a><span class="lineno"> 425</span> #endif</div> +<div class="line"><a name="l00426"></a><span class="lineno"> 426</span>  <span class="stringliteral">" rjmp _Li2c_write_bit \n\t"</span></div> +<div class="line"><a name="l00427"></a><span class="lineno"> 427</span>  <span class="stringliteral">" ;; +2 = 20C +2X for one bit-loop \n\t"</span></div> +<div class="line"><a name="l00428"></a><span class="lineno"> 428</span>  <span class="stringliteral">"_Li2c_get_ack: \n\t"</span></div> +<div class="line"><a name="l00429"></a><span class="lineno"> 429</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; +2 = 5C \n\t"</span></div> +<div class="line"><a name="l00430"></a><span class="lineno"> 430</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00431"></a><span class="lineno"> 431</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00432"></a><span class="lineno"> 432</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA ;;+2 = 7C \n\t"</span></div> +<div class="line"><a name="l00433"></a><span class="lineno"> 433</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00434"></a><span class="lineno"> 434</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; +X = 7C+X \n\t"</span></div> +<div class="line"><a name="l00435"></a><span class="lineno"> 435</span> #endif</div> +<div class="line"><a name="l00436"></a><span class="lineno"> 436</span>  <span class="stringliteral">" clr r25 ;; 17C+2X \n\t"</span></div> +<div class="line"><a name="l00437"></a><span class="lineno"> 437</span>  <span class="stringliteral">" clr r24 ;return 0 ;; 14C + X \n\t"</span></div> +<div class="line"><a name="l00438"></a><span class="lineno"> 438</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; +2 = 9C+X\n\t"</span></div> +<div class="line"><a name="l00439"></a><span class="lineno"> 439</span>  <span class="stringliteral">"_Li2c_ack_wait: \n\t"</span></div> +<div class="line"><a name="l00440"></a><span class="lineno"> 440</span>  <span class="stringliteral">" cln ; clear N-bit ;; 10C + X\n\t"</span> </div> +<div class="line"><a name="l00441"></a><span class="lineno"> 441</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00442"></a><span class="lineno"> 442</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X \n\t"</span></div> +<div class="line"><a name="l00443"></a><span class="lineno"> 443</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00444"></a><span class="lineno"> 444</span>  <span class="stringliteral">" brmi _Li2c_write_return_false ;; 13C + X \n\t "</span></div> +<div class="line"><a name="l00445"></a><span class="lineno"> 445</span>  <span class="stringliteral">" sbis %[SDAIN],%[SDAPIN] ;if SDA hi -> return 0 ;; 15C + X \n\t"</span></div> +<div class="line"><a name="l00446"></a><span class="lineno"> 446</span>  <span class="stringliteral">" ldi r24,1 ;return true ;; 16C + X \n\t"</span></div> +<div class="line"><a name="l00447"></a><span class="lineno"> 447</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00448"></a><span class="lineno"> 448</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 16C + 2X \n\t"</span></div> +<div class="line"><a name="l00449"></a><span class="lineno"> 449</span> #endif</div> +<div class="line"><a name="l00450"></a><span class="lineno"> 450</span>  <span class="stringliteral">"_Li2c_write_return: \n\t"</span></div> +<div class="line"><a name="l00451"></a><span class="lineno"> 451</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00452"></a><span class="lineno"> 452</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00453"></a><span class="lineno"> 453</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t"</span></div> +<div class="line"><a name="l00454"></a><span class="lineno"> 454</span>  <span class="stringliteral">" ret \n\t"</span></div> +<div class="line"><a name="l00455"></a><span class="lineno"> 455</span>  <span class="stringliteral">" ;; + 4 = 17C + 2X for acknowldge bit"</span></div> +<div class="line"><a name="l00456"></a><span class="lineno"> 456</span>  ::</div> +<div class="line"><a name="l00457"></a><span class="lineno"> 457</span>  [SCLDDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div> +<div class="line"><a name="l00458"></a><span class="lineno"> 458</span>  [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), [SDAIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>)); </div> +<div class="line"><a name="l00459"></a><span class="lineno"> 459</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; <span class="comment">// fooling the compiler</span></div> +<div class="line"><a name="l00460"></a><span class="lineno"> 460</span> }</div> +<div class="line"><a name="l00461"></a><span class="lineno"> 461</span> </div> +<div class="line"><a name="l00462"></a><span class="lineno"><a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef"> 462</a></span> uint8_t <a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keywordtype">bool</span> last)</div> +<div class="line"><a name="l00463"></a><span class="lineno"> 463</span> {</div> +<div class="line"><a name="l00464"></a><span class="lineno"> 464</span>  __asm__ __volatile__ </div> +<div class="line"><a name="l00465"></a><span class="lineno"> 465</span>  (</div> +<div class="line"><a name="l00466"></a><span class="lineno"> 466</span>  <span class="stringliteral">" ldi r23,0x01 \n\t"</span></div> +<div class="line"><a name="l00467"></a><span class="lineno"> 467</span>  <span class="stringliteral">"_Li2c_read_bit: \n\t"</span></div> +<div class="line"><a name="l00468"></a><span class="lineno"> 468</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t"</span> </div> +<div class="line"><a name="l00469"></a><span class="lineno"> 469</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA(prev. ACK);; 4C \n\t"</span> </div> +<div class="line"><a name="l00470"></a><span class="lineno"> 470</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00471"></a><span class="lineno"> 471</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00472"></a><span class="lineno"> 472</span>  <span class="stringliteral">" nop \n\t"</span></div> +<div class="line"><a name="l00473"></a><span class="lineno"> 473</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00474"></a><span class="lineno"> 474</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 4C+X \n\t"</span> </div> +<div class="line"><a name="l00475"></a><span class="lineno"> 475</span> #endif</div> +<div class="line"><a name="l00476"></a><span class="lineno"> 476</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 6C + X \n\t"</span> </div> +<div class="line"><a name="l00477"></a><span class="lineno"> 477</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00478"></a><span class="lineno"> 478</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 6C + 2X \n\t"</span> </div> +<div class="line"><a name="l00479"></a><span class="lineno"> 479</span> #endif</div> +<div class="line"><a name="l00480"></a><span class="lineno"> 480</span>  <span class="stringliteral">" cln ; clear N-bit ;; 7C + 2X \n\t"</span></div> +<div class="line"><a name="l00481"></a><span class="lineno"> 481</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00482"></a><span class="lineno"> 482</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00483"></a><span class="lineno"> 483</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00484"></a><span class="lineno"> 484</span>  <span class="stringliteral">" sbis %[SCLIN], %[SCLPIN] ;check for SCL high ;; 9C +2X \n\t"</span> </div> +<div class="line"><a name="l00485"></a><span class="lineno"> 485</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00486"></a><span class="lineno"> 486</span>  <span class="stringliteral">" brmi _Li2c_read_return ;return if timeout ;; 10C + 2X\n\t"</span></div> +<div class="line"><a name="l00487"></a><span class="lineno"> 487</span>  <span class="stringliteral">" clc ;clear carry flag ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00488"></a><span class="lineno"> 488</span>  <span class="stringliteral">" sbic %[SDAIN],%[SDAPIN] ;if SDA is high ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00489"></a><span class="lineno"> 489</span>  <span class="stringliteral">" sec ;set carry flag ;; 12C + 2X\n\t"</span> </div> +<div class="line"><a name="l00490"></a><span class="lineno"> 490</span>  <span class="stringliteral">" rol r23 ;store bit ;; 13C + 2X\n\t"</span> </div> +<div class="line"><a name="l00491"></a><span class="lineno"> 491</span>  <span class="stringliteral">" brcc _Li2c_read_bit ;while receiv reg not full \n\t"</span></div> +<div class="line"><a name="l00492"></a><span class="lineno"> 492</span>  <span class="stringliteral">" ;; 15C + 2X for one bit loop \n\t"</span> </div> +<div class="line"><a name="l00493"></a><span class="lineno"> 493</span>  </div> +<div class="line"><a name="l00494"></a><span class="lineno"> 494</span>  <span class="stringliteral">"_Li2c_put_ack: \n\t"</span> </div> +<div class="line"><a name="l00495"></a><span class="lineno"> 495</span>  <span class="stringliteral">" sbi %[SCLDDR],%[SCLPIN] ;force SCL low ;; 2C \n\t"</span> </div> +<div class="line"><a name="l00496"></a><span class="lineno"> 496</span>  <span class="stringliteral">" cpi r24,0 ;; 3C \n\t"</span> </div> +<div class="line"><a name="l00497"></a><span class="lineno"> 497</span>  <span class="stringliteral">" breq _Li2c_put_ack_low ;if (ack=0) ;; 5C \n\t"</span> </div> +<div class="line"><a name="l00498"></a><span class="lineno"> 498</span>  <span class="stringliteral">" cbi %[SDADDR],%[SDAPIN] ;release SDA \n\t"</span> </div> +<div class="line"><a name="l00499"></a><span class="lineno"> 499</span>  <span class="stringliteral">" rjmp _Li2c_put_ack_high \n\t"</span> </div> +<div class="line"><a name="l00500"></a><span class="lineno"> 500</span>  <span class="stringliteral">"_Li2c_put_ack_low: ;else \n\t"</span> </div> +<div class="line"><a name="l00501"></a><span class="lineno"> 501</span>  <span class="stringliteral">" sbi %[SDADDR],%[SDAPIN] ;force SDA low ;; 7C \n\t"</span> </div> +<div class="line"><a name="l00502"></a><span class="lineno"> 502</span>  <span class="stringliteral">"_Li2c_put_ack_high: \n\t"</span> </div> +<div class="line"><a name="l00503"></a><span class="lineno"> 503</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00504"></a><span class="lineno"> 504</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00505"></a><span class="lineno"> 505</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00506"></a><span class="lineno"> 506</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00507"></a><span class="lineno"> 507</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 7C + X \n\t"</span> </div> +<div class="line"><a name="l00508"></a><span class="lineno"> 508</span> #endif</div> +<div class="line"><a name="l00509"></a><span class="lineno"> 509</span>  <span class="stringliteral">" cbi %[SCLDDR],%[SCLPIN] ;release SCL ;; 9C +X \n\t"</span> </div> +<div class="line"><a name="l00510"></a><span class="lineno"> 510</span>  <span class="stringliteral">" cln ;clear N ;; +1 = 10C\n\t"</span></div> +<div class="line"><a name="l00511"></a><span class="lineno"> 511</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00512"></a><span class="lineno"> 512</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00513"></a><span class="lineno"> 513</span>  <span class="stringliteral">" sbis %[SCLIN],%[SCLPIN] ;wait SCL high ;; 12C + X\n\t"</span> </div> +<div class="line"><a name="l00514"></a><span class="lineno"> 514</span>  <span class="stringliteral">" rcall ass_i2c_wait_scl_high \n\t"</span></div> +<div class="line"><a name="l00515"></a><span class="lineno"> 515</span> #<span class="keywordflow">if</span> <a class="code" href="_soft_i2_c_master_8h.html#a2af652afc14dc884cb2b42683d45c8df">I2C_DELAY_COUNTER</a> >= 1</div> +<div class="line"><a name="l00516"></a><span class="lineno"> 516</span>  <span class="stringliteral">" rcall ass_i2c_delay_half ;delay T/2 ;; 11C + 2X\n\t"</span> </div> +<div class="line"><a name="l00517"></a><span class="lineno"> 517</span> #endif</div> +<div class="line"><a name="l00518"></a><span class="lineno"> 518</span>  <span class="stringliteral">"_Li2c_read_return: \n\t"</span></div> +<div class="line"><a name="l00519"></a><span class="lineno"> 519</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00520"></a><span class="lineno"> 520</span>  <span class="stringliteral">" nop \n\t "</span></div> +<div class="line"><a name="l00521"></a><span class="lineno"> 521</span>  <span class="stringliteral">"sbi %[SCLDDR],%[SCLPIN] ;force SCL low so SCL=H is short\n\t"</span></div> +<div class="line"><a name="l00522"></a><span class="lineno"> 522</span>  <span class="stringliteral">" mov r24,r23 ;; 12C + 2X \n\t"</span></div> +<div class="line"><a name="l00523"></a><span class="lineno"> 523</span>  <span class="stringliteral">" clr r25 ;; 13 C + 2X\n\t"</span></div> +<div class="line"><a name="l00524"></a><span class="lineno"> 524</span>  <span class="stringliteral">" ret ;; 17C + X"</span></div> +<div class="line"><a name="l00525"></a><span class="lineno"> 525</span>  ::</div> +<div class="line"><a name="l00526"></a><span class="lineno"> 526</span>  [SCLDDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b">SCL_DDR</a>), [SCLPIN] <span class="stringliteral">"I"</span> (SCL_PIN), [SCLIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49">SCL_IN</a>),</div> +<div class="line"><a name="l00527"></a><span class="lineno"> 527</span>  [SDADDR] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653">SDA_DDR</a>), [SDAPIN] <span class="stringliteral">"I"</span> (SDA_PIN), [SDAIN] <span class="stringliteral">"I"</span> (<a class="code" href="_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83">SDA_IN</a>) </div> +<div class="line"><a name="l00528"></a><span class="lineno"> 528</span>  ); </div> +<div class="line"><a name="l00529"></a><span class="lineno"> 529</span>  <span class="keywordflow">return</span> <span class="charliteral">' '</span>; <span class="comment">// fool the compiler!</span></div> +<div class="line"><a name="l00530"></a><span class="lineno"> 530</span> }</div> +<div class="line"><a name="l00531"></a><span class="lineno"> 531</span> </div> +<div class="line"><a name="l00532"></a><span class="lineno"> 532</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00533"></a><span class="lineno"> 533</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00534"></a><span class="lineno"> 534</span> </div> +<div class="line"><a name="l00535"></a><span class="lineno"> 535</span> <span class="preprocessor">#endif</span></div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html new file mode 100644 index 000000000..aa358edcd --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.html @@ -0,0 +1,485 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('algorithm_8cpp.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">algorithm.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="algorithm_8h_source.html">algorithm.h</a>"</code><br/> +<code>#include "mbed.h"</code><br/> +</div> +<p><a href="algorithm_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a62050365673e666cd0d661a3664c26e6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">maxim_heart_rate_and_oxygen_saturation</a> (uint32_t *pun_ir_buffer, int32_t <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid)</td></tr> +<tr class="memdesc:a62050365673e666cd0d661a3664c26e6"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the heart rate and SpO2 level. <a href="#a62050365673e666cd0d661a3664c26e6"></a><br/></td></tr> +<tr class="separator:a62050365673e666cd0d661a3664c26e6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">maxim_find_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</td></tr> +<tr class="memdesc:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="mdescLeft"> </td><td class="mdescRight">Find peaks. <a href="#a2a4e5ddbe0e04c48b166f2ff176667a9"></a><br/></td></tr> +<tr class="separator:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aab95338e44281c269f0b9b0f529741bf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">maxim_peaks_above_min_height</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height)</td></tr> +<tr class="memdesc:aab95338e44281c269f0b9b0f529741bf"><td class="mdescLeft"> </td><td class="mdescRight">Find peaks above n_min_height. <a href="#aab95338e44281c269f0b9b0f529741bf"></a><br/></td></tr> +<tr class="separator:aab95338e44281c269f0b9b0f529741bf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:adc6be68be81530d67a25c1a9905bec3a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">maxim_remove_close_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</td></tr> +<tr class="memdesc:adc6be68be81530d67a25c1a9905bec3a"><td class="mdescLeft"> </td><td class="mdescRight">Remove peaks. <a href="#adc6be68be81530d67a25c1a9905bec3a"></a><br/></td></tr> +<tr class="separator:adc6be68be81530d67a25c1a9905bec3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">maxim_sort_ascend</a> (int32_t *pn_x, int32_t n_size)</td></tr> +<tr class="memdesc:a6cae46e51640b712afc2ebeefd2d51ff"><td class="mdescLeft"> </td><td class="mdescRight">Sort array. <a href="#a6cae46e51640b712afc2ebeefd2d51ff"></a><br/></td></tr> +<tr class="separator:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a44b6312f81810d4deb64071d12ab0060"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">maxim_sort_indices_descend</a> (int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</td></tr> +<tr class="memdesc:a44b6312f81810d4deb64071d12ab0060"><td class="mdescLeft"> </td><td class="mdescRight">Sort indices. <a href="#a44b6312f81810d4deb64071d12ab0060"></a><br/></td></tr> +<tr class="separator:a44b6312f81810d4deb64071d12ab0060"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><hr/> +<p>Project: MAXREFDES117# Filename: <a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> Description: This module calculates the heart rate/SpO2 level <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> +</div><h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a2a4e5ddbe0e04c48b166f2ff176667a9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_find_peaks </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_height</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_distance</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_max_num</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Find peaks. </p> +<dl class="section user"><dt>Details</dt><dd>Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00254">254</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a62050365673e666cd0d661a3664c26e6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_heart_rate_and_oxygen_saturation </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_ir_buffer_length</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_spo2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int8_t * </td> + <td class="paramname"><em>pch_spo2_valid</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_heart_rate</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int8_t * </td> + <td class="paramname"><em>pch_hr_valid</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Calculate the heart rate and SpO2 level. </p> +<dl class="section user"><dt>Details</dt><dd>By detecting peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed. Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow. Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">*pun_ir_buffer</td><td>- IR sensor data buffer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n_ir_buffer_length</td><td>- IR sensor data buffer length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">*pun_red_buffer</td><td>- Red sensor data buffer </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pn_spo2</td><td>- Calculated SpO2 value </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pch_spo2_valid</td><td>- 1 if the calculated SpO2 value is valid </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pn_heart_rate</td><td>- Calculated heart rate value </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pch_hr_valid</td><td>- 1 if the calculated heart rate value is valid</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00062">62</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="aab95338e44281c269f0b9b0f529741bf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_peaks_above_min_height </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_height</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Find peaks above n_min_height. </p> +<dl class="section user"><dt>Details</dt><dd>Find all peaks above MIN_HEIGHT</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00268">268</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="adc6be68be81530d67a25c1a9905bec3a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_remove_close_peaks </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_distance</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Remove peaks. </p> +<dl class="section user"><dt>Details</dt><dd>Remove peaks separated by less than MIN_DISTANCE</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00299">299</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a6cae46e51640b712afc2ebeefd2d51ff"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_sort_ascend </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Sort array. </p> +<dl class="section user"><dt>Details</dt><dd>Sort array in ascending order (insertion sort algorithm)</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00328">328</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a44b6312f81810d4deb64071d12ab0060"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_sort_indices_descend </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_indx</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Sort indices. </p> +<dl class="section user"><dt>Details</dt><dd>Sort indices according to descending order (insertion sort algorithm)</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00346">346</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js new file mode 100644 index 000000000..75ef92fa1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp.js @@ -0,0 +1,9 @@ +var algorithm_8cpp = +[ + [ "maxim_find_peaks", "algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9", null ], + [ "maxim_heart_rate_and_oxygen_saturation", "algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6", null ], + [ "maxim_peaks_above_min_height", "algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf", null ], + [ "maxim_remove_close_peaks", "algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a", null ], + [ "maxim_sort_ascend", "algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff", null ], + [ "maxim_sort_indices_descend", "algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html new file mode 100644 index 000000000..14c4cce0f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8cpp_source.html @@ -0,0 +1,406 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('algorithm_8cpp_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">algorithm.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="algorithm_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">*</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">*</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">*</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">*</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="preprocessor">#include "<a class="code" href="algorithm_8h.html">algorithm.h</a>"</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="preprocessor">#include "mbed.h"</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> </div> +<div class="line"><a name="l00062"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6"> 62</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(uint32_t *pun_ir_buffer, int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, </div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span>  int32_t *pn_heart_rate, int8_t *pch_hr_valid)</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span> {</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  uint32_t un_ir_mean ,un_only_once ;</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  int32_t k ,n_i_ratio_count;</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  int32_t i, s, m, n_exact_ir_valley_locs_count ,n_middle_idx;</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  int32_t n_th1, n_npks,n_c_min; </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  int32_t an_ir_valley_locs[15] ;</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  int32_t an_exact_ir_valley_locs[15] ;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span>  int32_t an_dx_peak_locs[15] ;</div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span>  int32_t n_peak_interval_sum;</div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span>  </div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span>  int32_t n_y_ac, n_x_ac;</div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span>  int32_t n_spo2_calc; </div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span>  int32_t n_y_dc_max, n_x_dc_max; </div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span>  int32_t n_y_dc_max_idx, n_x_dc_max_idx; </div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span>  int32_t an_ratio[5],n_ratio_average; </div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span>  int32_t n_nume, n_denom ;</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span>  <span class="comment">// remove DC of ir signal </span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span>  un_ir_mean =0; </div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span>  <span class="keywordflow">for</span> (k=0 ; k<<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ ) un_ir_mean += pun_ir_buffer[k] ;</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  un_ir_mean =un_ir_mean/<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ;</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">for</span> (k=0 ; k<<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ ) an_x[k] = pun_ir_buffer[k] - un_ir_mean ; </div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  </div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="comment">// 4 pt Moving Average</span></div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">for</span>(k=0; k< <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>; k++){</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  n_denom= ( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3]);</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  an_x[k]= n_denom/(int32_t)4; </div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  }</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span> </div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <span class="comment">// get difference of smoothed IR signal</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  </div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <span class="keywordflow">for</span>( k=0; k<<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-MA4_SIZE-1; k++)</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  an_dx[k]= (an_x[k+1]- an_x[k]);</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span> </div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  <span class="comment">// 2-pt Moving Average to an_dx</span></div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="keywordflow">for</span>(k=0; k< <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-MA4_SIZE-2; k++){</div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  an_dx[k] = ( an_dx[k]+an_dx[k+1])/2 ;</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  }</div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  </div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="comment">// hamming window</span></div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  <span class="comment">// flip wave form so that we can detect valley with peak detector</span></div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <span class="keywordflow">for</span> ( i=0 ; i<<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>-MA4_SIZE-2 ;i++){</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  s= 0;</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">for</span>( k=i; k<i+ <a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a> ;k++){</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  s -= an_dx[k] *<a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a>[k-i] ; </div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  }</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  an_dx[i]= s/ (int32_t)1146; <span class="comment">// divide by sum of auw_hamm </span></div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  }</div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span> </div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  n_th1=0; <span class="comment">// threshold calculation</span></div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">for</span> ( k=0 ; k<<a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a> ;k++){</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  n_th1 += ((an_dx[k]>0)? an_dx[k] : ((int32_t)0-an_dx[k])) ;</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  }</div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  n_th1= n_th1/ ( <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>);</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="comment">// peak location is acutally index for sharpest location of raw signal since we flipped the signal </span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>( an_dx_peak_locs, &n_npks, an_dx, <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-HAMMING_SIZE, n_th1, 8, 5 );<span class="comment">//peak_height, peak_distance, max_num_peaks </span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span> </div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  n_peak_interval_sum =0;</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">if</span> (n_npks>=2){</div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">for</span> (k=1; k<n_npks; k++)</div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]);</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  n_peak_interval_sum=n_peak_interval_sum/(n_npks-1);</div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);<span class="comment">// beats per minutes</span></div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  *pch_hr_valid = 1;</div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  }</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">else</span> {</div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  *pn_heart_rate = -999;</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  *pch_hr_valid = 0;</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  }</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  </div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  <span class="keywordflow">for</span> ( k=0 ; k<n_npks ;k++)</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2; </div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span> </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">// raw value : RED(=y) and IR(=X)</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <span class="comment">// we need to assess DC and AC value of ir and red PPG. </span></div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  <span class="keywordflow">for</span> (k=0 ; k<<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a> ; k++ ) {</div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  an_x[k] = pun_ir_buffer[k] ; </div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  an_y[k] = pun_red_buffer[k] ; </div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  }</div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span> </div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  <span class="comment">// find precise min near an_ir_valley_locs</span></div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  n_exact_ir_valley_locs_count =0; </div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  <span class="keywordflow">for</span>(k=0 ; k<n_npks ;k++){</div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  un_only_once =1;</div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  m=an_ir_valley_locs[k];</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  n_c_min= 16777216;<span class="comment">//2^24;</span></div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <span class="keywordflow">if</span> (m+5 < <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-HAMMING_SIZE && m-5 >0){</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <span class="keywordflow">for</span>(i= m-5;i<m+5; i++)</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  <span class="keywordflow">if</span> (an_x[i]<n_c_min){</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="keywordflow">if</span> (un_only_once >0){</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  un_only_once =0;</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  } </div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  n_c_min= an_x[i] ;</div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  an_exact_ir_valley_locs[k]=i;</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span> (un_only_once ==0)</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  n_exact_ir_valley_locs_count ++ ;</div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  }</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  }</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  <span class="keywordflow">if</span> (n_exact_ir_valley_locs_count <2 ){</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  *pn_spo2 = -999 ; <span class="comment">// do not use SPO2 since signal ratio is out of range</span></div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  *pch_spo2_valid = 0; </div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  }</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  <span class="comment">// 4 pt MA</span></div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  <span class="keywordflow">for</span>(k=0; k< <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>; k++){</div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  an_x[k]=( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3])/(int32_t)4;</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  an_y[k]=( an_y[k]+an_y[k+1]+ an_y[k+2]+ an_y[k+3])/(int32_t)4;</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  }</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span> </div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  <span class="comment">//using an_exact_ir_valley_locs , find ir-red DC andir-red AC for SPO2 calibration ratio</span></div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  <span class="comment">//finding AC/DC maximum of raw ir * red between two valley locations</span></div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  n_ratio_average =0; </div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  n_i_ratio_count =0; </div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  </div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  <span class="keywordflow">for</span>(k=0; k< 5; k++) an_ratio[k]=0;</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  <span class="keywordflow">for</span> (k=0; k< n_exact_ir_valley_locs_count; k++){</div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">if</span> (an_exact_ir_valley_locs[k] > <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a> ){ </div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  *pn_spo2 = -999 ; <span class="comment">// do not use SPO2 since valley loc is out of range</span></div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  *pch_spo2_valid = 0; </div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  <span class="keywordflow">return</span>;</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span>  }</div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span>  }</div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span>  <span class="comment">// find max between two valley locations </span></div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span>  <span class="comment">// and use ratio betwen AC compoent of Ir & Red and DC compoent of Ir & Red for SPO2 </span></div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span> </div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <span class="keywordflow">for</span> (k=0; k< n_exact_ir_valley_locs_count-1; k++){</div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  n_y_dc_max= -16777216 ; </div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  n_x_dc_max= - 16777216; </div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <span class="keywordflow">if</span> (an_exact_ir_valley_locs[k+1]-an_exact_ir_valley_locs[k] >10){</div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <span class="keywordflow">for</span> (i=an_exact_ir_valley_locs[k]; i< an_exact_ir_valley_locs[k+1]; i++){</div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span> (an_x[i]> n_x_dc_max) {n_x_dc_max =an_x[i];n_x_dc_max_idx =i; }</div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">if</span> (an_y[i]> n_y_dc_max) {n_y_dc_max =an_y[i];n_y_dc_max_idx=i;}</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  n_y_ac= (an_y[an_exact_ir_valley_locs[k+1]] - an_y[an_exact_ir_valley_locs[k] ] )*(n_y_dc_max_idx -an_exact_ir_valley_locs[k]); <span class="comment">//red</span></div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  n_y_ac= an_y[an_exact_ir_valley_locs[k]] + n_y_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]) ; </div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span>  </div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div> +<div class="line"><a name="l00220"></a><span class="lineno"> 220</span>  n_y_ac= an_y[n_y_dc_max_idx] - n_y_ac; <span class="comment">// subracting linear DC compoenents from raw </span></div> +<div class="line"><a name="l00221"></a><span class="lineno"> 221</span>  n_x_ac= (an_x[an_exact_ir_valley_locs[k+1]] - an_x[an_exact_ir_valley_locs[k] ] )*(n_x_dc_max_idx -an_exact_ir_valley_locs[k]); <span class="comment">// ir</span></div> +<div class="line"><a name="l00222"></a><span class="lineno"> 222</span>  n_x_ac= an_x[an_exact_ir_valley_locs[k]] + n_x_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]); </div> +<div class="line"><a name="l00223"></a><span class="lineno"> 223</span>  n_x_ac= an_x[n_y_dc_max_idx] - n_x_ac; <span class="comment">// subracting linear DC compoenents from raw </span></div> +<div class="line"><a name="l00224"></a><span class="lineno"> 224</span>  n_nume=( n_y_ac *n_x_dc_max)>>7 ; <span class="comment">//prepare X100 to preserve floating value</span></div> +<div class="line"><a name="l00225"></a><span class="lineno"> 225</span>  n_denom= ( n_x_ac *n_y_dc_max)>>7;</div> +<div class="line"><a name="l00226"></a><span class="lineno"> 226</span>  <span class="keywordflow">if</span> (n_denom>0 && n_i_ratio_count <5 && n_nume != 0)</div> +<div class="line"><a name="l00227"></a><span class="lineno"> 227</span>  { </div> +<div class="line"><a name="l00228"></a><span class="lineno"> 228</span>  an_ratio[n_i_ratio_count]= (n_nume*100)/n_denom ; <span class="comment">//formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max) ;</span></div> +<div class="line"><a name="l00229"></a><span class="lineno"> 229</span>  n_i_ratio_count++;</div> +<div class="line"><a name="l00230"></a><span class="lineno"> 230</span>  }</div> +<div class="line"><a name="l00231"></a><span class="lineno"> 231</span>  }</div> +<div class="line"><a name="l00232"></a><span class="lineno"> 232</span>  }</div> +<div class="line"><a name="l00233"></a><span class="lineno"> 233</span> </div> +<div class="line"><a name="l00234"></a><span class="lineno"> 234</span>  <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>(an_ratio, n_i_ratio_count);</div> +<div class="line"><a name="l00235"></a><span class="lineno"> 235</span>  n_middle_idx= n_i_ratio_count/2;</div> +<div class="line"><a name="l00236"></a><span class="lineno"> 236</span> </div> +<div class="line"><a name="l00237"></a><span class="lineno"> 237</span>  <span class="keywordflow">if</span> (n_middle_idx >1)</div> +<div class="line"><a name="l00238"></a><span class="lineno"> 238</span>  n_ratio_average =( an_ratio[n_middle_idx-1] +an_ratio[n_middle_idx])/2; <span class="comment">// use median</span></div> +<div class="line"><a name="l00239"></a><span class="lineno"> 239</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00240"></a><span class="lineno"> 240</span>  n_ratio_average = an_ratio[n_middle_idx ];</div> +<div class="line"><a name="l00241"></a><span class="lineno"> 241</span> </div> +<div class="line"><a name="l00242"></a><span class="lineno"> 242</span>  <span class="keywordflow">if</span>( n_ratio_average>2 && n_ratio_average <184){</div> +<div class="line"><a name="l00243"></a><span class="lineno"> 243</span>  n_spo2_calc= <a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a>[n_ratio_average] ;</div> +<div class="line"><a name="l00244"></a><span class="lineno"> 244</span>  *pn_spo2 = n_spo2_calc ;</div> +<div class="line"><a name="l00245"></a><span class="lineno"> 245</span>  *pch_spo2_valid = 1;<span class="comment">// float_SPO2 = -45.060*n_ratio_average* n_ratio_average/10000 + 30.354 *n_ratio_average/100 + 94.845 ; // for comparison with table</span></div> +<div class="line"><a name="l00246"></a><span class="lineno"> 246</span>  }</div> +<div class="line"><a name="l00247"></a><span class="lineno"> 247</span>  <span class="keywordflow">else</span>{</div> +<div class="line"><a name="l00248"></a><span class="lineno"> 248</span>  *pn_spo2 = -999 ; <span class="comment">// do not use SPO2 since signal ratio is out of range</span></div> +<div class="line"><a name="l00249"></a><span class="lineno"> 249</span>  *pch_spo2_valid = 0; </div> +<div class="line"><a name="l00250"></a><span class="lineno"> 250</span>  }</div> +<div class="line"><a name="l00251"></a><span class="lineno"> 251</span> }</div> +<div class="line"><a name="l00252"></a><span class="lineno"> 252</span> </div> +<div class="line"><a name="l00253"></a><span class="lineno"> 253</span> </div> +<div class="line"><a name="l00254"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9"> 254</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</div> +<div class="line"><a name="l00262"></a><span class="lineno"> 262</span> {</div> +<div class="line"><a name="l00263"></a><span class="lineno"> 263</span>  <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>( pn_locs, pn_npks, pn_x, n_size, n_min_height );</div> +<div class="line"><a name="l00264"></a><span class="lineno"> 264</span>  <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>( pn_locs, pn_npks, pn_x, n_min_distance );</div> +<div class="line"><a name="l00265"></a><span class="lineno"> 265</span>  *pn_npks = <a class="code" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">min</a>( *pn_npks, n_max_num );</div> +<div class="line"><a name="l00266"></a><span class="lineno"> 266</span> }</div> +<div class="line"><a name="l00267"></a><span class="lineno"> 267</span> </div> +<div class="line"><a name="l00268"></a><span class="lineno"><a class="code" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf"> 268</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height)</div> +<div class="line"><a name="l00276"></a><span class="lineno"> 276</span> {</div> +<div class="line"><a name="l00277"></a><span class="lineno"> 277</span>  int32_t i = 1, n_width;</div> +<div class="line"><a name="l00278"></a><span class="lineno"> 278</span>  *pn_npks = 0;</div> +<div class="line"><a name="l00279"></a><span class="lineno"> 279</span>  </div> +<div class="line"><a name="l00280"></a><span class="lineno"> 280</span>  <span class="keywordflow">while</span> (i < n_size-1){</div> +<div class="line"><a name="l00281"></a><span class="lineno"> 281</span>  <span class="keywordflow">if</span> (pn_x[i] > n_min_height && pn_x[i] > pn_x[i-1]){ <span class="comment">// find left edge of potential peaks</span></div> +<div class="line"><a name="l00282"></a><span class="lineno"> 282</span>  n_width = 1;</div> +<div class="line"><a name="l00283"></a><span class="lineno"> 283</span>  <span class="keywordflow">while</span> (i+n_width < n_size && pn_x[i] == pn_x[i+n_width]) <span class="comment">// find flat peaks</span></div> +<div class="line"><a name="l00284"></a><span class="lineno"> 284</span>  n_width++;</div> +<div class="line"><a name="l00285"></a><span class="lineno"> 285</span>  <span class="keywordflow">if</span> (pn_x[i] > pn_x[i+n_width] && (*pn_npks) < 15 ){ <span class="comment">// find right edge of peaks</span></div> +<div class="line"><a name="l00286"></a><span class="lineno"> 286</span>  pn_locs[(*pn_npks)++] = i; </div> +<div class="line"><a name="l00287"></a><span class="lineno"> 287</span>  <span class="comment">// for flat peaks, peak location is left edge</span></div> +<div class="line"><a name="l00288"></a><span class="lineno"> 288</span>  i += n_width+1;</div> +<div class="line"><a name="l00289"></a><span class="lineno"> 289</span>  }</div> +<div class="line"><a name="l00290"></a><span class="lineno"> 290</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00291"></a><span class="lineno"> 291</span>  i += n_width;</div> +<div class="line"><a name="l00292"></a><span class="lineno"> 292</span>  }</div> +<div class="line"><a name="l00293"></a><span class="lineno"> 293</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00294"></a><span class="lineno"> 294</span>  i++;</div> +<div class="line"><a name="l00295"></a><span class="lineno"> 295</span>  }</div> +<div class="line"><a name="l00296"></a><span class="lineno"> 296</span> }</div> +<div class="line"><a name="l00297"></a><span class="lineno"> 297</span> </div> +<div class="line"><a name="l00298"></a><span class="lineno"> 298</span> </div> +<div class="line"><a name="l00299"></a><span class="lineno"><a class="code" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a"> 299</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</div> +<div class="line"><a name="l00307"></a><span class="lineno"> 307</span> {</div> +<div class="line"><a name="l00308"></a><span class="lineno"> 308</span>  </div> +<div class="line"><a name="l00309"></a><span class="lineno"> 309</span>  int32_t i, j, n_old_npks, n_dist;</div> +<div class="line"><a name="l00310"></a><span class="lineno"> 310</span>  </div> +<div class="line"><a name="l00311"></a><span class="lineno"> 311</span>  <span class="comment">/* Order peaks from large to small */</span></div> +<div class="line"><a name="l00312"></a><span class="lineno"> 312</span>  <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>( pn_x, pn_locs, *pn_npks );</div> +<div class="line"><a name="l00313"></a><span class="lineno"> 313</span> </div> +<div class="line"><a name="l00314"></a><span class="lineno"> 314</span>  <span class="keywordflow">for</span> ( i = -1; i < *pn_npks; i++ ){</div> +<div class="line"><a name="l00315"></a><span class="lineno"> 315</span>  n_old_npks = *pn_npks;</div> +<div class="line"><a name="l00316"></a><span class="lineno"> 316</span>  *pn_npks = i+1;</div> +<div class="line"><a name="l00317"></a><span class="lineno"> 317</span>  <span class="keywordflow">for</span> ( j = i+1; j < n_old_npks; j++ ){</div> +<div class="line"><a name="l00318"></a><span class="lineno"> 318</span>  n_dist = pn_locs[j] - ( i == -1 ? -1 : pn_locs[i] ); <span class="comment">// lag-zero peak of autocorr is at index -1</span></div> +<div class="line"><a name="l00319"></a><span class="lineno"> 319</span>  <span class="keywordflow">if</span> ( n_dist > n_min_distance || n_dist < -n_min_distance )</div> +<div class="line"><a name="l00320"></a><span class="lineno"> 320</span>  pn_locs[(*pn_npks)++] = pn_locs[j];</div> +<div class="line"><a name="l00321"></a><span class="lineno"> 321</span>  }</div> +<div class="line"><a name="l00322"></a><span class="lineno"> 322</span>  }</div> +<div class="line"><a name="l00323"></a><span class="lineno"> 323</span> </div> +<div class="line"><a name="l00324"></a><span class="lineno"> 324</span>  <span class="comment">// Resort indices longo ascending order</span></div> +<div class="line"><a name="l00325"></a><span class="lineno"> 325</span>  <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>( pn_locs, *pn_npks );</div> +<div class="line"><a name="l00326"></a><span class="lineno"> 326</span> }</div> +<div class="line"><a name="l00327"></a><span class="lineno"> 327</span> </div> +<div class="line"><a name="l00328"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff"> 328</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>(int32_t *pn_x,int32_t n_size) </div> +<div class="line"><a name="l00329"></a><span class="lineno"> 329</span> </div> +<div class="line"><a name="l00336"></a><span class="lineno"> 336</span> {</div> +<div class="line"><a name="l00337"></a><span class="lineno"> 337</span>  int32_t i, j, n_temp;</div> +<div class="line"><a name="l00338"></a><span class="lineno"> 338</span>  <span class="keywordflow">for</span> (i = 1; i < n_size; i++) {</div> +<div class="line"><a name="l00339"></a><span class="lineno"> 339</span>  n_temp = pn_x[i];</div> +<div class="line"><a name="l00340"></a><span class="lineno"> 340</span>  <span class="keywordflow">for</span> (j = i; j > 0 && n_temp < pn_x[j-1]; j--)</div> +<div class="line"><a name="l00341"></a><span class="lineno"> 341</span>  pn_x[j] = pn_x[j-1];</div> +<div class="line"><a name="l00342"></a><span class="lineno"> 342</span>  pn_x[j] = n_temp;</div> +<div class="line"><a name="l00343"></a><span class="lineno"> 343</span>  }</div> +<div class="line"><a name="l00344"></a><span class="lineno"> 344</span> }</div> +<div class="line"><a name="l00345"></a><span class="lineno"> 345</span> </div> +<div class="line"><a name="l00346"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060"> 346</a></span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>(int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</div> +<div class="line"><a name="l00354"></a><span class="lineno"> 354</span> {</div> +<div class="line"><a name="l00355"></a><span class="lineno"> 355</span>  int32_t i, j, n_temp;</div> +<div class="line"><a name="l00356"></a><span class="lineno"> 356</span>  <span class="keywordflow">for</span> (i = 1; i < n_size; i++) {</div> +<div class="line"><a name="l00357"></a><span class="lineno"> 357</span>  n_temp = pn_indx[i];</div> +<div class="line"><a name="l00358"></a><span class="lineno"> 358</span>  <span class="keywordflow">for</span> (j = i; j > 0 && pn_x[n_temp] > pn_x[pn_indx[j-1]]; j--)</div> +<div class="line"><a name="l00359"></a><span class="lineno"> 359</span>  pn_indx[j] = pn_indx[j-1];</div> +<div class="line"><a name="l00360"></a><span class="lineno"> 360</span>  pn_indx[j] = n_temp;</div> +<div class="line"><a name="l00361"></a><span class="lineno"> 361</span>  }</div> +<div class="line"><a name="l00362"></a><span class="lineno"> 362</span> }</div> +<div class="line"><a name="l00363"></a><span class="lineno"> 363</span> </div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html new file mode 100644 index 000000000..1d4d38cdb --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.html @@ -0,0 +1,694 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('algorithm_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<div class="title">algorithm.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "mbed.h"</code><br/> +</div> +<p><a href="algorithm_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:a41f9c5fb8b08eb5dc3edce4dcb37fee7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">true</a>   1</td></tr> +<tr class="separator:a41f9c5fb8b08eb5dc3edce4dcb37fee7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a65e9886d74aaee76545e83dd09011727"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">false</a>   0</td></tr> +<tr class="separator:a65e9886d74aaee76545e83dd09011727"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a30588c5eca7c9cb6ebba02a0236f0119"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>   100</td></tr> +<tr class="separator:a30588c5eca7c9cb6ebba02a0236f0119"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6b20d41d6252e9871430c242cb1a56e7"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>   (<a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>* 5)</td></tr> +<tr class="separator:a6b20d41d6252e9871430c242cb1a56e7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aa03906cc2e2d27ef4f3fa4db4312b524"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">HR_FIFO_SIZE</a>   7</td></tr> +<tr class="separator:aa03906cc2e2d27ef4f3fa4db4312b524"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af8c3cbac49a22022b17cc7b34d42cbae"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>   4</td></tr> +<tr class="separator:af8c3cbac49a22022b17cc7b34d42cbae"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a35be9e52c9110f5d91a4064e2f7b73c8"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">HAMMING_SIZE</a>   5</td></tr> +<tr class="separator:a35be9e52c9110f5d91a4064e2f7b73c8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abb702d8b501669a23aa0ab3b281b9384"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">min</a>(x, y)   ((x) < (y) ? (x) : (y))</td></tr> +<tr class="separator:abb702d8b501669a23aa0ab3b281b9384"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a62050365673e666cd0d661a3664c26e6"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">maxim_heart_rate_and_oxygen_saturation</a> (uint32_t *pun_ir_buffer, int32_t <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid)</td></tr> +<tr class="memdesc:a62050365673e666cd0d661a3664c26e6"><td class="mdescLeft"> </td><td class="mdescRight">Calculate the heart rate and SpO2 level. <a href="#a62050365673e666cd0d661a3664c26e6"></a><br/></td></tr> +<tr class="separator:a62050365673e666cd0d661a3664c26e6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">maxim_find_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num)</td></tr> +<tr class="memdesc:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="mdescLeft"> </td><td class="mdescRight">Find peaks. <a href="#a2a4e5ddbe0e04c48b166f2ff176667a9"></a><br/></td></tr> +<tr class="separator:a2a4e5ddbe0e04c48b166f2ff176667a9"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aab95338e44281c269f0b9b0f529741bf"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">maxim_peaks_above_min_height</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height)</td></tr> +<tr class="memdesc:aab95338e44281c269f0b9b0f529741bf"><td class="mdescLeft"> </td><td class="mdescRight">Find peaks above n_min_height. <a href="#aab95338e44281c269f0b9b0f529741bf"></a><br/></td></tr> +<tr class="separator:aab95338e44281c269f0b9b0f529741bf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:adc6be68be81530d67a25c1a9905bec3a"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">maxim_remove_close_peaks</a> (int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance)</td></tr> +<tr class="memdesc:adc6be68be81530d67a25c1a9905bec3a"><td class="mdescLeft"> </td><td class="mdescRight">Remove peaks. <a href="#adc6be68be81530d67a25c1a9905bec3a"></a><br/></td></tr> +<tr class="separator:adc6be68be81530d67a25c1a9905bec3a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">maxim_sort_ascend</a> (int32_t *pn_x, int32_t n_size)</td></tr> +<tr class="memdesc:a6cae46e51640b712afc2ebeefd2d51ff"><td class="mdescLeft"> </td><td class="mdescRight">Sort array. <a href="#a6cae46e51640b712afc2ebeefd2d51ff"></a><br/></td></tr> +<tr class="separator:a6cae46e51640b712afc2ebeefd2d51ff"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a44b6312f81810d4deb64071d12ab0060"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">maxim_sort_indices_descend</a> (int32_t *pn_x, int32_t *pn_indx, int32_t n_size)</td></tr> +<tr class="memdesc:a44b6312f81810d4deb64071d12ab0060"><td class="mdescLeft"> </td><td class="mdescRight">Sort indices. <a href="#a44b6312f81810d4deb64071d12ab0060"></a><br/></td></tr> +<tr class="separator:a44b6312f81810d4deb64071d12ab0060"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> +Variables</h2></td></tr> +<tr class="memitem:a1c25ffb675bce0db6a32fbf6ad514929"><td class="memItemLeft" align="right" valign="top">const uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a> [31] ={ 41, 276, 512, 276, 41 }</td></tr> +<tr class="separator:a1c25ffb675bce0db6a32fbf6ad514929"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:adfeeb6b08271807492803acc50347108"><td class="memItemLeft" align="right" valign="top">const uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a> [184]</td></tr> +<tr class="separator:adfeeb6b08271807492803acc50347108"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><pre class="fragment">****************************************************** +</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="algorithm_8h.html">algorithm.h</a> Description: This module is the heart rate/SpO2 calculation algorithm header file</p> +<p>Revision History: <br/> + 1-18-2016 Rev 01.00 SK Initial release. <br/> + <hr/> +<p>This code follows the following naming conventions:</p> +<p><br/> + char ch_pmod_value <br/> + char (array) s_pmod_s_string[16] <br/> + float f_pmod_value <br/> + int32_t n_pmod_value <br/> + int32_t (array) an_pmod_value[16] <br/> + int16_t w_pmod_value <br/> + int16_t (array) aw_pmod_value[16] <br/> + uint16_t uw_pmod_value <br/> + uint16_t (array) auw_pmod_value[16] <br/> + uint8_t uch_pmod_value <br/> + uint8_t (array) auch_pmod_buffer[16] <br/> + uint32_t un_pmod_value <br/> + int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> +</div><h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a6b20d41d6252e9871430c242cb1a56e7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define BUFFER_SIZE   (<a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">FS</a>* 5)</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00070">70</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a65e9886d74aaee76545e83dd09011727"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define false   0</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00068">68</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a30588c5eca7c9cb6ebba02a0236f0119"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define FS   100</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00069">69</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a35be9e52c9110f5d91a4064e2f7b73c8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define HAMMING_SIZE   5</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00073">73</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aa03906cc2e2d27ef4f3fa4db4312b524"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define HR_FIFO_SIZE   7</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00071">71</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af8c3cbac49a22022b17cc7b34d42cbae"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define MA4_SIZE   4</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00072">72</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="abb702d8b501669a23aa0ab3b281b9384"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define min</td> + <td>(</td> + <td class="paramtype"> </td> + <td class="paramname">x, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"> </td> + <td class="paramname">y </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td>   ((x) < (y) ? (x) : (y))</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00074">74</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a41f9c5fb8b08eb5dc3edce4dcb37fee7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define true   1</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00067">67</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a2a4e5ddbe0e04c48b166f2ff176667a9"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_find_peaks </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_height</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_distance</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_max_num</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Find peaks. </p> +<dl class="section user"><dt>Details</dt><dd>Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00254">254</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a62050365673e666cd0d661a3664c26e6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_heart_rate_and_oxygen_saturation </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_ir_buffer_length</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_buffer</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_spo2</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int8_t * </td> + <td class="paramname"><em>pch_spo2_valid</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_heart_rate</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int8_t * </td> + <td class="paramname"><em>pch_hr_valid</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Calculate the heart rate and SpO2 level. </p> +<dl class="section user"><dt>Details</dt><dd>By detecting peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed. Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow. Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio.</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">*pun_ir_buffer</td><td>- IR sensor data buffer </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">n_ir_buffer_length</td><td>- IR sensor data buffer length </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">*pun_red_buffer</td><td>- Red sensor data buffer </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pn_spo2</td><td>- Calculated SpO2 value </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pch_spo2_valid</td><td>- 1 if the calculated SpO2 value is valid </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pn_heart_rate</td><td>- Calculated heart rate value </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pch_hr_valid</td><td>- 1 if the calculated heart rate value is valid</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00062">62</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="aab95338e44281c269f0b9b0f529741bf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_peaks_above_min_height </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_height</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Find peaks above n_min_height. </p> +<dl class="section user"><dt>Details</dt><dd>Find all peaks above MIN_HEIGHT</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00268">268</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="adc6be68be81530d67a25c1a9905bec3a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_remove_close_peaks </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_locs</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_npks</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_min_distance</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Remove peaks. </p> +<dl class="section user"><dt>Details</dt><dd>Remove peaks separated by less than MIN_DISTANCE</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00299">299</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a6cae46e51640b712afc2ebeefd2d51ff"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_sort_ascend </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Sort array. </p> +<dl class="section user"><dt>Details</dt><dd>Sort array in ascending order (insertion sort algorithm)</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00328">328</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a44b6312f81810d4deb64071d12ab0060"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void maxim_sort_indices_descend </td> + <td>(</td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_x</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t * </td> + <td class="paramname"><em>pn_indx</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">int32_t </td> + <td class="paramname"><em>n_size</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Sort indices. </p> +<dl class="section user"><dt>Details</dt><dd>Sort indices according to descending order (insertion sort algorithm)</dd></dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="algorithm_8cpp_source.html#l00346">346</a> of file <a class="el" href="algorithm_8cpp_source.html">algorithm.cpp</a>.</p> + +</div> +</div> +<h2 class="groupheader">Variable Documentation</h2> +<a class="anchor" id="a1c25ffb675bce0db6a32fbf6ad514929"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const uint16_t auw_hamm[31] ={ 41, 276, 512, 276, 41 }</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00076">76</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +<a class="anchor" id="adfeeb6b08271807492803acc50347108"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">const uint8_t uch_spo2_table[184]</td> + </tr> + </table> +</div><div class="memdoc"> +<b>Initial value:</b><div class="fragment"><div class="line">={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, </div> +<div class="line"> 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, </div> +<div class="line"> 100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, </div> +<div class="line"> 97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, </div> +<div class="line"> 90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, </div> +<div class="line"> 80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, </div> +<div class="line"> 66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, </div> +<div class="line"> 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, </div> +<div class="line"> 28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, </div> +<div class="line"> 3, 2, 1 }</div> +</div><!-- fragment --> +<p>Definition at line <a class="el" href="algorithm_8h_source.html#l00078">78</a> of file <a class="el" href="algorithm_8h_source.html">algorithm.h</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8h.html">algorithm.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js new file mode 100644 index 000000000..44c96bb30 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h.js @@ -0,0 +1,22 @@ +var algorithm_8h = +[ + [ "BUFFER_SIZE", "algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7", null ], + [ "false", "algorithm_8h.html#a65e9886d74aaee76545e83dd09011727", null ], + [ "FS", "algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119", null ], + [ "HAMMING_SIZE", "algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8", null ], + [ "HR_FIFO_SIZE", "algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524", null ], + [ "MA4_SIZE", "algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae", null ], + [ "min", "algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384", null ], + [ "true", "algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7", null ], + [ "maxim_find_peaks", "algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9", null ], + [ "maxim_heart_rate_and_oxygen_saturation", "algorithm_8h.html#a62050365673e666cd0d661a3664c26e6", null ], + [ "maxim_peaks_above_min_height", "algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf", null ], + [ "maxim_remove_close_peaks", "algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a", null ], + [ "maxim_sort_ascend", "algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff", null ], + [ "maxim_sort_indices_descend", "algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060", null ], + [ "an_dx", "algorithm_8h.html#aea73b3b76ec2f4743e97452ee93c9cd2", null ], + [ "an_x", "algorithm_8h.html#a7d4e0b0915b58092f3b4bb2fbd252f3f", null ], + [ "an_y", "algorithm_8h.html#a72c76142c07186ae6d7200ec3c9a4f76", null ], + [ "auw_hamm", "algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929", null ], + [ "uch_spo2_table", "algorithm_8h.html#adfeeb6b08271807492803acc50347108", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html new file mode 100644 index 000000000..1d98e0c3a --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/algorithm_8h_source.html @@ -0,0 +1,191 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm/algorithm.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('algorithm_8h_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">algorithm.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="algorithm_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">*</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">*</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">*</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">*</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#ifndef ALGORITHM_H_</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"></span><span class="preprocessor">#define ALGORITHM_H_</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include "mbed.h"</span></div> +<div class="line"><a name="l00066"></a><span class="lineno"> 66</span> </div> +<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7"> 67</a></span> <span class="preprocessor">#define true 1</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727"> 68</a></span> <span class="preprocessor"></span><span class="preprocessor">#define false 0</span></div> +<div class="line"><a name="l00069"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119"> 69</a></span> <span class="preprocessor"></span><span class="preprocessor">#define FS 100</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7"> 70</a></span> <span class="preprocessor"></span><span class="preprocessor">#define BUFFER_SIZE (FS* 5) </span></div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524"> 71</a></span> <span class="preprocessor"></span><span class="preprocessor">#define HR_FIFO_SIZE 7</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae"> 72</a></span> <span class="preprocessor"></span><span class="preprocessor">#define MA4_SIZE 4 // DO NOT CHANGE</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8"> 73</a></span> <span class="preprocessor"></span><span class="preprocessor">#define HAMMING_SIZE 5// DO NOT CHANGE</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384"> 74</a></span> <span class="preprocessor"></span><span class="preprocessor">#define min(x,y) ((x) < (y) ? (x) : (y))</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929"> 76</a></span> <span class="keyword">const</span> uint16_t <a class="code" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">auw_hamm</a>[31]={ 41, 276, 512, 276, 41 }; <span class="comment">//Hamm= long16(512* hamming(5)');</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> <span class="comment">//uch_spo2_table is computed as -45.060*ratioAverage* ratioAverage + 30.354 *ratioAverage + 94.845 ;</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108"> 78</a></span> <span class="keyword">const</span> uint8_t <a class="code" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">uch_spo2_table</a>[184]={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, </div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, </div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, </div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, </div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, </div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, </div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, </div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, </div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span>  28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, </div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span>  3, 2, 1 } ;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> <span class="keyword">static</span> int32_t an_dx[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>-<a class="code" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">MA4_SIZE</a>]; <span class="comment">// delta</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> <span class="keyword">static</span> int32_t an_x[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>]; <span class="comment">//ir</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="keyword">static</span> int32_t an_y[ <a class="code" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">BUFFER_SIZE</a>]; <span class="comment">//red</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> </div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> </div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(uint32_t *pun_ir_buffer , int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>, uint32_t *pun_red_buffer , int32_t *pn_spo2, int8_t *pch_spo2_valid , int32_t *pn_heart_rate , int8_t *pch_hr_valid);</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9" title="Find peaks.">maxim_find_peaks</a>( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num );</div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf" title="Find peaks above n_min_height.">maxim_peaks_above_min_height</a>( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height );</div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a" title="Remove peaks.">maxim_remove_close_peaks</a>( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance );</div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff" title="Sort array.">maxim_sort_ascend</a>( int32_t *pn_x, int32_t n_size );</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="keywordtype">void</span> <a class="code" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060" title="Sort indices.">maxim_sort_indices_descend</a>( int32_t *pn_x, int32_t *pn_indx, int32_t n_size);</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> </div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif </span><span class="comment">/* ALGORITHM_H_ */</span><span class="preprocessor"></span></div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li><li class="navelem"><a class="el" href="algorithm_8h.html">algorithm.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html new file mode 100644 index 000000000..8c8bbce7f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.html @@ -0,0 +1,125 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Data Structures</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('annotated.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structures</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here are the data structures with brief descriptions:</div><div class="directory"> +<table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><img src="ftv2cl.png" alt="C" width="24" height="22" /><a class="el" href="class_adafruit___neo_pixel.html" target="_self">Adafruit_NeoPixel</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js new file mode 100644 index 000000000..a2cf5a0fd --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/annotated.js @@ -0,0 +1,4 @@ +var annotated = +[ + [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html", "class_adafruit___neo_pixel" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..6da883dbb2fc7d439acc68a313049a8ee8cb6461 GIT binary patch literal 668 zcmeAS@N?(olHy`uVBq!ia0y~yVBlb2V36ZrV_;wqY>4M&U|>r2ba4!+V0=6Ge73No z$npDc-sG9hPT4#=>#tx|ZcffyOOX~Q$B!EG-ndRSGv!?oAgHOO<f^ggk>kSeTuWbs zE{%%L&Aq&Atte}zbnd0*uIXksbM$5_h}7<WG^z6+_u=n`*1P9_e|C2E_VP~;4tu@y zSio0cvR?GlZH5CK^E|$7-N`ynT=VJnQ)yBR5)*&FpMG0)UVYVx_5Y5Pax8vhaNzD# z)oj0ZQ{UpkFR!u`|F22wZZVC%=e~E*jcu`J?lU>c|G5Zo9@rkH>tN|*b^XhsUBVA5 z?ptQx`^mb1Ys$MrHQ#b)KJ!*T^tRmZk)ziRpKdV+F}^jge@^1%(bW&h|G6aaV|!|x z#K{*w6Qy@-HHqgfsj5iiS!m?O@t=RgvEv(7Y1$l*J@cZK(`d&GCI&apv#PN-UVp4{ zeIT-P<~(Kww>+Cy{b`|(H53Jlk{`++kox|u+GcLoX;bfYXZN!*tk^o)&hZU@Rqg#u z_k4Z^hqbZyl~4CFJq=1xFlA=w`6Dy!?*_3A)h#hIXR|T5O@F1L8K-{oCa<%-uip86 zj0|q`ox1LKmwMz#9L>CBZyfq}qqA7cao)K2r{00vwLNcFCtW=du=mYG);?*?5Up-A zftP(vrL`H1Iu{D|Mqm4|Q$JpF_O)uM&bfbI*T$84^5)HpKeTu5I;E4>{qk$_f<nyI z%GI)8oa3EzWD2j0^Lh6OOXGBr=$Z50%&kd0o9wuLJL|%Wa}sS*8h$+ak>{f)9u$&& zcZ#-XDcg%WQ@e(#uMe?=n|r&-Fi1>%apdzG$D{g*hs$!Ob$z=zQ(j%DTkY>6Z}<0( e3=L7gd7stn<5{{Zbs7T$1B0ilpUXO@geCxU4lS<$ literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..4aa5b3ecd3a1548be883d8a5e8c53588936578bf GIT binary patch literal 146 zcmeAS@N?(olHy`uVBq!ia0y~yU|?rpVBp|jV_;w~WqAssB0XIkLn;{G&OOcBpdjEf z|H9->bN*?ITq~UXrnw~rpOU!1+qrGS<l4>iS29*)+h5Au%lzZge<Sx?hP5Ww(=+(H z`0Jvc`33xns0|abnf}aj-QR-aN*503v51@flCjUZd`g9Zfq}u()z4*}Q$iB}hv735 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html new file mode 100644 index 000000000..2e17a0010 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.html @@ -0,0 +1,668 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Adafruit_NeoPixel Class Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('class_adafruit___neo_pixel.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</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"> +<div class="title">Adafruit_NeoPixel Class Reference</div> </div> +</div><!--header--> +<div class="contents"> + +<p><code>#include <<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>></code></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-methods"></a> +Public Member Functions</h2></td></tr> +<tr class="memitem:ac314debe6917c8c9b320b785139c6e58"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a> (uint16_t n, uint8_t p=6, <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t=<a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a>+<a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a>)</td></tr> +<tr class="separator:ac314debe6917c8c9b320b785139c6e58"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab1ac0c48cf3fd9185e40308c37f1d320"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320">Adafruit_NeoPixel</a> (void)</td></tr> +<tr class="separator:ab1ac0c48cf3fd9185e40308c37f1d320"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a16d970aa16f9d0128800346f4ca567db"><td class="memItemLeft" align="right" valign="top"> </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">~Adafruit_NeoPixel</a> ()</td></tr> +<tr class="separator:a16d970aa16f9d0128800346f4ca567db"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aad78931e44ce43c9b9c460dba7c9bbb7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">begin</a> (void)</td></tr> +<tr class="separator:aad78931e44ce43c9b9c460dba7c9bbb7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae335a7c214036a6c1734969f2bc3f4f7"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">show</a> (void)</td></tr> +<tr class="separator:ae335a7c214036a6c1734969f2bc3f4f7"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a345b7a6f550461926ed5187b2df42d6b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">setPin</a> (uint8_t p)</td></tr> +<tr class="separator:a345b7a6f550461926ed5187b2df42d6b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0ec91c90f337e806cd98956514257cf1"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1">setPixelColor</a> (uint16_t n, uint8_t r, uint8_t g, uint8_t b)</td></tr> +<tr class="separator:a0ec91c90f337e806cd98956514257cf1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a35eda2252e3ed976a11d35cb8f4b2e41"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41">setPixelColor</a> (uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)</td></tr> +<tr class="separator:a35eda2252e3ed976a11d35cb8f4b2e41"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:abbf243cce591dc37be507cf173485bc8"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">setPixelColor</a> (uint16_t n, uint32_t c)</td></tr> +<tr class="separator:abbf243cce591dc37be507cf173485bc8"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:afa1740af1d8eec971eada06d53901c53"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">setBrightness</a> (uint8_t)</td></tr> +<tr class="separator:afa1740af1d8eec971eada06d53901c53"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac8bb3912a3ce86b15842e79d0b421204"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">clear</a> ()</td></tr> +<tr class="separator:ac8bb3912a3ce86b15842e79d0b421204"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a05542d574f1a9a73f9e3547990321944"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">updateLength</a> (uint16_t n)</td></tr> +<tr class="separator:a05542d574f1a9a73f9e3547990321944"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a65e59263e0f5a04c7202d4385d3a539b"><td class="memItemLeft" align="right" valign="top">void </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">updateType</a> (<a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> t)</td></tr> +<tr class="separator:a65e59263e0f5a04c7202d4385d3a539b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a18bc91d2bad52cf603814d4df6f33067"><td class="memItemLeft" align="right" valign="top">uint8_t * </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">getPixels</a> (void) const </td></tr> +<tr class="separator:a18bc91d2bad52cf603814d4df6f33067"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a553bf1a0513094c73cb54a235f74ac7f"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">getBrightness</a> (void) const </td></tr> +<tr class="separator:a553bf1a0513094c73cb54a235f74ac7f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac893a5c07c41604539022af84665c04b"><td class="memItemLeft" align="right" valign="top">uint16_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">numPixels</a> (void) const </td></tr> +<tr class="separator:ac893a5c07c41604539022af84665c04b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9846704aaabd4e102beba5a5484d5738"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738">Color</a> (uint8_t r, uint8_t g, uint8_t b, uint8_t w)</td></tr> +<tr class="separator:a9846704aaabd4e102beba5a5484d5738"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a10a836ddc4ebd3e26b1e71a5875764fa"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">getPixelColor</a> (uint16_t n) const </td></tr> +<tr class="separator:a10a836ddc4ebd3e26b1e71a5875764fa"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad38ce8112667b70ad7c411a98892af0e"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">canShow</a> (void)</td></tr> +<tr class="separator:ad38ce8112667b70ad7c411a98892af0e"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="pub-static-methods"></a> +Static Public Member Functions</h2></td></tr> +<tr class="memitem:ae3e6c2fabbee89d19487424acd8d9fec"><td class="memItemLeft" align="right" valign="top">static uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Color</a> (uint8_t r, uint8_t g, uint8_t b)</td></tr> +<tr class="separator:ae3e6c2fabbee89d19487424acd8d9fec"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"> +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00116">116</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> +</div><h2 class="groupheader">Constructor & Destructor Documentation</h2> +<a class="anchor" id="ac314debe6917c8c9b320b785139c6e58"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>p</em> = <code>6</code>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> </td> + <td class="paramname"><em>t</em> = <code><a class="el" href="_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f">NEO_GRB</a> + <a class="el" href="_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d">NEO_KHZ800</a></code> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00038">38</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ab1ac0c48cf3fd9185e40308c37f1d320"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00051">51</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a16d970aa16f9d0128800346f4ca567db"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">~<a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a> </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00060">60</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<h2 class="groupheader">Member Function Documentation</h2> +<a class="anchor" id="aad78931e44ce43c9b9c460dba7c9bbb7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void begin </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00065">65</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ad38ce8112667b70ad7c411a98892af0e"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">bool canShow </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">inline</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8h_source.html#l00147">147</a> of file <a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ac8bb3912a3ce86b15842e79d0b421204"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void clear </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01198">1198</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae3e6c2fabbee89d19487424acd8d9fec"></a> +<div class="memitem"> +<div class="memproto"> +<table class="mlabels"> + <tr> + <td class="mlabels-left"> + <table class="memname"> + <tr> + <td class="memname">uint32_t Color </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>r</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>g</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>b</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> + </td> + <td class="mlabels-right"> +<span class="mlabels"><span class="mlabel">static</span></span> </td> + </tr> +</table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01096">1096</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a9846704aaabd4e102beba5a5484d5738"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t Color </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>r</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>g</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>b</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>w</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01102">1102</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a553bf1a0513094c73cb54a235f74ac7f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t getBrightness </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01194">1194</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a10a836ddc4ebd3e26b1e71a5875764fa"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t getPixelColor </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em></td><td>)</td> + <td> const</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01107">1107</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a18bc91d2bad52cf603814d4df6f33067"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t * getPixels </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01148">1148</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ac893a5c07c41604539022af84665c04b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint16_t numPixels </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td> const</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01152">1152</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="afa1740af1d8eec971eada06d53901c53"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setBrightness </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>b</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01168">1168</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a345b7a6f550461926ed5187b2df42d6b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setPin </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>p</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01031">1031</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0ec91c90f337e806cd98956514257cf1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setPixelColor </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>r</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>g</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>b</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01047">1047</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a35eda2252e3ed976a11d35cb8f4b2e41"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setPixelColor </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>r</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>g</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>b</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>w</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<a class="anchor" id="abbf243cce591dc37be507cf173485bc8"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void setPixelColor </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t </td> + <td class="paramname"><em>c</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l01070">1070</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ae335a7c214036a6c1734969f2bc3f4f7"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void show </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00111">111</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a05542d574f1a9a73f9e3547990321944"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void updateLength </td> + <td>(</td> + <td class="paramtype">uint16_t </td> + <td class="paramname"><em>n</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00073">73</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a65e59263e0f5a04c7202d4385d3a539b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">void updateType </td> + <td>(</td> + <td class="paramtype"><a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">neoPixelType</a> </td> + <td class="paramname"><em>t</em></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="_adafruit___neo_pixel_8cpp_source.html#l00086">86</a> of file <a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a>.</p> + +</div> +</div> +<hr/>The documentation for this class was generated from the following files:<ul> +<li>RD117_ARDUINO/<a class="el" href="_adafruit___neo_pixel_8h_source.html">Adafruit_NeoPixel.h</a></li> +<li>RD117_ARDUINO/<a class="el" href="_adafruit___neo_pixel_8cpp_source.html">Adafruit_NeoPixel.cpp</a></li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js new file mode 100644 index 000000000..521850e40 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/class_adafruit___neo_pixel.js @@ -0,0 +1,23 @@ +var class_adafruit___neo_pixel = +[ + [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58", null ], + [ "Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320", null ], + [ "~Adafruit_NeoPixel", "class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db", null ], + [ "begin", "class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7", null ], + [ "canShow", "class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e", null ], + [ "clear", "class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204", null ], + [ "Color", "class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec", null ], + [ "Color", "class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738", null ], + [ "getBrightness", "class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f", null ], + [ "getPixelColor", "class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa", null ], + [ "getPixels", "class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067", null ], + [ "numPixels", "class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b", null ], + [ "setBrightness", "class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53", null ], + [ "setPin", "class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b", null ], + [ "setPixelColor", "class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1", null ], + [ "setPixelColor", "class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41", null ], + [ "setPixelColor", "class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8", null ], + [ "show", "class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7", null ], + [ "updateLength", "class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944", null ], + [ "updateType", "class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html new file mode 100644 index 000000000..4ccf6040c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/classes.html @@ -0,0 +1,129 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Data Structure Index</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="classes.html"><span>Data Structure Index</span></a></li> + <li><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('classes.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Data Structure Index</div> </div> +</div><!--header--> +<div class="contents"> +<div class="qindex"><a class="qindex" href="#letter_A">A</a></div> +<table style="margin: 10px; white-space: nowrap;" align="center" width="95%" border="0" cellspacing="0" cellpadding="0"> +<tr><td rowspan="2" valign="bottom"><a name="letter_A"></a><table border="0" cellspacing="0" cellpadding="0"><tr><td><div class="ah">  A  </div></td></tr></table> +</td><td></td></tr> +<tr><td></td></tr> +<tr><td valign="top"><a class="el" href="class_adafruit___neo_pixel.html">Adafruit_NeoPixel</a>   </td><td></td></tr> +<tr><td></td><td></td></tr> +</table> +<div class="qindex"><a class="qindex" href="#letter_A">A</a></div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..ea7139c41d9c1c05f5a466f99cec8d705066ba4b GIT binary patch literal 131 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?ygXeTLn;{G&V9()pvd78 z&ns#YC0w(ZRX0?kW<ikI!NTvSm*3-HP`m#^*x($4ot#g@Mz*Mx)pdKGh#&G!RM)MP ibUN>6U(jlz5GDFsgnxIxtO5fA1B0ilpUXO@geCx-aVDVv literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html new file mode 100644 index 000000000..e591b400c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.html @@ -0,0 +1,134 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_1496e1f9c0637ae9073f7370a2521bf1.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">RD117_ARDUINO Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:_adafruit___neo_pixel_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8cpp.html">Adafruit_NeoPixel.cpp</a> <a href="_adafruit___neo_pixel_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_adafruit___neo_pixel_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_adafruit___neo_pixel_8h.html">Adafruit_NeoPixel.h</a> <a href="_adafruit___neo_pixel_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:algorithm_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> <a href="algorithm_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:algorithm_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html">algorithm.h</a> <a href="algorithm_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:max30102_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html">max30102.cpp</a> <a href="max30102_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:max30102_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html">max30102.h</a> <a href="max30102_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_r_d117___a_r_d_u_i_n_o_8ino"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_r_d117___a_r_d_u_i_n_o_8ino.html">RD117_ARDUINO.ino</a> <a href="_r_d117___a_r_d_u_i_n_o_8ino_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_soft_i2_c_master_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a> <a href="_soft_i2_c_master_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js new file mode 100644 index 000000000..ea015b1af --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_1496e1f9c0637ae9073f7370a2521bf1.js @@ -0,0 +1,11 @@ +var dir_1496e1f9c0637ae9073f7370a2521bf1 = +[ + [ "Adafruit_NeoPixel.cpp", "_adafruit___neo_pixel_8cpp.html", null ], + [ "Adafruit_NeoPixel.h", "_adafruit___neo_pixel_8h.html", "_adafruit___neo_pixel_8h" ], + [ "algorithm.cpp", "algorithm_8cpp.html", "algorithm_8cpp" ], + [ "algorithm.h", "algorithm_8h.html", "algorithm_8h" ], + [ "max30102.cpp", "max30102_8cpp.html", "max30102_8cpp" ], + [ "max30102.h", "max30102_8h.html", "max30102_8h" ], + [ "RD117_ARDUINO.ino", "_r_d117___a_r_d_u_i_n_o_8ino.html", "_r_d117___a_r_d_u_i_n_o_8ino" ], + [ "SoftI2CMaster.h", "_soft_i2_c_master_8h.html", "_soft_i2_c_master_8h" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html new file mode 100644 index 000000000..013cb4fa8 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.html @@ -0,0 +1,121 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/algorithm Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_19b53f07f52837a342947cc20e6d978f.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">algorithm Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:algorithm_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8cpp.html">algorithm.cpp</a> <a href="algorithm_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:algorithm_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="algorithm_8h.html">algorithm.h</a> <a href="algorithm_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js new file mode 100644 index 000000000..1f23c8ffa --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_19b53f07f52837a342947cc20e6d978f.js @@ -0,0 +1,5 @@ +var dir_19b53f07f52837a342947cc20e6d978f = +[ + [ "algorithm.cpp", "algorithm_8cpp.html", "algorithm_8cpp" ], + [ "algorithm.h", "algorithm_8h.html", "algorithm_8h" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html new file mode 100644 index 000000000..d05f997d7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.html @@ -0,0 +1,126 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_70c5cd4c8bba287fe799894cc0903ca4.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">RD117_MBED Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="subdirs"></a> +Directories</h2></td></tr> +<tr class="memitem:dir_19b53f07f52837a342947cc20e6d978f"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html">algorithm</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:dir_d4a9a7556cca61907ce453116086a23a"><td class="memItemLeft" align="right" valign="top">directory  </td><td class="memItemRight" valign="bottom"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:main_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html">main.cpp</a> <a href="main_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js new file mode 100644 index 000000000..893afb2a3 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_70c5cd4c8bba287fe799894cc0903ca4.js @@ -0,0 +1,6 @@ +var dir_70c5cd4c8bba287fe799894cc0903ca4 = +[ + [ "algorithm", "dir_19b53f07f52837a342947cc20e6d978f.html", "dir_19b53f07f52837a342947cc20e6d978f" ], + [ "MAX30102", "dir_d4a9a7556cca61907ce453116086a23a.html", "dir_d4a9a7556cca61907ce453116086a23a" ], + [ "main.cpp", "main_8cpp.html", "main_8cpp" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html new file mode 100644 index 000000000..ef5be6001 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.html @@ -0,0 +1,121 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/MAX30102 Directory Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('dir_d4a9a7556cca61907ce453116086a23a.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">MAX30102 Directory Reference</div> </div> +</div><!--header--> +<div class="contents"> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="files"></a> +Files</h2></td></tr> +<tr class="memitem:_m_a_x30102_8cpp"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8cpp.html">MAX30102.cpp</a> <a href="_m_a_x30102_8cpp_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:_m_a_x30102_8h"><td class="memItemLeft" align="right" valign="top">file  </td><td class="memItemRight" valign="bottom"><a class="el" href="_m_a_x30102_8h.html">MAX30102.h</a> <a href="_m_a_x30102_8h_source.html">[code]</a></td></tr> +<tr class="separator:"><td class="memSeparator" colspan="2"> </td></tr> +</table> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html">MAX30102</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js new file mode 100644 index 000000000..4c09eec2b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dir_d4a9a7556cca61907ce453116086a23a.js @@ -0,0 +1,5 @@ +var dir_d4a9a7556cca61907ce453116086a23a = +[ + [ "MAX30102.cpp", "_m_a_x30102_8cpp.html", "_m_a_x30102_8cpp" ], + [ "MAX30102.h", "_m_a_x30102_8h.html", "_m_a_x30102_8h" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css new file mode 100644 index 000000000..2df37ac8d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.css @@ -0,0 +1,1172 @@ +/* The standard CSS for doxygen */ + +body, table, div, p, dl { + font: 400 14px/19px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #94D0CD; + color: #3D8C88; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd, 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: #EEF7F7; + border: 1px solid #ADDBD9; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #449D99; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4FB2AD; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #A7D8D6; + color: #ffffff; + border: 1px double #93CFCC; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 4px; + margin: 4px; + background-color: #FCFDFD; + border: 1px solid #CBE8E7; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +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; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000); +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EEF7F7; + font-weight: bold; + border: 1px solid #CBE8E7; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EEF7F7; + border: 1px solid #CBE8E7; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #F0F8F8; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F8FCFB; + border-left: 2px solid #A7D8D6; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #ADDBD9; +} + +th.dirtab { + background: #EEF7F7; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #56B5B0; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #FAFCFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4FB2AD; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtemplate { + font-size: 80%; + color: #4FB2AD; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EEF7F7; + border: 1px solid #ADDBD9; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: bold; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #B2DDDB; + border-left: 1px solid #B2DDDB; + border-right: 1px solid #B2DDDB; + padding: 6px 0px 6px 0px; + color: #2C6663; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E6F4F3; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + border-top-left-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + -moz-border-radius-topleft: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + -webkit-border-top-left-radius: 4px; + +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #B2DDDB; + border-left: 1px solid #B2DDDB; + border-right: 1px solid #B2DDDB; + padding: 6px 10px 2px 10px; + background-color: #FCFDFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #80C7C4; + border-top:1px solid #63BBB6; + border-left:1px solid #63BBB6; + border-right:1px solid #CBE8E7; + border-bottom:1px solid #CBE8E7; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view when not used as main index */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F8FCFB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #449D99; +} + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #32736F; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #347975; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #3F918C; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + width: 100%; + margin-bottom: 10px; + border: 1px solid #B2DDDB; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #B2DDDB; + border-bottom: 1px solid #B2DDDB; + vertical-align: top; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #B2DDDB; + width: 100%; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E6F4F3; + font-size: 90%; + color: #2C6663; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #B2DDDB; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#96D1CE; + border:solid 1px #C9E7E6; + 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:#3E8E8A; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #306E6B; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#77C3BF; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#3E8E8A; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FAFCFC; + margin: 0px; + border-bottom: 1px solid #CBE8E7; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #63BBB6; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #9CD3D1; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#3A8683; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F6FBFA; + border: 1px solid #DDF0EF; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 20px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4FB2AD; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..b47584814dd4fd0b9b4978d1e74c3c0ae8dceb40 GIT binary patch literal 3812 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 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js new file mode 100644 index 000000000..116542f18 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/dynsections.js @@ -0,0 +1,78 @@ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} +function toggleLevel(level) +{ + $('table.directory tr').each(function(){ + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l<level+1) { + i.attr('src','ftv2folderopen.png'); + a.attr('src','ftv2mnode.png'); + $(this).show(); + } else if (l==level+1) { + i.attr('src','ftv2folderclosed.png'); + a.attr('src','ftv2pnode.png'); + $(this).show(); + } else { + $(this).hide(); + } + }); + updateStripes(); +} +function toggleFolder(id) +{ + var n = $('[id^=row_'+id+']'); + var i = $('[id^=img_'+id+']'); + var a = $('[id^=arr_'+id+']'); + var c = n.slice(1); + if (c.filter(':first').is(':visible')===true) { + i.attr('src','ftv2folderclosed.png'); + a.attr('src','ftv2pnode.png'); + c.hide(); + } else { + i.attr('src','ftv2folderopen.png'); + a.attr('src','ftv2mnode.png'); + c.show(); + } + updateStripes(); +} + +function toggleInherit(id) +{ + var rows = $('tr.inherit.'+id); + var img = $('tr.inherit_header.'+id+' img'); + var src = $(img).attr('src'); + if (rows.filter(':first').is(':visible')===true) { + rows.css('display','none'); + $(img).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + rows.css('display','table-row'); // using show() causes jump in firefox + $(img).attr('src',src.substring(0,src.length-10)+'open.png'); + } +} + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html new file mode 100644 index 000000000..ddca97aee --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.html @@ -0,0 +1,130 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: File List</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li class="current"><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('files.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">File List</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock">Here is a list of all files with brief descriptions:</div><div class="directory"> +<div class="levels">[detail level <span onclick="javascript:toggleLevel(1);">1</span><span onclick="javascript:toggleLevel(2);">2</span><span onclick="javascript:toggleLevel(3);">3</span>]</div><table class="directory"> +<tr id="row_0_" class="even"><td class="entry"><img id="arr_0_" src="ftv2mlastnode.png" alt="\" width="16" height="22" onclick="toggleFolder('0_')"/><img id="img_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_')"/><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html" target="_self">RD117_MBED</a></td><td class="desc"></td></tr> +<tr id="row_0_0_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_0_0_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_0_')"/><img id="img_0_0_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_0_')"/><a class="el" href="dir_19b53f07f52837a342947cc20e6d978f.html" target="_self">algorithm</a></td><td class="desc"></td></tr> +<tr id="row_0_0_0_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="algorithm_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="algorithm_8cpp.html" target="_self">algorithm.cpp</a></td><td class="desc"></td></tr> +<tr id="row_0_0_1_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="algorithm_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="algorithm_8h.html" target="_self">algorithm.h</a></td><td class="desc"></td></tr> +<tr id="row_0_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img id="arr_0_1_" src="ftv2mnode.png" alt="o" width="16" height="22" onclick="toggleFolder('0_1_')"/><img id="img_0_1_" src="ftv2folderopen.png" alt="-" width="24" height="22" onclick="toggleFolder('0_1_')"/><a class="el" href="dir_d4a9a7556cca61907ce453116086a23a.html" target="_self">MAX30102</a></td><td class="desc"></td></tr> +<tr id="row_0_1_0_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2node.png" alt="o" width="16" height="22" /><a href="_m_a_x30102_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="_m_a_x30102_8cpp.html" target="_self">MAX30102.cpp</a></td><td class="desc"></td></tr> +<tr id="row_0_1_1_" class="even"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2vertline.png" alt="|" width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="_m_a_x30102_8h_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="_m_a_x30102_8h.html" target="_self">MAX30102.h</a></td><td class="desc"></td></tr> +<tr id="row_0_2_"><td class="entry"><img src="ftv2blank.png" alt=" " width="16" height="22" /><img src="ftv2lastnode.png" alt="\" width="16" height="22" /><a href="main_8cpp_source.html"><img src="ftv2doc.png" alt="*" width="24" height="22" /></a><a class="el" href="main_8cpp.html" target="_self">main.cpp</a></td><td class="desc"></td></tr> +</table> +</div><!-- directory --> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js new file mode 100644 index 000000000..0b50c07c5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/files.js @@ -0,0 +1,4 @@ +var files = +[ + [ "RD117_MBED", "dir_70c5cd4c8bba287fe799894cc0903ca4.html", "dir_70c5cd4c8bba287fe799894cc0903ca4" ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2blank.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2cl.png new file mode 100644 index 0000000000000000000000000000000000000000..2bc4fdbf6f8b775f3742d1175be5049388a0a68c GIT binary patch literal 456 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`)q=>Eakt!T5IWL2qeC zk#>92ETLAF1vdneJ3Nj$8!Va<BqqqewEfY|<b@Beu0AfuviI4OldJ0;&o46JaO$4t zs$t40r<J9s*3tOGXvgi?<g!f{Z7U?6J+^JDeZT$ly*F>Ru8v#J{KL(>Vg3(20fV_) z|IAZ-);)o>;9<m#TP9+4j4uMLCp_^^s^f@njO6W2=Tm(q+`zZl<u!xc3qdo6k{L|N z-;N$l>B@i4yM(9f>P*W`hm{+Wmob)@nEouTYU*EUa<Jj5+#}{@9e+PtRi+20{_7aE zIVJWSS@G$7{;4N@bwXTUHcgtTc1>O-N0>E(-Tlbzj5D9UceAFh-fFGNa)DEKe{<Ga zwhuW`TrE}_><5x%nAER_Py7GQ_s*wqqsY=(c1MI6<`wLD=DO8sUr0!=T)#_b(C-cN zbsEYtx_<ooJ*CT}%x>Zqp?|ygPF*&?upo}<LyKmCrpuY5cMr+4HgMN7mdvm{!B~+Z z?9hIz@rsrD^zfe#m0mL!Ec{h4`yIoJ4OI$^x09q8_DHP%-~Vj)0b3J>h#<+N^BfEe O3=E#GelF{r5}E)>G{&F+ literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2doc.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5e6c1631f064d0a1942010874a3047be703a37 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`(T7)5S5Qg7NKK-)!MT zk=FS$Qzn_*_n7T7>&tGhg-e5uhJ9$(JL-Cu>y_6Z_B<BxLd6{)*?+{}*|nibBP#HX zQ|7_2ODegSmwDdm{O%`xAtg=mQfs#)U%uL&;`6rO@BBV@Eo1v_hUIL+4@?SQu{bv5 z)vTRzyFIu4*u=+n@>YD-XW6!<O^(oTQ4vtcYdzt%_{PQ^j1Sr!Hb$`gV4i<!X;OXs zlo_dlyli(HYIm{eu3~3jawzdl#+?4ALemn(p8n))5V!FbG4Sy@T(EF^DqG8mNo#aB zZIqC%uFm^*IsI3p;H3A~xA)C`^!ng?m97PuyR@dH<dz@5yIAG<Z{wPkQ#7xBxApwP z>ErBSvSE$-e&@WEI%}=<?e;wWdE0zX%<p6O61&${$u3}@C%5M9J2B%&jcIXqD|WA* zmJ!_(7Qd<1kWJ-xiHeic8NF`(Sw}LAu0C!}7cUig@i+2`^_HDE{GaxHnf∾LCy| zx;G<?T-RPL`fmQDz9H|&v=dVv%=(#>I78CVSm$Zv8UEtpk|yuS*{wN!b0p?X*><%r z+f$pl<ZyT++x6_q&+X@0Po?h-EA9=Ote>(;$mUFiR;%)H-^)L}S!E}^{>ijm?Oajm zh68VlgBN9Vw2MEVxxJW2eUg#1qtGIz1Kj(#LK>2`Mx~~%KC-XGYwN{=(?*j#Htvd@ zcx_E_eO1^g_6NN2tX46r76|wom`_N|teI3DeEE)qWV+GZw9K4I?8cinJ+DY(*z;iZ z0^^+1vtKV-^r%YV?d``0W7L$b|Mu7X*Rz_L@YP}S{z<2+t1ir}V9>7+$_Rhq{mYQc zi@{pT+U^I7<;*1B<;>G2Ccai#{GOrY@MagQi0kugQy+gdT38`-K-@PowmNa%qq(~o tY(J>%m?v)(XIsVd;rx&P_A~c0h)>&lB`zSSh=GBD!PC{xWt~$(69CtfR3rcZ literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..1dea9569a3cc4a3856a3270f82d1e706cc71580d GIT binary patch literal 567 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`*#=)5S5Qg7Iza>AcGh zBDR;=CvpTOwcqHwD_Xm>Yr-w3)!RPEuKB@Yr}S6Su8}u8Y;&iB(+20zR+r1|EF4?A zjvu}w>HkQ4;nWXJt;PK{wa<Ue+sW_0&Bu$AVQV5I!z-7!EZz(OM|Q7Y{^{>ei32`z z<-026)*3ME;MU^Q__6Hqxl1WL@_NTy7#PZ#w9S5gUEcrc%X9vmowAP?ILOUkuUCBj zXvhgMli3wF<)2IwYd@^mFmsRXPotWR_uTz0FLVF<yX+eKJLjBT>(rLLxps^1nk;+& zt=u)+WO6iaXVkPUHn94a-MP;{FF|<o?xnv~1ijL|rguzsS+9O7P(|o;_tnoqN(&~% z9(Q8jc(CU#%VKX2;W=`dv6H!znI}v>#iJq6xG}OoR^x2fwVdY}&Qbpl*Gx6`V7?(F zF`IKbua3ug9u8lrn+#8uxH$M-SJHcH<egU?q_V=QOsl#;xkb^#bJJo^=@qNkl$%~o zdnVu$l390ja>;VFDOKCAaA$8WJEahInMFZ;s_(L2!W|7ACBI&V+?+Ro*TGFJZ#rYF z$+DY)EDcIJFTZrBZvV@7CEw)VwDq}dt@AebZhu{pe>a=Kfp6(zCt2pZ>4``9s}%2l zcm8*U-(+3|<NdES`yN+D-Tz!&V{c#)vd?{QM}E2Oy)2V^XU-~Q*j2DH{O9`r-#+Rs c%YMe!`x#8a)M_>{FfcH9y85}Sb4q9e0CMsAzW@LL literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2folderopen.png new file mode 100644 index 0000000000000000000000000000000000000000..45ef3e2e68b6c14ec6474049fe1d19e8081c42b3 GIT binary patch literal 621 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`$hU>Eakt!T2`zY?g4K z$iHXD)n;ZTO$zJEO}=a&^lDqk>tzZ}9d|W4xNDi^9mG$q;I3`_&1Kh8UGF6x%b~;} z>L|WcP&j(Fi&e4hbH6-mb7M}uH%<n{_UHc2{5|*c+~P?&x|*sCGSWE=7Jh$z^TjZD z9KOCccIVX`g(Xt50!;=krtt@2Hl{Ehn7?Q}vzq+bN{J$w9bqaZ#p%-T_gxJQ_o&jT zk~!Vv8!>yHZ|R#K`}i3+YjSG7$KDQ{KJ((%+$ozar)-LBJruxJ+4Ov#!{=~z?xmlS z8D6wry}eA|ZqM{yzvzjpJa#`<Y<_0tbML9?{MY5j+u944Z_Ci|)TsFRbF%-%6&dat zt~sZ7E<T|wYB^`wi|#Gw(v36(x@PL^d-FEw>6;x3RkpItRR~yVC{m)#d&2GW3Aa@` zn-<PuHgG${D7>YaSt~9i;@e{VO`IJaYwtb&ZkcGsz;Mjt%7dTBq9ZM*hI7q`kzYMy zYV*3ydMlLzxm31&uYdIK66<0%PWJO=_f8nTU-D{}bJL8jEhZnttnXyLeSGlJ(Sv;R z*6p8`ZsY&8+(kn9l_%5vt$g<<uh<?{v15<Xjf0cFh8MN$YAJuLE4lyb?rZa_cDK5p zp5C)~-+tGR+kZ`Tf7;8ykm-?od9A!JgS+!`r`5i*H$TlcXGm5Nxie#~czJgBqi=tj zc6ff?`l@G#+m4`_LetgHcV6x6ijbWj@_Kdf<wsU?KhBLVHjN5r1!<b2-+zy}VSnrY g{}~Jh0{a;)(*BEFKcn}Xfq{X+)78&qol`;+0JRhv0RR91 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2lastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2link.png new file mode 100644 index 0000000000000000000000000000000000000000..ba5e6c1631f064d0a1942010874a3047be703a37 GIT binary patch literal 730 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`(T7)5S5Qg7NKK-)!MT zk=FS$Qzn_*_n7T7>&tGhg-e5uhJ9$(JL-Cu>y_6Z_B<BxLd6{)*?+{}*|nibBP#HX zQ|7_2ODegSmwDdm{O%`xAtg=mQfs#)U%uL&;`6rO@BBV@Eo1v_hUIL+4@?SQu{bv5 z)vTRzyFIu4*u=+n@>YD-XW6!<O^(oTQ4vtcYdzt%_{PQ^j1Sr!Hb$`gV4i<!X;OXs zlo_dlyli(HYIm{eu3~3jawzdl#+?4ALemn(p8n))5V!FbG4Sy@T(EF^DqG8mNo#aB zZIqC%uFm^*IsI3p;H3A~xA)C`^!ng?m97PuyR@dH<dz@5yIAG<Z{wPkQ#7xBxApwP z>ErBSvSE$-e&@WEI%}=<?e;wWdE0zX%<p6O61&${$u3}@C%5M9J2B%&jcIXqD|WA* zmJ!_(7Qd<1kWJ-xiHeic8NF`(Sw}LAu0C!}7cUig@i+2`^_HDE{GaxHnf∾LCy| zx;G<?T-RPL`fmQDz9H|&v=dVv%=(#>I78CVSm$Zv8UEtpk|yuS*{wN!b0p?X*><%r z+f$pl<ZyT++x6_q&+X@0Po?h-EA9=Ote>(;$mUFiR;%)H-^)L}S!E}^{>ijm?Oajm zh68VlgBN9Vw2MEVxxJW2eUg#1qtGIz1Kj(#LK>2`Mx~~%KC-XGYwN{=(?*j#Htvd@ zcx_E_eO1^g_6NN2tX46r76|wom`_N|teI3DeEE)qWV+GZw9K4I?8cinJ+DY(*z;iZ z0^^+1vtKV-^r%YV?d``0W7L$b|Mu7X*Rz_L@YP}S{z<2+t1ir}V9>7+$_Rhq{mYQc zi@{pT+U^I7<;*1B<;>G2Ccai#{GOrY@MagQi0kugQy+gdT38`-K-@PowmNa%qq(~o tY(J>%m?v)(XIsVd;rx&P_A~c0h)>&lB`zSSh=GBD!PC{xWt~$(69CtfR3rcZ literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mlastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0599622a5d11ab58f3a6d81f08176522f10f26b3 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`MSr;B4q1>@Vhihj(F z5=TGEFKK_k;UT1V$WS4+@!%EHha3ehU9Y4jb;UKPMF>RL?0WghL#r&Yj3p$*r1Jls z8sp9RYM;;kn!GLd;rTg->MhvbC?;Idm5aM3ztLFY!PcESY}U_xAf|O^!SXnVOV2l| zip)r@Yn|s+exZeT*Ds#(50m2=Z$8y6>tClP`G24Mi@-NdV*bhRcNfk5CFphKmIdGK z0$yhxwv_A3Z-oAlY+GTsq-IZp)baT*1(^0R@Mg>JGJSKek%57M!PC{xWt~$(696}z BWtsp0 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mnode.png new file mode 100644 index 0000000000000000000000000000000000000000..0599622a5d11ab58f3a6d81f08176522f10f26b3 GIT binary patch literal 244 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`MSr;B4q1>@Vhihj(F z5=TGEFKK_k;UT1V$WS4+@!%EHha3ehU9Y4jb;UKPMF>RL?0WghL#r&Yj3p$*r1Jls z8sp9RYM;;kn!GLd;rTg->MhvbC?;Idm5aM3ztLFY!PcESY}U_xAf|O^!SXnVOV2l| zip)r@Yn|s+exZeT*Ds#(50m2=Z$8y6>tClP`G24Mi@-NdV*bhRcNfk5CFphKmIdGK z0$yhxwv_A3Z-oAlY+GTsq-IZp)baT*1(^0R@Mg>JGJSKek%57M!PC{xWt~$(696}z BWtsp0 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2mo.png new file mode 100644 index 0000000000000000000000000000000000000000..2cb8cd206f118cb2383574b661d5ca560c7ab1d7 GIT binary patch literal 401 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`z*c>Eakt!T5IWey_s; zBJKOHXoN-k9(CQaXxbx%jt5ak0>$S$eo?JqIJj=^oS0fZM{)Lpp?@~7*l{yMxm4pw zasK3hg)dDPO3LWfSWcfj=g&J!^Y1BJYwok3=#g=lmZF!?K6&x#?pZTx6PXhjwjave zyRDWv!6{uq|GsdsrVP_;wkyWhg*G!MDCt}@bYOC85oQoxcwo^kk6VJfy|sV2-IM$K z)IK7bKY2Q%&yl=OIdx9AuU_JD$oj=qQ*ITqOx8ADLqu8LA?O#EP2G;3+h$K6iHI)O zUQ)y0`BMACtF2qsTB$x$<K9zSxut#P!M(Sylx6R`6T5eI-q(#x=hynj7Kf^t#x?aY zOcMGn`t{nMbwBwgbVW24$cOwbp2j+X%X@3K<v0I&TMOIAj(l;V2?B|1ybUc^7=2#E zPMK<=!mXc?lFY!I!G8CP%mJ4x>r@~3^e`o4{P}Mm^^D1W+v8ZriQD!HF)%PNc)I$z JtaD0e0stJ}r+5GW literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2node.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2ns.png new file mode 100644 index 0000000000000000000000000000000000000000..1b65524618818dfc650ee3b833ed6568115838ce GIT binary patch literal 392 zcmeAS@N?(olHy`uVBq!ia0y~yV31&7U=ZVAV_;yoRU6a6z`*G5>Eakt!T9#Bq4!}2 zkpmz1U)$Dv<x1eegsDxlgB%5{EG#TaOT=ViW&bcV#aeevUfsNSzQYAqmy5m{uP(R> zZZT~t>3ZL%5};VFV%mK8V!YlI@A&(BAE(NGtd&<VUd#}A%H}{s#pd$LxapbRI*bx` zIv1zazGXY$mabrbZ^BEb9OlzvS!bu(Y-UUl&bw&mz+_p-kRZ%faCPaUDHE@3oqIHD z%L>Er-hJWOO@WLXI(0w!WHyzSizR3r3*KU7+8eCHv?PtkV4nVl$XEssU8`jW4lI9M z`zm*qzCY6vvDuEtKUch|d+|H5=}6jwW0}7j@8072Imc=$!%4~P3$MTLtgB`8I6I?J zD&0SKrK{(4W`&go2X+_CtB$>D#=s_X?>^I?Z)^#|d4b#t3)LEW&pAXnc>ntue&GZc z1KWK^b6ds@ommR}GN+d?{F(XxzuRe>1N=*^oL>|#m2YHVU|{fc^>bP0l+XkK+IFP+ literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2plastnode.png new file mode 100644 index 0000000000000000000000000000000000000000..f35d64c4b69adc64a0f61b1ec1808e04e5116bc0 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`M2r;B4q1>@Vfwp@oC zMA+OpD|mHTxewmDr&iJY#Yu|)0qd5pN=Y`3IjtfuCuc{jy)V|Jm$zxwF(v-C<6`+g zzO9#+NM@)@<G9co$8hoWqli0NTTSNb>oF+q;S5Qh=vfkU-z%k+Aui_N=4(l+7yTwN zH}KCtaLwb5s^=ARp;*QkC%!_pqRu3S=>m?L)4U4U3NmjUirq4=QNM9-Yv%0_%UMd7 mmoGTTdBFV3{*Ur3{DF7Wx;u8tl`$|dFnGH9xvX<aXaWEv999+p literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2pnode.png new file mode 100644 index 0000000000000000000000000000000000000000..f35d64c4b69adc64a0f61b1ec1808e04e5116bc0 GIT binary patch literal 231 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq`M2r;B4q1>@Vfwp@oC zMA+OpD|mHTxewmDr&iJY#Yu|)0qd5pN=Y`3IjtfuCuc{jy)V|Jm$zxwF(v-C<6`+g zzO9#+NM@)@<G9co$8hoWqli0NTTSNb>oF+q;S5Qh=vfkU-z%k+Aui_N=4(l+7yTwN zH}KCtaLwb5s^=ARp;*QkC%!_pqRu3S=>m?L)4U4U3NmjUirq4=QNM9-Yv%0_%UMd7 mmoGTTdBFV3{*Ur3{DF7Wx;u8tl`$|dFnGH9xvX<aXaWEv999+p literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..412a7a64a0cb8b4281d893eecd4447fe0b00c9a8 GIT binary patch literal 309 zcmeAS@N?(olHy`uVBq!ia0y~yU|?flU}4~3VqjqK-LYSgfq~(Vr;B4q1>@Vh8+}C+ zL>wOSdum*q<i1?2jn!k$!H63#S-d<p95hT}^^R$f^pIfK7+@{08nusY-mzz9WhLsC z|8@8MIqLh4Y4-B)>GSR8?fF~q=h@$js}DC%XMZnupeC>-P$W^rRl-%!jTmN0f62Z- zJLl~WUtPcD;OC?7{+&yz&VK!M^WNUet51vf&!6}A$G0aB7r)=1_wN67`CWf^-#YrW y$kx98@1=`MJ&QONYaG((GUy_X`NF=0{VK2ZjA<?59~l@J7(8A5T-G@yGywp#hk^nC literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/ftv2vertline.png new file mode 100644 index 0000000000000000000000000000000000000000..63c605bb4c3d941c921a4b6cfa74951e946bcb48 GIT binary patch literal 86 zcmeAS@N?(olHy`uVBq!ia0y~yU=UznU=ZVAV_;x7xk{#nfq_BR)5S5Qg7NL$jSLJ7 o42L)T2<A`r@2_xB5a3{uV`H7hz__APvKA!g>FVdQ&MBb@0Ppk@y8r+H literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html new file mode 100644 index 000000000..52b6db98d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions.html @@ -0,0 +1,172 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Data Fields</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" 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> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('functions.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +<div class="textblock">Here is a list of all struct and union fields with links to the structures/unions they belong to:</div><ul> +<li>Adafruit_NeoPixel() +: <a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a> +</li> +<li>begin() +: <a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel</a> +</li> +<li>canShow() +: <a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">Adafruit_NeoPixel</a> +</li> +<li>clear() +: <a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel</a> +</li> +<li>Color() +: <a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel</a> +</li> +<li>getBrightness() +: <a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel</a> +</li> +<li>getPixelColor() +: <a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel</a> +</li> +<li>getPixels() +: <a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel</a> +</li> +<li>numPixels() +: <a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel</a> +</li> +<li>setBrightness() +: <a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel</a> +</li> +<li>setPin() +: <a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel</a> +</li> +<li>setPixelColor() +: <a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">Adafruit_NeoPixel</a> +</li> +<li>show() +: <a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel</a> +</li> +<li>updateLength() +: <a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel</a> +</li> +<li>updateType() +: <a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel</a> +</li> +<li>~Adafruit_NeoPixel() +: <a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html new file mode 100644 index 000000000..bb6045f8c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/functions_func.html @@ -0,0 +1,172 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Data Fields - Functions</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li><a href="classes.html"><span>Data Structure Index</span></a></li> + <li class="current"><a href="functions.html"><span>Data Fields</span></a></li> + </ul> + </div> + <div id="navrow3" 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> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('functions_func.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>Adafruit_NeoPixel() +: <a class="el" href="class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58">Adafruit_NeoPixel</a> +</li> +<li>begin() +: <a class="el" href="class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7">Adafruit_NeoPixel</a> +</li> +<li>canShow() +: <a class="el" href="class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e">Adafruit_NeoPixel</a> +</li> +<li>clear() +: <a class="el" href="class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204">Adafruit_NeoPixel</a> +</li> +<li>Color() +: <a class="el" href="class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec">Adafruit_NeoPixel</a> +</li> +<li>getBrightness() +: <a class="el" href="class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f">Adafruit_NeoPixel</a> +</li> +<li>getPixelColor() +: <a class="el" href="class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa">Adafruit_NeoPixel</a> +</li> +<li>getPixels() +: <a class="el" href="class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067">Adafruit_NeoPixel</a> +</li> +<li>numPixels() +: <a class="el" href="class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b">Adafruit_NeoPixel</a> +</li> +<li>setBrightness() +: <a class="el" href="class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53">Adafruit_NeoPixel</a> +</li> +<li>setPin() +: <a class="el" href="class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b">Adafruit_NeoPixel</a> +</li> +<li>setPixelColor() +: <a class="el" href="class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8">Adafruit_NeoPixel</a> +</li> +<li>show() +: <a class="el" href="class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7">Adafruit_NeoPixel</a> +</li> +<li>updateLength() +: <a class="el" href="class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944">Adafruit_NeoPixel</a> +</li> +<li>updateType() +: <a class="el" href="class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b">Adafruit_NeoPixel</a> +</li> +<li>~Adafruit_NeoPixel() +: <a class="el" href="class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db">Adafruit_NeoPixel</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html new file mode 100644 index 000000000..4821639f1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals.html @@ -0,0 +1,368 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" 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_vars.html"><span>Variables</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> + <div id="navrow4" 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_f"><span>f</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_m"><span>m</span></a></li> + <li><a href="#index_n"><span>n</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_t"><span>t</span></a></li> + <li><a href="#index_u"><span>u</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +<div class="textblock">Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:</div> + +<h3><a class="anchor" id="index_a"></a>- a -</h3><ul> +<li>aun_ir_buffer +: <a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">main.cpp</a> +</li> +<li>aun_red_buffer +: <a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">main.cpp</a> +</li> +<li>auw_hamm +: <a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>BUFFER_SIZE +: <a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_c"></a>- c -</h3><ul> +<li>ch_hr_valid +: <a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">main.cpp</a> +</li> +<li>ch_spo2_valid +: <a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">main.cpp</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>false +: <a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">algorithm.h</a> +</li> +<li>FS +: <a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>HAMMING_SIZE +: <a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">algorithm.h</a> +</li> +<li>HR_FIFO_SIZE +: <a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>i2c() +: <a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">MAX30102.cpp</a> +</li> +<li>I2C_READ_ADDR +: <a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">MAX30102.h</a> +</li> +<li>I2C_WRITE_ADDR +: <a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">MAX30102.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>MA4_SIZE +: <a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">algorithm.h</a> +</li> +<li>main() +: <a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a> +</li> +<li>MAX_BRIGHTNESS +: <a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">main.cpp</a> +</li> +<li>maxim_find_peaks() +: <a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.h</a> +</li> +<li>maxim_heart_rate_and_oxygen_saturation() +: <a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">algorithm.h</a> +</li> +<li>maxim_max30102_init() +: <a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">MAX30102.h</a> +</li> +<li>maxim_max30102_read_fifo() +: <a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.h</a> +</li> +<li>maxim_max30102_read_reg() +: <a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.h</a> +</li> +<li>maxim_max30102_reset() +: <a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">MAX30102.h</a> +, <a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">MAX30102.cpp</a> +</li> +<li>maxim_max30102_write_reg() +: <a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.h</a> +</li> +<li>maxim_peaks_above_min_height() +: <a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">algorithm.h</a> +</li> +<li>maxim_remove_close_peaks() +: <a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.h</a> +</li> +<li>maxim_sort_ascend() +: <a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.h</a> +, <a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.cpp</a> +</li> +<li>maxim_sort_indices_descend() +: <a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">algorithm.h</a> +</li> +<li>min +: <a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_n"></a>- n -</h3><ul> +<li>n_heart_rate +: <a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">main.cpp</a> +</li> +<li>n_ir_buffer_length +: <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">main.cpp</a> +</li> +<li>n_sp02 +: <a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">main.cpp</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_p"></a>- p -</h3><ul> +<li>pc() +: <a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">main.cpp</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>REG_FIFO_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">MAX30102.h</a> +</li> +<li>REG_FIFO_DATA +: <a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">MAX30102.h</a> +</li> +<li>REG_FIFO_RD_PTR +: <a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">MAX30102.h</a> +</li> +<li>REG_FIFO_WR_PTR +: <a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">MAX30102.h</a> +</li> +<li>REG_INTR_ENABLE_1 +: <a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">MAX30102.h</a> +</li> +<li>REG_INTR_ENABLE_2 +: <a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">MAX30102.h</a> +</li> +<li>REG_INTR_STATUS_1 +: <a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">MAX30102.h</a> +</li> +<li>REG_INTR_STATUS_2 +: <a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">MAX30102.h</a> +</li> +<li>REG_LED1_PA +: <a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">MAX30102.h</a> +</li> +<li>REG_LED2_PA +: <a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">MAX30102.h</a> +</li> +<li>REG_MODE_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">MAX30102.h</a> +</li> +<li>REG_MULTI_LED_CTRL1 +: <a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">MAX30102.h</a> +</li> +<li>REG_MULTI_LED_CTRL2 +: <a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">MAX30102.h</a> +</li> +<li>REG_OVF_COUNTER +: <a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">MAX30102.h</a> +</li> +<li>REG_PART_ID +: <a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">MAX30102.h</a> +</li> +<li>REG_PILOT_PA +: <a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">MAX30102.h</a> +</li> +<li>REG_PROX_INT_THRESH +: <a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">MAX30102.h</a> +</li> +<li>REG_REV_ID +: <a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">MAX30102.h</a> +</li> +<li>REG_SPO2_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">MAX30102.h</a> +</li> +<li>REG_TEMP_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">MAX30102.h</a> +</li> +<li>REG_TEMP_FRAC +: <a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">MAX30102.h</a> +</li> +<li>REG_TEMP_INTR +: <a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">MAX30102.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>true +: <a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_u"></a>- u -</h3><ul> +<li>uch_dummy +: <a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">main.cpp</a> +</li> +<li>uch_spo2_table +: <a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">algorithm.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html new file mode 100644 index 000000000..06240b814 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_defs.html @@ -0,0 +1,260 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" 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><a href="globals_vars.html"><span>Variables</span></a></li> + <li class="current"><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> + <div id="navrow4" class="tabs3"> + <ul class="tablist"> + <li><a href="#index_b"><span>b</span></a></li> + <li><a href="#index_f"><span>f</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_m"><span>m</span></a></li> + <li><a href="#index_r"><span>r</span></a></li> + <li><a href="#index_t"><span>t</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_defs.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> +  + +<h3><a class="anchor" id="index_b"></a>- b -</h3><ul> +<li>BUFFER_SIZE +: <a class="el" href="algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_f"></a>- f -</h3><ul> +<li>false +: <a class="el" href="algorithm_8h.html#a65e9886d74aaee76545e83dd09011727">algorithm.h</a> +</li> +<li>FS +: <a class="el" href="algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_h"></a>- h -</h3><ul> +<li>HAMMING_SIZE +: <a class="el" href="algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8">algorithm.h</a> +</li> +<li>HR_FIFO_SIZE +: <a class="el" href="algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_i"></a>- i -</h3><ul> +<li>I2C_READ_ADDR +: <a class="el" href="_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37">MAX30102.h</a> +</li> +<li>I2C_WRITE_ADDR +: <a class="el" href="_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">MAX30102.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_m"></a>- m -</h3><ul> +<li>MA4_SIZE +: <a class="el" href="algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae">algorithm.h</a> +</li> +<li>MAX_BRIGHTNESS +: <a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">main.cpp</a> +</li> +<li>min +: <a class="el" href="algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384">algorithm.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_r"></a>- r -</h3><ul> +<li>REG_FIFO_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">MAX30102.h</a> +</li> +<li>REG_FIFO_DATA +: <a class="el" href="_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">MAX30102.h</a> +</li> +<li>REG_FIFO_RD_PTR +: <a class="el" href="_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">MAX30102.h</a> +</li> +<li>REG_FIFO_WR_PTR +: <a class="el" href="_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">MAX30102.h</a> +</li> +<li>REG_INTR_ENABLE_1 +: <a class="el" href="_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">MAX30102.h</a> +</li> +<li>REG_INTR_ENABLE_2 +: <a class="el" href="_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">MAX30102.h</a> +</li> +<li>REG_INTR_STATUS_1 +: <a class="el" href="_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191">MAX30102.h</a> +</li> +<li>REG_INTR_STATUS_2 +: <a class="el" href="_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">MAX30102.h</a> +</li> +<li>REG_LED1_PA +: <a class="el" href="_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">MAX30102.h</a> +</li> +<li>REG_LED2_PA +: <a class="el" href="_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">MAX30102.h</a> +</li> +<li>REG_MODE_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">MAX30102.h</a> +</li> +<li>REG_MULTI_LED_CTRL1 +: <a class="el" href="_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">MAX30102.h</a> +</li> +<li>REG_MULTI_LED_CTRL2 +: <a class="el" href="_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">MAX30102.h</a> +</li> +<li>REG_OVF_COUNTER +: <a class="el" href="_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">MAX30102.h</a> +</li> +<li>REG_PART_ID +: <a class="el" href="_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">MAX30102.h</a> +</li> +<li>REG_PILOT_PA +: <a class="el" href="_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1">MAX30102.h</a> +</li> +<li>REG_PROX_INT_THRESH +: <a class="el" href="_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">MAX30102.h</a> +</li> +<li>REG_REV_ID +: <a class="el" href="_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">MAX30102.h</a> +</li> +<li>REG_SPO2_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0">MAX30102.h</a> +</li> +<li>REG_TEMP_CONFIG +: <a class="el" href="_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379">MAX30102.h</a> +</li> +<li>REG_TEMP_FRAC +: <a class="el" href="_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">MAX30102.h</a> +</li> +<li>REG_TEMP_INTR +: <a class="el" href="_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">MAX30102.h</a> +</li> +</ul> + + +<h3><a class="anchor" id="index_t"></a>- t -</h3><ul> +<li>true +: <a class="el" href="algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7">algorithm.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.html new file mode 100644 index 000000000..e6ac928f3 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_func.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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" 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_vars.html"><span>Variables</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_func.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>i2c() +: <a class="el" href="_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976">MAX30102.cpp</a> +</li> +<li>main() +: <a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main.cpp</a> +</li> +<li>maxim_find_peaks() +: <a class="el" href="algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9">algorithm.h</a> +</li> +<li>maxim_heart_rate_and_oxygen_saturation() +: <a class="el" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a62050365673e666cd0d661a3664c26e6">algorithm.h</a> +</li> +<li>maxim_max30102_init() +: <a class="el" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df">MAX30102.h</a> +</li> +<li>maxim_max30102_read_fifo() +: <a class="el" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">MAX30102.h</a> +</li> +<li>maxim_max30102_read_reg() +: <a class="el" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">MAX30102.h</a> +</li> +<li>maxim_max30102_reset() +: <a class="el" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">MAX30102.cpp</a> +, <a class="el" href="_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">MAX30102.h</a> +</li> +<li>maxim_max30102_write_reg() +: <a class="el" href="_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.h</a> +, <a class="el" href="_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">MAX30102.cpp</a> +</li> +<li>maxim_peaks_above_min_height() +: <a class="el" href="algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf">algorithm.h</a> +, <a class="el" href="algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf">algorithm.cpp</a> +</li> +<li>maxim_remove_close_peaks() +: <a class="el" href="algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a">algorithm.h</a> +</li> +<li>maxim_sort_ascend() +: <a class="el" href="algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.cpp</a> +, <a class="el" href="algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff">algorithm.h</a> +</li> +<li>maxim_sort_indices_descend() +: <a class="el" href="algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060">algorithm.h</a> +, <a class="el" href="algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060">algorithm.cpp</a> +</li> +<li>pc() +: <a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">main.cpp</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html new file mode 100644 index 000000000..953402275 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_type.html @@ -0,0 +1,129 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" 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><a href="globals_vars.html"><span>Variables</span></a></li> + <li class="current"><a href="globals_type.html"><span>Typedefs</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_type.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>neoPixelType +: <a class="el" href="_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff">Adafruit_NeoPixel.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html new file mode 100644 index 000000000..9e5173c39 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/globals_vars.html @@ -0,0 +1,154 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Globals</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li class="current"><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> + <div id="navrow3" 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_vars.html"><span>Variables</span></a></li> + <li><a href="globals_defs.html"><span>Macros</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('globals_vars.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="contents"> + <ul> +<li>aun_ir_buffer +: <a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">main.cpp</a> +</li> +<li>aun_red_buffer +: <a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">main.cpp</a> +</li> +<li>auw_hamm +: <a class="el" href="algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929">algorithm.h</a> +</li> +<li>ch_hr_valid +: <a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">main.cpp</a> +</li> +<li>ch_spo2_valid +: <a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">main.cpp</a> +</li> +<li>n_heart_rate +: <a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">main.cpp</a> +</li> +<li>n_ir_buffer_length +: <a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">main.cpp</a> +</li> +<li>n_sp02 +: <a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">main.cpp</a> +</li> +<li>uch_dummy +: <a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">main.cpp</a> +</li> +<li>uch_spo2_table +: <a class="el" href="algorithm_8h.html#adfeeb6b08271807492803acc50347108">algorithm.h</a> +</li> +</ul> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html new file mode 100644 index 000000000..de51293c7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/index.html @@ -0,0 +1,125 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: Main Page</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li class="current"><a href="index.html"><span>Main Page</span></a></li> + <li><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('index.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">Main Page </div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><h1><a class="anchor" id="intro_sec"></a> +Introduction</h1> +<p>This is the code documentation for the MAXREFDES117# subsystem reference design.</p> +<p>The Files page contains the File List page and the Globals page.</p> +<p>The Globals page contains the Functions, Variables, and Macros sub-pages.</p> +<div class="image"> +<img src="MAXREFDES117_Block_Diagram.png" alt="MAXREFDES117_Block_Diagram.png"/> +<div class="caption"> +MAXREFDES117# System Block Diagram</div></div> + <div class="image"> +<img src="MAXREFDES117_firmware_Flowchart.png" alt="MAXREFDES117_firmware_Flowchart.png"/> +<div class="caption"> +MAXREFDES117# Firmware Flowchart</div></div> +</div></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js new file mode 100644 index 000000000..78ad0bdff --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/jquery.js @@ -0,0 +1,77 @@ +/*! jQuery v1.7.1 jquery.com | jquery.org/license */ +(function(a,b){function cy(a){return f.isWindow(a)?a:a.nodeType===9?a.defaultView||a.parentWindow:!1}function cv(a){if(!ck[a]){var b=c.body,d=f("<"+a+">").appendTo(b),e=d.css("display");d.remove();if(e==="none"||e===""){cl||(cl=c.createElement("iframe"),cl.frameBorder=cl.width=cl.height=0),b.appendChild(cl);if(!cm||!cl.createElement)cm=(cl.contentWindow||cl.contentDocument).document,cm.write((c.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>"),cm.close();d=cm.createElement(a),cm.body.appendChild(d),e=f.css(d,"display"),b.removeChild(cl)}ck[a]=e}return ck[a]}function cu(a,b){var c={};f.each(cq.concat.apply([],cq.slice(0,b)),function(){c[this]=a});return c}function ct(){cr=b}function cs(){setTimeout(ct,0);return cr=f.now()}function cj(){try{return new a.ActiveXObject("Microsoft.XMLHTTP")}catch(b){}}function ci(){try{return new a.XMLHttpRequest}catch(b){}}function cc(a,c){a.dataFilter&&(c=a.dataFilter(c,a.dataType));var d=a.dataTypes,e={},g,h,i=d.length,j,k=d[0],l,m,n,o,p;for(g=1;g<i;g++){if(g===1)for(h in a.converters)typeof h=="string"&&(e[h.toLowerCase()]=a.converters[h]);l=k,k=d[g];if(k==="*")k=l;else if(l!=="*"&&l!==k){m=l+" "+k,n=e[m]||e["* "+k];if(!n){p=b;for(o in e){j=o.split(" ");if(j[0]===l||j[0]==="*"){p=e[j[1]+" "+k];if(p){o=e[o],o===!0?n=p:p===!0&&(n=o);break}}}}!n&&!p&&f.error("No conversion from "+m.replace(" "," to ")),n!==!0&&(c=n?n(c):p(o(c)))}}return c}function cb(a,c,d){var e=a.contents,f=a.dataTypes,g=a.responseFields,h,i,j,k;for(i in g)i in d&&(c[g[i]]=d[i]);while(f[0]==="*")f.shift(),h===b&&(h=a.mimeType||c.getResponseHeader("content-type"));if(h)for(i in e)if(e[i]&&e[i].test(h)){f.unshift(i);break}if(f[0]in d)j=f[0];else{for(i in d){if(!f[0]||a.converters[i+" "+f[0]]){j=i;break}k||(k=i)}j=j||k}if(j){j!==f[0]&&f.unshift(j);return d[j]}}function ca(a,b,c,d){if(f.isArray(b))f.each(b,function(b,e){c||bE.test(a)?d(a,e):ca(a+"["+(typeof e=="object"||f.isArray(e)?b:"")+"]",e,c,d)});else if(!c&&b!=null&&typeof b=="object")for(var e in b)ca(a+"["+e+"]",b[e],c,d);else d(a,b)}function b_(a,c){var d,e,g=f.ajaxSettings.flatOptions||{};for(d in c)c[d]!==b&&((g[d]?a:e||(e={}))[d]=c[d]);e&&f.extend(!0,a,e)}function b$(a,c,d,e,f,g){f=f||c.dataTypes[0],g=g||{},g[f]=!0;var h=a[f],i=0,j=h?h.length:0,k=a===bT,l;for(;i<j&&(k||!l);i++)l=h[i](c,d,e),typeof l=="string"&&(!k||g[l]?l=b:(c.dataTypes.unshift(l),l=b$(a,c,d,e,l,g)));(k||!l)&&!g["*"]&&(l=b$(a,c,d,e,"*",g));return l}function bZ(a){return function(b,c){typeof b!="string"&&(c=b,b="*");if(f.isFunction(c)){var d=b.toLowerCase().split(bP),e=0,g=d.length,h,i,j;for(;e<g;e++)h=d[e],j=/^\+/.test(h),j&&(h=h.substr(1)||"*"),i=a[h]=a[h]||[],i[j?"unshift":"push"](c)}}}function bC(a,b,c){var d=b==="width"?a.offsetWidth:a.offsetHeight,e=b==="width"?bx:by,g=0,h=e.length;if(d>0){if(c!=="border")for(;g<h;g++)c||(d-=parseFloat(f.css(a,"padding"+e[g]))||0),c==="margin"?d+=parseFloat(f.css(a,c+e[g]))||0:d-=parseFloat(f.css(a,"border"+e[g]+"Width"))||0;return d+"px"}d=bz(a,b,b);if(d<0||d==null)d=a.style[b]||0;d=parseFloat(d)||0;if(c)for(;g<h;g++)d+=parseFloat(f.css(a,"padding"+e[g]))||0,c!=="padding"&&(d+=parseFloat(f.css(a,"border"+e[g]+"Width"))||0),c==="margin"&&(d+=parseFloat(f.css(a,c+e[g]))||0);return d+"px"}function bp(a,b){b.src?f.ajax({url:b.src,async:!1,dataType:"script"}):f.globalEval((b.text||b.textContent||b.innerHTML||"").replace(bf,"/*$0*/")),b.parentNode&&b.parentNode.removeChild(b)}function bo(a){var b=c.createElement("div");bh.appendChild(b),b.innerHTML=a.outerHTML;return b.firstChild}function bn(a){var b=(a.nodeName||"").toLowerCase();b==="input"?bm(a):b!=="script"&&typeof a.getElementsByTagName!="undefined"&&f.grep(a.getElementsByTagName("input"),bm)}function bm(a){if(a.type==="checkbox"||a.type==="radio")a.defaultChecked=a.checked}function bl(a){return typeof a.getElementsByTagName!="undefined"?a.getElementsByTagName("*"):typeof a.querySelectorAll!="undefined"?a.querySelectorAll("*"):[]}function bk(a,b){var c;if(b.nodeType===1){b.clearAttributes&&b.clearAttributes(),b.mergeAttributes&&b.mergeAttributes(a),c=b.nodeName.toLowerCase();if(c==="object")b.outerHTML=a.outerHTML;else if(c!=="input"||a.type!=="checkbox"&&a.type!=="radio"){if(c==="option")b.selected=a.defaultSelected;else if(c==="input"||c==="textarea")b.defaultValue=a.defaultValue}else a.checked&&(b.defaultChecked=b.checked=a.checked),b.value!==a.value&&(b.value=a.value);b.removeAttribute(f.expando)}}function bj(a,b){if(b.nodeType===1&&!!f.hasData(a)){var c,d,e,g=f._data(a),h=f._data(b,g),i=g.events;if(i){delete h.handle,h.events={};for(c in i)for(d=0,e=i[c].length;d<e;d++)f.event.add(b,c+(i[c][d].namespace?".":"")+i[c][d].namespace,i[c][d],i[c][d].data)}h.data&&(h.data=f.extend({},h.data))}}function bi(a,b){return f.nodeName(a,"table")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function U(a){var b=V.split("|"),c=a.createDocumentFragment();if(c.createElement)while(b.length)c.createElement(b.pop());return c}function T(a,b,c){b=b||0;if(f.isFunction(b))return f.grep(a,function(a,d){var e=!!b.call(a,d,a);return e===c});if(b.nodeType)return f.grep(a,function(a,d){return a===b===c});if(typeof b=="string"){var d=f.grep(a,function(a){return a.nodeType===1});if(O.test(b))return f.filter(b,d,!c);b=f.filter(b,d)}return f.grep(a,function(a,d){return f.inArray(a,b)>=0===c})}function S(a){return!a||!a.parentNode||a.parentNode.nodeType===11}function K(){return!0}function J(){return!1}function n(a,b,c){var d=b+"defer",e=b+"queue",g=b+"mark",h=f._data(a,d);h&&(c==="queue"||!f._data(a,e))&&(c==="mark"||!f._data(a,g))&&setTimeout(function(){!f._data(a,e)&&!f._data(a,g)&&(f.removeData(a,d,!0),h.fire())},0)}function m(a){for(var b in a){if(b==="data"&&f.isEmptyObject(a[b]))continue;if(b!=="toJSON")return!1}return!0}function l(a,c,d){if(d===b&&a.nodeType===1){var e="data-"+c.replace(k,"-$1").toLowerCase();d=a.getAttribute(e);if(typeof d=="string"){try{d=d==="true"?!0:d==="false"?!1:d==="null"?null:f.isNumeric(d)?parseFloat(d):j.test(d)?f.parseJSON(d):d}catch(g){}f.data(a,c,d)}else d=b}return d}function h(a){var b=g[a]={},c,d;a=a.split(/\s+/);for(c=0,d=a.length;c<d;c++)b[a[c]]=!0;return b}var c=a.document,d=a.navigator,e=a.location,f=function(){function J(){if(!e.isReady){try{c.documentElement.doScroll("left")}catch(a){setTimeout(J,1);return}e.ready()}}var e=function(a,b){return new e.fn.init(a,b,h)},f=a.jQuery,g=a.$,h,i=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,j=/\S/,k=/^\s+/,l=/\s+$/,m=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,n=/^[\],:{}\s]*$/,o=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,p=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,q=/(?:^|:|,)(?:\s*\[)+/g,r=/(webkit)[ \/]([\w.]+)/,s=/(opera)(?:.*version)?[ \/]([\w.]+)/,t=/(msie) ([\w.]+)/,u=/(mozilla)(?:.*? rv:([\w.]+))?/,v=/-([a-z]|[0-9])/ig,w=/^-ms-/,x=function(a,b){return(b+"").toUpperCase()},y=d.userAgent,z,A,B,C=Object.prototype.toString,D=Object.prototype.hasOwnProperty,E=Array.prototype.push,F=Array.prototype.slice,G=String.prototype.trim,H=Array.prototype.indexOf,I={};e.fn=e.prototype={constructor:e,init:function(a,d,f){var g,h,j,k;if(!a)return this;if(a.nodeType){this.context=this[0]=a,this.length=1;return this}if(a==="body"&&!d&&c.body){this.context=c,this[0]=c.body,this.selector=a,this.length=1;return this}if(typeof a=="string"){a.charAt(0)!=="<"||a.charAt(a.length-1)!==">"||a.length<3?g=i.exec(a):g=[null,a,null];if(g&&(g[1]||!d)){if(g[1]){d=d instanceof e?d[0]:d,k=d?d.ownerDocument||d:c,j=m.exec(a),j?e.isPlainObject(d)?(a=[c.createElement(j[1])],e.fn.attr.call(a,d,!0)):a=[k.createElement(j[1])]:(j=e.buildFragment([g[1]],[k]),a=(j.cacheable?e.clone(j.fragment):j.fragment).childNodes);return e.merge(this,a)}h=c.getElementById(g[2]);if(h&&h.parentNode){if(h.id!==g[2])return f.find(a);this.length=1,this[0]=h}this.context=c,this.selector=a;return this}return!d||d.jquery?(d||f).find(a):this.constructor(d).find(a)}if(e.isFunction(a))return f.ready(a);a.selector!==b&&(this.selector=a.selector,this.context=a.context);return e.makeArray(a,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return F.call(this,0)},get:function(a){return a==null?this.toArray():a<0?this[this.length+a]:this[a]},pushStack:function(a,b,c){var d=this.constructor();e.isArray(a)?E.apply(d,a):e.merge(d,a),d.prevObject=this,d.context=this.context,b==="find"?d.selector=this.selector+(this.selector?" ":"")+c:b&&(d.selector=this.selector+"."+b+"("+c+")");return d},each:function(a,b){return e.each(this,a,b)},ready:function(a){e.bindReady(),A.add(a);return this},eq:function(a){a=+a;return a===-1?this.slice(a):this.slice(a,a+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(F.apply(this,arguments),"slice",F.call(arguments).join(","))},map:function(a){return this.pushStack(e.map(this,function(b,c){return a.call(b,c,b)}))},end:function(){return this.prevObject||this.constructor(null)},push:E,sort:[].sort,splice:[].splice},e.fn.init.prototype=e.fn,e.extend=e.fn.extend=function(){var a,c,d,f,g,h,i=arguments[0]||{},j=1,k=arguments.length,l=!1;typeof i=="boolean"&&(l=i,i=arguments[1]||{},j=2),typeof i!="object"&&!e.isFunction(i)&&(i={}),k===j&&(i=this,--j);for(;j<k;j++)if((a=arguments[j])!=null)for(c in a){d=i[c],f=a[c];if(i===f)continue;l&&f&&(e.isPlainObject(f)||(g=e.isArray(f)))?(g?(g=!1,h=d&&e.isArray(d)?d:[]):h=d&&e.isPlainObject(d)?d:{},i[c]=e.extend(l,h,f)):f!==b&&(i[c]=f)}return i},e.extend({noConflict:function(b){a.$===e&&(a.$=g),b&&a.jQuery===e&&(a.jQuery=f);return e},isReady:!1,readyWait:1,holdReady:function(a){a?e.readyWait++:e.ready(!0)},ready:function(a){if(a===!0&&!--e.readyWait||a!==!0&&!e.isReady){if(!c.body)return setTimeout(e.ready,1);e.isReady=!0;if(a!==!0&&--e.readyWait>0)return;A.fireWith(c,[e]),e.fn.trigger&&e(c).trigger("ready").off("ready")}},bindReady:function(){if(!A){A=e.Callbacks("once memory");if(c.readyState==="complete")return setTimeout(e.ready,1);if(c.addEventListener)c.addEventListener("DOMContentLoaded",B,!1),a.addEventListener("load",e.ready,!1);else if(c.attachEvent){c.attachEvent("onreadystatechange",B),a.attachEvent("onload",e.ready);var b=!1;try{b=a.frameElement==null}catch(d){}c.documentElement.doScroll&&b&&J()}}},isFunction:function(a){return e.type(a)==="function"},isArray:Array.isArray||function(a){return e.type(a)==="array"},isWindow:function(a){return a&&typeof a=="object"&&"setInterval"in a},isNumeric:function(a){return!isNaN(parseFloat(a))&&isFinite(a)},type:function(a){return a==null?String(a):I[C.call(a)]||"object"},isPlainObject:function(a){if(!a||e.type(a)!=="object"||a.nodeType||e.isWindow(a))return!1;try{if(a.constructor&&!D.call(a,"constructor")&&!D.call(a.constructor.prototype,"isPrototypeOf"))return!1}catch(c){return!1}var d;for(d in a);return d===b||D.call(a,d)},isEmptyObject:function(a){for(var b in a)return!1;return!0},error:function(a){throw new Error(a)},parseJSON:function(b){if(typeof b!="string"||!b)return null;b=e.trim(b);if(a.JSON&&a.JSON.parse)return a.JSON.parse(b);if(n.test(b.replace(o,"@").replace(p,"]").replace(q,"")))return(new Function("return "+b))();e.error("Invalid JSON: "+b)},parseXML:function(c){var d,f;try{a.DOMParser?(f=new DOMParser,d=f.parseFromString(c,"text/xml")):(d=new ActiveXObject("Microsoft.XMLDOM"),d.async="false",d.loadXML(c))}catch(g){d=b}(!d||!d.documentElement||d.getElementsByTagName("parsererror").length)&&e.error("Invalid XML: "+c);return d},noop:function(){},globalEval:function(b){b&&j.test(b)&&(a.execScript||function(b){a.eval.call(a,b)})(b)},camelCase:function(a){return a.replace(w,"ms-").replace(v,x)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toUpperCase()===b.toUpperCase()},each:function(a,c,d){var f,g=0,h=a.length,i=h===b||e.isFunction(a);if(d){if(i){for(f in a)if(c.apply(a[f],d)===!1)break}else for(;g<h;)if(c.apply(a[g++],d)===!1)break}else if(i){for(f in a)if(c.call(a[f],f,a[f])===!1)break}else for(;g<h;)if(c.call(a[g],g,a[g++])===!1)break;return a},trim:G?function(a){return a==null?"":G.call(a)}:function(a){return a==null?"":(a+"").replace(k,"").replace(l,"")},makeArray:function(a,b){var c=b||[];if(a!=null){var d=e.type(a);a.length==null||d==="string"||d==="function"||d==="regexp"||e.isWindow(a)?E.call(c,a):e.merge(c,a)}return c},inArray:function(a,b,c){var d;if(b){if(H)return H.call(b,a,c);d=b.length,c=c?c<0?Math.max(0,d+c):c:0;for(;c<d;c++)if(c in b&&b[c]===a)return c}return-1},merge:function(a,c){var d=a.length,e=0;if(typeof c.length=="number")for(var f=c.length;e<f;e++)a[d++]=c[e];else while(c[e]!==b)a[d++]=c[e++];a.length=d;return a},grep:function(a,b,c){var d=[],e;c=!!c;for(var f=0,g=a.length;f<g;f++)e=!!b(a[f],f),c!==e&&d.push(a[f]);return d},map:function(a,c,d){var f,g,h=[],i=0,j=a.length,k=a instanceof e||j!==b&&typeof j=="number"&&(j>0&&a[0]&&a[j-1]||j===0||e.isArray(a));if(k)for(;i<j;i++)f=c(a[i],i,d),f!=null&&(h[h.length]=f);else for(g in a)f=c(a[g],g,d),f!=null&&(h[h.length]=f);return h.concat.apply([],h)},guid:1,proxy:function(a,c){if(typeof c=="string"){var d=a[c];c=a,a=d}if(!e.isFunction(a))return b;var f=F.call(arguments,2),g=function(){return a.apply(c,f.concat(F.call(arguments)))};g.guid=a.guid=a.guid||g.guid||e.guid++;return g},access:function(a,c,d,f,g,h){var i=a.length;if(typeof c=="object"){for(var j in c)e.access(a,j,c[j],f,g,d);return a}if(d!==b){f=!h&&f&&e.isFunction(d);for(var k=0;k<i;k++)g(a[k],c,f?d.call(a[k],k,g(a[k],c)):d,h);return a}return i?g(a[0],c):b},now:function(){return(new Date).getTime()},uaMatch:function(a){a=a.toLowerCase();var b=r.exec(a)||s.exec(a)||t.exec(a)||a.indexOf("compatible")<0&&u.exec(a)||[];return{browser:b[1]||"",version:b[2]||"0"}},sub:function(){function a(b,c){return new a.fn.init(b,c)}e.extend(!0,a,this),a.superclass=this,a.fn=a.prototype=this(),a.fn.constructor=a,a.sub=this.sub,a.fn.init=function(d,f){f&&f instanceof e&&!(f instanceof a)&&(f=a(f));return e.fn.init.call(this,d,f,b)},a.fn.init.prototype=a.fn;var b=a(c);return a},browser:{}}),e.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(a,b){I["[object "+b+"]"]=b.toLowerCase()}),z=e.uaMatch(y),z.browser&&(e.browser[z.browser]=!0,e.browser.version=z.version),e.browser.webkit&&(e.browser.safari=!0),j.test(" ")&&(k=/^[\s\xA0]+/,l=/[\s\xA0]+$/),h=e(c),c.addEventListener?B=function(){c.removeEventListener("DOMContentLoaded",B,!1),e.ready()}:c.attachEvent&&(B=function(){c.readyState==="complete"&&(c.detachEvent("onreadystatechange",B),e.ready())});return e}(),g={};f.Callbacks=function(a){a=a?g[a]||h(a):{};var c=[],d=[],e,i,j,k,l,m=function(b){var d,e,g,h,i;for(d=0,e=b.length;d<e;d++)g=b[d],h=f.type(g),h==="array"?m(g):h==="function"&&(!a.unique||!o.has(g))&&c.push(g)},n=function(b,f){f=f||[],e=!a.memory||[b,f],i=!0,l=j||0,j=0,k=c.length;for(;c&&l<k;l++)if(c[l].apply(b,f)===!1&&a.stopOnFalse){e=!0;break}i=!1,c&&(a.once?e===!0?o.disable():c=[]:d&&d.length&&(e=d.shift(),o.fireWith(e[0],e[1])))},o={add:function(){if(c){var a=c.length;m(arguments),i?k=c.length:e&&e!==!0&&(j=a,n(e[0],e[1]))}return this},remove:function(){if(c){var b=arguments,d=0,e=b.length;for(;d<e;d++)for(var f=0;f<c.length;f++)if(b[d]===c[f]){i&&f<=k&&(k--,f<=l&&l--),c.splice(f--,1);if(a.unique)break}}return this},has:function(a){if(c){var b=0,d=c.length;for(;b<d;b++)if(a===c[b])return!0}return!1},empty:function(){c=[];return this},disable:function(){c=d=e=b;return this},disabled:function(){return!c},lock:function(){d=b,(!e||e===!0)&&o.disable();return this},locked:function(){return!d},fireWith:function(b,c){d&&(i?a.once||d.push([b,c]):(!a.once||!e)&&n(b,c));return this},fire:function(){o.fireWith(this,arguments);return this},fired:function(){return!!e}};return o};var i=[].slice;f.extend({Deferred:function(a){var b=f.Callbacks("once memory"),c=f.Callbacks("once memory"),d=f.Callbacks("memory"),e="pending",g={resolve:b,reject:c,notify:d},h={done:b.add,fail:c.add,progress:d.add,state:function(){return e},isResolved:b.fired,isRejected:c.fired,then:function(a,b,c){i.done(a).fail(b).progress(c);return this},always:function(){i.done.apply(i,arguments).fail.apply(i,arguments);return this},pipe:function(a,b,c){return f.Deferred(function(d){f.each({done:[a,"resolve"],fail:[b,"reject"],progress:[c,"notify"]},function(a,b){var c=b[0],e=b[1],g;f.isFunction(c)?i[a](function() +{g=c.apply(this,arguments),g&&f.isFunction(g.promise)?g.promise().then(d.resolve,d.reject,d.notify):d[e+"With"](this===i?d:this,[g])}):i[a](d[e])})}).promise()},promise:function(a){if(a==null)a=h;else for(var b in h)a[b]=h[b];return a}},i=h.promise({}),j;for(j in g)i[j]=g[j].fire,i[j+"With"]=g[j].fireWith;i.done(function(){e="resolved"},c.disable,d.lock).fail(function(){e="rejected"},b.disable,d.lock),a&&a.call(i,i);return i},when:function(a){function m(a){return function(b){e[a]=arguments.length>1?i.call(arguments,0):b,j.notifyWith(k,e)}}function l(a){return function(c){b[a]=arguments.length>1?i.call(arguments,0):c,--g||j.resolveWith(j,b)}}var b=i.call(arguments,0),c=0,d=b.length,e=Array(d),g=d,h=d,j=d<=1&&a&&f.isFunction(a.promise)?a:f.Deferred(),k=j.promise();if(d>1){for(;c<d;c++)b[c]&&b[c].promise&&f.isFunction(b[c].promise)?b[c].promise().then(l(c),j.reject,m(c)):--g;g||j.resolveWith(j,b)}else j!==a&&j.resolveWith(j,d?[a]:[]);return k}}),f.support=function(){var b,d,e,g,h,i,j,k,l,m,n,o,p,q=c.createElement("div"),r=c.documentElement;q.setAttribute("className","t"),q.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>",d=q.getElementsByTagName("*"),e=q.getElementsByTagName("a")[0];if(!d||!d.length||!e)return{};g=c.createElement("select"),h=g.appendChild(c.createElement("option")),i=q.getElementsByTagName("input")[0],b={leadingWhitespace:q.firstChild.nodeType===3,tbody:!q.getElementsByTagName("tbody").length,htmlSerialize:!!q.getElementsByTagName("link").length,style:/top/.test(e.getAttribute("style")),hrefNormalized:e.getAttribute("href")==="/a",opacity:/^0.55/.test(e.style.opacity),cssFloat:!!e.style.cssFloat,checkOn:i.value==="on",optSelected:h.selected,getSetAttribute:q.className!=="t",enctype:!!c.createElement("form").enctype,html5Clone:c.createElement("nav").cloneNode(!0).outerHTML!=="<:nav></:nav>",submitBubbles:!0,changeBubbles:!0,focusinBubbles:!1,deleteExpando:!0,noCloneEvent:!0,inlineBlockNeedsLayout:!1,shrinkWrapBlocks:!1,reliableMarginRight:!0},i.checked=!0,b.noCloneChecked=i.cloneNode(!0).checked,g.disabled=!0,b.optDisabled=!h.disabled;try{delete q.test}catch(s){b.deleteExpando=!1}!q.addEventListener&&q.attachEvent&&q.fireEvent&&(q.attachEvent("onclick",function(){b.noCloneEvent=!1}),q.cloneNode(!0).fireEvent("onclick")),i=c.createElement("input"),i.value="t",i.setAttribute("type","radio"),b.radioValue=i.value==="t",i.setAttribute("checked","checked"),q.appendChild(i),k=c.createDocumentFragment(),k.appendChild(q.lastChild),b.checkClone=k.cloneNode(!0).cloneNode(!0).lastChild.checked,b.appendChecked=i.checked,k.removeChild(i),k.appendChild(q),q.innerHTML="",a.getComputedStyle&&(j=c.createElement("div"),j.style.width="0",j.style.marginRight="0",q.style.width="2px",q.appendChild(j),b.reliableMarginRight=(parseInt((a.getComputedStyle(j,null)||{marginRight:0}).marginRight,10)||0)===0);if(q.attachEvent)for(o in{submit:1,change:1,focusin:1})n="on"+o,p=n in q,p||(q.setAttribute(n,"return;"),p=typeof q[n]=="function"),b[o+"Bubbles"]=p;k.removeChild(q),k=g=h=j=q=i=null,f(function(){var a,d,e,g,h,i,j,k,m,n,o,r=c.getElementsByTagName("body")[0];!r||(j=1,k="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;",m="visibility:hidden;border:0;",n="style='"+k+"border:5px solid #000;padding:0;'",o="<div "+n+"><div></div></div>"+"<table "+n+" cellpadding='0' cellspacing='0'>"+"<tr><td></td></tr></table>",a=c.createElement("div"),a.style.cssText=m+"width:0;height:0;position:static;top:0;margin-top:"+j+"px",r.insertBefore(a,r.firstChild),q=c.createElement("div"),a.appendChild(q),q.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>",l=q.getElementsByTagName("td"),p=l[0].offsetHeight===0,l[0].style.display="",l[1].style.display="none",b.reliableHiddenOffsets=p&&l[0].offsetHeight===0,q.innerHTML="",q.style.width=q.style.paddingLeft="1px",f.boxModel=b.boxModel=q.offsetWidth===2,typeof q.style.zoom!="undefined"&&(q.style.display="inline",q.style.zoom=1,b.inlineBlockNeedsLayout=q.offsetWidth===2,q.style.display="",q.innerHTML="<div style='width:4px;'></div>",b.shrinkWrapBlocks=q.offsetWidth!==2),q.style.cssText=k+m,q.innerHTML=o,d=q.firstChild,e=d.firstChild,h=d.nextSibling.firstChild.firstChild,i={doesNotAddBorder:e.offsetTop!==5,doesAddBorderForTableAndCells:h.offsetTop===5},e.style.position="fixed",e.style.top="20px",i.fixedPosition=e.offsetTop===20||e.offsetTop===15,e.style.position=e.style.top="",d.style.overflow="hidden",d.style.position="relative",i.subtractsBorderForOverflowNotVisible=e.offsetTop===-5,i.doesNotIncludeMarginInBodyOffset=r.offsetTop!==j,r.removeChild(a),q=a=null,f.extend(b,i))});return b}();var j=/^(?:\{.*\}|\[.*\])$/,k=/([A-Z])/g;f.extend({cache:{},uuid:0,expando:"jQuery"+(f.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:!0},hasData:function(a){a=a.nodeType?f.cache[a[f.expando]]:a[f.expando];return!!a&&!m(a)},data:function(a,c,d,e){if(!!f.acceptData(a)){var g,h,i,j=f.expando,k=typeof c=="string",l=a.nodeType,m=l?f.cache:a,n=l?a[j]:a[j]&&j,o=c==="events";if((!n||!m[n]||!o&&!e&&!m[n].data)&&k&&d===b)return;n||(l?a[j]=n=++f.uuid:n=j),m[n]||(m[n]={},l||(m[n].toJSON=f.noop));if(typeof c=="object"||typeof c=="function")e?m[n]=f.extend(m[n],c):m[n].data=f.extend(m[n].data,c);g=h=m[n],e||(h.data||(h.data={}),h=h.data),d!==b&&(h[f.camelCase(c)]=d);if(o&&!h[c])return g.events;k?(i=h[c],i==null&&(i=h[f.camelCase(c)])):i=h;return i}},removeData:function(a,b,c){if(!!f.acceptData(a)){var d,e,g,h=f.expando,i=a.nodeType,j=i?f.cache:a,k=i?a[h]:h;if(!j[k])return;if(b){d=c?j[k]:j[k].data;if(d){f.isArray(b)||(b in d?b=[b]:(b=f.camelCase(b),b in d?b=[b]:b=b.split(" ")));for(e=0,g=b.length;e<g;e++)delete d[b[e]];if(!(c?m:f.isEmptyObject)(d))return}}if(!c){delete j[k].data;if(!m(j[k]))return}f.support.deleteExpando||!j.setInterval?delete j[k]:j[k]=null,i&&(f.support.deleteExpando?delete a[h]:a.removeAttribute?a.removeAttribute(h):a[h]=null)}},_data:function(a,b,c){return f.data(a,b,c,!0)},acceptData:function(a){if(a.nodeName){var b=f.noData[a.nodeName.toLowerCase()];if(b)return b!==!0&&a.getAttribute("classid")===b}return!0}}),f.fn.extend({data:function(a,c){var d,e,g,h=null;if(typeof a=="undefined"){if(this.length){h=f.data(this[0]);if(this[0].nodeType===1&&!f._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var i=0,j=e.length;i<j;i++)g=e[i].name,g.indexOf("data-")===0&&(g=f.camelCase(g.substring(5)),l(this[0],g,h[g]));f._data(this[0],"parsedAttrs",!0)}}return h}if(typeof a=="object")return this.each(function(){f.data(this,a)});d=a.split("."),d[1]=d[1]?"."+d[1]:"";if(c===b){h=this.triggerHandler("getData"+d[1]+"!",[d[0]]),h===b&&this.length&&(h=f.data(this[0],a),h=l(this[0],a,h));return h===b&&d[1]?this.data(d[0]):h}return this.each(function(){var b=f(this),e=[d[0],c];b.triggerHandler("setData"+d[1]+"!",e),f.data(this,a,c),b.triggerHandler("changeData"+d[1]+"!",e)})},removeData:function(a){return this.each(function(){f.removeData(this,a)})}}),f.extend({_mark:function(a,b){a&&(b=(b||"fx")+"mark",f._data(a,b,(f._data(a,b)||0)+1))},_unmark:function(a,b,c){a!==!0&&(c=b,b=a,a=!1);if(b){c=c||"fx";var d=c+"mark",e=a?0:(f._data(b,d)||1)-1;e?f._data(b,d,e):(f.removeData(b,d,!0),n(b,c,"mark"))}},queue:function(a,b,c){var d;if(a){b=(b||"fx")+"queue",d=f._data(a,b),c&&(!d||f.isArray(c)?d=f._data(a,b,f.makeArray(c)):d.push(c));return d||[]}},dequeue:function(a,b){b=b||"fx";var c=f.queue(a,b),d=c.shift(),e={};d==="inprogress"&&(d=c.shift()),d&&(b==="fx"&&c.unshift("inprogress"),f._data(a,b+".run",e),d.call(a,function(){f.dequeue(a,b)},e)),c.length||(f.removeData(a,b+"queue "+b+".run",!0),n(a,b,"queue"))}}),f.fn.extend({queue:function(a,c){typeof a!="string"&&(c=a,a="fx");if(c===b)return f.queue(this[0],a);return this.each(function(){var b=f.queue(this,a,c);a==="fx"&&b[0]!=="inprogress"&&f.dequeue(this,a)})},dequeue:function(a){return this.each(function(){f.dequeue(this,a)})},delay:function(a,b){a=f.fx?f.fx.speeds[a]||a:a,b=b||"fx";return this.queue(b,function(b,c){var d=setTimeout(b,a);c.stop=function(){clearTimeout(d)}})},clearQueue:function(a){return this.queue(a||"fx",[])},promise:function(a,c){function m(){--h||d.resolveWith(e,[e])}typeof a!="string"&&(c=a,a=b),a=a||"fx";var d=f.Deferred(),e=this,g=e.length,h=1,i=a+"defer",j=a+"queue",k=a+"mark",l;while(g--)if(l=f.data(e[g],i,b,!0)||(f.data(e[g],j,b,!0)||f.data(e[g],k,b,!0))&&f.data(e[g],i,f.Callbacks("once memory"),!0))h++,l.add(m);m();return d.promise()}});var o=/[\n\t\r]/g,p=/\s+/,q=/\r/g,r=/^(?:button|input)$/i,s=/^(?:button|input|object|select|textarea)$/i,t=/^a(?:rea)?$/i,u=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,v=f.support.getSetAttribute,w,x,y;f.fn.extend({attr:function(a,b){return f.access(this,a,b,!0,f.attr)},removeAttr:function(a){return this.each(function(){f.removeAttr(this,a)})},prop:function(a,b){return f.access(this,a,b,!0,f.prop)},removeProp:function(a){a=f.propFix[a]||a;return this.each(function(){try{this[a]=b,delete this[a]}catch(c){}})},addClass:function(a){var b,c,d,e,g,h,i;if(f.isFunction(a))return this.each(function(b){f(this).addClass(a.call(this,b,this.className))});if(a&&typeof a=="string"){b=a.split(p);for(c=0,d=this.length;c<d;c++){e=this[c];if(e.nodeType===1)if(!e.className&&b.length===1)e.className=a;else{g=" "+e.className+" ";for(h=0,i=b.length;h<i;h++)~g.indexOf(" "+b[h]+" ")||(g+=b[h]+" ");e.className=f.trim(g)}}}return this},removeClass:function(a){var c,d,e,g,h,i,j;if(f.isFunction(a))return this.each(function(b){f(this).removeClass(a.call(this,b,this.className))});if(a&&typeof a=="string"||a===b){c=(a||"").split(p);for(d=0,e=this.length;d<e;d++){g=this[d];if(g.nodeType===1&&g.className)if(a){h=(" "+g.className+" ").replace(o," ");for(i=0,j=c.length;i<j;i++)h=h.replace(" "+c[i]+" "," ");g.className=f.trim(h)}else g.className=""}}return this},toggleClass:function(a,b){var c=typeof a,d=typeof b=="boolean";if(f.isFunction(a))return this.each(function(c){f(this).toggleClass(a.call(this,c,this.className,b),b)});return this.each(function(){if(c==="string"){var e,g=0,h=f(this),i=b,j=a.split(p);while(e=j[g++])i=d?i:!h.hasClass(e),h[i?"addClass":"removeClass"](e)}else if(c==="undefined"||c==="boolean")this.className&&f._data(this,"__className__",this.className),this.className=this.className||a===!1?"":f._data(this,"__className__")||""})},hasClass:function(a){var b=" "+a+" ",c=0,d=this.length;for(;c<d;c++)if(this[c].nodeType===1&&(" "+this[c].className+" ").replace(o," ").indexOf(b)>-1)return!0;return!1},val:function(a){var c,d,e,g=this[0];{if(!!arguments.length){e=f.isFunction(a);return this.each(function(d){var g=f(this),h;if(this.nodeType===1){e?h=a.call(this,d,g.val()):h=a,h==null?h="":typeof h=="number"?h+="":f.isArray(h)&&(h=f.map(h,function(a){return a==null?"":a+""})),c=f.valHooks[this.nodeName.toLowerCase()]||f.valHooks[this.type];if(!c||!("set"in c)||c.set(this,h,"value")===b)this.value=h}})}if(g){c=f.valHooks[g.nodeName.toLowerCase()]||f.valHooks[g.type];if(c&&"get"in c&&(d=c.get(g,"value"))!==b)return d;d=g.value;return typeof d=="string"?d.replace(q,""):d==null?"":d}}}}),f.extend({valHooks:{option:{get:function(a){var b=a.attributes.value;return!b||b.specified?a.value:a.text}},select:{get:function(a){var b,c,d,e,g=a.selectedIndex,h=[],i=a.options,j=a.type==="select-one";if(g<0)return null;c=j?g:0,d=j?g+1:i.length;for(;c<d;c++){e=i[c];if(e.selected&&(f.support.optDisabled?!e.disabled:e.getAttribute("disabled")===null)&&(!e.parentNode.disabled||!f.nodeName(e.parentNode,"optgroup"))){b=f(e).val();if(j)return b;h.push(b)}}if(j&&!h.length&&i.length)return f(i[g]).val();return h},set:function(a,b){var c=f.makeArray(b);f(a).find("option").each(function(){this.selected=f.inArray(f(this).val(),c)>=0}),c.length||(a.selectedIndex=-1);return c}}},attrFn:{val:!0,css:!0,html:!0,text:!0,data:!0,width:!0,height:!0,offset:!0},attr:function(a,c,d,e){var g,h,i,j=a.nodeType;if(!!a&&j!==3&&j!==8&&j!==2){if(e&&c in f.attrFn)return f(a)[c](d);if(typeof a.getAttribute=="undefined")return f.prop(a,c,d);i=j!==1||!f.isXMLDoc(a),i&&(c=c.toLowerCase(),h=f.attrHooks[c]||(u.test(c)?x:w));if(d!==b){if(d===null){f.removeAttr(a,c);return}if(h&&"set"in h&&i&&(g=h.set(a,d,c))!==b)return g;a.setAttribute(c,""+d);return d}if(h&&"get"in h&&i&&(g=h.get(a,c))!==null)return g;g=a.getAttribute(c);return g===null?b:g}},removeAttr:function(a,b){var c,d,e,g,h=0;if(b&&a.nodeType===1){d=b.toLowerCase().split(p),g=d.length;for(;h<g;h++)e=d[h],e&&(c=f.propFix[e]||e,f.attr(a,e,""),a.removeAttribute(v?e:c),u.test(e)&&c in a&&(a[c]=!1))}},attrHooks:{type:{set:function(a,b){if(r.test(a.nodeName)&&a.parentNode)f.error("type property can't be changed");else if(!f.support.radioValue&&b==="radio"&&f.nodeName(a,"input")){var c=a.value;a.setAttribute("type",b),c&&(a.value=c);return b}}},value:{get:function(a,b){if(w&&f.nodeName(a,"button"))return w.get(a,b);return b in a?a.value:null},set:function(a,b,c){if(w&&f.nodeName(a,"button"))return w.set(a,b,c);a.value=b}}},propFix:{tabindex:"tabIndex",readonly:"readOnly","for":"htmlFor","class":"className",maxlength:"maxLength",cellspacing:"cellSpacing",cellpadding:"cellPadding",rowspan:"rowSpan",colspan:"colSpan",usemap:"useMap",frameborder:"frameBorder",contenteditable:"contentEditable"},prop:function(a,c,d){var e,g,h,i=a.nodeType;if(!!a&&i!==3&&i!==8&&i!==2){h=i!==1||!f.isXMLDoc(a),h&&(c=f.propFix[c]||c,g=f.propHooks[c]);return d!==b?g&&"set"in g&&(e=g.set(a,d,c))!==b?e:a[c]=d:g&&"get"in g&&(e=g.get(a,c))!==null?e:a[c]}},propHooks:{tabIndex:{get:function(a){var c=a.getAttributeNode("tabindex");return c&&c.specified?parseInt(c.value,10):s.test(a.nodeName)||t.test(a.nodeName)&&a.href?0:b}}}}),f.attrHooks.tabindex=f.propHooks.tabIndex,x={get:function(a,c){var d,e=f.prop(a,c);return e===!0||typeof e!="boolean"&&(d=a.getAttributeNode(c))&&d.nodeValue!==!1?c.toLowerCase():b},set:function(a,b,c){var d;b===!1?f.removeAttr(a,c):(d=f.propFix[c]||c,d in a&&(a[d]=!0),a.setAttribute(c,c.toLowerCase()));return c}},v||(y={name:!0,id:!0},w=f.valHooks.button={get:function(a,c){var d;d=a.getAttributeNode(c);return d&&(y[c]?d.nodeValue!=="":d.specified)?d.nodeValue:b},set:function(a,b,d){var e=a.getAttributeNode(d);e||(e=c.createAttribute(d),a.setAttributeNode(e));return e.nodeValue=b+""}},f.attrHooks.tabindex.set=w.set,f.each(["width","height"],function(a,b){f.attrHooks[b]=f.extend(f.attrHooks[b],{set:function(a,c){if(c===""){a.setAttribute(b,"auto");return c}}})}),f.attrHooks.contenteditable={get:w.get,set:function(a,b,c){b===""&&(b="false"),w.set(a,b,c)}}),f.support.hrefNormalized||f.each(["href","src","width","height"],function(a,c){f.attrHooks[c]=f.extend(f.attrHooks[c],{get:function(a){var d=a.getAttribute(c,2);return d===null?b:d}})}),f.support.style||(f.attrHooks.style={get:function(a){return a.style.cssText.toLowerCase()||b},set:function(a,b){return a.style.cssText=""+b}}),f.support.optSelected||(f.propHooks.selected=f.extend(f.propHooks.selected,{get:function(a){var b=a.parentNode;b&&(b.selectedIndex,b.parentNode&&b.parentNode.selectedIndex);return null}})),f.support.enctype||(f.propFix.enctype="encoding"),f.support.checkOn||f.each(["radio","checkbox"],function(){f.valHooks[this]={get:function(a){return a.getAttribute("value")===null?"on":a.value}}}),f.each(["radio","checkbox"],function(){f.valHooks[this]=f.extend(f.valHooks[this],{set:function(a,b){if(f.isArray(b))return a.checked=f.inArray(f(a).val(),b)>=0}})});var z=/^(?:textarea|input|select)$/i,A=/^([^\.]*)?(?:\.(.+))?$/,B=/\bhover(\.\S+)?\b/,C=/^key/,D=/^(?:mouse|contextmenu)|click/,E=/^(?:focusinfocus|focusoutblur)$/,F=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,G=function(a){var b=F.exec(a);b&&(b[1]=(b[1]||"").toLowerCase(),b[3]=b[3]&&new RegExp("(?:^|\\s)"+b[3]+"(?:\\s|$)"));return b},H=function(a,b){var c=a.attributes||{};return(!b[1]||a.nodeName.toLowerCase()===b[1])&&(!b[2]||(c.id||{}).value===b[2])&&(!b[3]||b[3].test((c["class"]||{}).value))},I=function(a){return f.event.special.hover?a:a.replace(B,"mouseenter$1 mouseleave$1")}; +f.event={add:function(a,c,d,e,g){var h,i,j,k,l,m,n,o,p,q,r,s;if(!(a.nodeType===3||a.nodeType===8||!c||!d||!(h=f._data(a)))){d.handler&&(p=d,d=p.handler),d.guid||(d.guid=f.guid++),j=h.events,j||(h.events=j={}),i=h.handle,i||(h.handle=i=function(a){return typeof f!="undefined"&&(!a||f.event.triggered!==a.type)?f.event.dispatch.apply(i.elem,arguments):b},i.elem=a),c=f.trim(I(c)).split(" ");for(k=0;k<c.length;k++){l=A.exec(c[k])||[],m=l[1],n=(l[2]||"").split(".").sort(),s=f.event.special[m]||{},m=(g?s.delegateType:s.bindType)||m,s=f.event.special[m]||{},o=f.extend({type:m,origType:l[1],data:e,handler:d,guid:d.guid,selector:g,quick:G(g),namespace:n.join(".")},p),r=j[m];if(!r){r=j[m]=[],r.delegateCount=0;if(!s.setup||s.setup.call(a,e,n,i)===!1)a.addEventListener?a.addEventListener(m,i,!1):a.attachEvent&&a.attachEvent("on"+m,i)}s.add&&(s.add.call(a,o),o.handler.guid||(o.handler.guid=d.guid)),g?r.splice(r.delegateCount++,0,o):r.push(o),f.event.global[m]=!0}a=null}},global:{},remove:function(a,b,c,d,e){var g=f.hasData(a)&&f._data(a),h,i,j,k,l,m,n,o,p,q,r,s;if(!!g&&!!(o=g.events)){b=f.trim(I(b||"")).split(" ");for(h=0;h<b.length;h++){i=A.exec(b[h])||[],j=k=i[1],l=i[2];if(!j){for(j in o)f.event.remove(a,j+b[h],c,d,!0);continue}p=f.event.special[j]||{},j=(d?p.delegateType:p.bindType)||j,r=o[j]||[],m=r.length,l=l?new RegExp("(^|\\.)"+l.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(n=0;n<r.length;n++)s=r[n],(e||k===s.origType)&&(!c||c.guid===s.guid)&&(!l||l.test(s.namespace))&&(!d||d===s.selector||d==="**"&&s.selector)&&(r.splice(n--,1),s.selector&&r.delegateCount--,p.remove&&p.remove.call(a,s));r.length===0&&m!==r.length&&((!p.teardown||p.teardown.call(a,l)===!1)&&f.removeEvent(a,j,g.handle),delete o[j])}f.isEmptyObject(o)&&(q=g.handle,q&&(q.elem=null),f.removeData(a,["events","handle"],!0))}},customEvent:{getData:!0,setData:!0,changeData:!0},trigger:function(c,d,e,g){if(!e||e.nodeType!==3&&e.nodeType!==8){var h=c.type||c,i=[],j,k,l,m,n,o,p,q,r,s;if(E.test(h+f.event.triggered))return;h.indexOf("!")>=0&&(h=h.slice(0,-1),k=!0),h.indexOf(".")>=0&&(i=h.split("."),h=i.shift(),i.sort());if((!e||f.event.customEvent[h])&&!f.event.global[h])return;c=typeof c=="object"?c[f.expando]?c:new f.Event(h,c):new f.Event(h),c.type=h,c.isTrigger=!0,c.exclusive=k,c.namespace=i.join("."),c.namespace_re=c.namespace?new RegExp("(^|\\.)"+i.join("\\.(?:.*\\.)?")+"(\\.|$)"):null,o=h.indexOf(":")<0?"on"+h:"";if(!e){j=f.cache;for(l in j)j[l].events&&j[l].events[h]&&f.event.trigger(c,d,j[l].handle.elem,!0);return}c.result=b,c.target||(c.target=e),d=d!=null?f.makeArray(d):[],d.unshift(c),p=f.event.special[h]||{};if(p.trigger&&p.trigger.apply(e,d)===!1)return;r=[[e,p.bindType||h]];if(!g&&!p.noBubble&&!f.isWindow(e)){s=p.delegateType||h,m=E.test(s+h)?e:e.parentNode,n=null;for(;m;m=m.parentNode)r.push([m,s]),n=m;n&&n===e.ownerDocument&&r.push([n.defaultView||n.parentWindow||a,s])}for(l=0;l<r.length&&!c.isPropagationStopped();l++)m=r[l][0],c.type=r[l][1],q=(f._data(m,"events")||{})[c.type]&&f._data(m,"handle"),q&&q.apply(m,d),q=o&&m[o],q&&f.acceptData(m)&&q.apply(m,d)===!1&&c.preventDefault();c.type=h,!g&&!c.isDefaultPrevented()&&(!p._default||p._default.apply(e.ownerDocument,d)===!1)&&(h!=="click"||!f.nodeName(e,"a"))&&f.acceptData(e)&&o&&e[h]&&(h!=="focus"&&h!=="blur"||c.target.offsetWidth!==0)&&!f.isWindow(e)&&(n=e[o],n&&(e[o]=null),f.event.triggered=h,e[h](),f.event.triggered=b,n&&(e[o]=n));return c.result}},dispatch:function(c){c=f.event.fix(c||a.event);var d=(f._data(this,"events")||{})[c.type]||[],e=d.delegateCount,g=[].slice.call(arguments,0),h=!c.exclusive&&!c.namespace,i=[],j,k,l,m,n,o,p,q,r,s,t;g[0]=c,c.delegateTarget=this;if(e&&!c.target.disabled&&(!c.button||c.type!=="click")){m=f(this),m.context=this.ownerDocument||this;for(l=c.target;l!=this;l=l.parentNode||this){o={},q=[],m[0]=l;for(j=0;j<e;j++)r=d[j],s=r.selector,o[s]===b&&(o[s]=r.quick?H(l,r.quick):m.is(s)),o[s]&&q.push(r);q.length&&i.push({elem:l,matches:q})}}d.length>e&&i.push({elem:this,matches:d.slice(e)});for(j=0;j<i.length&&!c.isPropagationStopped();j++){p=i[j],c.currentTarget=p.elem;for(k=0;k<p.matches.length&&!c.isImmediatePropagationStopped();k++){r=p.matches[k];if(h||!c.namespace&&!r.namespace||c.namespace_re&&c.namespace_re.test(r.namespace))c.data=r.data,c.handleObj=r,n=((f.event.special[r.origType]||{}).handle||r.handler).apply(p.elem,g),n!==b&&(c.result=n,n===!1&&(c.preventDefault(),c.stopPropagation()))}}return c.result},props:"attrChange attrName relatedNode srcElement altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(a,b){a.which==null&&(a.which=b.charCode!=null?b.charCode:b.keyCode);return a}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(a,d){var e,f,g,h=d.button,i=d.fromElement;a.pageX==null&&d.clientX!=null&&(e=a.target.ownerDocument||c,f=e.documentElement,g=e.body,a.pageX=d.clientX+(f&&f.scrollLeft||g&&g.scrollLeft||0)-(f&&f.clientLeft||g&&g.clientLeft||0),a.pageY=d.clientY+(f&&f.scrollTop||g&&g.scrollTop||0)-(f&&f.clientTop||g&&g.clientTop||0)),!a.relatedTarget&&i&&(a.relatedTarget=i===a.target?d.toElement:i),!a.which&&h!==b&&(a.which=h&1?1:h&2?3:h&4?2:0);return a}},fix:function(a){if(a[f.expando])return a;var d,e,g=a,h=f.event.fixHooks[a.type]||{},i=h.props?this.props.concat(h.props):this.props;a=f.Event(g);for(d=i.length;d;)e=i[--d],a[e]=g[e];a.target||(a.target=g.srcElement||c),a.target.nodeType===3&&(a.target=a.target.parentNode),a.metaKey===b&&(a.metaKey=a.ctrlKey);return h.filter?h.filter(a,g):a},special:{ready:{setup:f.bindReady},load:{noBubble:!0},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(a,b,c){f.isWindow(this)&&(this.onbeforeunload=c)},teardown:function(a,b){this.onbeforeunload===b&&(this.onbeforeunload=null)}}},simulate:function(a,b,c,d){var e=f.extend(new f.Event,c,{type:a,isSimulated:!0,originalEvent:{}});d?f.event.trigger(e,null,b):f.event.dispatch.call(b,e),e.isDefaultPrevented()&&c.preventDefault()}},f.event.handle=f.event.dispatch,f.removeEvent=c.removeEventListener?function(a,b,c){a.removeEventListener&&a.removeEventListener(b,c,!1)}:function(a,b,c){a.detachEvent&&a.detachEvent("on"+b,c)},f.Event=function(a,b){if(!(this instanceof f.Event))return new f.Event(a,b);a&&a.type?(this.originalEvent=a,this.type=a.type,this.isDefaultPrevented=a.defaultPrevented||a.returnValue===!1||a.getPreventDefault&&a.getPreventDefault()?K:J):this.type=a,b&&f.extend(this,b),this.timeStamp=a&&a.timeStamp||f.now(),this[f.expando]=!0},f.Event.prototype={preventDefault:function(){this.isDefaultPrevented=K;var a=this.originalEvent;!a||(a.preventDefault?a.preventDefault():a.returnValue=!1)},stopPropagation:function(){this.isPropagationStopped=K;var a=this.originalEvent;!a||(a.stopPropagation&&a.stopPropagation(),a.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=K,this.stopPropagation()},isDefaultPrevented:J,isPropagationStopped:J,isImmediatePropagationStopped:J},f.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(a,b){f.event.special[a]={delegateType:b,bindType:b,handle:function(a){var c=this,d=a.relatedTarget,e=a.handleObj,g=e.selector,h;if(!d||d!==c&&!f.contains(c,d))a.type=e.origType,h=e.handler.apply(this,arguments),a.type=b;return h}}}),f.support.submitBubbles||(f.event.special.submit={setup:function(){if(f.nodeName(this,"form"))return!1;f.event.add(this,"click._submit keypress._submit",function(a){var c=a.target,d=f.nodeName(c,"input")||f.nodeName(c,"button")?c.form:b;d&&!d._submit_attached&&(f.event.add(d,"submit._submit",function(a){this.parentNode&&!a.isTrigger&&f.event.simulate("submit",this.parentNode,a,!0)}),d._submit_attached=!0)})},teardown:function(){if(f.nodeName(this,"form"))return!1;f.event.remove(this,"._submit")}}),f.support.changeBubbles||(f.event.special.change={setup:function(){if(z.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio")f.event.add(this,"propertychange._change",function(a){a.originalEvent.propertyName==="checked"&&(this._just_changed=!0)}),f.event.add(this,"click._change",function(a){this._just_changed&&!a.isTrigger&&(this._just_changed=!1,f.event.simulate("change",this,a,!0))});return!1}f.event.add(this,"beforeactivate._change",function(a){var b=a.target;z.test(b.nodeName)&&!b._change_attached&&(f.event.add(b,"change._change",function(a){this.parentNode&&!a.isSimulated&&!a.isTrigger&&f.event.simulate("change",this.parentNode,a,!0)}),b._change_attached=!0)})},handle:function(a){var b=a.target;if(this!==b||a.isSimulated||a.isTrigger||b.type!=="radio"&&b.type!=="checkbox")return a.handleObj.handler.apply(this,arguments)},teardown:function(){f.event.remove(this,"._change");return z.test(this.nodeName)}}),f.support.focusinBubbles||f.each({focus:"focusin",blur:"focusout"},function(a,b){var d=0,e=function(a){f.event.simulate(b,a.target,f.event.fix(a),!0)};f.event.special[b]={setup:function(){d++===0&&c.addEventListener(a,e,!0)},teardown:function(){--d===0&&c.removeEventListener(a,e,!0)}}}),f.fn.extend({on:function(a,c,d,e,g){var h,i;if(typeof a=="object"){typeof c!="string"&&(d=c,c=b);for(i in a)this.on(i,c,d,a[i],g);return this}d==null&&e==null?(e=c,d=c=b):e==null&&(typeof c=="string"?(e=d,d=b):(e=d,d=c,c=b));if(e===!1)e=J;else if(!e)return this;g===1&&(h=e,e=function(a){f().off(a);return h.apply(this,arguments)},e.guid=h.guid||(h.guid=f.guid++));return this.each(function(){f.event.add(this,a,e,d,c)})},one:function(a,b,c,d){return this.on.call(this,a,b,c,d,1)},off:function(a,c,d){if(a&&a.preventDefault&&a.handleObj){var e=a.handleObj;f(a.delegateTarget).off(e.namespace?e.type+"."+e.namespace:e.type,e.selector,e.handler);return this}if(typeof a=="object"){for(var g in a)this.off(g,c,a[g]);return this}if(c===!1||typeof c=="function")d=c,c=b;d===!1&&(d=J);return this.each(function(){f.event.remove(this,a,d,c)})},bind:function(a,b,c){return this.on(a,null,b,c)},unbind:function(a,b){return this.off(a,null,b)},live:function(a,b,c){f(this.context).on(a,this.selector,b,c);return this},die:function(a,b){f(this.context).off(a,this.selector||"**",b);return this},delegate:function(a,b,c,d){return this.on(b,a,c,d)},undelegate:function(a,b,c){return arguments.length==1?this.off(a,"**"):this.off(b,a,c)},trigger:function(a,b){return this.each(function(){f.event.trigger(a,b,this)})},triggerHandler:function(a,b){if(this[0])return f.event.trigger(a,b,this[0],!0)},toggle:function(a){var b=arguments,c=a.guid||f.guid++,d=0,e=function(c){var e=(f._data(this,"lastToggle"+a.guid)||0)%d;f._data(this,"lastToggle"+a.guid,e+1),c.preventDefault();return b[e].apply(this,arguments)||!1};e.guid=c;while(d<b.length)b[d++].guid=c;return this.click(e)},hover:function(a,b){return this.mouseenter(a).mouseleave(b||a)}}),f.each("blur focus focusin focusout load resize scroll unload click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup error contextmenu".split(" "),function(a,b){f.fn[b]=function(a,c){c==null&&(c=a,a=null);return arguments.length>0?this.on(b,null,a,c):this.trigger(b)},f.attrFn&&(f.attrFn[b]=!0),C.test(b)&&(f.event.fixHooks[b]=f.event.keyHooks),D.test(b)&&(f.event.fixHooks[b]=f.event.mouseHooks)}),function(){function x(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}if(j.nodeType===1){g||(j[d]=c,j.sizset=h);if(typeof b!="string"){if(j===b){k=!0;break}}else if(m.filter(b,[j]).length>0){k=j;break}}j=j[a]}e[h]=k}}}function w(a,b,c,e,f,g){for(var h=0,i=e.length;h<i;h++){var j=e[h];if(j){var k=!1;j=j[a];while(j){if(j[d]===c){k=e[j.sizset];break}j.nodeType===1&&!g&&(j[d]=c,j.sizset=h);if(j.nodeName.toLowerCase()===b){k=j;break}j=j[a]}e[h]=k}}}var a=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,d="sizcache"+(Math.random()+"").replace(".",""),e=0,g=Object.prototype.toString,h=!1,i=!0,j=/\\/g,k=/\r\n/g,l=/\W/;[0,0].sort(function(){i=!1;return 0});var m=function(b,d,e,f){e=e||[],d=d||c;var h=d;if(d.nodeType!==1&&d.nodeType!==9)return[];if(!b||typeof b!="string")return e;var i,j,k,l,n,q,r,t,u=!0,v=m.isXML(d),w=[],x=b;do{a.exec(""),i=a.exec(x);if(i){x=i[3],w.push(i[1]);if(i[2]){l=i[3];break}}}while(i);if(w.length>1&&p.exec(b))if(w.length===2&&o.relative[w[0]])j=y(w[0]+w[1],d,f);else{j=o.relative[w[0]]?[d]:m(w.shift(),d);while(w.length)b=w.shift(),o.relative[b]&&(b+=w.shift()),j=y(b,j,f)}else{!f&&w.length>1&&d.nodeType===9&&!v&&o.match.ID.test(w[0])&&!o.match.ID.test(w[w.length-1])&&(n=m.find(w.shift(),d,v),d=n.expr?m.filter(n.expr,n.set)[0]:n.set[0]);if(d){n=f?{expr:w.pop(),set:s(f)}:m.find(w.pop(),w.length===1&&(w[0]==="~"||w[0]==="+")&&d.parentNode?d.parentNode:d,v),j=n.expr?m.filter(n.expr,n.set):n.set,w.length>0?k=s(j):u=!1;while(w.length)q=w.pop(),r=q,o.relative[q]?r=w.pop():q="",r==null&&(r=d),o.relative[q](k,r,v)}else k=w=[]}k||(k=j),k||m.error(q||b);if(g.call(k)==="[object Array]")if(!u)e.push.apply(e,k);else if(d&&d.nodeType===1)for(t=0;k[t]!=null;t++)k[t]&&(k[t]===!0||k[t].nodeType===1&&m.contains(d,k[t]))&&e.push(j[t]);else for(t=0;k[t]!=null;t++)k[t]&&k[t].nodeType===1&&e.push(j[t]);else s(k,e);l&&(m(l,h,e,f),m.uniqueSort(e));return e};m.uniqueSort=function(a){if(u){h=i,a.sort(u);if(h)for(var b=1;b<a.length;b++)a[b]===a[b-1]&&a.splice(b--,1)}return a},m.matches=function(a,b){return m(a,null,null,b)},m.matchesSelector=function(a,b){return m(b,null,null,[a]).length>0},m.find=function(a,b,c){var d,e,f,g,h,i;if(!a)return[];for(e=0,f=o.order.length;e<f;e++){h=o.order[e];if(g=o.leftMatch[h].exec(a)){i=g[1],g.splice(1,1);if(i.substr(i.length-1)!=="\\"){g[1]=(g[1]||"").replace(j,""),d=o.find[h](g,b,c);if(d!=null){a=a.replace(o.match[h],"");break}}}}d||(d=typeof b.getElementsByTagName!="undefined"?b.getElementsByTagName("*"):[]);return{set:d,expr:a}},m.filter=function(a,c,d,e){var f,g,h,i,j,k,l,n,p,q=a,r=[],s=c,t=c&&c[0]&&m.isXML(c[0]);while(a&&c.length){for(h in o.filter)if((f=o.leftMatch[h].exec(a))!=null&&f[2]){k=o.filter[h],l=f[1],g=!1,f.splice(1,1);if(l.substr(l.length-1)==="\\")continue;s===r&&(r=[]);if(o.preFilter[h]){f=o.preFilter[h](f,s,d,r,e,t);if(!f)g=i=!0;else if(f===!0)continue}if(f)for(n=0;(j=s[n])!=null;n++)j&&(i=k(j,f,n,s),p=e^i,d&&i!=null?p?g=!0:s[n]=!1:p&&(r.push(j),g=!0));if(i!==b){d||(s=r),a=a.replace(o.match[h],"");if(!g)return[];break}}if(a===q)if(g==null)m.error(a);else break;q=a}return s},m.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)};var n=m.getText=function(a){var b,c,d=a.nodeType,e="";if(d){if(d===1||d===9){if(typeof a.textContent=="string")return a.textContent;if(typeof a.innerText=="string")return a.innerText.replace(k,"");for(a=a.firstChild;a;a=a.nextSibling)e+=n(a)}else if(d===3||d===4)return a.nodeValue}else for(b=0;c=a[b];b++)c.nodeType!==8&&(e+=n(c));return e},o=m.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(a){return a.getAttribute("href")},type:function(a){return a.getAttribute("type")}},relative:{"+":function(a,b){var c=typeof b=="string",d=c&&!l.test(b),e=c&&!d;d&&(b=b.toLowerCase());for(var f=0,g=a.length,h;f<g;f++)if(h=a[f]){while((h=h.previousSibling)&&h.nodeType!==1);a[f]=e||h&&h.nodeName.toLowerCase()===b?h||!1:h===b}e&&m.filter(b,a,!0)},">":function(a,b){var c,d=typeof b=="string",e=0,f=a.length;if(d&&!l.test(b)){b=b.toLowerCase();for(;e<f;e++){c=a[e];if(c){var g=c.parentNode;a[e]=g.nodeName.toLowerCase()===b?g:!1}}}else{for(;e<f;e++)c=a[e],c&&(a[e]=d?c.parentNode:c.parentNode===b);d +&&m.filter(b,a,!0)}},"":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("parentNode",b,f,a,d,c)},"~":function(a,b,c){var d,f=e++,g=x;typeof b=="string"&&!l.test(b)&&(b=b.toLowerCase(),d=b,g=w),g("previousSibling",b,f,a,d,c)}},find:{ID:function(a,b,c){if(typeof b.getElementById!="undefined"&&!c){var d=b.getElementById(a[1]);return d&&d.parentNode?[d]:[]}},NAME:function(a,b){if(typeof b.getElementsByName!="undefined"){var c=[],d=b.getElementsByName(a[1]);for(var e=0,f=d.length;e<f;e++)d[e].getAttribute("name")===a[1]&&c.push(d[e]);return c.length===0?null:c}},TAG:function(a,b){if(typeof b.getElementsByTagName!="undefined")return b.getElementsByTagName(a[1])}},preFilter:{CLASS:function(a,b,c,d,e,f){a=" "+a[1].replace(j,"")+" ";if(f)return a;for(var g=0,h;(h=b[g])!=null;g++)h&&(e^(h.className&&(" "+h.className+" ").replace(/[\t\n\r]/g," ").indexOf(a)>=0)?c||d.push(h):c&&(b[g]=!1));return!1},ID:function(a){return a[1].replace(j,"")},TAG:function(a,b){return a[1].replace(j,"").toLowerCase()},CHILD:function(a){if(a[1]==="nth"){a[2]||m.error(a[0]),a[2]=a[2].replace(/^\+|\s*/g,"");var b=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(a[2]==="even"&&"2n"||a[2]==="odd"&&"2n+1"||!/\D/.test(a[2])&&"0n+"+a[2]||a[2]);a[2]=b[1]+(b[2]||1)-0,a[3]=b[3]-0}else a[2]&&m.error(a[0]);a[0]=e++;return a},ATTR:function(a,b,c,d,e,f){var g=a[1]=a[1].replace(j,"");!f&&o.attrMap[g]&&(a[1]=o.attrMap[g]),a[4]=(a[4]||a[5]||"").replace(j,""),a[2]==="~="&&(a[4]=" "+a[4]+" ");return a},PSEUDO:function(b,c,d,e,f){if(b[1]==="not")if((a.exec(b[3])||"").length>1||/^\w/.test(b[3]))b[3]=m(b[3],null,null,c);else{var g=m.filter(b[3],c,d,!0^f);d||e.push.apply(e,g);return!1}else if(o.match.POS.test(b[0])||o.match.CHILD.test(b[0]))return!0;return b},POS:function(a){a.unshift(!0);return a}},filters:{enabled:function(a){return a.disabled===!1&&a.type!=="hidden"},disabled:function(a){return a.disabled===!0},checked:function(a){return a.checked===!0},selected:function(a){a.parentNode&&a.parentNode.selectedIndex;return a.selected===!0},parent:function(a){return!!a.firstChild},empty:function(a){return!a.firstChild},has:function(a,b,c){return!!m(c[3],a).length},header:function(a){return/h\d/i.test(a.nodeName)},text:function(a){var b=a.getAttribute("type"),c=a.type;return a.nodeName.toLowerCase()==="input"&&"text"===c&&(b===c||b===null)},radio:function(a){return a.nodeName.toLowerCase()==="input"&&"radio"===a.type},checkbox:function(a){return a.nodeName.toLowerCase()==="input"&&"checkbox"===a.type},file:function(a){return a.nodeName.toLowerCase()==="input"&&"file"===a.type},password:function(a){return a.nodeName.toLowerCase()==="input"&&"password"===a.type},submit:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"submit"===a.type},image:function(a){return a.nodeName.toLowerCase()==="input"&&"image"===a.type},reset:function(a){var b=a.nodeName.toLowerCase();return(b==="input"||b==="button")&&"reset"===a.type},button:function(a){var b=a.nodeName.toLowerCase();return b==="input"&&"button"===a.type||b==="button"},input:function(a){return/input|select|textarea|button/i.test(a.nodeName)},focus:function(a){return a===a.ownerDocument.activeElement}},setFilters:{first:function(a,b){return b===0},last:function(a,b,c,d){return b===d.length-1},even:function(a,b){return b%2===0},odd:function(a,b){return b%2===1},lt:function(a,b,c){return b<c[3]-0},gt:function(a,b,c){return b>c[3]-0},nth:function(a,b,c){return c[3]-0===b},eq:function(a,b,c){return c[3]-0===b}},filter:{PSEUDO:function(a,b,c,d){var e=b[1],f=o.filters[e];if(f)return f(a,c,b,d);if(e==="contains")return(a.textContent||a.innerText||n([a])||"").indexOf(b[3])>=0;if(e==="not"){var g=b[3];for(var h=0,i=g.length;h<i;h++)if(g[h]===a)return!1;return!0}m.error(e)},CHILD:function(a,b){var c,e,f,g,h,i,j,k=b[1],l=a;switch(k){case"only":case"first":while(l=l.previousSibling)if(l.nodeType===1)return!1;if(k==="first")return!0;l=a;case"last":while(l=l.nextSibling)if(l.nodeType===1)return!1;return!0;case"nth":c=b[2],e=b[3];if(c===1&&e===0)return!0;f=b[0],g=a.parentNode;if(g&&(g[d]!==f||!a.nodeIndex)){i=0;for(l=g.firstChild;l;l=l.nextSibling)l.nodeType===1&&(l.nodeIndex=++i);g[d]=f}j=a.nodeIndex-e;return c===0?j===0:j%c===0&&j/c>=0}},ID:function(a,b){return a.nodeType===1&&a.getAttribute("id")===b},TAG:function(a,b){return b==="*"&&a.nodeType===1||!!a.nodeName&&a.nodeName.toLowerCase()===b},CLASS:function(a,b){return(" "+(a.className||a.getAttribute("class"))+" ").indexOf(b)>-1},ATTR:function(a,b){var c=b[1],d=m.attr?m.attr(a,c):o.attrHandle[c]?o.attrHandle[c](a):a[c]!=null?a[c]:a.getAttribute(c),e=d+"",f=b[2],g=b[4];return d==null?f==="!=":!f&&m.attr?d!=null:f==="="?e===g:f==="*="?e.indexOf(g)>=0:f==="~="?(" "+e+" ").indexOf(g)>=0:g?f==="!="?e!==g:f==="^="?e.indexOf(g)===0:f==="$="?e.substr(e.length-g.length)===g:f==="|="?e===g||e.substr(0,g.length+1)===g+"-":!1:e&&d!==!1},POS:function(a,b,c,d){var e=b[2],f=o.setFilters[e];if(f)return f(a,c,b,d)}}},p=o.match.POS,q=function(a,b){return"\\"+(b-0+1)};for(var r in o.match)o.match[r]=new RegExp(o.match[r].source+/(?![^\[]*\])(?![^\(]*\))/.source),o.leftMatch[r]=new RegExp(/(^(?:.|\r|\n)*?)/.source+o.match[r].source.replace(/\\(\d+)/g,q));var s=function(a,b){a=Array.prototype.slice.call(a,0);if(b){b.push.apply(b,a);return b}return a};try{Array.prototype.slice.call(c.documentElement.childNodes,0)[0].nodeType}catch(t){s=function(a,b){var c=0,d=b||[];if(g.call(a)==="[object Array]")Array.prototype.push.apply(d,a);else if(typeof a.length=="number")for(var e=a.length;c<e;c++)d.push(a[c]);else for(;a[c];c++)d.push(a[c]);return d}}var u,v;c.documentElement.compareDocumentPosition?u=function(a,b){if(a===b){h=!0;return 0}if(!a.compareDocumentPosition||!b.compareDocumentPosition)return a.compareDocumentPosition?-1:1;return a.compareDocumentPosition(b)&4?-1:1}:(u=function(a,b){if(a===b){h=!0;return 0}if(a.sourceIndex&&b.sourceIndex)return a.sourceIndex-b.sourceIndex;var c,d,e=[],f=[],g=a.parentNode,i=b.parentNode,j=g;if(g===i)return v(a,b);if(!g)return-1;if(!i)return 1;while(j)e.unshift(j),j=j.parentNode;j=i;while(j)f.unshift(j),j=j.parentNode;c=e.length,d=f.length;for(var k=0;k<c&&k<d;k++)if(e[k]!==f[k])return v(e[k],f[k]);return k===c?v(a,f[k],-1):v(e[k],b,1)},v=function(a,b,c){if(a===b)return c;var d=a.nextSibling;while(d){if(d===b)return-1;d=d.nextSibling}return 1}),function(){var a=c.createElement("div"),d="script"+(new Date).getTime(),e=c.documentElement;a.innerHTML="<a name='"+d+"'/>",e.insertBefore(a,e.firstChild),c.getElementById(d)&&(o.find.ID=function(a,c,d){if(typeof c.getElementById!="undefined"&&!d){var e=c.getElementById(a[1]);return e?e.id===a[1]||typeof e.getAttributeNode!="undefined"&&e.getAttributeNode("id").nodeValue===a[1]?[e]:b:[]}},o.filter.ID=function(a,b){var c=typeof a.getAttributeNode!="undefined"&&a.getAttributeNode("id");return a.nodeType===1&&c&&c.nodeValue===b}),e.removeChild(a),e=a=null}(),function(){var a=c.createElement("div");a.appendChild(c.createComment("")),a.getElementsByTagName("*").length>0&&(o.find.TAG=function(a,b){var c=b.getElementsByTagName(a[1]);if(a[1]==="*"){var d=[];for(var e=0;c[e];e++)c[e].nodeType===1&&d.push(c[e]);c=d}return c}),a.innerHTML="<a href='#'></a>",a.firstChild&&typeof a.firstChild.getAttribute!="undefined"&&a.firstChild.getAttribute("href")!=="#"&&(o.attrHandle.href=function(a){return a.getAttribute("href",2)}),a=null}(),c.querySelectorAll&&function(){var a=m,b=c.createElement("div"),d="__sizzle__";b.innerHTML="<p class='TEST'></p>";if(!b.querySelectorAll||b.querySelectorAll(".TEST").length!==0){m=function(b,e,f,g){e=e||c;if(!g&&!m.isXML(e)){var h=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b);if(h&&(e.nodeType===1||e.nodeType===9)){if(h[1])return s(e.getElementsByTagName(b),f);if(h[2]&&o.find.CLASS&&e.getElementsByClassName)return s(e.getElementsByClassName(h[2]),f)}if(e.nodeType===9){if(b==="body"&&e.body)return s([e.body],f);if(h&&h[3]){var i=e.getElementById(h[3]);if(!i||!i.parentNode)return s([],f);if(i.id===h[3])return s([i],f)}try{return s(e.querySelectorAll(b),f)}catch(j){}}else if(e.nodeType===1&&e.nodeName.toLowerCase()!=="object"){var k=e,l=e.getAttribute("id"),n=l||d,p=e.parentNode,q=/^\s*[+~]/.test(b);l?n=n.replace(/'/g,"\\$&"):e.setAttribute("id",n),q&&p&&(e=e.parentNode);try{if(!q||p)return s(e.querySelectorAll("[id='"+n+"'] "+b),f)}catch(r){}finally{l||k.removeAttribute("id")}}}return a(b,e,f,g)};for(var e in a)m[e]=a[e];b=null}}(),function(){var a=c.documentElement,b=a.matchesSelector||a.mozMatchesSelector||a.webkitMatchesSelector||a.msMatchesSelector;if(b){var d=!b.call(c.createElement("div"),"div"),e=!1;try{b.call(c.documentElement,"[test!='']:sizzle")}catch(f){e=!0}m.matchesSelector=function(a,c){c=c.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!m.isXML(a))try{if(e||!o.match.PSEUDO.test(c)&&!/!=/.test(c)){var f=b.call(a,c);if(f||!d||a.document&&a.document.nodeType!==11)return f}}catch(g){}return m(c,null,null,[a]).length>0}}}(),function(){var a=c.createElement("div");a.innerHTML="<div class='test e'></div><div class='test'></div>";if(!!a.getElementsByClassName&&a.getElementsByClassName("e").length!==0){a.lastChild.className="e";if(a.getElementsByClassName("e").length===1)return;o.order.splice(1,0,"CLASS"),o.find.CLASS=function(a,b,c){if(typeof b.getElementsByClassName!="undefined"&&!c)return b.getElementsByClassName(a[1])},a=null}}(),c.documentElement.contains?m.contains=function(a,b){return a!==b&&(a.contains?a.contains(b):!0)}:c.documentElement.compareDocumentPosition?m.contains=function(a,b){return!!(a.compareDocumentPosition(b)&16)}:m.contains=function(){return!1},m.isXML=function(a){var b=(a?a.ownerDocument||a:0).documentElement;return b?b.nodeName!=="HTML":!1};var y=function(a,b,c){var d,e=[],f="",g=b.nodeType?[b]:b;while(d=o.match.PSEUDO.exec(a))f+=d[0],a=a.replace(o.match.PSEUDO,"");a=o.relative[a]?a+"*":a;for(var h=0,i=g.length;h<i;h++)m(a,g[h],e,c);return m.filter(f,e)};m.attr=f.attr,m.selectors.attrMap={},f.find=m,f.expr=m.selectors,f.expr[":"]=f.expr.filters,f.unique=m.uniqueSort,f.text=m.getText,f.isXMLDoc=m.isXML,f.contains=m.contains}();var L=/Until$/,M=/^(?:parents|prevUntil|prevAll)/,N=/,/,O=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,Q=f.expr.match.POS,R={children:!0,contents:!0,next:!0,prev:!0};f.fn.extend({find:function(a){var b=this,c,d;if(typeof a!="string")return f(a).filter(function(){for(c=0,d=b.length;c<d;c++)if(f.contains(b[c],this))return!0});var e=this.pushStack("","find",a),g,h,i;for(c=0,d=this.length;c<d;c++){g=e.length,f.find(a,this[c],e);if(c>0)for(h=g;h<e.length;h++)for(i=0;i<g;i++)if(e[i]===e[h]){e.splice(h--,1);break}}return e},has:function(a){var b=f(a);return this.filter(function(){for(var a=0,c=b.length;a<c;a++)if(f.contains(this,b[a]))return!0})},not:function(a){return this.pushStack(T(this,a,!1),"not",a)},filter:function(a){return this.pushStack(T(this,a,!0),"filter",a)},is:function(a){return!!a&&(typeof a=="string"?Q.test(a)?f(a,this.context).index(this[0])>=0:f.filter(a,this).length>0:this.filter(a).length>0)},closest:function(a,b){var c=[],d,e,g=this[0];if(f.isArray(a)){var h=1;while(g&&g.ownerDocument&&g!==b){for(d=0;d<a.length;d++)f(g).is(a[d])&&c.push({selector:a[d],elem:g,level:h});g=g.parentNode,h++}return c}var i=Q.test(a)||typeof a!="string"?f(a,b||this.context):0;for(d=0,e=this.length;d<e;d++){g=this[d];while(g){if(i?i.index(g)>-1:f.find.matchesSelector(g,a)){c.push(g);break}g=g.parentNode;if(!g||!g.ownerDocument||g===b||g.nodeType===11)break}}c=c.length>1?f.unique(c):c;return this.pushStack(c,"closest",a)},index:function(a){if(!a)return this[0]&&this[0].parentNode?this.prevAll().length:-1;if(typeof a=="string")return f.inArray(this[0],f(a));return f.inArray(a.jquery?a[0]:a,this)},add:function(a,b){var c=typeof a=="string"?f(a,b):f.makeArray(a&&a.nodeType?[a]:a),d=f.merge(this.get(),c);return this.pushStack(S(c[0])||S(d[0])?d:f.unique(d))},andSelf:function(){return this.add(this.prevObject)}}),f.each({parent:function(a){var b=a.parentNode;return b&&b.nodeType!==11?b:null},parents:function(a){return f.dir(a,"parentNode")},parentsUntil:function(a,b,c){return f.dir(a,"parentNode",c)},next:function(a){return f.nth(a,2,"nextSibling")},prev:function(a){return f.nth(a,2,"previousSibling")},nextAll:function(a){return f.dir(a,"nextSibling")},prevAll:function(a){return f.dir(a,"previousSibling")},nextUntil:function(a,b,c){return f.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return f.dir(a,"previousSibling",c)},siblings:function(a){return f.sibling(a.parentNode.firstChild,a)},children:function(a){return f.sibling(a.firstChild)},contents:function(a){return f.nodeName(a,"iframe")?a.contentDocument||a.contentWindow.document:f.makeArray(a.childNodes)}},function(a,b){f.fn[a]=function(c,d){var e=f.map(this,b,c);L.test(a)||(d=c),d&&typeof d=="string"&&(e=f.filter(d,e)),e=this.length>1&&!R[a]?f.unique(e):e,(this.length>1||N.test(d))&&M.test(a)&&(e=e.reverse());return this.pushStack(e,a,P.call(arguments).join(","))}}),f.extend({filter:function(a,b,c){c&&(a=":not("+a+")");return b.length===1?f.find.matchesSelector(b[0],a)?[b[0]]:[]:f.find.matches(a,b)},dir:function(a,c,d){var e=[],g=a[c];while(g&&g.nodeType!==9&&(d===b||g.nodeType!==1||!f(g).is(d)))g.nodeType===1&&e.push(g),g=g[c];return e},nth:function(a,b,c,d){b=b||1;var e=0;for(;a;a=a[c])if(a.nodeType===1&&++e===b)break;return a},sibling:function(a,b){var c=[];for(;a;a=a.nextSibling)a.nodeType===1&&a!==b&&c.push(a);return c}});var V="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",W=/ jQuery\d+="(?:\d+|null)"/g,X=/^\s+/,Y=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,Z=/<([\w:]+)/,$=/<tbody/i,_=/<|&#?\w+;/,ba=/<(?:script|style)/i,bb=/<(?:script|object|embed|option|style)/i,bc=new RegExp("<(?:"+V+")","i"),bd=/checked\s*(?:[^=]|=\s*.checked.)/i,be=/\/(java|ecma)script/i,bf=/^\s*<!(?:\[CDATA\[|\-\-)/,bg={option:[1,"<select multiple='multiple'>","</select>"],legend:[1,"<fieldset>","</fieldset>"],thead:[1,"<table>","</table>"],tr:[2,"<table><tbody>","</tbody></table>"],td:[3,"<table><tbody><tr>","</tr></tbody></table>"],col:[2,"<table><tbody></tbody><colgroup>","</colgroup></table>"],area:[1,"<map>","</map>"],_default:[0,"",""]},bh=U(c);bg.optgroup=bg.option,bg.tbody=bg.tfoot=bg.colgroup=bg.caption=bg.thead,bg.th=bg.td,f.support.htmlSerialize||(bg._default=[1,"div<div>","</div>"]),f.fn.extend({text:function(a){if(f.isFunction(a))return this.each(function(b){var c=f(this);c.text(a.call(this,b,c.text()))});if(typeof a!="object"&&a!==b)return this.empty().append((this[0]&&this[0].ownerDocument||c).createTextNode(a));return f.text(this)},wrapAll:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapAll(a.call(this,b))});if(this[0]){var b=f(a,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&b.insertBefore(this[0]),b.map(function(){var a=this;while(a.firstChild&&a.firstChild.nodeType===1)a=a.firstChild;return a}).append(this)}return this},wrapInner:function(a){if(f.isFunction(a))return this.each(function(b){f(this).wrapInner(a.call(this,b))});return this.each(function(){var b=f(this),c=b.contents();c.length?c.wrapAll(a):b.append(a)})},wrap:function(a){var b=f.isFunction(a);return this.each(function(c){f(this).wrapAll(b?a.call(this,c):a)})},unwrap:function(){return this.parent().each(function(){f.nodeName(this,"body")||f(this).replaceWith(this.childNodes)}).end()},append:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.appendChild(a)})},prepend:function(){return this.domManip(arguments,!0,function(a){this.nodeType===1&&this.insertBefore(a,this.firstChild)})},before:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this)});if(arguments.length){var a=f.clean(arguments);a.push.apply(a,this.toArray());return this.pushStack(a,"before",arguments)}},after:function(){if(this[0]&&this[0].parentNode)return this.domManip(arguments,!1,function(a){this.parentNode.insertBefore(a,this.nextSibling)});if(arguments.length){var a=this.pushStack(this,"after",arguments);a.push.apply(a,f.clean(arguments));return a}},remove:function(a,b){for(var c=0,d;(d=this[c])!=null;c++)if(!a||f.filter(a,[d]).length)!b&&d.nodeType===1&&(f.cleanData(d.getElementsByTagName("*")), +f.cleanData([d])),d.parentNode&&d.parentNode.removeChild(d);return this},empty:function() +{for(var a=0,b;(b=this[a])!=null;a++){b.nodeType===1&&f.cleanData(b.getElementsByTagName("*"));while(b.firstChild)b.removeChild(b.firstChild)}return this},clone:function(a,b){a=a==null?!1:a,b=b==null?a:b;return this.map(function(){return f.clone(this,a,b)})},html:function(a){if(a===b)return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(W,""):null;if(typeof a=="string"&&!ba.test(a)&&(f.support.leadingWhitespace||!X.test(a))&&!bg[(Z.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(Y,"<$1></$2>");try{for(var c=0,d=this.length;c<d;c++)this[c].nodeType===1&&(f.cleanData(this[c].getElementsByTagName("*")),this[c].innerHTML=a)}catch(e){this.empty().append(a)}}else f.isFunction(a)?this.each(function(b){var c=f(this);c.html(a.call(this,b,c.html()))}):this.empty().append(a);return this},replaceWith:function(a){if(this[0]&&this[0].parentNode){if(f.isFunction(a))return this.each(function(b){var c=f(this),d=c.html();c.replaceWith(a.call(this,b,d))});typeof a!="string"&&(a=f(a).detach());return this.each(function(){var b=this.nextSibling,c=this.parentNode;f(this).remove(),b?f(b).before(a):f(c).append(a)})}return this.length?this.pushStack(f(f.isFunction(a)?a():a),"replaceWith",a):this},detach:function(a){return this.remove(a,!0)},domManip:function(a,c,d){var e,g,h,i,j=a[0],k=[];if(!f.support.checkClone&&arguments.length===3&&typeof j=="string"&&bd.test(j))return this.each(function(){f(this).domManip(a,c,d,!0)});if(f.isFunction(j))return this.each(function(e){var g=f(this);a[0]=j.call(this,e,c?g.html():b),g.domManip(a,c,d)});if(this[0]){i=j&&j.parentNode,f.support.parentNode&&i&&i.nodeType===11&&i.childNodes.length===this.length?e={fragment:i}:e=f.buildFragment(a,this,k),h=e.fragment,h.childNodes.length===1?g=h=h.firstChild:g=h.firstChild;if(g){c=c&&f.nodeName(g,"tr");for(var l=0,m=this.length,n=m-1;l<m;l++)d.call(c?bi(this[l],g):this[l],e.cacheable||m>1&&l<n?f.clone(h,!0,!0):h)}k.length&&f.each(k,bp)}return this}}),f.buildFragment=function(a,b,d){var e,g,h,i,j=a[0];b&&b[0]&&(i=b[0].ownerDocument||b[0]),i.createDocumentFragment||(i=c),a.length===1&&typeof j=="string"&&j.length<512&&i===c&&j.charAt(0)==="<"&&!bb.test(j)&&(f.support.checkClone||!bd.test(j))&&(f.support.html5Clone||!bc.test(j))&&(g=!0,h=f.fragments[j],h&&h!==1&&(e=h)),e||(e=i.createDocumentFragment(),f.clean(a,i,e,d)),g&&(f.fragments[j]=h?e:1);return{fragment:e,cacheable:g}},f.fragments={},f.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){f.fn[a]=function(c){var d=[],e=f(c),g=this.length===1&&this[0].parentNode;if(g&&g.nodeType===11&&g.childNodes.length===1&&e.length===1){e[b](this[0]);return this}for(var h=0,i=e.length;h<i;h++){var j=(h>0?this.clone(!0):this).get();f(e[h])[b](j),d=d.concat(j)}return this.pushStack(d,a,e.selector)}}),f.extend({clone:function(a,b,c){var d,e,g,h=f.support.html5Clone||!bc.test("<"+a.nodeName)?a.cloneNode(!0):bo(a);if((!f.support.noCloneEvent||!f.support.noCloneChecked)&&(a.nodeType===1||a.nodeType===11)&&!f.isXMLDoc(a)){bk(a,h),d=bl(a),e=bl(h);for(g=0;d[g];++g)e[g]&&bk(d[g],e[g])}if(b){bj(a,h);if(c){d=bl(a),e=bl(h);for(g=0;d[g];++g)bj(d[g],e[g])}}d=e=null;return h},clean:function(a,b,d,e){var g;b=b||c,typeof b.createElement=="undefined"&&(b=b.ownerDocument||b[0]&&b[0].ownerDocument||c);var h=[],i;for(var j=0,k;(k=a[j])!=null;j++){typeof k=="number"&&(k+="");if(!k)continue;if(typeof k=="string")if(!_.test(k))k=b.createTextNode(k);else{k=k.replace(Y,"<$1></$2>");var l=(Z.exec(k)||["",""])[1].toLowerCase(),m=bg[l]||bg._default,n=m[0],o=b.createElement("div");b===c?bh.appendChild(o):U(b).appendChild(o),o.innerHTML=m[1]+k+m[2];while(n--)o=o.lastChild;if(!f.support.tbody){var p=$.test(k),q=l==="table"&&!p?o.firstChild&&o.firstChild.childNodes:m[1]==="<table>"&&!p?o.childNodes:[];for(i=q.length-1;i>=0;--i)f.nodeName(q[i],"tbody")&&!q[i].childNodes.length&&q[i].parentNode.removeChild(q[i])}!f.support.leadingWhitespace&&X.test(k)&&o.insertBefore(b.createTextNode(X.exec(k)[0]),o.firstChild),k=o.childNodes}var r;if(!f.support.appendChecked)if(k[0]&&typeof (r=k.length)=="number")for(i=0;i<r;i++)bn(k[i]);else bn(k);k.nodeType?h.push(k):h=f.merge(h,k)}if(d){g=function(a){return!a.type||be.test(a.type)};for(j=0;h[j];j++)if(e&&f.nodeName(h[j],"script")&&(!h[j].type||h[j].type.toLowerCase()==="text/javascript"))e.push(h[j].parentNode?h[j].parentNode.removeChild(h[j]):h[j]);else{if(h[j].nodeType===1){var s=f.grep(h[j].getElementsByTagName("script"),g);h.splice.apply(h,[j+1,0].concat(s))}d.appendChild(h[j])}}return h},cleanData:function(a){var b,c,d=f.cache,e=f.event.special,g=f.support.deleteExpando;for(var h=0,i;(i=a[h])!=null;h++){if(i.nodeName&&f.noData[i.nodeName.toLowerCase()])continue;c=i[f.expando];if(c){b=d[c];if(b&&b.events){for(var j in b.events)e[j]?f.event.remove(i,j):f.removeEvent(i,j,b.handle);b.handle&&(b.handle.elem=null)}g?delete i[f.expando]:i.removeAttribute&&i.removeAttribute(f.expando),delete d[c]}}}});var bq=/alpha\([^)]*\)/i,br=/opacity=([^)]*)/,bs=/([A-Z]|^ms)/g,bt=/^-?\d+(?:px)?$/i,bu=/^-?\d/,bv=/^([\-+])=([\-+.\de]+)/,bw={position:"absolute",visibility:"hidden",display:"block"},bx=["Left","Right"],by=["Top","Bottom"],bz,bA,bB;f.fn.css=function(a,c){if(arguments.length===2&&c===b)return this;return f.access(this,a,c,!0,function(a,c,d){return d!==b?f.style(a,c,d):f.css(a,c)})},f.extend({cssHooks:{opacity:{get:function(a,b){if(b){var c=bz(a,"opacity","opacity");return c===""?"1":c}return a.style.opacity}}},cssNumber:{fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":f.support.cssFloat?"cssFloat":"styleFloat"},style:function(a,c,d,e){if(!!a&&a.nodeType!==3&&a.nodeType!==8&&!!a.style){var g,h,i=f.camelCase(c),j=a.style,k=f.cssHooks[i];c=f.cssProps[i]||i;if(d===b){if(k&&"get"in k&&(g=k.get(a,!1,e))!==b)return g;return j[c]}h=typeof d,h==="string"&&(g=bv.exec(d))&&(d=+(g[1]+1)*+g[2]+parseFloat(f.css(a,c)),h="number");if(d==null||h==="number"&&isNaN(d))return;h==="number"&&!f.cssNumber[i]&&(d+="px");if(!k||!("set"in k)||(d=k.set(a,d))!==b)try{j[c]=d}catch(l){}}},css:function(a,c,d){var e,g;c=f.camelCase(c),g=f.cssHooks[c],c=f.cssProps[c]||c,c==="cssFloat"&&(c="float");if(g&&"get"in g&&(e=g.get(a,!0,d))!==b)return e;if(bz)return bz(a,c)},swap:function(a,b,c){var d={};for(var e in b)d[e]=a.style[e],a.style[e]=b[e];c.call(a);for(e in b)a.style[e]=d[e]}}),f.curCSS=f.css,f.each(["height","width"],function(a,b){f.cssHooks[b]={get:function(a,c,d){var e;if(c){if(a.offsetWidth!==0)return bC(a,b,d);f.swap(a,bw,function(){e=bC(a,b,d)});return e}},set:function(a,b){if(!bt.test(b))return b;b=parseFloat(b);if(b>=0)return b+"px"}}}),f.support.opacity||(f.cssHooks.opacity={get:function(a,b){return br.test((b&&a.currentStyle?a.currentStyle.filter:a.style.filter)||"")?parseFloat(RegExp.$1)/100+"":b?"1":""},set:function(a,b){var c=a.style,d=a.currentStyle,e=f.isNumeric(b)?"alpha(opacity="+b*100+")":"",g=d&&d.filter||c.filter||"";c.zoom=1;if(b>=1&&f.trim(g.replace(bq,""))===""){c.removeAttribute("filter");if(d&&!d.filter)return}c.filter=bq.test(g)?g.replace(bq,e):g+" "+e}}),f(function(){f.support.reliableMarginRight||(f.cssHooks.marginRight={get:function(a,b){var c;f.swap(a,{display:"inline-block"},function(){b?c=bz(a,"margin-right","marginRight"):c=a.style.marginRight});return c}})}),c.defaultView&&c.defaultView.getComputedStyle&&(bA=function(a,b){var c,d,e;b=b.replace(bs,"-$1").toLowerCase(),(d=a.ownerDocument.defaultView)&&(e=d.getComputedStyle(a,null))&&(c=e.getPropertyValue(b),c===""&&!f.contains(a.ownerDocument.documentElement,a)&&(c=f.style(a,b)));return c}),c.documentElement.currentStyle&&(bB=function(a,b){var c,d,e,f=a.currentStyle&&a.currentStyle[b],g=a.style;f===null&&g&&(e=g[b])&&(f=e),!bt.test(f)&&bu.test(f)&&(c=g.left,d=a.runtimeStyle&&a.runtimeStyle.left,d&&(a.runtimeStyle.left=a.currentStyle.left),g.left=b==="fontSize"?"1em":f||0,f=g.pixelLeft+"px",g.left=c,d&&(a.runtimeStyle.left=d));return f===""?"auto":f}),bz=bA||bB,f.expr&&f.expr.filters&&(f.expr.filters.hidden=function(a){var b=a.offsetWidth,c=a.offsetHeight;return b===0&&c===0||!f.support.reliableHiddenOffsets&&(a.style&&a.style.display||f.css(a,"display"))==="none"},f.expr.filters.visible=function(a){return!f.expr.filters.hidden(a)});var bD=/%20/g,bE=/\[\]$/,bF=/\r?\n/g,bG=/#.*$/,bH=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,bI=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,bJ=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,bK=/^(?:GET|HEAD)$/,bL=/^\/\//,bM=/\?/,bN=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,bO=/^(?:select|textarea)/i,bP=/\s+/,bQ=/([?&])_=[^&]*/,bR=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,bS=f.fn.load,bT={},bU={},bV,bW,bX=["*/"]+["*"];try{bV=e.href}catch(bY){bV=c.createElement("a"),bV.href="",bV=bV.href}bW=bR.exec(bV.toLowerCase())||[],f.fn.extend({load:function(a,c,d){if(typeof a!="string"&&bS)return bS.apply(this,arguments);if(!this.length)return this;var e=a.indexOf(" ");if(e>=0){var g=a.slice(e,a.length);a=a.slice(0,e)}var h="GET";c&&(f.isFunction(c)?(d=c,c=b):typeof c=="object"&&(c=f.param(c,f.ajaxSettings.traditional),h="POST"));var i=this;f.ajax({url:a,type:h,dataType:"html",data:c,complete:function(a,b,c){c=a.responseText,a.isResolved()&&(a.done(function(a){c=a}),i.html(g?f("<div>").append(c.replace(bN,"")).find(g):c)),d&&i.each(d,[c,b,a])}});return this},serialize:function(){return f.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?f.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||bO.test(this.nodeName)||bI.test(this.type))}).map(function(a,b){var c=f(this).val();return c==null?null:f.isArray(c)?f.map(c,function(a,c){return{name:b.name,value:a.replace(bF,"\r\n")}}):{name:b.name,value:c.replace(bF,"\r\n")}}).get()}}),f.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(a,b){f.fn[b]=function(a){return this.on(b,a)}}),f.each(["get","post"],function(a,c){f[c]=function(a,d,e,g){f.isFunction(d)&&(g=g||e,e=d,d=b);return f.ajax({type:c,url:a,data:d,success:e,dataType:g})}}),f.extend({getScript:function(a,c){return f.get(a,b,c,"script")},getJSON:function(a,b,c){return f.get(a,b,c,"json")},ajaxSetup:function(a,b){b?b_(a,f.ajaxSettings):(b=a,a=f.ajaxSettings),b_(a,b);return a},ajaxSettings:{url:bV,isLocal:bJ.test(bW[1]),global:!0,type:"GET",contentType:"application/x-www-form-urlencoded",processData:!0,async:!0,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":bX},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":a.String,"text html":!0,"text json":f.parseJSON,"text xml":f.parseXML},flatOptions:{context:!0,url:!0}},ajaxPrefilter:bZ(bT),ajaxTransport:bZ(bU),ajax:function(a,c){function w(a,c,l,m){if(s!==2){s=2,q&&clearTimeout(q),p=b,n=m||"",v.readyState=a>0?4:0;var o,r,u,w=c,x=l?cb(d,v,l):b,y,z;if(a>=200&&a<300||a===304){if(d.ifModified){if(y=v.getResponseHeader("Last-Modified"))f.lastModified[k]=y;if(z=v.getResponseHeader("Etag"))f.etag[k]=z}if(a===304)w="notmodified",o=!0;else try{r=cc(d,x),w="success",o=!0}catch(A){w="parsererror",u=A}}else{u=w;if(!w||a)w="error",a<0&&(a=0)}v.status=a,v.statusText=""+(c||w),o?h.resolveWith(e,[r,w,v]):h.rejectWith(e,[v,w,u]),v.statusCode(j),j=b,t&&g.trigger("ajax"+(o?"Success":"Error"),[v,d,o?r:u]),i.fireWith(e,[v,w]),t&&(g.trigger("ajaxComplete",[v,d]),--f.active||f.event.trigger("ajaxStop"))}}typeof a=="object"&&(c=a,a=b),c=c||{};var d=f.ajaxSetup({},c),e=d.context||d,g=e!==d&&(e.nodeType||e instanceof f)?f(e):f.event,h=f.Deferred(),i=f.Callbacks("once memory"),j=d.statusCode||{},k,l={},m={},n,o,p,q,r,s=0,t,u,v={readyState:0,setRequestHeader:function(a,b){if(!s){var c=a.toLowerCase();a=m[c]=m[c]||a,l[a]=b}return this},getAllResponseHeaders:function(){return s===2?n:null},getResponseHeader:function(a){var c;if(s===2){if(!o){o={};while(c=bH.exec(n))o[c[1].toLowerCase()]=c[2]}c=o[a.toLowerCase()]}return c===b?null:c},overrideMimeType:function(a){s||(d.mimeType=a);return this},abort:function(a){a=a||"abort",p&&p.abort(a),w(0,a);return this}};h.promise(v),v.success=v.done,v.error=v.fail,v.complete=i.add,v.statusCode=function(a){if(a){var b;if(s<2)for(b in a)j[b]=[j[b],a[b]];else b=a[v.status],v.then(b,b)}return this},d.url=((a||d.url)+"").replace(bG,"").replace(bL,bW[1]+"//"),d.dataTypes=f.trim(d.dataType||"*").toLowerCase().split(bP),d.crossDomain==null&&(r=bR.exec(d.url.toLowerCase()),d.crossDomain=!(!r||r[1]==bW[1]&&r[2]==bW[2]&&(r[3]||(r[1]==="http:"?80:443))==(bW[3]||(bW[1]==="http:"?80:443)))),d.data&&d.processData&&typeof d.data!="string"&&(d.data=f.param(d.data,d.traditional)),b$(bT,d,c,v);if(s===2)return!1;t=d.global,d.type=d.type.toUpperCase(),d.hasContent=!bK.test(d.type),t&&f.active++===0&&f.event.trigger("ajaxStart");if(!d.hasContent){d.data&&(d.url+=(bM.test(d.url)?"&":"?")+d.data,delete d.data),k=d.url;if(d.cache===!1){var x=f.now(),y=d.url.replace(bQ,"$1_="+x);d.url=y+(y===d.url?(bM.test(d.url)?"&":"?")+"_="+x:"")}}(d.data&&d.hasContent&&d.contentType!==!1||c.contentType)&&v.setRequestHeader("Content-Type",d.contentType),d.ifModified&&(k=k||d.url,f.lastModified[k]&&v.setRequestHeader("If-Modified-Since",f.lastModified[k]),f.etag[k]&&v.setRequestHeader("If-None-Match",f.etag[k])),v.setRequestHeader("Accept",d.dataTypes[0]&&d.accepts[d.dataTypes[0]]?d.accepts[d.dataTypes[0]]+(d.dataTypes[0]!=="*"?", "+bX+"; q=0.01":""):d.accepts["*"]);for(u in d.headers)v.setRequestHeader(u,d.headers[u]);if(d.beforeSend&&(d.beforeSend.call(e,v,d)===!1||s===2)){v.abort();return!1}for(u in{success:1,error:1,complete:1})v[u](d[u]);p=b$(bU,d,c,v);if(!p)w(-1,"No Transport");else{v.readyState=1,t&&g.trigger("ajaxSend",[v,d]),d.async&&d.timeout>0&&(q=setTimeout(function(){v.abort("timeout")},d.timeout));try{s=1,p.send(l,w)}catch(z){if(s<2)w(-1,z);else throw z}}return v},param:function(a,c){var d=[],e=function(a,b){b=f.isFunction(b)?b():b,d[d.length]=encodeURIComponent(a)+"="+encodeURIComponent(b)};c===b&&(c=f.ajaxSettings.traditional);if(f.isArray(a)||a.jquery&&!f.isPlainObject(a))f.each(a,function(){e(this.name,this.value)});else for(var g in a)ca(g,a[g],c,e);return d.join("&").replace(bD,"+")}}),f.extend({active:0,lastModified:{},etag:{}});var cd=f.now(),ce=/(\=)\?(&|$)|\?\?/i;f.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return f.expando+"_"+cd++}}),f.ajaxPrefilter("json jsonp",function(b,c,d){var e=b.contentType==="application/x-www-form-urlencoded"&&typeof b.data=="string";if(b.dataTypes[0]==="jsonp"||b.jsonp!==!1&&(ce.test(b.url)||e&&ce.test(b.data))){var g,h=b.jsonpCallback=f.isFunction(b.jsonpCallback)?b.jsonpCallback():b.jsonpCallback,i=a[h],j=b.url,k=b.data,l="$1"+h+"$2";b.jsonp!==!1&&(j=j.replace(ce,l),b.url===j&&(e&&(k=k.replace(ce,l)),b.data===k&&(j+=(/\?/.test(j)?"&":"?")+b.jsonp+"="+h))),b.url=j,b.data=k,a[h]=function(a){g=[a]},d.always(function(){a[h]=i,g&&f.isFunction(i)&&a[h](g[0])}),b.converters["script json"]=function(){g||f.error(h+" was not called");return g[0]},b.dataTypes[0]="json";return"script"}}),f.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(a){f.globalEval(a);return a}}}),f.ajaxPrefilter("script",function(a){a.cache===b&&(a.cache=!1),a.crossDomain&&(a.type="GET",a.global=!1)}),f.ajaxTransport("script",function(a){if(a.crossDomain){var d,e=c.head||c.getElementsByTagName("head")[0]||c.documentElement;return{send:function(f,g){d=c.createElement("script"),d.async="async",a.scriptCharset&&(d.charset=a.scriptCharset),d.src=a.url,d.onload=d.onreadystatechange=function(a,c){if(c||!d.readyState||/loaded|complete/.test(d.readyState))d.onload=d.onreadystatechange=null,e&&d.parentNode&&e.removeChild(d),d=b,c||g(200,"success")},e.insertBefore(d,e.firstChild)},abort:function(){d&&d.onload(0,1)}}}});var cf=a.ActiveXObject?function(){for(var a in ch)ch[a](0,1)}:!1,cg=0,ch;f.ajaxSettings.xhr=a.ActiveXObject?function(){return!this.isLocal&&ci()||cj()}:ci,function(a){f.extend(f.support,{ajax:!!a,cors:!!a&&"withCredentials"in a})}(f.ajaxSettings.xhr()),f.support.ajax&&f.ajaxTransport(function(c) +{if(!c.crossDomain||f.support.cors){var d;return{send:function(e,g){var h=c.xhr(),i,j;c.username?h.open(c.type,c.url,c.async,c.username,c.password):h.open(c.type,c.url,c.async);if(c.xhrFields)for(j in c.xhrFields)h[j]=c.xhrFields[j];c.mimeType&&h.overrideMimeType&&h.overrideMimeType(c.mimeType),!c.crossDomain&&!e["X-Requested-With"]&&(e["X-Requested-With"]="XMLHttpRequest");try{for(j in e)h.setRequestHeader(j,e[j])}catch(k){}h.send(c.hasContent&&c.data||null),d=function(a,e){var j,k,l,m,n;try{if(d&&(e||h.readyState===4)){d=b,i&&(h.onreadystatechange=f.noop,cf&&delete ch[i]);if(e)h.readyState!==4&&h.abort();else{j=h.status,l=h.getAllResponseHeaders(),m={},n=h.responseXML,n&&n.documentElement&&(m.xml=n),m.text=h.responseText;try{k=h.statusText}catch(o){k=""}!j&&c.isLocal&&!c.crossDomain?j=m.text?200:404:j===1223&&(j=204)}}}catch(p){e||g(-1,p)}m&&g(j,k,m,l)},!c.async||h.readyState===4?d():(i=++cg,cf&&(ch||(ch={},f(a).unload(cf)),ch[i]=d),h.onreadystatechange=d)},abort:function(){d&&d(0,1)}}}});var ck={},cl,cm,cn=/^(?:toggle|show|hide)$/,co=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,cp,cq=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],cr;f.fn.extend({show:function(a,b,c){var d,e;if(a||a===0)return this.animate(cu("show",3),a,b,c);for(var g=0,h=this.length;g<h;g++)d=this[g],d.style&&(e=d.style.display,!f._data(d,"olddisplay")&&e==="none"&&(e=d.style.display=""),e===""&&f.css(d,"display")==="none"&&f._data(d,"olddisplay",cv(d.nodeName)));for(g=0;g<h;g++){d=this[g];if(d.style){e=d.style.display;if(e===""||e==="none")d.style.display=f._data(d,"olddisplay")||""}}return this},hide:function(a,b,c){if(a||a===0)return this.animate(cu("hide",3),a,b,c);var d,e,g=0,h=this.length;for(;g<h;g++)d=this[g],d.style&&(e=f.css(d,"display"),e!=="none"&&!f._data(d,"olddisplay")&&f._data(d,"olddisplay",e));for(g=0;g<h;g++)this[g].style&&(this[g].style.display="none");return this},_toggle:f.fn.toggle,toggle:function(a,b,c){var d=typeof a=="boolean";f.isFunction(a)&&f.isFunction(b)?this._toggle.apply(this,arguments):a==null||d?this.each(function(){var b=d?a:f(this).is(":hidden");f(this)[b?"show":"hide"]()}):this.animate(cu("toggle",3),a,b,c);return this},fadeTo:function(a,b,c,d){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:b},a,c,d)},animate:function(a,b,c,d){function g(){e.queue===!1&&f._mark(this);var b=f.extend({},e),c=this.nodeType===1,d=c&&f(this).is(":hidden"),g,h,i,j,k,l,m,n,o;b.animatedProperties={};for(i in a){g=f.camelCase(i),i!==g&&(a[g]=a[i],delete a[i]),h=a[g],f.isArray(h)?(b.animatedProperties[g]=h[1],h=a[g]=h[0]):b.animatedProperties[g]=b.specialEasing&&b.specialEasing[g]||b.easing||"swing";if(h==="hide"&&d||h==="show"&&!d)return b.complete.call(this);c&&(g==="height"||g==="width")&&(b.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY],f.css(this,"display")==="inline"&&f.css(this,"float")==="none"&&(!f.support.inlineBlockNeedsLayout||cv(this.nodeName)==="inline"?this.style.display="inline-block":this.style.zoom=1))}b.overflow!=null&&(this.style.overflow="hidden");for(i in a)j=new f.fx(this,b,i),h=a[i],cn.test(h)?(o=f._data(this,"toggle"+i)||(h==="toggle"?d?"show":"hide":0),o?(f._data(this,"toggle"+i,o==="show"?"hide":"show"),j[o]()):j[h]()):(k=co.exec(h),l=j.cur(),k?(m=parseFloat(k[2]),n=k[3]||(f.cssNumber[i]?"":"px"),n!=="px"&&(f.style(this,i,(m||1)+n),l=(m||1)/j.cur()*l,f.style(this,i,l+n)),k[1]&&(m=(k[1]==="-="?-1:1)*m+l),j.custom(l,m,n)):j.custom(l,h,""));return!0}var e=f.speed(b,c,d);if(f.isEmptyObject(a))return this.each(e.complete,[!1]);a=f.extend({},a);return e.queue===!1?this.each(g):this.queue(e.queue,g)},stop:function(a,c,d){typeof a!="string"&&(d=c,c=a,a=b),c&&a!==!1&&this.queue(a||"fx",[]);return this.each(function(){function h(a,b,c){var e=b[c];f.removeData(a,c,!0),e.stop(d)}var b,c=!1,e=f.timers,g=f._data(this);d||f._unmark(!0,this);if(a==null)for(b in g)g[b]&&g[b].stop&&b.indexOf(".run")===b.length-4&&h(this,g,b);else g[b=a+".run"]&&g[b].stop&&h(this,g,b);for(b=e.length;b--;)e[b].elem===this&&(a==null||e[b].queue===a)&&(d?e[b](!0):e[b].saveState(),c=!0,e.splice(b,1));(!d||!c)&&f.dequeue(this,a)})}}),f.each({slideDown:cu("show",1),slideUp:cu("hide",1),slideToggle:cu("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(a,b){f.fn[a]=function(a,c,d){return this.animate(b,a,c,d)}}),f.extend({speed:function(a,b,c){var d=a&&typeof a=="object"?f.extend({},a):{complete:c||!c&&b||f.isFunction(a)&&a,duration:a,easing:c&&b||b&&!f.isFunction(b)&&b};d.duration=f.fx.off?0:typeof d.duration=="number"?d.duration:d.duration in f.fx.speeds?f.fx.speeds[d.duration]:f.fx.speeds._default;if(d.queue==null||d.queue===!0)d.queue="fx";d.old=d.complete,d.complete=function(a){f.isFunction(d.old)&&d.old.call(this),d.queue?f.dequeue(this,d.queue):a!==!1&&f._unmark(this)};return d},easing:{linear:function(a,b,c,d){return c+d*a},swing:function(a,b,c,d){return(-Math.cos(a*Math.PI)/2+.5)*d+c}},timers:[],fx:function(a,b,c){this.options=b,this.elem=a,this.prop=c,b.orig=b.orig||{}}}),f.fx.prototype={update:function(){this.options.step&&this.options.step.call(this.elem,this.now,this),(f.fx.step[this.prop]||f.fx.step._default)(this)},cur:function(){if(this.elem[this.prop]!=null&&(!this.elem.style||this.elem.style[this.prop]==null))return this.elem[this.prop];var a,b=f.css(this.elem,this.prop);return isNaN(a=parseFloat(b))?!b||b==="auto"?0:b:a},custom:function(a,c,d){function h(a){return e.step(a)}var e=this,g=f.fx;this.startTime=cr||cs(),this.end=c,this.now=this.start=a,this.pos=this.state=0,this.unit=d||this.unit||(f.cssNumber[this.prop]?"":"px"),h.queue=this.options.queue,h.elem=this.elem,h.saveState=function(){e.options.hide&&f._data(e.elem,"fxshow"+e.prop)===b&&f._data(e.elem,"fxshow"+e.prop,e.start)},h()&&f.timers.push(h)&&!cp&&(cp=setInterval(g.tick,g.interval))},show:function(){var a=f._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=a||f.style(this.elem,this.prop),this.options.show=!0,a!==b?this.custom(this.cur(),a):this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur()),f(this.elem).show()},hide:function(){this.options.orig[this.prop]=f._data(this.elem,"fxshow"+this.prop)||f.style(this.elem,this.prop),this.options.hide=!0,this.custom(this.cur(),0)},step:function(a){var b,c,d,e=cr||cs(),g=!0,h=this.elem,i=this.options;if(a||e>=i.duration+this.startTime){this.now=this.end,this.pos=this.state=1,this.update(),i.animatedProperties[this.prop]=!0;for(b in i.animatedProperties)i.animatedProperties[b]!==!0&&(g=!1);if(g){i.overflow!=null&&!f.support.shrinkWrapBlocks&&f.each(["","X","Y"],function(a,b){h.style["overflow"+b]=i.overflow[a]}),i.hide&&f(h).hide();if(i.hide||i.show)for(b in i.animatedProperties)f.style(h,b,i.orig[b]),f.removeData(h,"fxshow"+b,!0),f.removeData(h,"toggle"+b,!0);d=i.complete,d&&(i.complete=!1,d.call(h))}return!1}i.duration==Infinity?this.now=e:(c=e-this.startTime,this.state=c/i.duration,this.pos=f.easing[i.animatedProperties[this.prop]](this.state,c,0,1,i.duration),this.now=this.start+(this.end-this.start)*this.pos),this.update();return!0}},f.extend(f.fx,{tick:function(){var a,b=f.timers,c=0;for(;c<b.length;c++)a=b[c],!a()&&b[c]===a&&b.splice(c--,1);b.length||f.fx.stop()},interval:13,stop:function(){clearInterval(cp),cp=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(a){f.style(a.elem,"opacity",a.now)},_default:function(a){a.elem.style&&a.elem.style[a.prop]!=null?a.elem.style[a.prop]=a.now+a.unit:a.elem[a.prop]=a.now}}}),f.each(["width","height"],function(a,b){f.fx.step[b]=function(a){f.style(a.elem,b,Math.max(0,a.now)+a.unit)}}),f.expr&&f.expr.filters&&(f.expr.filters.animated=function(a){return f.grep(f.timers,function(b){return a===b.elem}).length});var cw=/^t(?:able|d|h)$/i,cx=/^(?:body|html)$/i;"getBoundingClientRect"in c.documentElement?f.fn.offset=function(a){var b=this[0],c;if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);try{c=b.getBoundingClientRect()}catch(d){}var e=b.ownerDocument,g=e.documentElement;if(!c||!f.contains(g,b))return c?{top:c.top,left:c.left}:{top:0,left:0};var h=e.body,i=cy(e),j=g.clientTop||h.clientTop||0,k=g.clientLeft||h.clientLeft||0,l=i.pageYOffset||f.support.boxModel&&g.scrollTop||h.scrollTop,m=i.pageXOffset||f.support.boxModel&&g.scrollLeft||h.scrollLeft,n=c.top+l-j,o=c.left+m-k;return{top:n,left:o}}:f.fn.offset=function(a){var b=this[0];if(a)return this.each(function(b){f.offset.setOffset(this,a,b)});if(!b||!b.ownerDocument)return null;if(b===b.ownerDocument.body)return f.offset.bodyOffset(b);var c,d=b.offsetParent,e=b,g=b.ownerDocument,h=g.documentElement,i=g.body,j=g.defaultView,k=j?j.getComputedStyle(b,null):b.currentStyle,l=b.offsetTop,m=b.offsetLeft;while((b=b.parentNode)&&b!==i&&b!==h){if(f.support.fixedPosition&&k.position==="fixed")break;c=j?j.getComputedStyle(b,null):b.currentStyle,l-=b.scrollTop,m-=b.scrollLeft,b===d&&(l+=b.offsetTop,m+=b.offsetLeft,f.support.doesNotAddBorder&&(!f.support.doesAddBorderForTableAndCells||!cw.test(b.nodeName))&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),e=d,d=b.offsetParent),f.support.subtractsBorderForOverflowNotVisible&&c.overflow!=="visible"&&(l+=parseFloat(c.borderTopWidth)||0,m+=parseFloat(c.borderLeftWidth)||0),k=c}if(k.position==="relative"||k.position==="static")l+=i.offsetTop,m+=i.offsetLeft;f.support.fixedPosition&&k.position==="fixed"&&(l+=Math.max(h.scrollTop,i.scrollTop),m+=Math.max(h.scrollLeft,i.scrollLeft));return{top:l,left:m}},f.offset={bodyOffset:function(a){var b=a.offsetTop,c=a.offsetLeft;f.support.doesNotIncludeMarginInBodyOffset&&(b+=parseFloat(f.css(a,"marginTop"))||0,c+=parseFloat(f.css(a,"marginLeft"))||0);return{top:b,left:c}},setOffset:function(a,b,c){var d=f.css(a,"position");d==="static"&&(a.style.position="relative");var e=f(a),g=e.offset(),h=f.css(a,"top"),i=f.css(a,"left"),j=(d==="absolute"||d==="fixed")&&f.inArray("auto",[h,i])>-1,k={},l={},m,n;j?(l=e.position(),m=l.top,n=l.left):(m=parseFloat(h)||0,n=parseFloat(i)||0),f.isFunction(b)&&(b=b.call(a,c,g)),b.top!=null&&(k.top=b.top-g.top+m),b.left!=null&&(k.left=b.left-g.left+n),"using"in b?b.using.call(a,k):e.css(k)}},f.fn.extend({position:function(){if(!this[0])return null;var a=this[0],b=this.offsetParent(),c=this.offset(),d=cx.test(b[0].nodeName)?{top:0,left:0}:b.offset();c.top-=parseFloat(f.css(a,"marginTop"))||0,c.left-=parseFloat(f.css(a,"marginLeft"))||0,d.top+=parseFloat(f.css(b[0],"borderTopWidth"))||0,d.left+=parseFloat(f.css(b[0],"borderLeftWidth"))||0;return{top:c.top-d.top,left:c.left-d.left}},offsetParent:function(){return this.map(function(){var a=this.offsetParent||c.body;while(a&&!cx.test(a.nodeName)&&f.css(a,"position")==="static")a=a.offsetParent;return a})}}),f.each(["Left","Top"],function(a,c){var d="scroll"+c;f.fn[d]=function(c){var e,g;if(c===b){e=this[0];if(!e)return null;g=cy(e);return g?"pageXOffset"in g?g[a?"pageYOffset":"pageXOffset"]:f.support.boxModel&&g.document.documentElement[d]||g.document.body[d]:e[d]}return this.each(function(){g=cy(this),g?g.scrollTo(a?f(g).scrollLeft():c,a?c:f(g).scrollTop()):this[d]=c})}}),f.each(["Height","Width"],function(a,c){var d=c.toLowerCase();f.fn["inner"+c]=function(){var a=this[0];return a?a.style?parseFloat(f.css(a,d,"padding")):this[d]():null},f.fn["outer"+c]=function(a){var b=this[0];return b?b.style?parseFloat(f.css(b,d,a?"margin":"border")):this[d]():null},f.fn[d]=function(a){var e=this[0];if(!e)return a==null?null:this;if(f.isFunction(a))return this.each(function(b){var c=f(this);c[d](a.call(this,b,c[d]()))});if(f.isWindow(e)){var g=e.document.documentElement["client"+c],h=e.document.body;return e.document.compatMode==="CSS1Compat"&&g||h&&h["client"+c]||g}if(e.nodeType===9)return Math.max(e.documentElement["client"+c],e.body["scroll"+c],e.documentElement["scroll"+c],e.body["offset"+c],e.documentElement["offset"+c]);if(a===b){var i=f.css(e,d),j=parseFloat(i);return f.isNumeric(j)?j:i}return this.css(d,typeof a=="string"?a:a+"px")}}),a.jQuery=a.$=f,typeof define=="function"&&define.amd&&define.amd.jQuery&&define("jquery",[],function(){return f})})(window); +/*! + * jQuery UI 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI + */ +(function(a,b){function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;if(!b.href||!g||f.nodeName.toLowerCase()!=="map")return!1;h=a("img[usemap=#"+g+"]")[0];return!!h&&d(h)}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}a.ui=a.ui||{};a.ui.version||(a.extend(a.ui,{version:"1.8.18",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)});return c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){if(c===b)return g["inner"+d].call(this);return this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){if(typeof b!="number")return g["outer"+d].call(this,b);return this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!!d&&!!a.element[0].parentNode)for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;if(b[d]>0)return!0;b[d]=1,e=b[d]>0,b[d]=0;return e},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}}))})(jQuery); +/*! + * jQuery UI Widget 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Widget + */ +(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}});return d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e;if(f&&e.charAt(0)==="_")return h;f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b){h=f;return!1}}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))});return h}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}this._setOptions(e);return this},_setOptions:function(b){var c=this;a.each(b,function(a,b){c._setOption(a,b)});return this},_setOption:function(a,b){this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b);return this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);this.element.trigger(c,d);return!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery); +/*! + * jQuery UI Mouse 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Mouse + * + * Depends: + * jquery.ui.widget.js + */ +(function(a,b){var c=!1;a(document).mouseup(function(a){c=!1}),a.widget("ui.mouse",{options:{cancel:":input,option",distance:1,delay:0},_mouseInit:function(){var b=this;this.element.bind("mousedown."+this.widgetName,function(a){return b._mouseDown(a)}).bind("click."+this.widgetName,function(c){if(!0===a.data(c.target,b.widgetName+".preventClickEvent")){a.removeData(c.target,b.widgetName+".preventClickEvent"),c.stopImmediatePropagation();return!1}}),this.started=!1},_mouseDestroy:function(){this.element.unbind("."+this.widgetName)},_mouseDown:function(b){if(!c){this._mouseStarted&&this._mouseUp(b),this._mouseDownEvent=b;var d=this,e=b.which==1,f=typeof this.options.cancel=="string"&&b.target.nodeName?a(b.target).closest(this.options.cancel).length:!1;if(!e||f||!this._mouseCapture(b))return!0;this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){d.mouseDelayMet=!0},this.options.delay));if(this._mouseDistanceMet(b)&&this._mouseDelayMet(b)){this._mouseStarted=this._mouseStart(b)!==!1;if(!this._mouseStarted){b.preventDefault();return!0}}!0===a.data(b.target,this.widgetName+".preventClickEvent")&&a.removeData(b.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(a){return d._mouseMove(a)},this._mouseUpDelegate=function(a){return d._mouseUp(a)},a(document).bind("mousemove."+this.widgetName,this._mouseMoveDelegate).bind("mouseup."+this.widgetName,this._mouseUpDelegate),b.preventDefault(),c=!0;return!0}},_mouseMove:function(b){if(a.browser.msie&&!(document.documentMode>=9)&&!b.button)return this._mouseUp(b);if(this._mouseStarted){this._mouseDrag(b);return b.preventDefault()}this._mouseDistanceMet(b)&&this._mouseDelayMet(b)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,b)!==!1,this._mouseStarted?this._mouseDrag(b):this._mouseUp(b));return!this._mouseStarted},_mouseUp:function(b){a(document).unbind("mousemove."+this.widgetName,this._mouseMoveDelegate).unbind("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,b.target==this._mouseDownEvent.target&&a.data(b.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(b));return!1},_mouseDistanceMet:function(a){return Math.max(Math.abs(this._mouseDownEvent.pageX-a.pageX),Math.abs(this._mouseDownEvent.pageY-a.pageY))>=this.options.distance},_mouseDelayMet:function(a){return this.mouseDelayMet},_mouseStart:function(a){},_mouseDrag:function(a){},_mouseStop:function(a){},_mouseCapture:function(a){return!0}})})(jQuery); +/* + * jQuery UI Resizable 1.8.18 + * + * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about) + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * http://docs.jquery.com/UI/Resizables + * + * Depends: + * jquery.ui.core.js + * jquery.ui.mouse.js + * jquery.ui.widget.js + */ +(function(a,b){a.widget("ui.resizable",a.ui.mouse,{widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:1e3},_create:function(){var b=this,c=this.options;this.element.addClass("ui-resizable"),a.extend(this,{_aspectRatio:!!c.aspectRatio,aspectRatio:c.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:c.helper||c.ghost||c.animate?c.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/canvas|textarea|input|select|button|img/i)&&(this.element.wrap(a('<div class="ui-wrapper" style="overflow: hidden;"></div>').css({position:this.element.css("position"),width:this.element.outerWidth(),height:this.element.outerHeight(),top:this.element.css("top"),left:this.element.css("left")})),this.element=this.element.parent().data("resizable",this.element.data("resizable")),this.elementIsWrapper=!0,this.element.css({marginLeft:this.originalElement.css("marginLeft"),marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom")}),this.originalElement.css({marginLeft:0,marginTop:0,marginRight:0,marginBottom:0}),this.originalResizeStyle=this.originalElement.css("resize"),this.originalElement.css("resize","none"),this._proportionallyResizeElements.push(this.originalElement.css({position:"static",zoom:1,display:"block"})),this.originalElement.css({margin:this.originalElement.css("margin")}),this._proportionallyResize()),this.handles=c.handles||(a(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se");if(this.handles.constructor==String){this.handles=="all"&&(this.handles="n,e,s,w,se,sw,ne,nw");var d=this.handles.split(",");this.handles={};for(var e=0;e<d.length;e++){var f=a.trim(d[e]),g="ui-resizable-"+f,h=a('<div class="ui-resizable-handle '+g+'"></div>');/sw|se|ne|nw/.test(f)&&h.css({zIndex:++c.zIndex}),"se"==f&&h.addClass("ui-icon ui-icon-gripsmall-diagonal-se"),this.handles[f]=".ui-resizable-"+f,this.element.append(h)}}this._renderAxis=function(b){b=b||this.element;for(var c in this.handles){this.handles[c].constructor==String&&(this.handles[c]=a(this.handles[c],this.element).show());if(this.elementIsWrapper&&this.originalElement[0].nodeName.match(/textarea|input|select|button/i)){var d=a(this.handles[c],this.element),e=0;e=/sw|ne|nw|se|n|s/.test(c)?d.outerHeight():d.outerWidth();var f=["padding",/ne|nw|n/.test(c)?"Top":/se|sw|s/.test(c)?"Bottom":/^e$/.test(c)?"Right":"Left"].join("");b.css(f,e),this._proportionallyResize()}if(!a(this.handles[c]).length)continue}},this._renderAxis(this.element),this._handles=a(".ui-resizable-handle",this.element).disableSelection(),this._handles.mouseover(function(){if(!b.resizing){if(this.className)var a=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i);b.axis=a&&a[1]?a[1]:"se"}}),c.autoHide&&(this._handles.hide(),a(this.element).addClass("ui-resizable-autohide").hover(function(){c.disabled||(a(this).removeClass("ui-resizable-autohide"),b._handles.show())},function(){c.disabled||b.resizing||(a(this).addClass("ui-resizable-autohide"),b._handles.hide())})),this._mouseInit()},destroy:function(){this._mouseDestroy();var b=function(b){a(b).removeClass("ui-resizable ui-resizable-disabled ui-resizable-resizing").removeData("resizable").unbind(".resizable").find(".ui-resizable-handle").remove()};if(this.elementIsWrapper){b(this.element);var c=this.element;c.after(this.originalElement.css({position:c.css("position"),width:c.outerWidth(),height:c.outerHeight(),top:c.css("top"),left:c.css("left")})).remove()}this.originalElement.css("resize",this.originalResizeStyle),b(this.originalElement);return this},_mouseCapture:function(b){var c=!1;for(var d in this.handles)a(this.handles[d])[0]==b.target&&(c=!0);return!this.options.disabled&&c},_mouseStart:function(b){var d=this.options,e=this.element.position(),f=this.element;this.resizing=!0,this.documentScroll={top:a(document).scrollTop(),left:a(document).scrollLeft()},(f.is(".ui-draggable")||/absolute/.test(f.css("position")))&&f.css({position:"absolute",top:e.top,left:e.left}),this._renderProxy();var g=c(this.helper.css("left")),h=c(this.helper.css("top"));d.containment&&(g+=a(d.containment).scrollLeft()||0,h+=a(d.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:g,top:h},this.size=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalSize=this._helper?{width:f.outerWidth(),height:f.outerHeight()}:{width:f.width(),height:f.height()},this.originalPosition={left:g,top:h},this.sizeDiff={width:f.outerWidth()-f.width(),height:f.outerHeight()-f.height()},this.originalMousePosition={left:b.pageX,top:b.pageY},this.aspectRatio=typeof d.aspectRatio=="number"?d.aspectRatio:this.originalSize.width/this.originalSize.height||1;var i=a(".ui-resizable-"+this.axis).css("cursor");a("body").css("cursor",i=="auto"?this.axis+"-resize":i),f.addClass("ui-resizable-resizing"),this._propagate("start",b);return!0},_mouseDrag:function(b){var c=this.helper,d=this.options,e={},f=this,g=this.originalMousePosition,h=this.axis,i=b.pageX-g.left||0,j=b.pageY-g.top||0,k=this._change[h];if(!k)return!1;var l=k.apply(this,[b,i,j]),m=a.browser.msie&&a.browser.version<7,n=this.sizeDiff;this._updateVirtualBoundaries(b.shiftKey);if(this._aspectRatio||b.shiftKey)l=this._updateRatio(l,b);l=this._respectSize(l,b),this._propagate("resize",b),c.css({top:this.position.top+"px",left:this.position.left+"px",width:this.size.width+"px",height:this.size.height+"px"}),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),this._updateCache(l),this._trigger("resize",b,this.ui());return!1},_mouseStop:function(b){this.resizing=!1;var c=this.options,d=this;if(this._helper){var e=this._proportionallyResizeElements,f=e.length&&/textarea/i.test(e[0].nodeName),g=f&&a.ui.hasScroll(e[0],"left")?0:d.sizeDiff.height,h=f?0:d.sizeDiff.width,i={width:d.helper.width()-h,height:d.helper.height()-g},j=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,k=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;c.animate||this.element.css(a.extend(i,{top:k,left:j})),d.helper.height(d.size.height),d.helper.width(d.size.width),this._helper&&!c.animate&&this._proportionallyResize()}a("body").css("cursor","auto"),this.element.removeClass("ui-resizable-resizing"),this._propagate("stop",b),this._helper&&this.helper.remove();return!1},_updateVirtualBoundaries:function(a){var b=this.options,c,e,f,g,h;h={minWidth:d(b.minWidth)?b.minWidth:0,maxWidth:d(b.maxWidth)?b.maxWidth:Infinity,minHeight:d(b.minHeight)?b.minHeight:0,maxHeight:d(b.maxHeight)?b.maxHeight:Infinity};if(this._aspectRatio||a)c=h.minHeight*this.aspectRatio,f=h.minWidth/this.aspectRatio,e=h.maxHeight*this.aspectRatio,g=h.maxWidth/this.aspectRatio,c>h.minWidth&&(h.minWidth=c),f>h.minHeight&&(h.minHeight=f),e<h.maxWidth&&(h.maxWidth=e),g<h.maxHeight&&(h.maxHeight=g);this._vBoundaries=h},_updateCache:function(a){var b=this.options;this.offset=this.helper.offset(),d(a.left)&&(this.position.left=a.left),d(a.top)&&(this.position.top=a.top),d(a.height)&&(this.size.height=a.height),d(a.width)&&(this.size.width=a.width)},_updateRatio:function(a,b){var c=this.options,e=this.position,f=this.size,g=this.axis;d(a.height)?a.width=a.height*this.aspectRatio:d(a.width)&&(a.height=a.width/this.aspectRatio),g=="sw"&&(a.left=e.left+(f.width-a.width),a.top=null),g=="nw"&&(a.top=e.top+(f.height-a.height),a.left=e.left+(f.width-a.width));return a},_respectSize:function(a,b){var c=this.helper,e=this._vBoundaries,f=this._aspectRatio||b.shiftKey,g=this.axis,h=d(a.width)&&e.maxWidth&&e.maxWidth<a.width,i=d(a.height)&&e.maxHeight&&e.maxHeight<a.height,j=d(a.width)&&e.minWidth&&e.minWidth>a.width,k=d(a.height)&&e.minHeight&&e.minHeight>a.height;j&&(a.width=e.minWidth),k&&(a.height=e.minHeight),h&&(a.width=e.maxWidth),i&&(a.height=e.maxHeight);var l=this.originalPosition.left+this.originalSize.width,m=this.position.top+this.size.height,n=/sw|nw|w/.test(g),o=/nw|ne|n/.test(g);j&&n&&(a.left=l-e.minWidth),h&&n&&(a.left=l-e.maxWidth),k&&o&&(a.top=m-e.minHeight),i&&o&&(a.top=m-e.maxHeight);var p=!a.width&&!a.height;p&&!a.left&&a.top?a.top=null:p&&!a.top&&a.left&&(a.left=null);return a},_proportionallyResize:function(){var b=this.options;if(!!this._proportionallyResizeElements.length){var c=this.helper||this.element;for(var d=0;d<this._proportionallyResizeElements.length;d++){var e=this._proportionallyResizeElements[d];if(!this.borderDif){var f=[e.css("borderTopWidth"),e.css("borderRightWidth"),e.css("borderBottomWidth"),e.css("borderLeftWidth")],g=[e.css("paddingTop"),e.css("paddingRight"),e.css("paddingBottom"),e.css("paddingLeft")];this.borderDif=a.map(f,function(a,b){var c=parseInt(a,10)||0,d=parseInt(g[b],10)||0;return c+d})}if(a.browser.msie&&(!!a(c).is(":hidden")||!!a(c).parents(":hidden").length))continue;e.css({height:c.height()-this.borderDif[0]-this.borderDif[2]||0,width:c.width()-this.borderDif[1]-this.borderDif[3]||0})}}},_renderProxy:function(){var b=this.element,c=this.options;this.elementOffset=b.offset();if(this._helper){this.helper=this.helper||a('<div style="overflow:hidden;"></div>');var d=a.browser.msie&&a.browser.version<7,e=d?1:0,f=d?2:-1;this.helper.addClass(this._helper).css({width:this.element.outerWidth()+f,height:this.element.outerHeight()+f,position:"absolute",left:this.elementOffset.left-e+"px",top:this.elementOffset.top-e+"px",zIndex:++c.zIndex}),this.helper.appendTo("body").disableSelection()}else this.helper=this.element},_change:{e:function(a,b,c){return{width:this.originalSize.width+b}},w:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{left:f.left+b,width:e.width-b}},n:function(a,b,c){var d=this.options,e=this.originalSize,f=this.originalPosition;return{top:f.top+c,height:e.height-c}},s:function(a,b,c){return{height:this.originalSize.height+c}},se:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},sw:function(b,c,d){return a.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[b,c,d]))},ne:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[b,c,d]))},nw:function(b,c,d){return a.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[b,c,d]))}},_propagate:function(b,c){a.ui.plugin.call(this,b,[c,this.ui()]),b!="resize"&&this._trigger(b,c,this.ui())},plugins:{},ui:function(){return{originalElement:this.originalElement,element:this.element,helper:this.helper,position:this.position,size:this.size,originalSize:this.originalSize,originalPosition:this.originalPosition}}}),a.extend(a.ui.resizable,{version:"1.8.18"}),a.ui.plugin.add("resizable","alsoResize",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=function(b){a(b).each(function(){var b=a(this);b.data("resizable-alsoresize",{width:parseInt(b.width(),10),height:parseInt(b.height(),10),left:parseInt(b.css("left"),10),top:parseInt(b.css("top"),10)})})};typeof e.alsoResize=="object"&&!e.alsoResize.parentNode?e.alsoResize.length?(e.alsoResize=e.alsoResize[0],f(e.alsoResize)):a.each(e.alsoResize,function(a){f(a)}):f(e.alsoResize)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.originalSize,g=d.originalPosition,h={height:d.size.height-f.height||0,width:d.size.width-f.width||0,top:d.position.top-g.top||0,left:d.position.left-g.left||0},i=function(b,d){a(b).each(function(){var b=a(this),e=a(this).data("resizable-alsoresize"),f={},g=d&&d.length?d:b.parents(c.originalElement[0]).length?["width","height"]:["width","height","top","left"];a.each(g,function(a,b){var c=(e[b]||0)+(h[b]||0);c&&c>=0&&(f[b]=c||null)}),b.css(f)})};typeof e.alsoResize=="object"&&!e.alsoResize.nodeType?a.each(e.alsoResize,function(a,b){i(a,b)}):i(e.alsoResize)},stop:function(b,c){a(this).removeData("resizable-alsoresize")}}),a.ui.plugin.add("resizable","animate",{stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d._proportionallyResizeElements,g=f.length&&/textarea/i.test(f[0].nodeName),h=g&&a.ui.hasScroll(f[0],"left")?0:d.sizeDiff.height,i=g?0:d.sizeDiff.width,j={width:d.size.width-i,height:d.size.height-h},k=parseInt(d.element.css("left"),10)+(d.position.left-d.originalPosition.left)||null,l=parseInt(d.element.css("top"),10)+(d.position.top-d.originalPosition.top)||null;d.element.animate(a.extend(j,l&&k?{top:l,left:k}:{}),{duration:e.animateDuration,easing:e.animateEasing,step:function(){var c={width:parseInt(d.element.css("width"),10),height:parseInt(d.element.css("height"),10),top:parseInt(d.element.css("top"),10),left:parseInt(d.element.css("left"),10)};f&&f.length&&a(f[0]).css({width:c.width,height:c.height}),d._updateCache(c),d._propagate("resize",b)}})}}),a.ui.plugin.add("resizable","containment",{start:function(b,d){var e=a(this).data("resizable"),f=e.options,g=e.element,h=f.containment,i=h instanceof a?h.get(0):/parent/.test(h)?g.parent().get(0):h;if(!!i){e.containerElement=a(i);if(/document/.test(h)||h==document)e.containerOffset={left:0,top:0},e.containerPosition={left:0,top:0},e.parentData={element:a(document),left:0,top:0,width:a(document).width(),height:a(document).height()||document.body.parentNode.scrollHeight};else{var j=a(i),k=[];a(["Top","Right","Left","Bottom"]).each(function(a,b){k[a]=c(j.css("padding"+b))}),e.containerOffset=j.offset(),e.containerPosition=j.position(),e.containerSize={height:j.innerHeight()-k[3],width:j.innerWidth()-k[1]};var l=e.containerOffset,m=e.containerSize.height,n=e.containerSize.width,o=a.ui.hasScroll(i,"left")?i.scrollWidth:n,p=a.ui.hasScroll(i)?i.scrollHeight:m;e.parentData={element:i,left:l.left,top:l.top,width:o,height:p}}}},resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.containerSize,g=d.containerOffset,h=d.size,i=d.position,j=d._aspectRatio||b.shiftKey,k={top:0,left:0},l=d.containerElement;l[0]!=document&&/static/.test(l.css("position"))&&(k=g),i.left<(d._helper?g.left:0)&&(d.size.width=d.size.width+(d._helper?d.position.left-g.left:d.position.left-k.left),j&&(d.size.height=d.size.width/e.aspectRatio),d.position.left=e.helper?g.left:0),i.top<(d._helper?g.top:0)&&(d.size.height=d.size.height+(d._helper?d.position.top-g.top:d.position.top),j&&(d.size.width=d.size.height*e.aspectRatio),d.position.top=d._helper?g.top:0),d.offset.left=d.parentData.left+d.position.left,d.offset.top=d.parentData.top+d.position.top;var m=Math.abs((d._helper?d.offset.left-k.left:d.offset.left-k.left)+d.sizeDiff.width),n=Math.abs((d._helper?d.offset.top-k.top:d.offset.top-g.top)+d.sizeDiff.height),o=d.containerElement.get(0)==d.element.parent().get(0),p=/relative|absolute/.test(d.containerElement.css("position"));o&&p +&&(m-=d.parentData.left),m+d.size.width>=d.parentData.width&&(d.size.width=d.parentData.width-m,j&&(d.size.height=d.size.width/d.aspectRatio)),n+d.size.height>=d.parentData.height&&(d.size.height=d.parentData.height-n,j&&(d.size.width=d.size.height*d.aspectRatio))},stop:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.position,g=d.containerOffset,h=d.containerPosition,i=d.containerElement,j=a(d.helper),k=j.offset(),l=j.outerWidth()-d.sizeDiff.width,m=j.outerHeight()-d.sizeDiff.height;d._helper&&!e.animate&&/relative/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m}),d._helper&&!e.animate&&/static/.test(i.css("position"))&&a(this).css({left:k.left-h.left-g.left,width:l,height:m})}}),a.ui.plugin.add("resizable","ghost",{start:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size;d.ghost=d.originalElement.clone(),d.ghost.css({opacity:.25,display:"block",position:"relative",height:f.height,width:f.width,margin:0,left:0,top:0}).addClass("ui-resizable-ghost").addClass(typeof e.ghost=="string"?e.ghost:""),d.ghost.appendTo(d.helper)},resize:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.ghost.css({position:"relative",height:d.size.height,width:d.size.width})},stop:function(b,c){var d=a(this).data("resizable"),e=d.options;d.ghost&&d.helper&&d.helper.get(0).removeChild(d.ghost.get(0))}}),a.ui.plugin.add("resizable","grid",{resize:function(b,c){var d=a(this).data("resizable"),e=d.options,f=d.size,g=d.originalSize,h=d.originalPosition,i=d.axis,j=e._aspectRatio||b.shiftKey;e.grid=typeof e.grid=="number"?[e.grid,e.grid]:e.grid;var k=Math.round((f.width-g.width)/(e.grid[0]||1))*(e.grid[0]||1),l=Math.round((f.height-g.height)/(e.grid[1]||1))*(e.grid[1]||1);/^(se|s|e)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l):/^(ne)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l):/^(sw)$/.test(i)?(d.size.width=g.width+k,d.size.height=g.height+l,d.position.left=h.left-k):(d.size.width=g.width+k,d.size.height=g.height+l,d.position.top=h.top-l,d.position.left=h.left-k)}});var c=function(a){return parseInt(a,10)||0},d=function(a){return!isNaN(parseInt(a,10))}})(jQuery); +/* + * jQuery hashchange event - v1.3 - 7/21/2010 + * http://benalman.com/projects/jquery-hashchange-plugin/ + * + * Copyright (c) 2010 "Cowboy" Ben Alman + * Dual licensed under the MIT and GPL licenses. + * http://benalman.com/about/license/ + */ +(function($,e,b){var c="hashchange",h=document,f,g=$.event.special,i=h.documentMode,d="on"+c in e&&(i===b||i>7);function a(j){j=j||location.href;return"#"+j.replace(/^[^#]*#?(.*)$/,"$1")}$.fn[c]=function(j){return j?this.bind(c,j):this.trigger(c)};$.fn[c].delay=50;g[c]=$.extend(g[c],{setup:function(){if(d){return false}$(f.start)},teardown:function(){if(d){return false}$(f.stop)}});f=(function(){var j={},p,m=a(),k=function(q){return q},l=k,o=k;j.start=function(){p||n()};j.stop=function(){p&&clearTimeout(p);p=b};function n(){var r=a(),q=o(m);if(r!==m){l(m=r,q);$(e).trigger(c)}else{if(q!==m){location.href=location.href.replace(/#.*/,"")+q}}p=setTimeout(n,$.fn[c].delay)}$.browser.msie&&!d&&(function(){var q,r;j.start=function(){if(!q){r=$.fn[c].src;r=r&&r+a();q=$('<iframe tabindex="-1" title="empty"/>').hide().one("load",function(){r||l(a());n()}).attr("src",r||"javascript:0").insertAfter("body")[0].contentWindow;h.onpropertychange=function(){try{if(event.propertyName==="title"){q.document.title=h.title}}catch(s){}}}};j.stop=k;o=function(){return a(q.location.href)};l=function(v,s){var u=q.document,t=$.fn[c].domain;if(v!==s){u.title=h.title;u.open();t&&u.write('<script>document.domain="'+t+'"<\/script>');u.close();q.location.hash=v}}})();return j})()})(jQuery,this); +/** + * jQuery.ScrollTo - Easy element scrolling using jQuery. + * Copyright (c) 2007-2009 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com + * Dual licensed under MIT and GPL. + * Date: 5/25/2009 + * @author Ariel Flesler + * @version 1.4.2 + * + * http://flesler.blogspot.com/2007/10/jqueryscrollto.html + */ +;(function(d){var k=d.scrollTo=function(a,i,e){d(window).scrollTo(a,i,e)};k.defaults={axis:'xy',duration:parseFloat(d.fn.jquery)>=1.3?0:1};k.window=function(a){return d(window)._scrollable()};d.fn._scrollable=function(){return this.map(function(){var a=this,i=!a.nodeName||d.inArray(a.nodeName.toLowerCase(),['iframe','#document','html','body'])!=-1;if(!i)return a;var e=(a.contentWindow||a).document||a.ownerDocument||a;return d.browser.safari||e.compatMode=='BackCompat'?e.body:e.documentElement})};d.fn.scrollTo=function(n,j,b){if(typeof j=='object'){b=j;j=0}if(typeof b=='function')b={onAfter:b};if(n=='max')n=9e9;b=d.extend({},k.defaults,b);j=j||b.speed||b.duration;b.queue=b.queue&&b.axis.length>1;if(b.queue)j/=2;b.offset=p(b.offset);b.over=p(b.over);return this._scrollable().each(function(){var q=this,r=d(q),f=n,s,g={},u=r.is('html,body');switch(typeof f){case'number':case'string':if(/^([+-]=)?\d+(\.\d+)?(px|%)?$/.test(f)){f=p(f);break}f=d(f,this);case'object':if(f.is||f.style)s=(f=d(f)).offset()}d.each(b.axis.split(''),function(a,i){var e=i=='x'?'Left':'Top',h=e.toLowerCase(),c='scroll'+e,l=q[c],m=k.max(q,i);if(s){g[c]=s[h]+(u?0:l-r.offset()[h]);if(b.margin){g[c]-=parseInt(f.css('margin'+e))||0;g[c]-=parseInt(f.css('border'+e+'Width'))||0}g[c]+=b.offset[h]||0;if(b.over[h])g[c]+=f[i=='x'?'width':'height']()*b.over[h]}else{var o=f[h];g[c]=o.slice&&o.slice(-1)=='%'?parseFloat(o)/100*m:o}if(/^\d+$/.test(g[c]))g[c]=g[c]<=0?0:Math.min(g[c],m);if(!a&&b.queue){if(l!=g[c])t(b.onAfterFirst);delete g[c]}});t(b.onAfter);function t(a){r.animate(g,j,b.easing,a&&function(){a.call(this,n,b)})}}).end()};k.max=function(a,i){var e=i=='x'?'Width':'Height',h='scroll'+e;if(!d(a).is('html,body'))return a[h]-d(a)[e.toLowerCase()]();var c='client'+e,l=a.ownerDocument.documentElement,m=a.ownerDocument.body;return Math.max(l[h],m[h])-Math.min(l[c],m[c])};function p(a){return typeof a=='object'?a:{top:a,left:a}}})(jQuery); diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html new file mode 100644 index 000000000..827500579 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.html @@ -0,0 +1,339 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/main.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('main_8cpp.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> | +<a href="#var-members">Variables</a> </div> + <div class="headertitle"> +<div class="title">main.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "mbed.h"</code><br/> +<code>#include "<a class="el" href="algorithm_8h_source.html">algorithm.h</a>"</code><br/> +<code>#include "<a class="el" href="_m_a_x30102_8h_source.html">MAX30102.h</a>"</code><br/> +</div> +<p><a href="main_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:a2134a5a06f0865c945543a1f07eba387"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>   255</td></tr> +<tr class="separator:a2134a5a06f0865c945543a1f07eba387"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a81e0624d7e9f10f8f7e52a569ba24753"><td class="memItemLeft" align="right" valign="top">Serial </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a> (USBTX, USBRX)</td></tr> +<tr class="separator:a81e0624d7e9f10f8f7e52a569ba24753"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memItemLeft" align="right" valign="top">int </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a> ()</td></tr> +<tr class="separator:ae66f6b31b5ad750f1fe042a706a4e3d4"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="var-members"></a> +Variables</h2></td></tr> +<tr class="memitem:a07a24850120a56110cc2838d0afcafcf"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a> [500]</td></tr> +<tr class="separator:a07a24850120a56110cc2838d0afcafcf"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a></td></tr> +<tr class="separator:ac16b6dd0e762f0ccc30e7102f97260d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a85d1012c3814f9e393e6ff8d84e56723"><td class="memItemLeft" align="right" valign="top">uint32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a> [500]</td></tr> +<tr class="separator:a85d1012c3814f9e393e6ff8d84e56723"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a786e6c57c793d9af51360154ef90eb93"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a></td></tr> +<tr class="separator:a786e6c57c793d9af51360154ef90eb93"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a2518324dce002f592cf6d7f0b1ad9024"><td class="memItemLeft" align="right" valign="top">int8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a></td></tr> +<tr class="separator:a2518324dce002f592cf6d7f0b1ad9024"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memItemLeft" align="right" valign="top">int32_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a></td></tr> +<tr class="separator:a3171c70bfa71c3a4f960bf3e8203d13f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a43fb8ea97a26647405ca359095323280"><td class="memItemLeft" align="right" valign="top">int8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a></td></tr> +<tr class="separator:a43fb8ea97a26647405ca359095323280"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memItemLeft" align="right" valign="top">uint8_t </td><td class="memItemRight" valign="bottom"><a class="el" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a></td></tr> +<tr class="separator:ac5e493da8cbdd1414d56e8f08282fcc2"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><hr/> +<p>Project: MAXREFDES117# Filename: <a class="el" href="main_8cpp.html">main.cpp</a> Description: This module contains the Main application for the MAXREFDES117 example program. <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> +</div><h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a2134a5a06f0865c945543a1f07eba387"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define MAX_BRIGHTNESS   255</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00078">78</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="ae66f6b31b5ad750f1fe042a706a4e3d4"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int main </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00103">103</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a81e0624d7e9f10f8f7e52a569ba24753"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">Serial pc </td> + <td>(</td> + <td class="paramtype">USBTX </td> + <td class="paramname">, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">USBRX </td> + <td class="paramname"> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +</div> +</div> +<h2 class="groupheader">Variable Documentation</h2> +<a class="anchor" id="a07a24850120a56110cc2838d0afcafcf"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t aun_ir_buffer[500]</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00080">80</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a85d1012c3814f9e393e6ff8d84e56723"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint32_t aun_red_buffer[500]</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00082">82</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a43fb8ea97a26647405ca359095323280"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int8_t ch_hr_valid</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00086">86</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a2518324dce002f592cf6d7f0b1ad9024"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int8_t ch_spo2_valid</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00084">84</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a3171c70bfa71c3a4f960bf3e8203d13f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_heart_rate</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00085">85</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ac16b6dd0e762f0ccc30e7102f97260d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_ir_buffer_length</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00081">81</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a786e6c57c793d9af51360154ef90eb93"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">int32_t n_sp02</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00083">83</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="ac5e493da8cbdd1414d56e8f08282fcc2"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">uint8_t uch_dummy</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="main_8cpp_source.html#l00087">87</a> of file <a class="el" href="main_8cpp_source.html">main.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js new file mode 100644 index 000000000..103f1ed8d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp.js @@ -0,0 +1,14 @@ +var main_8cpp = +[ + [ "MAX_BRIGHTNESS", "main_8cpp.html#a2134a5a06f0865c945543a1f07eba387", null ], + [ "main", "main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4", null ], + [ "pc", "main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753", null ], + [ "aun_ir_buffer", "main_8cpp.html#a07a24850120a56110cc2838d0afcafcf", null ], + [ "aun_red_buffer", "main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723", null ], + [ "ch_hr_valid", "main_8cpp.html#a43fb8ea97a26647405ca359095323280", null ], + [ "ch_spo2_valid", "main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024", null ], + [ "n_heart_rate", "main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f", null ], + [ "n_ir_buffer_length", "main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6", null ], + [ "n_sp02", "main_8cpp.html#a786e6c57c793d9af51360154ef90eb93", null ], + [ "uch_dummy", "main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html new file mode 100644 index 000000000..677f249c7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/main_8cpp_source.html @@ -0,0 +1,298 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_MBED/main.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('main_8cpp_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">main.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="main_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00027"></a><span class="lineno"> 27</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00028"></a><span class="lineno"> 28</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00029"></a><span class="lineno"> 29</span> <span class="comment">*</span></div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">*</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">*</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">*</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"> 74</span> <span class="preprocessor">#include "mbed.h"</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"> 75</span> <span class="preprocessor">#include "<a class="code" href="algorithm_8h.html">algorithm.h</a>"</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"> 76</span> <span class="preprocessor">#include "<a class="code" href="_m_a_x30102_8h.html">MAX30102.h</a>"</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> </div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387"> 78</a></span> <span class="preprocessor">#define MAX_BRIGHTNESS 255</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf"> 80</a></span> uint32_t <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[500]; <span class="comment">//IR LED sensor data</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6"> 81</a></span> int32_t <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>; <span class="comment">//data length</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723"> 82</a></span> uint32_t <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[500]; <span class="comment">//Red LED sensor data</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93"> 83</a></span> int32_t <a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>; <span class="comment">//SPO2 value</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024"> 84</a></span> int8_t <a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>; <span class="comment">//indicator to show if the SP02 calculation is valid</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f"> 85</a></span> int32_t <a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>; <span class="comment">//heart rate value</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280"> 86</a></span> int8_t <a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>; <span class="comment">//indicator to show if the heart rate calculation is valid</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2"> 87</a></span> uint8_t <a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>;</div> +<div class="line"><a name="l00088"></a><span class="lineno"> 88</span> </div> +<div class="line"><a name="l00089"></a><span class="lineno"> 89</span> Serial <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>(USBTX, USBRX); <span class="comment">//initializes the serial port</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"> 90</span> <span class="preprocessor">#ifdef TARGET_KL25Z </span></div> +<div class="line"><a name="l00091"></a><span class="lineno"> 91</span> <span class="preprocessor"></span>PwmOut led(PTB18); <span class="comment">//initializes the pwm output that connects to the on board LED</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> DigitalIn INT(PTD1); <span class="comment">//pin PTD1 connects to the interrupt output pin of the MAX30102</span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor"></span><span class="preprocessor">#ifdef TARGET_K64F</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"></span>DigitalIn INT(PTD1); <span class="comment">//pin PTD1 connects to the interrupt output pin of the MAX30102</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="preprocessor"></span><span class="preprocessor">#ifdef TARGET_MAX32600MBED</span></div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor"></span>PwmOut led(LED_RED); <span class="comment">//initializes the pwm output that connects to the on board LED</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> DigitalIn INT(P2_0); <span class="comment">//pin P20 connects to the interrupt output pin of the MAX30102</span></div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="comment">// the setup routine runs once when you press reset:</span></div> +<div class="line"><a name="l00103"></a><span class="lineno"><a class="code" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4"> 103</a></span> <span class="keywordtype">int</span> <a class="code" href="main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4">main</a>() { </div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  uint32_t un_min, un_max, un_prev_data; <span class="comment">//variables to calculate the on-board LED brightness that reflects the heartbeats</span></div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordtype">int</span> i;</div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  int32_t n_brightness;</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <span class="keywordtype">float</span> f_temp;</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  </div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span>  <a class="code" href="_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(); <span class="comment">//resets the MAX30102</span></div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span>  <span class="comment">// initialize serial communication at 115200 bits per second:</span></div> +<div class="line"><a name="l00111"></a><span class="lineno"> 111</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.baud(115200);</div> +<div class="line"><a name="l00112"></a><span class="lineno"> 112</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.format(8,SerialBase::None,1);</div> +<div class="line"><a name="l00113"></a><span class="lineno"> 113</span>  wait(1);</div> +<div class="line"><a name="l00114"></a><span class="lineno"> 114</span>  </div> +<div class="line"><a name="l00115"></a><span class="lineno"> 115</span>  <span class="comment">//read and clear status register</span></div> +<div class="line"><a name="l00116"></a><span class="lineno"> 116</span>  <a class="code" href="_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(0,&<a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>);</div> +<div class="line"><a name="l00117"></a><span class="lineno"> 117</span>  </div> +<div class="line"><a name="l00118"></a><span class="lineno"> 118</span>  <span class="comment">//wait until the user presses a key</span></div> +<div class="line"><a name="l00119"></a><span class="lineno"> 119</span>  <span class="keywordflow">while</span>(<a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.readable()==0)</div> +<div class="line"><a name="l00120"></a><span class="lineno"> 120</span>  {</div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"\x1B[2J"</span>); <span class="comment">//clear terminal program screen</span></div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"Press any key to start conversion\n\r"</span>);</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  wait(1);</div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  }</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <a class="code" href="main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2">uch_dummy</a>=getchar();</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  </div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <a class="code" href="_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>(); <span class="comment">//initializes the MAX30102</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  </div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  </div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  n_brightness=0;</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  un_min=0x3FFFF;</div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  un_max=0;</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  </div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>=500; <span class="comment">//buffer length of 100 stores 5 seconds of samples running at 100sps</span></div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  </div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="comment">//read the first 500 samples, and determine the signal range</span></div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">for</span>(i=0;i<<a class="code" href="main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6">n_ir_buffer_length</a>;i++)</div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  {</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  <span class="keywordflow">while</span>(INT.read()==1); <span class="comment">//wait until the interrupt pin asserts</span></div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  </div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>+i), (<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>+i)); <span class="comment">//read from MAX30102 FIFO</span></div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  </div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">if</span>(un_min><a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  un_min=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]; <span class="comment">//update signal min</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">if</span>(un_max<<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  un_max=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]; <span class="comment">//update signal max</span></div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"red="</span>);</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"%i"</span>, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]);</div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">", ir="</span>);</div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"%i\n\r"</span>, <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i]);</div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span>  }</div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span>  un_prev_data=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span>  </div> +<div class="line"><a name="l00154"></a><span class="lineno"> 154</span>  </div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span>  <span class="comment">//calculate heart rate and SpO2 after first 500 samples (first 5 seconds of samples)</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span>  <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>, &<a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>, &<a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &<a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &<a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div> +<div class="line"><a name="l00157"></a><span class="lineno"> 157</span>  </div> +<div class="line"><a name="l00158"></a><span class="lineno"> 158</span>  <span class="comment">//Continuously taking samples from MAX30102. Heart rate and SpO2 are calculated every 1 second</span></div> +<div class="line"><a name="l00159"></a><span class="lineno"> 159</span>  <span class="keywordflow">while</span>(1)</div> +<div class="line"><a name="l00160"></a><span class="lineno"> 160</span>  {</div> +<div class="line"><a name="l00161"></a><span class="lineno"> 161</span>  i=0;</div> +<div class="line"><a name="l00162"></a><span class="lineno"> 162</span>  un_min=0x3FFFF;</div> +<div class="line"><a name="l00163"></a><span class="lineno"> 163</span>  un_max=0;</div> +<div class="line"><a name="l00164"></a><span class="lineno"> 164</span>  </div> +<div class="line"><a name="l00165"></a><span class="lineno"> 165</span>  <span class="comment">//dumping the first 100 sets of samples in the memory and shift the last 400 sets of samples to the top</span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span>  <span class="keywordflow">for</span>(i=100;i<500;i++)</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  {</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i-100]=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i-100]=<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i];</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  </div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <span class="comment">//update the signal min and max</span></div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <span class="keywordflow">if</span>(un_min><a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  un_min=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">if</span>(un_max<<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i])</div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  un_max=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  }</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  </div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="comment">//take 100 sets of samples before calculating the heart rate.</span></div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  <span class="keywordflow">for</span>(i=400;i<500;i++)</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  {</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  un_prev_data=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i-1];</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  <span class="keywordflow">while</span>(INT.read()==1);</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  <a class="code" href="_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>((<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>+i), (<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>+i));</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  </div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  <span class="keywordflow">if</span>(<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]>un_prev_data)</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  {</div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  f_temp=<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]-un_prev_data;</div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  f_temp/=(un_max-un_min);</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  f_temp*=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  n_brightness-=(int)f_temp;</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  <span class="keywordflow">if</span>(n_brightness<0)</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  n_brightness=0;</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  }</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  {</div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  f_temp=un_prev_data-<a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i];</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  f_temp/=(un_max-un_min);</div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  f_temp*=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  n_brightness+=(int)f_temp;</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span>  <span class="keywordflow">if</span>(n_brightness><a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>)</div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span>  n_brightness=<a class="code" href="main_8cpp.html#a2134a5a06f0865c945543a1f07eba387">MAX_BRIGHTNESS</a>;</div> +<div class="line"><a name="l00202"></a><span class="lineno"> 202</span>  }</div> +<div class="line"><a name="l00203"></a><span class="lineno"> 203</span> <span class="preprocessor">#if defined(TARGET_KL25Z) || defined(TARGET_MAX32600MBED)</span></div> +<div class="line"><a name="l00204"></a><span class="lineno"> 204</span> <span class="preprocessor"></span> led.write(1-(<span class="keywordtype">float</span>)n_brightness/256);</div> +<div class="line"><a name="l00205"></a><span class="lineno"> 205</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00206"></a><span class="lineno"> 206</span> <span class="preprocessor"></span> <span class="comment">//send samples and calculation result to terminal program through UART</span></div> +<div class="line"><a name="l00207"></a><span class="lineno"> 207</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"red="</span>);</div> +<div class="line"><a name="l00208"></a><span class="lineno"> 208</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"%i"</span>, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>[i]);</div> +<div class="line"><a name="l00209"></a><span class="lineno"> 209</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">", ir="</span>);</div> +<div class="line"><a name="l00210"></a><span class="lineno"> 210</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"%i"</span>, <a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>[i]);</div> +<div class="line"><a name="l00211"></a><span class="lineno"> 211</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">", HR=%i, "</span>, <a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>); </div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"HRvalid=%i, "</span>, <a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>);</div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"SpO2=%i, "</span>, <a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>);</div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <a class="code" href="main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753">pc</a>.printf(<span class="stringliteral">"SPO2Valid=%i\n\r"</span>, <a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>);</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  }</div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <a class="code" href="algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6" title="Calculate the heart rate and SpO2 level.">maxim_heart_rate_and_oxygen_saturation</a>(<a class="code" href="main_8cpp.html#a07a24850120a56110cc2838d0afcafcf">aun_ir_buffer</a>, n_ir_buffer_length, <a class="code" href="main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723">aun_red_buffer</a>, &<a class="code" href="main_8cpp.html#a786e6c57c793d9af51360154ef90eb93">n_sp02</a>, &<a class="code" href="main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024">ch_spo2_valid</a>, &<a class="code" href="main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f">n_heart_rate</a>, &<a class="code" href="main_8cpp.html#a43fb8ea97a26647405ca359095323280">ch_hr_valid</a>); </div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span>  }</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> }</div> +<div class="line"><a name="l00219"></a><span class="lineno"> 219</span>  </div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_70c5cd4c8bba287fe799894cc0903ca4.html">RD117_MBED</a></li><li class="navelem"><a class="el" href="main_8cpp.html">main.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 15:24:07 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html new file mode 100644 index 000000000..8f38ddc93 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.html @@ -0,0 +1,354 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.cpp File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('max30102_8cpp.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">max30102.cpp File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include "<a class="el" href="max30102_8h_source.html">max30102.h</a>"</code><br/> +<code>#include "<a class="el" href="_soft_i2_c_master_8h_source.html">SoftI2CMaster.h</a>"</code><br/> +<code>#include "<a class="el" href="algorithm_8h_source.html">algorithm.h</a>"</code><br/> +</div> +<p><a href="max30102_8cpp_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr> +<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft"> </td><td class="mdescRight">Write a value to a MAX30102 register. <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr> +<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr> +<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft"> </td><td class="mdescRight">Read a MAX30102 register. <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr> +<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr> +<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the MAX30102. <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr> +<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr> +<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft"> </td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register. <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr> +<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a1df3bb178b66379a2975c56395c47d9b"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b">maxim_max30102_reset</a> ()</td></tr> +<tr class="memdesc:a1df3bb178b66379a2975c56395c47d9b"><td class="mdescLeft"> </td><td class="mdescRight">Reset the MAX30102. <a href="#a1df3bb178b66379a2975c56395c47d9b"></a><br/></td></tr> +<tr class="separator:a1df3bb178b66379a2975c56395c47d9b"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><pre class="fragment">****************************************************** +</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="max30102_8cpp.html">max30102.cpp</a> Description: This module is an embedded controller driver for the MAX30102</p> +<p>Revision History: <br/> + 1-18-2016 Rev 01.00 GL Initial release. <br/> + <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> +</div><h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_init </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Initialize the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00111">111</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_fifo </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_led</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_led</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a set of samples from the MAX30102 FIFO register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00154">154</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t * </td> + <td class="paramname"><em>puch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00088">88</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a1df3bb178b66379a2975c56395c47d9b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_reset </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Reset the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00202">202</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_write_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Write a value to a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00066">66</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8cpp.html">max30102.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js new file mode 100644 index 000000000..1da6ec5f3 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp.js @@ -0,0 +1,8 @@ +var max30102_8cpp = +[ + [ "maxim_max30102_init", "max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df", null ], + [ "maxim_max30102_read_fifo", "max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ], + [ "maxim_max30102_read_reg", "max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f", null ], + [ "maxim_max30102_reset", "max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b", null ], + [ "maxim_max30102_write_reg", "max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html new file mode 100644 index 000000000..632f6602c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8cpp_source.html @@ -0,0 +1,263 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.cpp Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('max30102_8cpp_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">max30102.cpp</div> </div> +</div><!--header--> +<div class="contents"> +<a href="max30102_8cpp.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">*</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">*</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">*</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">*</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#include "<a class="code" href="max30102_8h.html">max30102.h</a>"</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor">#include "<a class="code" href="_soft_i2_c_master_8h.html">SoftI2CMaster.h</a>"</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor">#include "<a class="code" href="algorithm_8h.html">algorithm.h</a>"</span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> </div> +<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6"> 66</a></span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data)</div> +<div class="line"><a name="l00077"></a><span class="lineno"> 77</span> {</div> +<div class="line"><a name="l00078"></a><span class="lineno"> 78</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div> +<div class="line"><a name="l00079"></a><span class="lineno"> 79</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00080"></a><span class="lineno"> 80</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_addr))</div> +<div class="line"><a name="l00081"></a><span class="lineno"> 81</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00082"></a><span class="lineno"> 82</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_data))</div> +<div class="line"><a name="l00083"></a><span class="lineno"> 83</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00084"></a><span class="lineno"> 84</span>  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div> +<div class="line"><a name="l00085"></a><span class="lineno"> 85</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00086"></a><span class="lineno"> 86</span> }</div> +<div class="line"><a name="l00087"></a><span class="lineno"> 87</span> </div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f"> 88</a></span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data)</div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> {</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(uch_addr))</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(<a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>))</div> +<div class="line"><a name="l00105"></a><span class="lineno"> 105</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>; </div> +<div class="line"><a name="l00106"></a><span class="lineno"> 106</span>  *puch_data=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">true</span>);</div> +<div class="line"><a name="l00107"></a><span class="lineno"> 107</span>  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div> +<div class="line"><a name="l00108"></a><span class="lineno"> 108</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00109"></a><span class="lineno"> 109</span> }</div> +<div class="line"><a name="l00110"></a><span class="lineno"> 110</span> </div> +<div class="line"><a name="l00111"></a><span class="lineno"><a class="code" href="max30102_8h.html#a4113aeee76935425d8a557a79a4193df"> 111</a></span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>()</div> +<div class="line"><a name="l00121"></a><span class="lineno"> 121</span> {</div> +<div class="line"><a name="l00122"></a><span class="lineno"> 122</span>  <a class="code" href="_soft_i2_c_master_8h.html#ad5dc48c57198db1ee444a61405d2ea3d">i2c_init</a>();</div> +<div class="line"><a name="l00123"></a><span class="lineno"> 123</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>,0xc0)) <span class="comment">// INTR setting</span></div> +<div class="line"><a name="l00124"></a><span class="lineno"> 124</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00125"></a><span class="lineno"> 125</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>,0x00))</div> +<div class="line"><a name="l00126"></a><span class="lineno"> 126</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00127"></a><span class="lineno"> 127</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>,0x00)) <span class="comment">//FIFO_WR_PTR[4:0]</span></div> +<div class="line"><a name="l00128"></a><span class="lineno"> 128</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00129"></a><span class="lineno"> 129</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>,0x00)) <span class="comment">//OVF_COUNTER[4:0]</span></div> +<div class="line"><a name="l00130"></a><span class="lineno"> 130</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00131"></a><span class="lineno"> 131</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>,0x00)) <span class="comment">//FIFO_RD_PTR[4:0]</span></div> +<div class="line"><a name="l00132"></a><span class="lineno"> 132</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00133"></a><span class="lineno"> 133</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>,0x4f)) <span class="comment">//sample avg = 4, fifo rollover=false, fifo almost full = 17</span></div> +<div class="line"><a name="l00134"></a><span class="lineno"> 134</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00135"></a><span class="lineno"> 135</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x03)) <span class="comment">//0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED</span></div> +<div class="line"><a name="l00136"></a><span class="lineno"> 136</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00137"></a><span class="lineno"> 137</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>,0x27)) <span class="comment">// SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (411uS)</span></div> +<div class="line"><a name="l00138"></a><span class="lineno"> 138</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00139"></a><span class="lineno"> 139</span>  </div> +<div class="line"><a name="l00140"></a><span class="lineno"> 140</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>,0x24)) <span class="comment">//Choose value for ~ 7mA for LED1</span></div> +<div class="line"><a name="l00141"></a><span class="lineno"> 141</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00142"></a><span class="lineno"> 142</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>,0x24)) <span class="comment">// Choose value for ~ 7mA for LED2</span></div> +<div class="line"><a name="l00143"></a><span class="lineno"> 143</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00144"></a><span class="lineno"> 144</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>,0x7f)) <span class="comment">// Choose value for ~ 25mA for Pilot LED</span></div> +<div class="line"><a name="l00145"></a><span class="lineno"> 145</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00146"></a><span class="lineno"> 146</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; </div> +<div class="line"><a name="l00147"></a><span class="lineno"> 147</span> }</div> +<div class="line"><a name="l00148"></a><span class="lineno"> 148</span> </div> +<div class="line"><a name="l00149"></a><span class="lineno"> 149</span> <span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div> +<div class="line"><a name="l00150"></a><span class="lineno"> 150</span> <span class="preprocessor"></span><span class="comment">//Arduino Uno doesn't have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div> +<div class="line"><a name="l00151"></a><span class="lineno"> 151</span> <span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated. Samples become 16-bit data.</span></div> +<div class="line"><a name="l00152"></a><span class="lineno"> 152</span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint16_t *pun_red_led, uint16_t *pun_ir_led)</div> +<div class="line"><a name="l00153"></a><span class="lineno"> 153</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00154"></a><span class="lineno"><a class="code" href="max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968"> 154</a></span> <span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led)</div> +<div class="line"><a name="l00155"></a><span class="lineno"> 155</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00156"></a><span class="lineno"> 156</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00166"></a><span class="lineno"> 166</span> {</div> +<div class="line"><a name="l00167"></a><span class="lineno"> 167</span>  uint32_t un_temp;</div> +<div class="line"><a name="l00168"></a><span class="lineno"> 168</span>  uint8_t uch_temp;</div> +<div class="line"><a name="l00169"></a><span class="lineno"> 169</span>  *pun_ir_led=0;</div> +<div class="line"><a name="l00170"></a><span class="lineno"> 170</span>  *pun_red_led=0;</div> +<div class="line"><a name="l00171"></a><span class="lineno"> 171</span>  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>, &uch_temp);</div> +<div class="line"><a name="l00172"></a><span class="lineno"> 172</span>  <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(<a class="code" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>, &uch_temp);</div> +<div class="line"><a name="l00173"></a><span class="lineno"> 173</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a876a5d83cf8b5fa662b04a81657d8d30">i2c_start</a>(<a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>))</div> +<div class="line"><a name="l00174"></a><span class="lineno"> 174</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00175"></a><span class="lineno"> 175</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a5abe73d680cae254aafa5227e6d87a13">i2c_write</a>(<a class="code" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>))</div> +<div class="line"><a name="l00176"></a><span class="lineno"> 176</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00177"></a><span class="lineno"> 177</span>  <span class="keywordflow">if</span>(!<a class="code" href="_soft_i2_c_master_8h.html#a68105c3bb259544bcc000c21b8e5d355">i2c_rep_start</a>(<a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>))</div> +<div class="line"><a name="l00178"></a><span class="lineno"> 178</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>; </div> +<div class="line"><a name="l00179"></a><span class="lineno"> 179</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00180"></a><span class="lineno"> 180</span>  un_temp<<=16;</div> +<div class="line"><a name="l00181"></a><span class="lineno"> 181</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00182"></a><span class="lineno"> 182</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00183"></a><span class="lineno"> 183</span>  un_temp<<=8;</div> +<div class="line"><a name="l00184"></a><span class="lineno"> 184</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00185"></a><span class="lineno"> 185</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00186"></a><span class="lineno"> 186</span>  *pun_red_led+=un_temp;</div> +<div class="line"><a name="l00187"></a><span class="lineno"> 187</span>  </div> +<div class="line"><a name="l00188"></a><span class="lineno"> 188</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00189"></a><span class="lineno"> 189</span>  un_temp<<=16;</div> +<div class="line"><a name="l00190"></a><span class="lineno"> 190</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00191"></a><span class="lineno"> 191</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">false</span>);</div> +<div class="line"><a name="l00192"></a><span class="lineno"> 192</span>  un_temp<<=8;</div> +<div class="line"><a name="l00193"></a><span class="lineno"> 193</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00194"></a><span class="lineno"> 194</span>  un_temp=<a class="code" href="_soft_i2_c_master_8h.html#a717c8440b070832a7d3375cfd5a526ef">i2c_read</a>(<span class="keyword">true</span>);</div> +<div class="line"><a name="l00195"></a><span class="lineno"> 195</span>  *pun_ir_led+=un_temp;</div> +<div class="line"><a name="l00196"></a><span class="lineno"> 196</span>  <a class="code" href="_soft_i2_c_master_8h.html#ad35d4e4f52ca74b503d5e5e1e0a3f5f3">i2c_stop</a>();</div> +<div class="line"><a name="l00197"></a><span class="lineno"> 197</span>  *pun_red_led&=0x03FFFF; <span class="comment">//Mask MSB [23:18]</span></div> +<div class="line"><a name="l00198"></a><span class="lineno"> 198</span>  *pun_ir_led&=0x03FFFF; <span class="comment">//Mask MSB [23:18]</span></div> +<div class="line"><a name="l00199"></a><span class="lineno"> 199</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>;</div> +<div class="line"><a name="l00200"></a><span class="lineno"> 200</span> }</div> +<div class="line"><a name="l00201"></a><span class="lineno"> 201</span> </div> +<div class="line"><a name="l00202"></a><span class="lineno"><a class="code" href="max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd"> 202</a></span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>()</div> +<div class="line"><a name="l00212"></a><span class="lineno"> 212</span> {</div> +<div class="line"><a name="l00213"></a><span class="lineno"> 213</span>  <span class="keywordflow">if</span>(!<a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(<a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>,0x40))</div> +<div class="line"><a name="l00214"></a><span class="lineno"> 214</span>  <span class="keywordflow">return</span> <span class="keyword">false</span>;</div> +<div class="line"><a name="l00215"></a><span class="lineno"> 215</span>  <span class="keywordflow">else</span></div> +<div class="line"><a name="l00216"></a><span class="lineno"> 216</span>  <span class="keywordflow">return</span> <span class="keyword">true</span>; </div> +<div class="line"><a name="l00217"></a><span class="lineno"> 217</span> }</div> +<div class="line"><a name="l00218"></a><span class="lineno"> 218</span> </div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8cpp.html">max30102.cpp</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html new file mode 100644 index 000000000..3cb457be6 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.html @@ -0,0 +1,741 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.h File Reference</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('max30102_8h.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="summary"> +<a href="#define-members">Macros</a> | +<a href="#func-members">Functions</a> </div> + <div class="headertitle"> +<div class="title">max30102.h File Reference</div> </div> +</div><!--header--> +<div class="contents"> +<div class="textblock"><code>#include <arduino.h></code><br/> +</div> +<p><a href="max30102_8h_source.html">Go to the source code of this file.</a></p> +<table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="define-members"></a> +Macros</h2></td></tr> +<tr class="memitem:a7978167075eb8954c1090fc7ce9647c6"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6">I2C_WRITE_ADDR</a>   0xAE</td></tr> +<tr class="separator:a7978167075eb8954c1090fc7ce9647c6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a11a0148c64950f3315f38d957cd43d37"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37">I2C_READ_ADDR</a>   0xAF</td></tr> +<tr class="separator:a11a0148c64950f3315f38d957cd43d37"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7d161a2394a67a2176d549edb94f4191"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191">REG_INTR_STATUS_1</a>   0x00</td></tr> +<tr class="separator:a7d161a2394a67a2176d549edb94f4191"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a61d809a1e313a2787b23e96de9554c4a"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a">REG_INTR_STATUS_2</a>   0x01</td></tr> +<tr class="separator:a61d809a1e313a2787b23e96de9554c4a"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d">REG_INTR_ENABLE_1</a>   0x02</td></tr> +<tr class="separator:ae07f3c26106a0a37b6eddd8d2653137d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ab8d58d945ad576d492f669c7b9affbf1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1">REG_INTR_ENABLE_2</a>   0x03</td></tr> +<tr class="separator:ab8d58d945ad576d492f669c7b9affbf1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:aba8c69cb46224fb35783f5b60e75b115"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115">REG_FIFO_WR_PTR</a>   0x04</td></tr> +<tr class="separator:aba8c69cb46224fb35783f5b60e75b115"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:af9c8026aa9a22fad4c22ee6b10613707"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707">REG_OVF_COUNTER</a>   0x05</td></tr> +<tr class="separator:af9c8026aa9a22fad4c22ee6b10613707"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f">REG_FIFO_RD_PTR</a>   0x06</td></tr> +<tr class="separator:a3b9d75d4ac3cb579e8b46dea27f4303f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a05bf6ede83fa400eac4dd65788d996fd"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd">REG_FIFO_DATA</a>   0x07</td></tr> +<tr class="separator:a05bf6ede83fa400eac4dd65788d996fd"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca">REG_FIFO_CONFIG</a>   0x08</td></tr> +<tr class="separator:ad1b1bbfe23c9461e0ae75b71b9f805ca"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f">REG_MODE_CONFIG</a>   0x09</td></tr> +<tr class="separator:accdea52b28f1bd3f4cd63d05ab12887f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a38546015e987a72b8c9eb13228237dd0"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0">REG_SPO2_CONFIG</a>   0x0A</td></tr> +<tr class="separator:a38546015e987a72b8c9eb13228237dd0"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5f3a6641b201203d41ed3d23b638a96b"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b">REG_LED1_PA</a>   0x0C</td></tr> +<tr class="separator:a5f3a6641b201203d41ed3d23b638a96b"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21">REG_LED2_PA</a>   0x0D</td></tr> +<tr class="separator:a7df43b0f854c9caf2fe04ccdebb18d21"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a371750304ec49457d3d38f60428f8ff1"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1">REG_PILOT_PA</a>   0x10</td></tr> +<tr class="separator:a371750304ec49457d3d38f60428f8ff1"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c">REG_MULTI_LED_CTRL1</a>   0x11</td></tr> +<tr class="separator:a9d333cff4d002cb1d09a319e6917bc5c"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a05ed274928d49bb6ddd6def6e45fac10"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10">REG_MULTI_LED_CTRL2</a>   0x12</td></tr> +<tr class="separator:a05ed274928d49bb6ddd6def6e45fac10"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a579a9e43d89bdda85d9ccb206339d681"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681">REG_TEMP_INTR</a>   0x1F</td></tr> +<tr class="separator:a579a9e43d89bdda85d9ccb206339d681"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d">REG_TEMP_FRAC</a>   0x20</td></tr> +<tr class="separator:a5321d8a33f1225ab437032e0e8ecbb3d"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:ad16bc92e2f92e516ca396214861a6379"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#ad16bc92e2f92e516ca396214861a6379">REG_TEMP_CONFIG</a>   0x21</td></tr> +<tr class="separator:ad16bc92e2f92e516ca396214861a6379"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab">REG_PROX_INT_THRESH</a>   0x30</td></tr> +<tr class="separator:a3d80b09e301a0155949b7c337ce5f5ab"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23">REG_REV_ID</a>   0xFE</td></tr> +<tr class="separator:a16f4b970762f7e8aa1f5c7a780a48c23"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memItemLeft" align="right" valign="top">#define </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163">REG_PART_ID</a>   0xFF</td></tr> +<tr class="separator:a46083d1b6d3e1d5f89b0f1598dc6d163"><td class="memSeparator" colspan="2"> </td></tr> +</table><table class="memberdecls"> +<tr class="heading"><td colspan="2"><h2 class="groupheader"><a name="func-members"></a> +Functions</h2></td></tr> +<tr class="memitem:a4113aeee76935425d8a557a79a4193df"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a4113aeee76935425d8a557a79a4193df">maxim_max30102_init</a> ()</td></tr> +<tr class="memdesc:a4113aeee76935425d8a557a79a4193df"><td class="mdescLeft"> </td><td class="mdescRight">Initialize the MAX30102. <a href="#a4113aeee76935425d8a557a79a4193df"></a><br/></td></tr> +<tr class="separator:a4113aeee76935425d8a557a79a4193df"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968">maxim_max30102_read_fifo</a> (uint32_t *pun_red_led, uint32_t *pun_ir_led)</td></tr> +<tr class="memdesc:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="mdescLeft"> </td><td class="mdescRight">Read a set of samples from the MAX30102 FIFO register. <a href="#a483073cbc9dbb7a5a2495ce2ae4fb968"></a><br/></td></tr> +<tr class="separator:a483073cbc9dbb7a5a2495ce2ae4fb968"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6">maxim_max30102_write_reg</a> (uint8_t uch_addr, uint8_t uch_data)</td></tr> +<tr class="memdesc:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="mdescLeft"> </td><td class="mdescRight">Write a value to a MAX30102 register. <a href="#a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a><br/></td></tr> +<tr class="separator:a4c2ec1539c1ec8354cdaefe2c3bf48d6"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f">maxim_max30102_read_reg</a> (uint8_t uch_addr, uint8_t *puch_data)</td></tr> +<tr class="memdesc:a0cd2c5a58e57ebbe8c9361384798331f"><td class="mdescLeft"> </td><td class="mdescRight">Read a MAX30102 register. <a href="#a0cd2c5a58e57ebbe8c9361384798331f"></a><br/></td></tr> +<tr class="separator:a0cd2c5a58e57ebbe8c9361384798331f"><td class="memSeparator" colspan="2"> </td></tr> +<tr class="memitem:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memItemLeft" align="right" valign="top">bool </td><td class="memItemRight" valign="bottom"><a class="el" href="max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd">maxim_max30102_reset</a> (void)</td></tr> +<tr class="memdesc:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="mdescLeft"> </td><td class="mdescRight">Reset the MAX30102. <a href="#a94ab5935f6ce28aa5ce31aa842eb83dd"></a><br/></td></tr> +<tr class="separator:a94ab5935f6ce28aa5ce31aa842eb83dd"><td class="memSeparator" colspan="2"> </td></tr> +</table> +<a name="details" id="details"></a><h2 class="groupheader">Detailed Description</h2> +<div class="textblock"><pre class="fragment">****************************************************** +</pre><p>Project: MAXREFDES117# Filename: <a class="el" href="max30102_8h.html">max30102.h</a> Description: This module is an embedded controller driver header file for MAX30102</p> +<p>Revision History: <br/> + 1-18-2016 Rev 01.00 GL Initial release. <br/> + <hr/> +<p>This code follows the following naming conventions:</p> +<p>char ch_pmod_value char (array) s_pmod_s_string[16] float f_pmod_value int32_t n_pmod_value int32_t (array) an_pmod_value[16] int16_t w_pmod_value int16_t (array) aw_pmod_value[16] uint16_t uw_pmod_value uint16_t (array) auw_pmod_value[16] uint8_t uch_pmod_value uint8_t (array) auch_pmod_buffer[16] uint32_t un_pmod_value int32_t * pn_pmod_value <hr/> + +<p>Definition in file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> +</div><h2 class="groupheader">Macro Definition Documentation</h2> +<a class="anchor" id="a11a0148c64950f3315f38d957cd43d37"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_READ_ADDR   0xAF</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00067">67</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7978167075eb8954c1090fc7ce9647c6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define I2C_WRITE_ADDR   0xAE</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00066">66</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad1b1bbfe23c9461e0ae75b71b9f805ca"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_CONFIG   0x08</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00078">78</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a05bf6ede83fa400eac4dd65788d996fd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_DATA   0x07</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00077">77</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3b9d75d4ac3cb579e8b46dea27f4303f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_RD_PTR   0x06</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00076">76</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="aba8c69cb46224fb35783f5b60e75b115"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_FIFO_WR_PTR   0x04</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00074">74</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ae07f3c26106a0a37b6eddd8d2653137d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_ENABLE_1   0x02</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00072">72</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ab8d58d945ad576d492f669c7b9affbf1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_ENABLE_2   0x03</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00073">73</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7d161a2394a67a2176d549edb94f4191"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_STATUS_1   0x00</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00070">70</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a61d809a1e313a2787b23e96de9554c4a"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_INTR_STATUS_2   0x01</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00071">71</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5f3a6641b201203d41ed3d23b638a96b"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_LED1_PA   0x0C</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00081">81</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a7df43b0f854c9caf2fe04ccdebb18d21"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_LED2_PA   0x0D</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00082">82</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="accdea52b28f1bd3f4cd63d05ab12887f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MODE_CONFIG   0x09</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00079">79</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a9d333cff4d002cb1d09a319e6917bc5c"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MULTI_LED_CTRL1   0x11</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00084">84</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a05ed274928d49bb6ddd6def6e45fac10"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_MULTI_LED_CTRL2   0x12</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00085">85</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="af9c8026aa9a22fad4c22ee6b10613707"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_OVF_COUNTER   0x05</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00075">75</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a46083d1b6d3e1d5f89b0f1598dc6d163"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PART_ID   0xFF</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00091">91</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a371750304ec49457d3d38f60428f8ff1"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PILOT_PA   0x10</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00083">83</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a3d80b09e301a0155949b7c337ce5f5ab"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_PROX_INT_THRESH   0x30</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00089">89</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a16f4b970762f7e8aa1f5c7a780a48c23"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_REV_ID   0xFE</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00090">90</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a38546015e987a72b8c9eb13228237dd0"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_SPO2_CONFIG   0x0A</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00080">80</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="ad16bc92e2f92e516ca396214861a6379"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_CONFIG   0x21</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00088">88</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a5321d8a33f1225ab437032e0e8ecbb3d"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_FRAC   0x20</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00087">87</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<a class="anchor" id="a579a9e43d89bdda85d9ccb206339d681"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">#define REG_TEMP_INTR   0x1F</td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Definition at line <a class="el" href="max30102_8h_source.html#l00086">86</a> of file <a class="el" href="max30102_8h_source.html">max30102.h</a>.</p> + +</div> +</div> +<h2 class="groupheader">Function Documentation</h2> +<a class="anchor" id="a4113aeee76935425d8a557a79a4193df"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_init </td> + <td>(</td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Initialize the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function initializes the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00111">111</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a483073cbc9dbb7a5a2495ce2ae4fb968"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_fifo </td> + <td>(</td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_red_led</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint32_t * </td> + <td class="paramname"><em>pun_ir_led</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a set of samples from the MAX30102 FIFO register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a set of samples from the MAX30102 FIFO register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_red_led</td><td>- pointer that stores the red LED reading data </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">*pun_ir_led</td><td>- pointer that stores the IR LED reading data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00154">154</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a0cd2c5a58e57ebbe8c9361384798331f"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_read_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t * </td> + <td class="paramname"><em>puch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Read a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function reads a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[out]</td><td class="paramname">puch_data</td><td>- pointer that stores the register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00088">88</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a94ab5935f6ce28aa5ce31aa842eb83dd"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_reset </td> + <td>(</td> + <td class="paramtype">void </td> + <td class="paramname"></td><td>)</td> + <td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Reset the MAX30102. </p> +<dl class="section user"><dt>Details</dt><dd>This function resets the MAX30102</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramname">None</td><td></td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00202">202</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +<a class="anchor" id="a4c2ec1539c1ec8354cdaefe2c3bf48d6"></a> +<div class="memitem"> +<div class="memproto"> + <table class="memname"> + <tr> + <td class="memname">bool maxim_max30102_write_reg </td> + <td>(</td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_addr</em>, </td> + </tr> + <tr> + <td class="paramkey"></td> + <td></td> + <td class="paramtype">uint8_t </td> + <td class="paramname"><em>uch_data</em> </td> + </tr> + <tr> + <td></td> + <td>)</td> + <td></td><td></td> + </tr> + </table> +</div><div class="memdoc"> + +<p>Write a value to a MAX30102 register. </p> +<dl class="section user"><dt>Details</dt><dd>This function writes a value to a MAX30102 register</dd></dl> +<dl class="params"><dt>Parameters</dt><dd> + <table class="params"> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_addr</td><td>- register address </td></tr> + <tr><td class="paramdir">[in]</td><td class="paramname">uch_data</td><td>- register data</td></tr> + </table> + </dd> +</dl> +<dl class="retval"><dt>Return values</dt><dd> + <table class="retval"> + <tr><td class="paramname">true</td><td>on success </td></tr> + </table> + </dd> +</dl> + +<p>Definition at line <a class="el" href="max30102_8cpp_source.html#l00066">66</a> of file <a class="el" href="max30102_8cpp_source.html">max30102.cpp</a>.</p> + +</div> +</div> +</div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8h.html">max30102.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js new file mode 100644 index 000000000..c11d6e492 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h.js @@ -0,0 +1,32 @@ +var max30102_8h = +[ + [ "I2C_READ_ADDR", "max30102_8h.html#a11a0148c64950f3315f38d957cd43d37", null ], + [ "I2C_WRITE_ADDR", "max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6", null ], + [ "REG_FIFO_CONFIG", "max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca", null ], + [ "REG_FIFO_DATA", "max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd", null ], + [ "REG_FIFO_RD_PTR", "max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f", null ], + [ "REG_FIFO_WR_PTR", "max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115", null ], + [ "REG_INTR_ENABLE_1", "max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d", null ], + [ "REG_INTR_ENABLE_2", "max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1", null ], + [ "REG_INTR_STATUS_1", "max30102_8h.html#a7d161a2394a67a2176d549edb94f4191", null ], + [ "REG_INTR_STATUS_2", "max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a", null ], + [ "REG_LED1_PA", "max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b", null ], + [ "REG_LED2_PA", "max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21", null ], + [ "REG_MODE_CONFIG", "max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f", null ], + [ "REG_MULTI_LED_CTRL1", "max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c", null ], + [ "REG_MULTI_LED_CTRL2", "max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10", null ], + [ "REG_OVF_COUNTER", "max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707", null ], + [ "REG_PART_ID", "max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163", null ], + [ "REG_PILOT_PA", "max30102_8h.html#a371750304ec49457d3d38f60428f8ff1", null ], + [ "REG_PROX_INT_THRESH", "max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab", null ], + [ "REG_REV_ID", "max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23", null ], + [ "REG_SPO2_CONFIG", "max30102_8h.html#a38546015e987a72b8c9eb13228237dd0", null ], + [ "REG_TEMP_CONFIG", "max30102_8h.html#ad16bc92e2f92e516ca396214861a6379", null ], + [ "REG_TEMP_FRAC", "max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d", null ], + [ "REG_TEMP_INTR", "max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681", null ], + [ "maxim_max30102_init", "max30102_8h.html#a4113aeee76935425d8a557a79a4193df", null ], + [ "maxim_max30102_read_fifo", "max30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968", null ], + [ "maxim_max30102_read_reg", "max30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f", null ], + [ "maxim_max30102_reset", "max30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd", null ], + [ "maxim_max30102_write_reg", "max30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6", null ] +]; \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html new file mode 100644 index 000000000..e5e24e9d0 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/max30102_8h_source.html @@ -0,0 +1,196 @@ +<!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"/> +<meta http-equiv="X-UA-Compatible" content="IE=9"/> +<title>MAXREFDES117# Code Documentation: RD117_ARDUINO/max30102.h Source File</title> +<link href="tabs.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="jquery.js"></script> +<script type="text/javascript" src="dynsections.js"></script> +<link href="navtree.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="resize.js"></script> +<script type="text/javascript" src="navtree.js"></script> +<script type="text/javascript"> + $(document).ready(initResizable); +</script> +<link href="search/search.css" rel="stylesheet" type="text/css"/> +<script type="text/javascript" src="search/search.js"></script> +<script type="text/javascript"> + $(document).ready(function() { searchBox.OnSelectItem(0); }); +</script> +<link href="doxygen.css" rel="stylesheet" type="text/css" /> +</head> +<body> +<div id="top"><!-- do not remove this div, it is closed by doxygen! --> +<div id="titlearea"> +<table cellspacing="0" cellpadding="0"> + <tbody> + <tr style="height: 56px;"> + <td id="projectlogo"><img alt="Logo" src="maxim-logo-1.jpg"/></td> + <td style="padding-left: 0.5em;"> + <div id="projectname">MAXREFDES117# Code Documentation +  <span id="projectnumber">V01.00</span> + </div> + <div id="projectbrief">Heart Rate / SpO2 Monitor</div> + </td> + </tr> + </tbody> +</table> +</div> +<!-- end header part --> +<!-- Generated by Doxygen 1.8.2 --> +<script type="text/javascript"> +var searchBox = new SearchBox("searchBox", "search",false,'Search'); +</script> + <div id="navrow1" class="tabs"> + <ul class="tablist"> + <li><a href="index.html"><span>Main Page</span></a></li> + <li><a href="annotated.html"><span>Data Structures</span></a></li> + <li class="current"><a href="files.html"><span>Files</span></a></li> + <li> + <div id="MSearchBox" class="MSearchBoxInactive"> + <span class="left"> + <img id="MSearchSelect" src="search/mag_sel.png" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + alt=""/> + <input type="text" id="MSearchField" value="Search" accesskey="S" + onfocus="searchBox.OnSearchFieldFocus(true)" + onblur="searchBox.OnSearchFieldFocus(false)" + onkeyup="searchBox.OnSearchFieldChange(event)"/> + </span><span class="right"> + <a id="MSearchClose" href="javascript:searchBox.CloseResultsWindow()"><img id="MSearchCloseImg" border="0" src="search/close.png" alt=""/></a> + </span> + </div> + </li> + </ul> + </div> + <div id="navrow2" class="tabs2"> + <ul class="tablist"> + <li><a href="files.html"><span>File List</span></a></li> + <li><a href="globals.html"><span>Globals</span></a></li> + </ul> + </div> +</div><!-- top --> +<div id="side-nav" class="ui-resizable side-nav-resizable"> + <div id="nav-tree"> + <div id="nav-tree-contents"> + <div id="nav-sync" class="sync"></div> + </div> + </div> + <div id="splitbar" style="-moz-user-select:none;" + class="ui-resizable-handle"> + </div> +</div> +<script type="text/javascript"> +$(document).ready(function(){initNavTree('max30102_8h_source.html','');}); +</script> +<div id="doc-content"> +<!-- window showing the filter options --> +<div id="MSearchSelectWindow" + onmouseover="return searchBox.OnSearchSelectShow()" + onmouseout="return searchBox.OnSearchSelectHide()" + onkeydown="return searchBox.OnSearchSelectKey(event)"> +<a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(0)"><span class="SelectionMark"> </span>All</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(1)"><span class="SelectionMark"> </span>Data Structures</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(2)"><span class="SelectionMark"> </span>Files</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(3)"><span class="SelectionMark"> </span>Functions</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(4)"><span class="SelectionMark"> </span>Variables</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(5)"><span class="SelectionMark"> </span>Typedefs</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(6)"><span class="SelectionMark"> </span>Macros</a><a class="SelectItem" href="javascript:void(0)" onclick="searchBox.OnSelectItem(7)"><span class="SelectionMark"> </span>Pages</a></div> + +<!-- iframe showing the search results (closed by default) --> +<div id="MSearchResultsWindow"> +<iframe src="javascript:void(0)" frameborder="0" + name="MSearchResults" id="MSearchResults"> +</iframe> +</div> + +<div class="header"> + <div class="headertitle"> +<div class="title">max30102.h</div> </div> +</div><!--header--> +<div class="contents"> +<a href="max30102_8h.html">Go to the documentation of this file.</a><div class="fragment"><div class="line"><a name="l00001"></a><span class="lineno"> 1</span> </div> +<div class="line"><a name="l00030"></a><span class="lineno"> 30</span> <span class="comment">/*******************************************************************************</span></div> +<div class="line"><a name="l00031"></a><span class="lineno"> 31</span> <span class="comment">* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved.</span></div> +<div class="line"><a name="l00032"></a><span class="lineno"> 32</span> <span class="comment">*</span></div> +<div class="line"><a name="l00033"></a><span class="lineno"> 33</span> <span class="comment">* Permission is hereby granted, free of charge, to any person obtaining a</span></div> +<div class="line"><a name="l00034"></a><span class="lineno"> 34</span> <span class="comment">* copy of this software and associated documentation files (the "Software"),</span></div> +<div class="line"><a name="l00035"></a><span class="lineno"> 35</span> <span class="comment">* to deal in the Software without restriction, including without limitation</span></div> +<div class="line"><a name="l00036"></a><span class="lineno"> 36</span> <span class="comment">* the rights to use, copy, modify, merge, publish, distribute, sublicense,</span></div> +<div class="line"><a name="l00037"></a><span class="lineno"> 37</span> <span class="comment">* and/or sell copies of the Software, and to permit persons to whom the</span></div> +<div class="line"><a name="l00038"></a><span class="lineno"> 38</span> <span class="comment">* Software is furnished to do so, subject to the following conditions:</span></div> +<div class="line"><a name="l00039"></a><span class="lineno"> 39</span> <span class="comment">*</span></div> +<div class="line"><a name="l00040"></a><span class="lineno"> 40</span> <span class="comment">* The above copyright notice and this permission notice shall be included</span></div> +<div class="line"><a name="l00041"></a><span class="lineno"> 41</span> <span class="comment">* in all copies or substantial portions of the Software.</span></div> +<div class="line"><a name="l00042"></a><span class="lineno"> 42</span> <span class="comment">*</span></div> +<div class="line"><a name="l00043"></a><span class="lineno"> 43</span> <span class="comment">* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS</span></div> +<div class="line"><a name="l00044"></a><span class="lineno"> 44</span> <span class="comment">* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF</span></div> +<div class="line"><a name="l00045"></a><span class="lineno"> 45</span> <span class="comment">* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.</span></div> +<div class="line"><a name="l00046"></a><span class="lineno"> 46</span> <span class="comment">* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES</span></div> +<div class="line"><a name="l00047"></a><span class="lineno"> 47</span> <span class="comment">* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,</span></div> +<div class="line"><a name="l00048"></a><span class="lineno"> 48</span> <span class="comment">* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR</span></div> +<div class="line"><a name="l00049"></a><span class="lineno"> 49</span> <span class="comment">* OTHER DEALINGS IN THE SOFTWARE.</span></div> +<div class="line"><a name="l00050"></a><span class="lineno"> 50</span> <span class="comment">*</span></div> +<div class="line"><a name="l00051"></a><span class="lineno"> 51</span> <span class="comment">* Except as contained in this notice, the name of Maxim Integrated</span></div> +<div class="line"><a name="l00052"></a><span class="lineno"> 52</span> <span class="comment">* Products, Inc. shall not be used except as stated in the Maxim Integrated</span></div> +<div class="line"><a name="l00053"></a><span class="lineno"> 53</span> <span class="comment">* Products, Inc. Branding Policy.</span></div> +<div class="line"><a name="l00054"></a><span class="lineno"> 54</span> <span class="comment">*</span></div> +<div class="line"><a name="l00055"></a><span class="lineno"> 55</span> <span class="comment">* The mere transfer of this software does not imply any licenses</span></div> +<div class="line"><a name="l00056"></a><span class="lineno"> 56</span> <span class="comment">* of trade secrets, proprietary technology, copyrights, patents,</span></div> +<div class="line"><a name="l00057"></a><span class="lineno"> 57</span> <span class="comment">* trademarks, maskwork rights, or any other form of intellectual</span></div> +<div class="line"><a name="l00058"></a><span class="lineno"> 58</span> <span class="comment">* property whatsoever. Maxim Integrated Products, Inc. retains all</span></div> +<div class="line"><a name="l00059"></a><span class="lineno"> 59</span> <span class="comment">* ownership rights.</span></div> +<div class="line"><a name="l00060"></a><span class="lineno"> 60</span> <span class="comment">*******************************************************************************</span></div> +<div class="line"><a name="l00061"></a><span class="lineno"> 61</span> <span class="comment">*/</span></div> +<div class="line"><a name="l00062"></a><span class="lineno"> 62</span> <span class="preprocessor">#ifndef MAX30102_H_</span></div> +<div class="line"><a name="l00063"></a><span class="lineno"> 63</span> <span class="preprocessor"></span><span class="preprocessor">#define MAX30102_H_</span></div> +<div class="line"><a name="l00064"></a><span class="lineno"> 64</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00065"></a><span class="lineno"> 65</span> <span class="preprocessor">#include <arduino.h></span></div> +<div class="line"><a name="l00066"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7978167075eb8954c1090fc7ce9647c6"> 66</a></span> <span class="preprocessor">#define I2C_WRITE_ADDR 0xAE</span></div> +<div class="line"><a name="l00067"></a><span class="lineno"><a class="code" href="max30102_8h.html#a11a0148c64950f3315f38d957cd43d37"> 67</a></span> <span class="preprocessor"></span><span class="preprocessor">#define I2C_READ_ADDR 0xAF</span></div> +<div class="line"><a name="l00068"></a><span class="lineno"> 68</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00069"></a><span class="lineno"> 69</span> <span class="comment">//register addresses</span></div> +<div class="line"><a name="l00070"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7d161a2394a67a2176d549edb94f4191"> 70</a></span> <span class="preprocessor">#define REG_INTR_STATUS_1 0x00</span></div> +<div class="line"><a name="l00071"></a><span class="lineno"><a class="code" href="max30102_8h.html#a61d809a1e313a2787b23e96de9554c4a"> 71</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_STATUS_2 0x01</span></div> +<div class="line"><a name="l00072"></a><span class="lineno"><a class="code" href="max30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d"> 72</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_1 0x02</span></div> +<div class="line"><a name="l00073"></a><span class="lineno"><a class="code" href="max30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1"> 73</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_INTR_ENABLE_2 0x03</span></div> +<div class="line"><a name="l00074"></a><span class="lineno"><a class="code" href="max30102_8h.html#aba8c69cb46224fb35783f5b60e75b115"> 74</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_WR_PTR 0x04</span></div> +<div class="line"><a name="l00075"></a><span class="lineno"><a class="code" href="max30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707"> 75</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_OVF_COUNTER 0x05</span></div> +<div class="line"><a name="l00076"></a><span class="lineno"><a class="code" href="max30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f"> 76</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_RD_PTR 0x06</span></div> +<div class="line"><a name="l00077"></a><span class="lineno"><a class="code" href="max30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd"> 77</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_DATA 0x07</span></div> +<div class="line"><a name="l00078"></a><span class="lineno"><a class="code" href="max30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca"> 78</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_FIFO_CONFIG 0x08</span></div> +<div class="line"><a name="l00079"></a><span class="lineno"><a class="code" href="max30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f"> 79</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MODE_CONFIG 0x09</span></div> +<div class="line"><a name="l00080"></a><span class="lineno"><a class="code" href="max30102_8h.html#a38546015e987a72b8c9eb13228237dd0"> 80</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_SPO2_CONFIG 0x0A</span></div> +<div class="line"><a name="l00081"></a><span class="lineno"><a class="code" href="max30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b"> 81</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_LED1_PA 0x0C</span></div> +<div class="line"><a name="l00082"></a><span class="lineno"><a class="code" href="max30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21"> 82</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_LED2_PA 0x0D</span></div> +<div class="line"><a name="l00083"></a><span class="lineno"><a class="code" href="max30102_8h.html#a371750304ec49457d3d38f60428f8ff1"> 83</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PILOT_PA 0x10</span></div> +<div class="line"><a name="l00084"></a><span class="lineno"><a class="code" href="max30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c"> 84</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL1 0x11</span></div> +<div class="line"><a name="l00085"></a><span class="lineno"><a class="code" href="max30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10"> 85</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_MULTI_LED_CTRL2 0x12</span></div> +<div class="line"><a name="l00086"></a><span class="lineno"><a class="code" href="max30102_8h.html#a579a9e43d89bdda85d9ccb206339d681"> 86</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_INTR 0x1F</span></div> +<div class="line"><a name="l00087"></a><span class="lineno"><a class="code" href="max30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d"> 87</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_FRAC 0x20</span></div> +<div class="line"><a name="l00088"></a><span class="lineno"><a class="code" href="max30102_8h.html#ad16bc92e2f92e516ca396214861a6379"> 88</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_TEMP_CONFIG 0x21</span></div> +<div class="line"><a name="l00089"></a><span class="lineno"><a class="code" href="max30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab"> 89</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PROX_INT_THRESH 0x30</span></div> +<div class="line"><a name="l00090"></a><span class="lineno"><a class="code" href="max30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23"> 90</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_REV_ID 0xFE</span></div> +<div class="line"><a name="l00091"></a><span class="lineno"><a class="code" href="max30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163"> 91</a></span> <span class="preprocessor"></span><span class="preprocessor">#define REG_PART_ID 0xFF</span></div> +<div class="line"><a name="l00092"></a><span class="lineno"> 92</span> <span class="preprocessor"></span></div> +<div class="line"><a name="l00093"></a><span class="lineno"> 93</span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4113aeee76935425d8a557a79a4193df" title="Initialize the MAX30102.">maxim_max30102_init</a>();</div> +<div class="line"><a name="l00094"></a><span class="lineno"> 94</span> <span class="preprocessor">#if defined(ARDUINO_AVR_UNO)</span></div> +<div class="line"><a name="l00095"></a><span class="lineno"> 95</span> <span class="preprocessor"></span><span class="comment">//Arduino Uno doesn't have enough SRAM to store 100 samples of IR led data and red led data in 32-bit format</span></div> +<div class="line"><a name="l00096"></a><span class="lineno"> 96</span> <span class="comment">//To solve this problem, 16-bit MSB of the sampled data will be truncated. Samples become 16-bit data.</span></div> +<div class="line"><a name="l00097"></a><span class="lineno"> 97</span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint16_t *pun_red_led, uint16_t *pun_ir_led);</div> +<div class="line"><a name="l00098"></a><span class="lineno"> 98</span> <span class="preprocessor">#else</span></div> +<div class="line"><a name="l00099"></a><span class="lineno"> 99</span> <span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968" title="Read a set of samples from the MAX30102 FIFO register.">maxim_max30102_read_fifo</a>(uint32_t *pun_red_led, uint32_t *pun_ir_led);</div> +<div class="line"><a name="l00100"></a><span class="lineno"> 100</span> <span class="preprocessor">#endif</span></div> +<div class="line"><a name="l00101"></a><span class="lineno"> 101</span> <span class="preprocessor"></span><span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6" title="Write a value to a MAX30102 register.">maxim_max30102_write_reg</a>(uint8_t uch_addr, uint8_t uch_data);</div> +<div class="line"><a name="l00102"></a><span class="lineno"> 102</span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f" title="Read a MAX30102 register.">maxim_max30102_read_reg</a>(uint8_t uch_addr, uint8_t *puch_data);</div> +<div class="line"><a name="l00103"></a><span class="lineno"> 103</span> <span class="keywordtype">bool</span> <a class="code" href="max30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b" title="Reset the MAX30102.">maxim_max30102_reset</a>(<span class="keywordtype">void</span>);</div> +<div class="line"><a name="l00104"></a><span class="lineno"> 104</span> <span class="preprocessor">#endif </span><span class="comment">/* MAX30102_H_ */</span><span class="preprocessor"></span></div> +</div><!-- fragment --></div><!-- contents --> +</div><!-- doc-content --> +<!-- start footer part --> +<div id="nav-path" class="navpath"><!-- id is needed for treeview function! --> + <ul> + <li class="navelem"><a class="el" href="dir_1496e1f9c0637ae9073f7370a2521bf1.html">RD117_ARDUINO</a></li><li class="navelem"><a class="el" href="max30102_8h.html">max30102.h</a></li> + <li class="footer">Generated on Wed Jun 22 2016 14:49:28 for MAXREFDES117# Code Documentation by + <a href="http://www.doxygen.org/index.html"> + <img class="footer" src="doxygen.png" alt="doxygen"/></a> 1.8.2 </li> + </ul> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/maxim-logo-1.jpg new file mode 100644 index 0000000000000000000000000000000000000000..083102ecef4b5608b525ddc239f2682c9c859c3b GIT binary patch literal 5329 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 literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..f581216456977005702071ad33d083dabb964fea GIT binary patch literal 149 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imV6fm|Vqjp{%*48zfq@~$)5S5Qg7NKLN4^#V z9_9mE>h!0_dd;?Yde`GkVsIWuW5uBp+x~Fgth2rmUhsB<oy8Svld59-5OpnC?<Y=+ zE(G+<P;OtJX;5S0GC%69(kHK7Z>G3DQCa%?|4Z)rCFP1K?hSWWFfcGMc)I$ztaD0e F0sytLH%0&e literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU|{25V_;xl68K`sz`&s9>Eakt!T9#BAuj_1 z2lGLH5An2?hw;3+c6B?R`YL3e_I+`nnVp?Km|^dqCL2};1_lOCS3j3^P6<r_r(zf( literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/nav_h.png new file mode 100644 index 0000000000000000000000000000000000000000..c6dce2b665186cd474316a0e1fd69f6101f399a5 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imVBq0kVqjp<dFjBwz`&sH>Eakt!T9#Bp(uj` z$KeZGG}2sZ`x{?|Jo$S<!Sibm>$H-*H~$YYAMax6s^Y)w4$|Z4>gTe~DWM4fZowUU literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css new file mode 100644 index 000000000..f42ab8786 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.css @@ -0,0 +1,143 @@ +#nav-tree .children_ul { + margin:0; + padding:4px; +} + +#nav-tree ul { + list-style:none outside none; + margin:0px; + padding:0px; +} + +#nav-tree li { + white-space:nowrap; + margin:0px; + padding:0px; +} + +#nav-tree .plus { + margin:0px; +} + +#nav-tree .selected { + background-image: url('tab_a.png'); + background-repeat:repeat-x; + color: #fff; + text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); +} + +#nav-tree img { + margin:0px; + padding:0px; + border:0px; + vertical-align: middle; +} + +#nav-tree a { + text-decoration:none; + padding:0px; + margin:0px; + outline:none; +} + +#nav-tree .label { + margin:0px; + padding:0px; + font: 12px 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +#nav-tree .label a { + padding:2px; +} + +#nav-tree .selected a { + text-decoration:none; + color:#fff; +} + +#nav-tree .children_ul { + margin:0px; + padding:0px; +} + +#nav-tree .item { + margin:0px; + padding:0px; +} + +#nav-tree { + padding: 0px 0px; + background-color: #FAFAFF; + font-size:14px; + overflow:auto; +} + +#doc-content { + overflow:auto; + display:block; + padding:0px; + margin:0px; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#side-nav { + padding:0 6px 0 0; + margin: 0px; + display:block; + position: absolute; + left: 0px; + width: 300px; +} + +.ui-resizable .ui-resizable-handle { + display:block; +} + +.ui-resizable-e { + background:url("ftv2splitbar.png") repeat scroll right center transparent; + cursor:e-resize; + height:100%; + right:0; + top:0; + width:6px; +} + +.ui-resizable-handle { + display:none; + font-size:0.1px; + position:absolute; + z-index:1; +} + +#nav-tree-contents { + margin: 6px 0px 0px 0px; +} + +#nav-tree { + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #FAFCFC; + -webkit-overflow-scrolling : touch; /* iOS 5+ */ +} + +#nav-sync { + position:absolute; + top:5px; + right:24px; + z-index:0; +} + +#nav-sync img { + opacity:0.3; +} + +#nav-sync img:hover { + opacity:0.9; +} + +@media print +{ + #nav-tree { display: none; } + div.ui-resizable-handle { display: none; position: relative; } +} + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js new file mode 100644 index 000000000..0a9ec5768 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtree.js @@ -0,0 +1,519 @@ +var NAVTREE = +[ + [ "MAXREFDES117# Code Documentation", "index.html", [ + [ "Main Page", "index.html", null ], + [ "Files", null, [ + [ "File List", "files.html", "files" ], + [ "Globals", "globals.html", [ + [ "All", "globals.html", null ], + [ "Functions", "globals_func.html", null ], + [ "Variables", "globals_vars.html", null ], + [ "Macros", "globals_defs.html", null ] + ] ] + ] ] + ] ] +]; + +var NAVTREEINDEX = +[ +"_m_a_x30102_8cpp.html" +]; + +var SYNCONMSG = 'click to disable panel synchronisation'; +var SYNCOFFMSG = 'click to enable panel synchronisation'; +var navTreeSubIndices = new Array(); + +function getData(varName) +{ + var i = varName.lastIndexOf('/'); + var n = i>=0 ? varName.substring(i+1) : varName; + return eval(n.replace(/\-/g,'_')); +} + +function stripPath(uri) +{ + return uri.substring(uri.lastIndexOf('/')+1); +} + +function stripPath2(uri) +{ + var i = uri.lastIndexOf('/'); + var s = uri.substring(i+1); + var m = uri.substring(0,i+1).match(/\/d\w\/d\w\w\/$/); + return m ? uri.substring(i-6) : s; +} + +function localStorageSupported() +{ + try { + return 'localStorage' in window && window['localStorage'] !== null && window.localStorage.getItem; + } + catch(e) { + return false; + } +} + + +function storeLink(link) +{ + if (!$("#nav-sync").hasClass('sync') && localStorageSupported()) { + window.localStorage.setItem('navpath',link); + } +} + +function deleteLink() +{ + if (localStorageSupported()) { + window.localStorage.setItem('navpath',''); + } +} + +function cachedLink() +{ + if (localStorageSupported()) { + return window.localStorage.getItem('navpath'); + } else { + return ''; + } +} + +function getScript(scriptName,func,show) +{ + var head = document.getElementsByTagName("head")[0]; + var script = document.createElement('script'); + script.id = scriptName; + script.type = 'text/javascript'; + script.onload = func; + script.src = scriptName+'.js'; + if ($.browser.msie && $.browser.version<=8) { + // script.onload does work with older versions of IE + script.onreadystatechange = function() { + if (script.readyState=='complete' || script.readyState=='loaded') { + func(); if (show) showRoot(); + } + } + } + head.appendChild(script); +} + +function createIndent(o,domNode,node,level) +{ + if (node.parentNode && node.parentNode.parentNode) { + createIndent(o,domNode,node.parentNode,level+1); + } + var imgNode = document.createElement("img"); + imgNode.width = 16; + imgNode.height = 22; + if (level==0 && node.childrenData) { + node.plus_img = imgNode; + node.expandToggle = document.createElement("a"); + node.expandToggle.href = "javascript:void(0)"; + node.expandToggle.onclick = function() { + if (node.expanded) { + $(node.getChildrenUL()).slideUp("fast"); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2plastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2pnode.png"; + } + node.expanded = false; + } else { + expandNode(o, node, false, false); + } + } + node.expandToggle.appendChild(imgNode); + domNode.appendChild(node.expandToggle); + } else { + domNode.appendChild(imgNode); + } + if (level==0) { + if (node.isLast) { + if (node.childrenData) { + imgNode.src = node.relpath+"ftv2plastnode.png"; + } else { + imgNode.src = node.relpath+"ftv2lastnode.png"; + domNode.appendChild(imgNode); + } + } else { + if (node.childrenData) { + imgNode.src = node.relpath+"ftv2pnode.png"; + } else { + imgNode.src = node.relpath+"ftv2node.png"; + domNode.appendChild(imgNode); + } + } + } else { + if (node.isLast) { + imgNode.src = node.relpath+"ftv2blank.png"; + } else { + imgNode.src = node.relpath+"ftv2vertline.png"; + } + } + imgNode.border = "0"; +} + +function newNode(o, po, text, link, childrenData, lastNode) +{ + var node = new Object(); + node.children = Array(); + node.childrenData = childrenData; + node.depth = po.depth + 1; + node.relpath = po.relpath; + node.isLast = lastNode; + + node.li = document.createElement("li"); + po.getChildrenUL().appendChild(node.li); + node.parentNode = po; + + node.itemDiv = document.createElement("div"); + node.itemDiv.className = "item"; + + node.labelSpan = document.createElement("span"); + node.labelSpan.className = "label"; + + createIndent(o,node.itemDiv,node,0); + node.itemDiv.appendChild(node.labelSpan); + node.li.appendChild(node.itemDiv); + + var a = document.createElement("a"); + node.labelSpan.appendChild(a); + node.label = document.createTextNode(text); + node.expanded = false; + a.appendChild(node.label); + if (link) { + var url; + if (link.substring(0,1)=='^') { + url = link.substring(1); + link = url; + } else { + url = node.relpath+link; + } + a.className = stripPath(link.replace('#',':')); + if (link.indexOf('#')!=-1) { + var aname = '#'+link.split('#')[1]; + var srcPage = stripPath($(location).attr('pathname')); + var targetPage = stripPath(link.split('#')[0]); + a.href = srcPage!=targetPage ? url : '#'; + a.onclick = function(){ + storeLink(link); + if (!$(a).parent().parent().hasClass('selected')) + { + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + $(a).parent().parent().addClass('selected'); + $(a).parent().parent().attr('id','selected'); + } + var pos, anchor = $(aname), docContent = $('#doc-content'); + if (anchor.parent().attr('class')=='memItemLeft') { + pos = anchor.parent().position().top; + } else if (anchor.position()) { + pos = anchor.position().top; + } + if (pos) { + var dist = Math.abs(Math.min( + pos-docContent.offset().top, + docContent[0].scrollHeight- + docContent.height()-docContent.scrollTop())); + docContent.animate({ + scrollTop: pos + docContent.scrollTop() - docContent.offset().top + },Math.max(50,Math.min(500,dist)),function(){ + window.location.replace(aname); + }); + } + }; + } else { + a.href = url; + a.onclick = function() { storeLink(link); } + } + } else { + if (childrenData != null) + { + a.className = "nolink"; + a.href = "javascript:void(0)"; + a.onclick = node.expandToggle.onclick; + } + } + + node.childrenUL = null; + node.getChildrenUL = function() { + if (!node.childrenUL) { + node.childrenUL = document.createElement("ul"); + node.childrenUL.className = "children_ul"; + node.childrenUL.style.display = "none"; + node.li.appendChild(node.childrenUL); + } + return node.childrenUL; + }; + + return node; +} + +function showRoot() +{ + var headerHeight = $("#top").height(); + var footerHeight = $("#nav-path").height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + (function (){ // retry until we can scroll to the selected item + try { + var navtree=$('#nav-tree'); + navtree.scrollTo('#selected',0,{offset:-windowHeight/2}); + } catch (err) { + setTimeout(arguments.callee, 0); + } + })(); +} + +function expandNode(o, node, imm, showRoot) +{ + if (node.childrenData && !node.expanded) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + expandNode(o, node, imm, showRoot); + }, showRoot); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } if (imm || ($.browser.msie && $.browser.version>8)) { + // somehow slideDown jumps to the start of tree for IE9 :-( + $(node.getChildrenUL()).show(); + } else { + $(node.getChildrenUL()).slideDown("fast"); + } + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + } + } +} + +function glowEffect(n,duration) +{ + n.addClass('glow').delay(duration).queue(function(next){ + $(this).removeClass('glow');next(); + }); +} + +function highlightAnchor() +{ + var anchor = $($(location).attr('hash')); + if (anchor.parent().attr('class')=='memItemLeft'){ + var rows = $('.memberdecls tr[class$="'+ + window.location.hash.substring(1)+'"]'); + glowEffect(rows.children(),300); // member without details + } else if (anchor.parents().slice(2).prop('tagName')=='TR') { + glowEffect(anchor.parents('div.memitem'),1000); // enum value + } else if (anchor.parent().attr('class')=='fieldtype'){ + glowEffect(anchor.parent().parent(),1000); // struct field + } else if (anchor.parent().is(":header")) { + glowEffect(anchor.parent(),1000); // section header + } else { + glowEffect(anchor.next(),1000); // normal member + } +} + +function selectAndHighlight(hash,n) +{ + var a; + if (hash) { + var link=stripPath($(location).attr('pathname'))+':'+hash.substring(1); + a=$('.item a[class$="'+link+'"]'); + } + if (a && a.length) { + a.parent().parent().addClass('selected'); + a.parent().parent().attr('id','selected'); + highlightAnchor(); + } else if (n) { + $(n.itemDiv).addClass('selected'); + $(n.itemDiv).attr('id','selected'); + } + showRoot(); +} + +function showNode(o, node, index, hash) +{ + if (node && node.childrenData) { + if (typeof(node.childrenData)==='string') { + var varName = node.childrenData; + getScript(node.relpath+varName,function(){ + node.childrenData = getData(varName); + showNode(o,node,index,hash); + },true); + } else { + if (!node.childrenVisited) { + getNode(o, node); + } + $(node.getChildrenUL()).show(); + if (node.isLast) { + node.plus_img.src = node.relpath+"ftv2mlastnode.png"; + } else { + node.plus_img.src = node.relpath+"ftv2mnode.png"; + } + node.expanded = true; + var n = node.children[o.breadcrumbs[index]]; + if (index+1<o.breadcrumbs.length) { + showNode(o,n,index+1,hash); + } else { + if (typeof(n.childrenData)==='string') { + var varName = n.childrenData; + getScript(n.relpath+varName,function(){ + n.childrenData = getData(varName); + node.expanded=false; + showNode(o,node,index,hash); // retry with child node expanded + },true); + } else { + var rootBase = stripPath(o.toroot.replace(/\..+$/, '')); + if (rootBase=="index" || rootBase=="pages") { + expandNode(o, n, true, true); + } + selectAndHighlight(hash,n); + } + } + } + } else { + selectAndHighlight(hash); + } +} + +function getNode(o, po) +{ + po.childrenVisited = true; + var l = po.childrenData.length-1; + for (var i in po.childrenData) { + var nodeData = po.childrenData[i]; + po.children[i] = newNode(o, po, nodeData[0], nodeData[1], nodeData[2], + i==l); + } +} + +function gotoNode(o,subIndex,root,hash,relpath) +{ + var nti = navTreeSubIndices[subIndex][root+hash]; + o.breadcrumbs = $.extend(true, [], nti ? nti : navTreeSubIndices[subIndex][root]); + if (!o.breadcrumbs && root!=NAVTREE[0][1]) { // fallback: show index + navTo(o,NAVTREE[0][1],"",relpath); + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + if (o.breadcrumbs) { + o.breadcrumbs.unshift(0); // add 0 for root node + showNode(o, o.node, 0, hash); + } +} + +function navTo(o,root,hash,relpath) +{ + var link = cachedLink(); + if (link) { + var parts = link.split('#'); + root = parts[0]; + if (parts.length>1) hash = '#'+parts[1]; + else hash=''; + } + if (root==NAVTREE[0][1]) { + $('#nav-sync').css('top','30px'); + } else { + $('#nav-sync').css('top','5px'); + } + if (hash.match(/^#l\d+$/)) { + var anchor=$('a[name='+hash.substring(1)+']'); + glowEffect(anchor.parent(),1000); // line number + hash=''; // strip line number anchors + //root=root.replace(/_source\./,'.'); // source link to doc link + } + var url=root+hash; + var i=-1; + while (NAVTREEINDEX[i+1]<=url) i++; + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath) + } else { + getScript(relpath+'navtreeindex'+i,function(){ + navTreeSubIndices[i] = eval('NAVTREEINDEX'+i); + if (navTreeSubIndices[i]) { + gotoNode(o,i,root,hash,relpath); + } + },true); + } +} + +function showSyncOff(n,relpath) +{ + n.html('<img src="'+relpath+'sync_off.png" title="'+SYNCOFFMSG+'"/>'); +} + +function showSyncOn(n,relpath) +{ + n.html('<img src="'+relpath+'sync_on.png"/ title="'+SYNCONMSG+'">'); +} + +function toggleSyncButton(relpath) +{ + var navSync = $('#nav-sync'); + if (navSync.hasClass('sync')) { + navSync.removeClass('sync'); + showSyncOff(navSync,relpath); + storeLink(stripPath2($(location).attr('pathname'))+$(location).attr('hash')); + } else { + navSync.addClass('sync'); + showSyncOn(navSync,relpath); + deleteLink(); + } +} + +function initNavTree(toroot,relpath) +{ + var o = new Object(); + o.toroot = toroot; + o.node = new Object(); + o.node.li = document.getElementById("nav-tree-contents"); + o.node.childrenData = NAVTREE; + o.node.children = new Array(); + o.node.childrenUL = document.createElement("ul"); + o.node.getChildrenUL = function() { return o.node.childrenUL; }; + o.node.li.appendChild(o.node.childrenUL); + o.node.depth = 0; + o.node.relpath = relpath; + o.node.expanded = false; + o.node.isLast = true; + o.node.plus_img = document.createElement("img"); + o.node.plus_img.src = relpath+"ftv2pnode.png"; + o.node.plus_img.width = 16; + o.node.plus_img.height = 22; + + if (localStorageSupported()) { + var navSync = $('#nav-sync'); + if (cachedLink()) { + showSyncOff(navSync,relpath); + navSync.removeClass('sync'); + } else { + showSyncOn(navSync,relpath); + } + navSync.click(function(){ toggleSyncButton(relpath); }); + } + + navTo(o,toroot,window.location.hash,relpath); + + $(window).bind('hashchange', function(){ + if (window.location.hash && window.location.hash.length>1){ + var a; + if ($(location).attr('hash')){ + var clslink=stripPath($(location).attr('pathname'))+':'+ + $(location).attr('hash').substring(1); + a=$('.item a[class$="'+clslink+'"]'); + } + if (a==null || !$(a).parent().parent().hasClass('selected')){ + $('.item').removeClass('selected'); + $('.item').removeAttr('id'); + } + var link=stripPath2($(location).attr('pathname')); + navTo(o,link,$(location).attr('hash'),relpath); + } + }) + + $(window).load(showRoot); +} + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js new file mode 100644 index 000000000..44a969be4 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/navtreeindex0.js @@ -0,0 +1,95 @@ +var NAVTREEINDEX0 = +{ +"_m_a_x30102_8cpp.html":[1,0,0,1,0], +"_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f":[1,0,0,1,0,3], +"_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b":[1,0,0,1,0,4], +"_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df":[1,0,0,1,0,1], +"_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968":[1,0,0,1,0,2], +"_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6":[1,0,0,1,0,5], +"_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976":[1,0,0,1,0,0], +"_m_a_x30102_8cpp_source.html":[1,0,0,1,0], +"_m_a_x30102_8h.html":[1,0,0,1,1], +"_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd":[1,0,0,1,1,3], +"_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10":[1,0,0,1,1,14], +"_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f":[1,0,0,1,1,26], +"_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37":[1,0,0,1,1,0], +"_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23":[1,0,0,1,1,19], +"_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1":[1,0,0,1,1,17], +"_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0":[1,0,0,1,1,20], +"_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f":[1,0,0,1,1,4], +"_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab":[1,0,0,1,1,18], +"_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df":[1,0,0,1,1,24], +"_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163":[1,0,0,1,1,16], +"_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968":[1,0,0,1,1,25], +"_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6":[1,0,0,1,1,28], +"_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d":[1,0,0,1,1,22], +"_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681":[1,0,0,1,1,23], +"_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b":[1,0,0,1,1,10], +"_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a":[1,0,0,1,1,9], +"_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6":[1,0,0,1,1,1], +"_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191":[1,0,0,1,1,8], +"_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21":[1,0,0,1,1,11], +"_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd":[1,0,0,1,1,27], +"_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c":[1,0,0,1,1,13], +"_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1":[1,0,0,1,1,7], +"_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115":[1,0,0,1,1,5], +"_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f":[1,0,0,1,1,12], +"_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379":[1,0,0,1,1,21], +"_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca":[1,0,0,1,1,2], +"_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d":[1,0,0,1,1,6], +"_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707":[1,0,0,1,1,15], +"_m_a_x30102_8h_source.html":[1,0,0,1,1], +"algorithm_8cpp.html":[1,0,0,0,0], +"algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9":[1,0,0,0,0,0], +"algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060":[1,0,0,0,0,5], +"algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6":[1,0,0,0,0,1], +"algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff":[1,0,0,0,0,4], +"algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf":[1,0,0,0,0,2], +"algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a":[1,0,0,0,0,3], +"algorithm_8cpp_source.html":[1,0,0,0,0], +"algorithm_8h.html":[1,0,0,0,1], +"algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929":[1,0,0,0,1,17], +"algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9":[1,0,0,0,1,8], +"algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119":[1,0,0,0,1,2], +"algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8":[1,0,0,0,1,3], +"algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7":[1,0,0,0,1,7], +"algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060":[1,0,0,0,1,13], +"algorithm_8h.html#a62050365673e666cd0d661a3664c26e6":[1,0,0,0,1,9], +"algorithm_8h.html#a65e9886d74aaee76545e83dd09011727":[1,0,0,0,1,1], +"algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7":[1,0,0,0,1,0], +"algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff":[1,0,0,0,1,12], +"algorithm_8h.html#a72c76142c07186ae6d7200ec3c9a4f76":[1,0,0,0,1,16], +"algorithm_8h.html#a7d4e0b0915b58092f3b4bb2fbd252f3f":[1,0,0,0,1,15], +"algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524":[1,0,0,0,1,4], +"algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf":[1,0,0,0,1,10], +"algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384":[1,0,0,0,1,6], +"algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a":[1,0,0,0,1,11], +"algorithm_8h.html#adfeeb6b08271807492803acc50347108":[1,0,0,0,1,18], +"algorithm_8h.html#aea73b3b76ec2f4743e97452ee93c9cd2":[1,0,0,0,1,14], +"algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae":[1,0,0,0,1,5], +"algorithm_8h_source.html":[1,0,0,0,1], +"dir_19b53f07f52837a342947cc20e6d978f.html":[1,0,0,0], +"dir_70c5cd4c8bba287fe799894cc0903ca4.html":[1,0,0], +"dir_d4a9a7556cca61907ce453116086a23a.html":[1,0,0,1], +"files.html":[1,0], +"globals.html":[1,1,0], +"globals_defs.html":[1,1,3], +"globals_func.html":[1,1,1], +"globals_vars.html":[1,1,2], +"index.html":[], +"index.html":[0], +"main_8cpp.html":[1,0,0,2], +"main_8cpp.html#a07a24850120a56110cc2838d0afcafcf":[1,0,0,2,3], +"main_8cpp.html#a2134a5a06f0865c945543a1f07eba387":[1,0,0,2,0], +"main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024":[1,0,0,2,6], +"main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f":[1,0,0,2,7], +"main_8cpp.html#a43fb8ea97a26647405ca359095323280":[1,0,0,2,5], +"main_8cpp.html#a786e6c57c793d9af51360154ef90eb93":[1,0,0,2,9], +"main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753":[1,0,0,2,2], +"main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723":[1,0,0,2,4], +"main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6":[1,0,0,2,8], +"main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2":[1,0,0,2,10], +"main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4":[1,0,0,2,1], +"main_8cpp_source.html":[1,0,0,2], +"pages.html":[] +}; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..4455dd052b486c7eed671dd60c9c2d1d9a8ab540 GIT binary patch literal 122 zcmeAS@N?(olHy`uVBq!ia0y~yVBiE{4mJh`h6fYb1Q-|?96eneLn;{G&OOM<pvc3b zuIaVGM0<nD!Da6PI$9R&tL4inQ@3T<({|;aU4wK~kXVCoayU1G;OpgEg#YeUu|Lu- ZAF-D!^ZBm31q=)f44$rjF6*2UngDD)C6fRE literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js new file mode 100644 index 000000000..9fe82ba9e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/resize.js @@ -0,0 +1,93 @@ +var cookie_namespace = 'doxygen'; +var sidenav,navtree,content,header; + +function readCookie(cookie) +{ + var myCookie = cookie_namespace+"_"+cookie+"="; + if (document.cookie) + { + var index = document.cookie.indexOf(myCookie); + if (index != -1) + { + var valStart = index + myCookie.length; + var valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) + { + valEnd = document.cookie.length; + } + var val = document.cookie.substring(valStart, valEnd); + return val; + } + } + return 0; +} + +function writeCookie(cookie, val, expiration) +{ + if (val==undefined) return; + if (expiration == null) + { + var date = new Date(); + date.setTime(date.getTime()+(10*365*24*60*60*1000)); // default expiration is one week + expiration = date.toGMTString(); + } + document.cookie = cookie_namespace + "_" + cookie + "=" + val + "; expires=" + expiration+"; path=/"; +} + +function resizeWidth() +{ + var windowWidth = $(window).width() + "px"; + var sidenavWidth = $(sidenav).width(); + content.css({marginLeft:parseInt(sidenavWidth)+6+"px"}); //account for 6px-wide handle-bar + writeCookie('width',sidenavWidth, null); +} + +function restoreWidth(navWidth) +{ + var windowWidth = $(window).width() + "px"; + content.css({marginLeft:parseInt(navWidth)+6+"px"}); + sidenav.css({width:navWidth + "px"}); +} + +function resizeHeight() +{ + var headerHeight = header.height(); + var footerHeight = footer.height(); + var windowHeight = $(window).height() - headerHeight - footerHeight; + content.css({height:windowHeight + "px"}); + navtree.css({height:windowHeight + "px"}); + sidenav.css({height:windowHeight + "px",top: headerHeight+"px"}); +} + +function initResizable() +{ + header = $("#top"); + sidenav = $("#side-nav"); + content = $("#doc-content"); + navtree = $("#nav-tree"); + footer = $("#nav-path"); + $(".side-nav-resizable").resizable({resize: function(e, ui) { resizeWidth(); } }); + $(window).resize(function() { resizeHeight(); }); + var width = readCookie('width'); + if (width) { restoreWidth(width); } else { resizeWidth(); } + resizeHeight(); + var url = location.href; + var i=url.indexOf("#"); + if (i>=0) window.location.hash=url.substr(i); + var _preventDefault = function(evt) { evt.preventDefault(); }; + $("#splitbar").bind("dragstart", _preventDefault).bind("selectstart", _preventDefault); + $(document).bind('touchmove',function(e){ + try { + var target = e.target; + while (target) { + if ($(target).css('-webkit-overflow-scrolling')=='touch') return; + target = target.parentNode; + } + e.preventDefault(); + } catch(err) { + e.preventDefault(); + } + }); +} + + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html new file mode 100644 index 000000000..1f27755ab --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_5f.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js new file mode 100644 index 000000000..f3cfc5f66 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_5f.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_5f_5fattribute_5f_5f',['__attribute__',['../_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9',1,'SoftI2CMaster.h']]], + ['_5f_5ftmp_5freg_5f_5f',['__tmp_reg__',['../_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b',1,'SoftI2CMaster.h']]], + ['_5fsofti2c_5fh',['_SOFTI2C_H',['../_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e',1,'SoftI2CMaster.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html new file mode 100644 index 000000000..a3164d553 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_61.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js new file mode 100644 index 000000000..a33f36406 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_61.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['algorithm_2ecpp',['algorithm.cpp',['../algorithm_8cpp.html',1,'']]], + ['algorithm_2eh',['algorithm.h',['../algorithm_8h.html',1,'']]], + ['aun_5fir_5fbuffer',['aun_ir_buffer',['../main_8cpp.html#a07a24850120a56110cc2838d0afcafcf',1,'main.cpp']]], + ['aun_5fred_5fbuffer',['aun_red_buffer',['../main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723',1,'main.cpp']]], + ['auw_5fhamm',['auw_hamm',['../algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html new file mode 100644 index 000000000..ee8871cb3 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_62.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js new file mode 100644 index 000000000..f2bb9345a --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buffer_5fsize',['BUFFER_SIZE',['../algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html new file mode 100644 index 000000000..56b5ad1e9 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_63.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js new file mode 100644 index 000000000..4e7566ffc --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_63.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ch_5fhr_5fvalid',['ch_hr_valid',['../main_8cpp.html#a43fb8ea97a26647405ca359095323280',1,'main.cpp']]], + ['ch_5fspo2_5fvalid',['ch_spo2_valid',['../main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html new file mode 100644 index 000000000..3d1f8b35e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_66.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js new file mode 100644 index 000000000..59ef048f5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_66.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['false',['false',['../algorithm_8h.html#a65e9886d74aaee76545e83dd09011727',1,'algorithm.h']]], + ['fs',['FS',['../algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html new file mode 100644 index 000000000..41a459ae7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_67.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js new file mode 100644 index 000000000..efaa118b4 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_67.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['getbrightness',['getBrightness',['../class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f',1,'Adafruit_NeoPixel']]], + ['getpixelcolor',['getPixelColor',['../class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa',1,'Adafruit_NeoPixel']]], + ['getpixels',['getPixels',['../class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html new file mode 100644 index 000000000..6df909782 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_68.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js new file mode 100644 index 000000000..75625372d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_68.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hamming_5fsize',['HAMMING_SIZE',['../algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8',1,'algorithm.h']]], + ['hr_5ffifo_5fsize',['HR_FIFO_SIZE',['../algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html new file mode 100644 index 000000000..1a00b554d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_69.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js new file mode 100644 index 000000000..1d3b12d60 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_69.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['i2c',['i2c',['../_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976',1,'MAX30102.cpp']]], + ['i2c_5fread_5faddr',['I2C_READ_ADDR',['../_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37',1,'MAX30102.h']]], + ['i2c_5fwrite_5faddr',['I2C_WRITE_ADDR',['../_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6',1,'MAX30102.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html new file mode 100644 index 000000000..f6383cc22 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6c.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js new file mode 100644 index 000000000..7f8b68c5d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loop',['loop',['../_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'RD117_ARDUINO.ino']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html new file mode 100644 index 000000000..2e27d4d64 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js new file mode 100644 index 000000000..e9b1cb8aa --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6d.js @@ -0,0 +1,22 @@ +var searchData= +[ + ['main_20page',['Main Page',['../index.html',1,'']]], + ['ma4_5fsize',['MA4_SIZE',['../algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae',1,'algorithm.h']]], + ['main',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]], + ['main_2ecpp',['main.cpp',['../main_8cpp.html',1,'']]], + ['max30102_2ecpp',['MAX30102.cpp',['../_m_a_x30102_8cpp.html',1,'']]], + ['max30102_2eh',['MAX30102.h',['../_m_a_x30102_8h.html',1,'']]], + ['max_5fbrightness',['MAX_BRIGHTNESS',['../main_8cpp.html#a2134a5a06f0865c945543a1f07eba387',1,'main.cpp']]], + ['maxim_5ffind_5fpeaks',['maxim_find_peaks',['../algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num): algorithm.cpp'],['../algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num): algorithm.cpp']]], + ['maxim_5fheart_5frate_5fand_5foxygen_5fsaturation',['maxim_heart_rate_and_oxygen_saturation',['../algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid): algorithm.cpp'],['../algorithm_8h.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid): algorithm.cpp']]], + ['maxim_5fmax30102_5finit',['maxim_max30102_init',['../_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init(): MAX30102.cpp'],['../_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init(): MAX30102.cpp']]], + ['maxim_5fmax30102_5fread_5ffifo',['maxim_max30102_read_fifo',['../_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led): MAX30102.cpp'],['../_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led): MAX30102.cpp']]], + ['maxim_5fmax30102_5fread_5freg',['maxim_max30102_read_reg',['../_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data): MAX30102.cpp'],['../_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data): MAX30102.cpp']]], + ['maxim_5fmax30102_5freset',['maxim_max30102_reset',['../_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b',1,'maxim_max30102_reset(): MAX30102.cpp'],['../_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd',1,'maxim_max30102_reset(void): MAX30102.cpp']]], + ['maxim_5fmax30102_5fwrite_5freg',['maxim_max30102_write_reg',['../_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data): MAX30102.cpp'],['../_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data): MAX30102.cpp']]], + ['maxim_5fpeaks_5fabove_5fmin_5fheight',['maxim_peaks_above_min_height',['../algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height): algorithm.cpp'],['../algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height): algorithm.cpp']]], + ['maxim_5fremove_5fclose_5fpeaks',['maxim_remove_close_peaks',['../algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance): algorithm.cpp'],['../algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance): algorithm.cpp']]], + ['maxim_5fsort_5fascend',['maxim_sort_ascend',['../algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size): algorithm.cpp'],['../algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size): algorithm.cpp']]], + ['maxim_5fsort_5findices_5fdescend',['maxim_sort_indices_descend',['../algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size): algorithm.cpp'],['../algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size): algorithm.cpp']]], + ['min',['min',['../algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html new file mode 100644 index 000000000..1f92ee5b6 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_6e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js new file mode 100644 index 000000000..31433021e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_6e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['n_5fheart_5frate',['n_heart_rate',['../main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f',1,'main.cpp']]], + ['n_5fir_5fbuffer_5flength',['n_ir_buffer_length',['../main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6',1,'main.cpp']]], + ['n_5fsp02',['n_sp02',['../main_8cpp.html#a786e6c57c793d9af51360154ef90eb93',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html new file mode 100644 index 000000000..0340151b6 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_70.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js new file mode 100644 index 000000000..95bca2eec --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pc',['pc',['../main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html new file mode 100644 index 000000000..0ab18d65f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_72.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js new file mode 100644 index 000000000..e29e58959 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_72.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['reg_5ffifo_5fconfig',['REG_FIFO_CONFIG',['../_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca',1,'MAX30102.h']]], + ['reg_5ffifo_5fdata',['REG_FIFO_DATA',['../_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd',1,'MAX30102.h']]], + ['reg_5ffifo_5frd_5fptr',['REG_FIFO_RD_PTR',['../_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f',1,'MAX30102.h']]], + ['reg_5ffifo_5fwr_5fptr',['REG_FIFO_WR_PTR',['../_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115',1,'MAX30102.h']]], + ['reg_5fintr_5fenable_5f1',['REG_INTR_ENABLE_1',['../_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d',1,'MAX30102.h']]], + ['reg_5fintr_5fenable_5f2',['REG_INTR_ENABLE_2',['../_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1',1,'MAX30102.h']]], + ['reg_5fintr_5fstatus_5f1',['REG_INTR_STATUS_1',['../_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191',1,'MAX30102.h']]], + ['reg_5fintr_5fstatus_5f2',['REG_INTR_STATUS_2',['../_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a',1,'MAX30102.h']]], + ['reg_5fled1_5fpa',['REG_LED1_PA',['../_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b',1,'MAX30102.h']]], + ['reg_5fled2_5fpa',['REG_LED2_PA',['../_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21',1,'MAX30102.h']]], + ['reg_5fmode_5fconfig',['REG_MODE_CONFIG',['../_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f',1,'MAX30102.h']]], + ['reg_5fmulti_5fled_5fctrl1',['REG_MULTI_LED_CTRL1',['../_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c',1,'MAX30102.h']]], + ['reg_5fmulti_5fled_5fctrl2',['REG_MULTI_LED_CTRL2',['../_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10',1,'MAX30102.h']]], + ['reg_5fovf_5fcounter',['REG_OVF_COUNTER',['../_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707',1,'MAX30102.h']]], + ['reg_5fpart_5fid',['REG_PART_ID',['../_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163',1,'MAX30102.h']]], + ['reg_5fpilot_5fpa',['REG_PILOT_PA',['../_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1',1,'MAX30102.h']]], + ['reg_5fprox_5fint_5fthresh',['REG_PROX_INT_THRESH',['../_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab',1,'MAX30102.h']]], + ['reg_5frev_5fid',['REG_REV_ID',['../_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23',1,'MAX30102.h']]], + ['reg_5fspo2_5fconfig',['REG_SPO2_CONFIG',['../_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0',1,'MAX30102.h']]], + ['reg_5ftemp_5fconfig',['REG_TEMP_CONFIG',['../_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379',1,'MAX30102.h']]], + ['reg_5ftemp_5ffrac',['REG_TEMP_FRAC',['../_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d',1,'MAX30102.h']]], + ['reg_5ftemp_5fintr',['REG_TEMP_INTR',['../_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681',1,'MAX30102.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html new file mode 100644 index 000000000..1ec8f174d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_73.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js new file mode 100644 index 000000000..56bb31333 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_73.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['scl_5fddr',['SCL_DDR',['../_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b',1,'SoftI2CMaster.h']]], + ['scl_5fin',['SCL_IN',['../_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49',1,'SoftI2CMaster.h']]], + ['scl_5fout',['SCL_OUT',['../_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f',1,'SoftI2CMaster.h']]], + ['sda_5fddr',['SDA_DDR',['../_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653',1,'SoftI2CMaster.h']]], + ['sda_5fin',['SDA_IN',['../_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83',1,'SoftI2CMaster.h']]], + ['sda_5fout',['SDA_OUT',['../_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae',1,'SoftI2CMaster.h']]], + ['setbrightness',['setBrightness',['../class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53',1,'Adafruit_NeoPixel']]], + ['setpin',['setPin',['../class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b',1,'Adafruit_NeoPixel']]], + ['setpixelcolor',['setPixelColor',['../class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)'],['../class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint32_t c)']]], + ['setup',['setup',['../_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'RD117_ARDUINO.ino']]], + ['show',['show',['../class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7',1,'Adafruit_NeoPixel']]], + ['softi2cmaster_2eh',['SoftI2CMaster.h',['../_soft_i2_c_master_8h.html',1,'']]], + ['softi2dmaster_5fh_5f',['SOFTI2DMASTER_H_',['../_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c',1,'SoftI2CMaster.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html new file mode 100644 index 000000000..fdc6589d0 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_74.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js new file mode 100644 index 000000000..549c70c68 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['true',['true',['../algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html new file mode 100644 index 000000000..ab8455ed5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_75.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js new file mode 100644 index 000000000..48a3fb1a5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_75.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['uch_5fdummy',['uch_dummy',['../main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2',1,'main.cpp']]], + ['uch_5fspo2_5ftable',['uch_spo2_table',['../algorithm_8h.html#adfeeb6b08271807492803acc50347108',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html new file mode 100644 index 000000000..63512c6f9 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="all_7e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js new file mode 100644 index 000000000..5d71164d2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/all_7e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7eadafruit_5fneopixel',['~Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html new file mode 100644 index 000000000..85e5d72a3 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="classes_61.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js new file mode 100644 index 000000000..433c37049 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/classes_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adafruit_5fneopixel',['Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmeAS@N?(olHy`uVBq!ia0y~yVBiK}4mJh`hLvl|)fgBUZg{#lhDb=32JRJdbKton zA<88pBIW$rbWi<q=X5q>jSKh6tCh9xi%p+@`?Q+n!RFfgXE*8G*v9+3QmISnNMVo7 z`H9O`PI%UrIqQr?-;Q<O_xG9cI8RCKT%>Wty6>_6MEw<qoWd?ve74!mqJL|fYiMZ6 z+*BQ<9q*-I?>dy;?;}uqfAPBP=a-GbCOi*zGvsM5p1Q(t@|@$3uW)T!;1YH0m_+$m z$Gs|^Q+^9Y21Z{Jd;3e_PX6`M`PrAX90e9+N`*&ixX;u#IA8tS@w}AI>(}g>b5kXA dR_DdqvvXBW;1hH`#K6G7;OXk;vd$@?2>^;gZ`%L> literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html new file mode 100644 index 000000000..548a82497 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_5f.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js new file mode 100644 index 000000000..0a63cad63 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_5f.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5f_5ftmp_5freg_5f_5f',['__tmp_reg__',['../_soft_i2_c_master_8h.html#a0e6fc492b674d6ccceccb06e3bbf907b',1,'SoftI2CMaster.h']]], + ['_5fsofti2c_5fh',['_SOFTI2C_H',['../_soft_i2_c_master_8h.html#a3bf497cc1d59d184775241e80a21085e',1,'SoftI2CMaster.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html new file mode 100644 index 000000000..48009dac4 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_62.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js new file mode 100644 index 000000000..f2bb9345a --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['buffer_5fsize',['BUFFER_SIZE',['../algorithm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html new file mode 100644 index 000000000..4ddd13f0e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_66.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js new file mode 100644 index 000000000..59ef048f5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_66.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['false',['false',['../algorithm_8h.html#a65e9886d74aaee76545e83dd09011727',1,'algorithm.h']]], + ['fs',['FS',['../algorithm_8h.html#a30588c5eca7c9cb6ebba02a0236f0119',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html new file mode 100644 index 000000000..43d93b87b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_68.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js new file mode 100644 index 000000000..75625372d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_68.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['hamming_5fsize',['HAMMING_SIZE',['../algorithm_8h.html#a35be9e52c9110f5d91a4064e2f7b73c8',1,'algorithm.h']]], + ['hr_5ffifo_5fsize',['HR_FIFO_SIZE',['../algorithm_8h.html#aa03906cc2e2d27ef4f3fa4db4312b524',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html new file mode 100644 index 000000000..ebf00b8a0 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_69.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js new file mode 100644 index 000000000..9d3ea8d2b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_69.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['i2c_5fread_5faddr',['I2C_READ_ADDR',['../_m_a_x30102_8h.html#a11a0148c64950f3315f38d957cd43d37',1,'MAX30102.h']]], + ['i2c_5fwrite_5faddr',['I2C_WRITE_ADDR',['../_m_a_x30102_8h.html#a7978167075eb8954c1090fc7ce9647c6',1,'MAX30102.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html new file mode 100644 index 000000000..d2827022a --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_6d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js new file mode 100644 index 000000000..3fb637229 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['ma4_5fsize',['MA4_SIZE',['../algorithm_8h.html#af8c3cbac49a22022b17cc7b34d42cbae',1,'algorithm.h']]], + ['max_5fbrightness',['MAX_BRIGHTNESS',['../main_8cpp.html#a2134a5a06f0865c945543a1f07eba387',1,'main.cpp']]], + ['min',['min',['../algorithm_8h.html#abb702d8b501669a23aa0ab3b281b9384',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html new file mode 100644 index 000000000..5b7f68f32 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_6e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js new file mode 100644 index 000000000..a9f96cdac --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_6e.js @@ -0,0 +1,35 @@ +var searchData= +[ + ['neo_5fbgr',['NEO_BGR',['../_adafruit___neo_pixel_8h.html#a9129664a08911b56227dd641116f105f',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbgrw',['NEO_BGRW',['../_adafruit___neo_pixel_8h.html#a5b49f89982b6e60d20f7aaab79030d54',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbgwr',['NEO_BGWR',['../_adafruit___neo_pixel_8h.html#a143de1c7084e1f833beecbdae00b321c',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbrg',['NEO_BRG',['../_adafruit___neo_pixel_8h.html#afde6ec00a4ec8fad0267ae1a6689379e',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbrgw',['NEO_BRGW',['../_adafruit___neo_pixel_8h.html#aad617c46d4a64cd4ec8d0ed1a0f30073',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbrwg',['NEO_BRWG',['../_adafruit___neo_pixel_8h.html#a4b4571bfc0a3ebfb4720ce4e5fbe9acf',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbwgr',['NEO_BWGR',['../_adafruit___neo_pixel_8h.html#a2595b8689ce5bd39634d017620ae57b8',1,'Adafruit_NeoPixel.h']]], + ['neo_5fbwrg',['NEO_BWRG',['../_adafruit___neo_pixel_8h.html#aaf438f131d0fa8a0be6791a553145860',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgbr',['NEO_GBR',['../_adafruit___neo_pixel_8h.html#abca04ce54125372080f2fbf2afdcf027',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgbrw',['NEO_GBRW',['../_adafruit___neo_pixel_8h.html#af60d024b8f8954960e59056c57520080',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgbwr',['NEO_GBWR',['../_adafruit___neo_pixel_8h.html#a20be9abdf372b9c71d9fdacc3e6a9d1a',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgrb',['NEO_GRB',['../_adafruit___neo_pixel_8h.html#a95d0d6b0a1f52bc72d9dcea2b3a48e3f',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgrbw',['NEO_GRBW',['../_adafruit___neo_pixel_8h.html#a722066abc60b560235b3b22082c2e68e',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgrwb',['NEO_GRWB',['../_adafruit___neo_pixel_8h.html#a35a185ff488486a74745e9094892558c',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgwbr',['NEO_GWBR',['../_adafruit___neo_pixel_8h.html#aaaaa406f36f1c596526579944ca7043d',1,'Adafruit_NeoPixel.h']]], + ['neo_5fgwrb',['NEO_GWRB',['../_adafruit___neo_pixel_8h.html#aa29b3544b4257e851de2e214894d1236',1,'Adafruit_NeoPixel.h']]], + ['neo_5fkhz400',['NEO_KHZ400',['../_adafruit___neo_pixel_8h.html#a9c4067fd0cceb0432d1758fc07ede469',1,'Adafruit_NeoPixel.h']]], + ['neo_5fkhz800',['NEO_KHZ800',['../_adafruit___neo_pixel_8h.html#a475fef7028a743310aa4311a97899d5d',1,'Adafruit_NeoPixel.h']]], + ['neo_5frbg',['NEO_RBG',['../_adafruit___neo_pixel_8h.html#a7d6aaa56c8e2603312cba8dbdf9c5661',1,'Adafruit_NeoPixel.h']]], + ['neo_5frbgw',['NEO_RBGW',['../_adafruit___neo_pixel_8h.html#a198dc192119c166c544efc3e89fdd1cd',1,'Adafruit_NeoPixel.h']]], + ['neo_5frbwg',['NEO_RBWG',['../_adafruit___neo_pixel_8h.html#a7b6b551a990b498bed36aadba4a498d5',1,'Adafruit_NeoPixel.h']]], + ['neo_5frgb',['NEO_RGB',['../_adafruit___neo_pixel_8h.html#aa4f80df5ab240d93359f40956462f758',1,'Adafruit_NeoPixel.h']]], + ['neo_5frgbw',['NEO_RGBW',['../_adafruit___neo_pixel_8h.html#a71f7c6e45f4c63fceca6b5b73c7a7c9d',1,'Adafruit_NeoPixel.h']]], + ['neo_5frgwb',['NEO_RGWB',['../_adafruit___neo_pixel_8h.html#abcce73b2eafdf1bb331a8f02fba95d10',1,'Adafruit_NeoPixel.h']]], + ['neo_5frwbg',['NEO_RWBG',['../_adafruit___neo_pixel_8h.html#a9254ebc9367c071457d0321f64c9d5fa',1,'Adafruit_NeoPixel.h']]], + ['neo_5frwgb',['NEO_RWGB',['../_adafruit___neo_pixel_8h.html#a122c6bb3e44525d2f975dcd89b094267',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwbgr',['NEO_WBGR',['../_adafruit___neo_pixel_8h.html#a015eeccbf1bd19907c34d7b39b63bb84',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwbrg',['NEO_WBRG',['../_adafruit___neo_pixel_8h.html#a3eed3aeba511a2478a1ee8c17516732b',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwgbr',['NEO_WGBR',['../_adafruit___neo_pixel_8h.html#af722c80d41894df25c363b9ebf371b4e',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwgrb',['NEO_WGRB',['../_adafruit___neo_pixel_8h.html#a59561d96a0f8a526ee3448e7b104d8b3',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwrbg',['NEO_WRBG',['../_adafruit___neo_pixel_8h.html#a266a08af576ed4331db48b16bf572d29',1,'Adafruit_NeoPixel.h']]], + ['neo_5fwrgb',['NEO_WRGB',['../_adafruit___neo_pixel_8h.html#a4ee056fd3d7b09538908b35643a2508a',1,'Adafruit_NeoPixel.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html new file mode 100644 index 000000000..e6a82c4d5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_72.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js new file mode 100644 index 000000000..e29e58959 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_72.js @@ -0,0 +1,25 @@ +var searchData= +[ + ['reg_5ffifo_5fconfig',['REG_FIFO_CONFIG',['../_m_a_x30102_8h.html#ad1b1bbfe23c9461e0ae75b71b9f805ca',1,'MAX30102.h']]], + ['reg_5ffifo_5fdata',['REG_FIFO_DATA',['../_m_a_x30102_8h.html#a05bf6ede83fa400eac4dd65788d996fd',1,'MAX30102.h']]], + ['reg_5ffifo_5frd_5fptr',['REG_FIFO_RD_PTR',['../_m_a_x30102_8h.html#a3b9d75d4ac3cb579e8b46dea27f4303f',1,'MAX30102.h']]], + ['reg_5ffifo_5fwr_5fptr',['REG_FIFO_WR_PTR',['../_m_a_x30102_8h.html#aba8c69cb46224fb35783f5b60e75b115',1,'MAX30102.h']]], + ['reg_5fintr_5fenable_5f1',['REG_INTR_ENABLE_1',['../_m_a_x30102_8h.html#ae07f3c26106a0a37b6eddd8d2653137d',1,'MAX30102.h']]], + ['reg_5fintr_5fenable_5f2',['REG_INTR_ENABLE_2',['../_m_a_x30102_8h.html#ab8d58d945ad576d492f669c7b9affbf1',1,'MAX30102.h']]], + ['reg_5fintr_5fstatus_5f1',['REG_INTR_STATUS_1',['../_m_a_x30102_8h.html#a7d161a2394a67a2176d549edb94f4191',1,'MAX30102.h']]], + ['reg_5fintr_5fstatus_5f2',['REG_INTR_STATUS_2',['../_m_a_x30102_8h.html#a61d809a1e313a2787b23e96de9554c4a',1,'MAX30102.h']]], + ['reg_5fled1_5fpa',['REG_LED1_PA',['../_m_a_x30102_8h.html#a5f3a6641b201203d41ed3d23b638a96b',1,'MAX30102.h']]], + ['reg_5fled2_5fpa',['REG_LED2_PA',['../_m_a_x30102_8h.html#a7df43b0f854c9caf2fe04ccdebb18d21',1,'MAX30102.h']]], + ['reg_5fmode_5fconfig',['REG_MODE_CONFIG',['../_m_a_x30102_8h.html#accdea52b28f1bd3f4cd63d05ab12887f',1,'MAX30102.h']]], + ['reg_5fmulti_5fled_5fctrl1',['REG_MULTI_LED_CTRL1',['../_m_a_x30102_8h.html#a9d333cff4d002cb1d09a319e6917bc5c',1,'MAX30102.h']]], + ['reg_5fmulti_5fled_5fctrl2',['REG_MULTI_LED_CTRL2',['../_m_a_x30102_8h.html#a05ed274928d49bb6ddd6def6e45fac10',1,'MAX30102.h']]], + ['reg_5fovf_5fcounter',['REG_OVF_COUNTER',['../_m_a_x30102_8h.html#af9c8026aa9a22fad4c22ee6b10613707',1,'MAX30102.h']]], + ['reg_5fpart_5fid',['REG_PART_ID',['../_m_a_x30102_8h.html#a46083d1b6d3e1d5f89b0f1598dc6d163',1,'MAX30102.h']]], + ['reg_5fpilot_5fpa',['REG_PILOT_PA',['../_m_a_x30102_8h.html#a371750304ec49457d3d38f60428f8ff1',1,'MAX30102.h']]], + ['reg_5fprox_5fint_5fthresh',['REG_PROX_INT_THRESH',['../_m_a_x30102_8h.html#a3d80b09e301a0155949b7c337ce5f5ab',1,'MAX30102.h']]], + ['reg_5frev_5fid',['REG_REV_ID',['../_m_a_x30102_8h.html#a16f4b970762f7e8aa1f5c7a780a48c23',1,'MAX30102.h']]], + ['reg_5fspo2_5fconfig',['REG_SPO2_CONFIG',['../_m_a_x30102_8h.html#a38546015e987a72b8c9eb13228237dd0',1,'MAX30102.h']]], + ['reg_5ftemp_5fconfig',['REG_TEMP_CONFIG',['../_m_a_x30102_8h.html#ad16bc92e2f92e516ca396214861a6379',1,'MAX30102.h']]], + ['reg_5ftemp_5ffrac',['REG_TEMP_FRAC',['../_m_a_x30102_8h.html#a5321d8a33f1225ab437032e0e8ecbb3d',1,'MAX30102.h']]], + ['reg_5ftemp_5fintr',['REG_TEMP_INTR',['../_m_a_x30102_8h.html#a579a9e43d89bdda85d9ccb206339d681',1,'MAX30102.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html new file mode 100644 index 000000000..913ae48c4 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_73.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js new file mode 100644 index 000000000..90ebde0f7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_73.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['scl_5fddr',['SCL_DDR',['../_soft_i2_c_master_8h.html#a5020a160f5b8f0a1697cfadbe778424b',1,'SoftI2CMaster.h']]], + ['scl_5fin',['SCL_IN',['../_soft_i2_c_master_8h.html#a10c618a025b8bdb8ea596fdc24197f49',1,'SoftI2CMaster.h']]], + ['scl_5fout',['SCL_OUT',['../_soft_i2_c_master_8h.html#a07204a69a1872edbb272cde4d0c1e23f',1,'SoftI2CMaster.h']]], + ['sda_5fddr',['SDA_DDR',['../_soft_i2_c_master_8h.html#a16bb6708250d17ee2118d29e4865a653',1,'SoftI2CMaster.h']]], + ['sda_5fin',['SDA_IN',['../_soft_i2_c_master_8h.html#ac4b553fc156d15aeeeaaf6cfe7695c83',1,'SoftI2CMaster.h']]], + ['sda_5fout',['SDA_OUT',['../_soft_i2_c_master_8h.html#ae154abbe60d159b6f4951ade68cc5fae',1,'SoftI2CMaster.h']]], + ['softi2dmaster_5fh_5f',['SOFTI2DMASTER_H_',['../_soft_i2_c_master_8h.html#ae00bf2b1fa56ce97ea467dc60682022c',1,'SoftI2CMaster.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html new file mode 100644 index 000000000..7c78f103f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="defines_74.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js new file mode 100644 index 000000000..549c70c68 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/defines_74.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['true',['true',['../algorithm_8h.html#a41f9c5fb8b08eb5dc3edce4dcb37fee7',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html new file mode 100644 index 000000000..5a8e45499 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_61.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js new file mode 100644 index 000000000..17135d4f1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_61.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['algorithm_2ecpp',['algorithm.cpp',['../algorithm_8cpp.html',1,'']]], + ['algorithm_2eh',['algorithm.h',['../algorithm_8h.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html new file mode 100644 index 000000000..d9d93006b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_6d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js new file mode 100644 index 000000000..913a4161e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_6d.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['main_2ecpp',['main.cpp',['../main_8cpp.html',1,'']]], + ['max30102_2ecpp',['MAX30102.cpp',['../_m_a_x30102_8cpp.html',1,'']]], + ['max30102_2eh',['MAX30102.h',['../_m_a_x30102_8h.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html new file mode 100644 index 000000000..609fb48fc --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_72.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js new file mode 100644 index 000000000..6f99fa1e7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_72.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rd117_5farduino_2eino',['RD117_ARDUINO.ino',['../_r_d117___a_r_d_u_i_n_o_8ino.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html new file mode 100644 index 000000000..e0de9e6b5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="files_73.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js new file mode 100644 index 000000000..50164c8f9 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/files_73.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['softi2cmaster_2eh',['SoftI2CMaster.h',['../_soft_i2_c_master_8h.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html new file mode 100644 index 000000000..cb54e927d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_5f.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js new file mode 100644 index 000000000..e95f60940 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_5f.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_5f_5fattribute_5f_5f',['__attribute__',['../_soft_i2_c_master_8h.html#a342f1dd5ca489cfb78fffa200fcee9d9',1,'SoftI2CMaster.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html new file mode 100644 index 000000000..7f395337e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_61.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js new file mode 100644 index 000000000..7140a912d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_61.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['adafruit_5fneopixel',['Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#ac314debe6917c8c9b320b785139c6e58',1,'Adafruit_NeoPixel::Adafruit_NeoPixel(uint16_t n, uint8_t p=6, neoPixelType t=NEO_GRB+NEO_KHZ800)'],['../class_adafruit___neo_pixel.html#ab1ac0c48cf3fd9185e40308c37f1d320',1,'Adafruit_NeoPixel::Adafruit_NeoPixel(void)']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html new file mode 100644 index 000000000..def0606e7 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_62.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js new file mode 100644 index 000000000..b3270dd3b --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_62.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['begin',['begin',['../class_adafruit___neo_pixel.html#aad78931e44ce43c9b9c460dba7c9bbb7',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html new file mode 100644 index 000000000..9ebe11d69 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_63.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js new file mode 100644 index 000000000..42109ea13 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_63.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['canshow',['canShow',['../class_adafruit___neo_pixel.html#ad38ce8112667b70ad7c411a98892af0e',1,'Adafruit_NeoPixel']]], + ['clear',['clear',['../class_adafruit___neo_pixel.html#ac8bb3912a3ce86b15842e79d0b421204',1,'Adafruit_NeoPixel']]], + ['color',['Color',['../class_adafruit___neo_pixel.html#ae3e6c2fabbee89d19487424acd8d9fec',1,'Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a9846704aaabd4e102beba5a5484d5738',1,'Adafruit_NeoPixel::Color(uint8_t r, uint8_t g, uint8_t b, uint8_t w)']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html new file mode 100644 index 000000000..d0ab42a3f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_67.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js new file mode 100644 index 000000000..efaa118b4 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_67.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['getbrightness',['getBrightness',['../class_adafruit___neo_pixel.html#a553bf1a0513094c73cb54a235f74ac7f',1,'Adafruit_NeoPixel']]], + ['getpixelcolor',['getPixelColor',['../class_adafruit___neo_pixel.html#a10a836ddc4ebd3e26b1e71a5875764fa',1,'Adafruit_NeoPixel']]], + ['getpixels',['getPixels',['../class_adafruit___neo_pixel.html#a18bc91d2bad52cf603814d4df6f33067',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html new file mode 100644 index 000000000..e2041976c --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_69.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js new file mode 100644 index 000000000..dd2ca0d2f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_69.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2c',['i2c',['../_m_a_x30102_8cpp.html#ae3e7ab47cd5395225bf7c67b8ee84976',1,'MAX30102.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html new file mode 100644 index 000000000..da371cfab --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_6c.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js new file mode 100644 index 000000000..7f8b68c5d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6c.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loop',['loop',['../_r_d117___a_r_d_u_i_n_o_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'RD117_ARDUINO.ino']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html new file mode 100644 index 000000000..d01ac5376 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_6d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js new file mode 100644 index 000000000..9fcea7bbc --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6d.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['main',['main',['../main_8cpp.html#ae66f6b31b5ad750f1fe042a706a4e3d4',1,'main.cpp']]], + ['maxim_5ffind_5fpeaks',['maxim_find_peaks',['../algorithm_8cpp.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num): algorithm.cpp'],['../algorithm_8h.html#a2a4e5ddbe0e04c48b166f2ff176667a9',1,'maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num): algorithm.cpp']]], + ['maxim_5fheart_5frate_5fand_5foxygen_5fsaturation',['maxim_heart_rate_and_oxygen_saturation',['../algorithm_8cpp.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid): algorithm.cpp'],['../algorithm_8h.html#a62050365673e666cd0d661a3664c26e6',1,'maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, int32_t *pn_heart_rate, int8_t *pch_hr_valid): algorithm.cpp']]], + ['maxim_5fmax30102_5finit',['maxim_max30102_init',['../_m_a_x30102_8cpp.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init(): MAX30102.cpp'],['../_m_a_x30102_8h.html#a4113aeee76935425d8a557a79a4193df',1,'maxim_max30102_init(): MAX30102.cpp']]], + ['maxim_5fmax30102_5fread_5ffifo',['maxim_max30102_read_fifo',['../_m_a_x30102_8cpp.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led): MAX30102.cpp'],['../_m_a_x30102_8h.html#a483073cbc9dbb7a5a2495ce2ae4fb968',1,'maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led): MAX30102.cpp']]], + ['maxim_5fmax30102_5fread_5freg',['maxim_max30102_read_reg',['../_m_a_x30102_8cpp.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data): MAX30102.cpp'],['../_m_a_x30102_8h.html#a0cd2c5a58e57ebbe8c9361384798331f',1,'maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data): MAX30102.cpp']]], + ['maxim_5fmax30102_5freset',['maxim_max30102_reset',['../_m_a_x30102_8cpp.html#a1df3bb178b66379a2975c56395c47d9b',1,'maxim_max30102_reset(): MAX30102.cpp'],['../_m_a_x30102_8h.html#a94ab5935f6ce28aa5ce31aa842eb83dd',1,'maxim_max30102_reset(void): MAX30102.cpp']]], + ['maxim_5fmax30102_5fwrite_5freg',['maxim_max30102_write_reg',['../_m_a_x30102_8cpp.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data): MAX30102.cpp'],['../_m_a_x30102_8h.html#a4c2ec1539c1ec8354cdaefe2c3bf48d6',1,'maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data): MAX30102.cpp']]], + ['maxim_5fpeaks_5fabove_5fmin_5fheight',['maxim_peaks_above_min_height',['../algorithm_8cpp.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height): algorithm.cpp'],['../algorithm_8h.html#aab95338e44281c269f0b9b0f529741bf',1,'maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height): algorithm.cpp']]], + ['maxim_5fremove_5fclose_5fpeaks',['maxim_remove_close_peaks',['../algorithm_8cpp.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance): algorithm.cpp'],['../algorithm_8h.html#adc6be68be81530d67a25c1a9905bec3a',1,'maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance): algorithm.cpp']]], + ['maxim_5fsort_5fascend',['maxim_sort_ascend',['../algorithm_8cpp.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size): algorithm.cpp'],['../algorithm_8h.html#a6cae46e51640b712afc2ebeefd2d51ff',1,'maxim_sort_ascend(int32_t *pn_x, int32_t n_size): algorithm.cpp']]], + ['maxim_5fsort_5findices_5fdescend',['maxim_sort_indices_descend',['../algorithm_8cpp.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size): algorithm.cpp'],['../algorithm_8h.html#a44b6312f81810d4deb64071d12ab0060',1,'maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size): algorithm.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html new file mode 100644 index 000000000..d734dd07e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_6e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js new file mode 100644 index 000000000..68c17a8b8 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_6e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['numpixels',['numPixels',['../class_adafruit___neo_pixel.html#ac893a5c07c41604539022af84665c04b',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html new file mode 100644 index 000000000..c62125ede --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_70.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js new file mode 100644 index 000000000..95bca2eec --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_70.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['pc',['pc',['../main_8cpp.html#a81e0624d7e9f10f8f7e52a569ba24753',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html new file mode 100644 index 000000000..774d577f5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_73.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js new file mode 100644 index 000000000..e2a01b1d2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_73.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['setbrightness',['setBrightness',['../class_adafruit___neo_pixel.html#afa1740af1d8eec971eada06d53901c53',1,'Adafruit_NeoPixel']]], + ['setpin',['setPin',['../class_adafruit___neo_pixel.html#a345b7a6f550461926ed5187b2df42d6b',1,'Adafruit_NeoPixel']]], + ['setpixelcolor',['setPixelColor',['../class_adafruit___neo_pixel.html#a0ec91c90f337e806cd98956514257cf1',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b)'],['../class_adafruit___neo_pixel.html#a35eda2252e3ed976a11d35cb8f4b2e41',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint8_t r, uint8_t g, uint8_t b, uint8_t w)'],['../class_adafruit___neo_pixel.html#abbf243cce591dc37be507cf173485bc8',1,'Adafruit_NeoPixel::setPixelColor(uint16_t n, uint32_t c)']]], + ['setup',['setup',['../_r_d117___a_r_d_u_i_n_o_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'RD117_ARDUINO.ino']]], + ['show',['show',['../class_adafruit___neo_pixel.html#ae335a7c214036a6c1734969f2bc3f4f7',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html new file mode 100644 index 000000000..2d61754d1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_75.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js new file mode 100644 index 000000000..ba520c8a2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_75.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['updatelength',['updateLength',['../class_adafruit___neo_pixel.html#a05542d574f1a9a73f9e3547990321944',1,'Adafruit_NeoPixel']]], + ['updatetype',['updateType',['../class_adafruit___neo_pixel.html#a65e59263e0f5a04c7202d4385d3a539b',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html new file mode 100644 index 000000000..fd1d3ce20 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="functions_7e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js new file mode 100644 index 000000000..5d71164d2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/functions_7e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['_7eadafruit_5fneopixel',['~Adafruit_NeoPixel',['../class_adafruit___neo_pixel.html#a16d970aa16f9d0128800346f4ca567db',1,'Adafruit_NeoPixel']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmeAS@N?(olHy`uVBq!ia0y~yU=U$oU=ZeDV_;yI(4)JRfq{Xuz$3Dlfq`2Xgc%uT z&5>YWU{FZ*2=ZlM$eqE!P~6AB@W6tBq3J3ELlrv%!>KI{48|@D3^HXcW?Fk07#MeY zx;TbZ+<G!)cbAf*NZbBfVpamXnDr}|0|kAqI9xF|Ff@3{{y|ivM$XXOSg`nIm`jV< zONW3Eks}9I<OXC-lD#>1W+|^)#0~pZkN$kUYB?uZb;*>P<#iv<{`%gy@B7i8HPa@a zY<XIAGHtWsOrJ^TpRWwjVqs$Zs1@L$X*t)g$Uq_?@|wEy)~KZyGX!|pj-HnETOO=) zT4}0Rpw`qADMo9;w9__APCnV<q2jbRu6}RI?QM)2(@%$JiJJHdFAVU|>N-@l_t>`F zS6{6bU-bC)`|t6@!v-s^W<3fH-gaA;;b@Ye?`4*TWtoctG(Kd@2(%^IBsBckbh^`p ziQ#x5!#(xbe|PL3$uD@+pFH{WQwE9t<1?0ZzTS1o#P`@^Lxz_nQVmgSzctvs{ZzGg z+Tn*2e%Ab3swu;F`DMw4(pZKbx5fS9fB3%G_`fT&7VBp1d%WTP`_AK!mt4-wx&5rf zO0d^0bNg-n7ngY$ZO%_#_xe$#-1ghN^Ut?0(umO$ui7hj{PDyH9k<n2tGH_Sh=hi= zu39ypr*40|*=*lkclEBnp8EQ0*SgpB=ReGhxjwc1aO3a4erB_4*FO3G{CAZ!L*$BG W8K?Y@E@xn1VDNPHb6Mw<&;$UMruU8j literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html new file mode 100644 index 000000000..b1ded27e9 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/nomatches.html @@ -0,0 +1,12 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="NoMatches">No Matches</div> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html new file mode 100644 index 000000000..958ccc652 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="pages_6d.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js new file mode 100644 index 000000000..1608e57e1 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/pages_6d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['main_20page',['Main Page',['../index.html',1,'']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css new file mode 100644 index 000000000..eb19dd756 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.css @@ -0,0 +1,238 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + position: absolute; + float: none; + display: inline; + margin-top: 8px; + right: 0px; + width: 170px; + z-index: 102; + background-color: white; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:116px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:0px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #9CD3D1; + background-color: #FAFCFC; + z-index: 1; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #449D99; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #F0F8F8; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #49A8A3; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #49A8A3; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js new file mode 100644 index 000000000..f2384114e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search.js @@ -0,0 +1,805 @@ +// Search script generated by doxygen +// Copyright (C) 2009 by Dimitri van Heesch. + +// The code in this file is loosly based on main.js, part of Natural Docs, +// which is Copyright (C) 2003-2008 Greg Valure +// Natural Docs is licensed under the GPL. + +var indexSectionsWithContent = +{ + 0: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000111001011000110101011000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 1: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 2: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000001000100100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 3: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000101000000000010000001000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 4: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000010001011000100001010000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000", + 5: "0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000100000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000" +}; + +var indexSectionNames = +{ + 0: "all", + 1: "files", + 2: "functions", + 3: "variables", + 4: "defines", + 5: "pages" +}; + +function convertToId(search) +{ + var result = ''; + for (i=0;i<search.length;i++) + { + var c = search.charAt(i); + var cn = c.charCodeAt(0); + if (c.match(/[a-z0-9]/)) + { + result+=c; + } + else if (cn<16) + { + result+="_0"+cn.toString(16); + } + else + { + result+="_"+cn.toString(16); + } + } + return result; +} + +function getXPos(item) +{ + var x = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + x += item.offsetLeft; + item = item.offsetParent; + } + } + return x; +} + +function getYPos(item) +{ + var y = 0; + if (item.offsetWidth) + { + while (item && item!=document.body) + { + y += item.offsetTop; + item = item.offsetParent; + } + } + return y; +} + +/* A class handling everything associated with the search panel. + + Parameters: + name - The name of the global variable that will be + storing this instance. Is needed to be able to set timeouts. + resultPath - path to use for external files +*/ +function SearchBox(name, resultsPath, inFrame, label) +{ + if (!name || !resultsPath) { alert("Missing parameters to SearchBox."); } + + // ---------- Instance variables + this.name = name; + this.resultsPath = resultsPath; + this.keyTimeout = 0; + this.keyTimeoutLength = 500; + this.closeSelectionTimeout = 300; + this.lastSearchValue = ""; + this.lastResultsPage = ""; + this.hideTimeout = 0; + this.searchIndex = 0; + this.searchActive = false; + this.insideFrame = inFrame; + this.searchLabel = label; + + // ----------- DOM Elements + + this.DOMSearchField = function() + { return document.getElementById("MSearchField"); } + + this.DOMSearchSelect = function() + { return document.getElementById("MSearchSelect"); } + + this.DOMSearchSelectWindow = function() + { return document.getElementById("MSearchSelectWindow"); } + + this.DOMPopupSearchResults = function() + { return document.getElementById("MSearchResults"); } + + this.DOMPopupSearchResultsWindow = function() + { return document.getElementById("MSearchResultsWindow"); } + + this.DOMSearchClose = function() + { return document.getElementById("MSearchClose"); } + + this.DOMSearchBox = function() + { return document.getElementById("MSearchBox"); } + + // ------------ Event Handlers + + // Called when focus is added or removed from the search field. + this.OnSearchFieldFocus = function(isActive) + { + this.Activate(isActive); + } + + this.OnSearchSelectShow = function() + { + var searchSelectWindow = this.DOMSearchSelectWindow(); + var searchField = this.DOMSearchSelect(); + + if (this.insideFrame) + { + var left = getXPos(searchField); + var top = getYPos(searchField); + left += searchField.offsetWidth + 6; + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + left -= searchSelectWindow.offsetWidth; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + else + { + var left = getXPos(searchField); + var top = getYPos(searchField); + top += searchField.offsetHeight; + + // show search selection popup + searchSelectWindow.style.display='block'; + searchSelectWindow.style.left = left + 'px'; + searchSelectWindow.style.top = top + 'px'; + } + + // stop selection hide timer + if (this.hideTimeout) + { + clearTimeout(this.hideTimeout); + this.hideTimeout=0; + } + return false; // to avoid "image drag" default event + } + + this.OnSearchSelectHide = function() + { + this.hideTimeout = setTimeout(this.name +".CloseSelectionWindow()", + this.closeSelectionTimeout); + } + + // Called when the content of the search field is changed. + this.OnSearchFieldChange = function(evt) + { + if (this.keyTimeout) // kill running timer + { + clearTimeout(this.keyTimeout); + this.keyTimeout = 0; + } + + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 || e.keyCode==13) + { + if (e.shiftKey==1) + { + this.OnSearchSelectShow(); + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + child.focus(); + return; + } + } + return; + } + else if (window.frames.MSearchResults.searchResults) + { + var elem = window.frames.MSearchResults.searchResults.NavNext(0); + if (elem) elem.focus(); + } + } + else if (e.keyCode==27) // Escape out of the search field + { + this.DOMSearchField().blur(); + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + this.Activate(false); + return; + } + + // strip whitespaces + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + + if (searchValue != this.lastSearchValue) // search value has changed + { + if (searchValue != "") // non-empty search + { + // set timer for search update + this.keyTimeout = setTimeout(this.name + '.Search()', + this.keyTimeoutLength); + } + else // empty search field + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.lastSearchValue = ''; + } + } + } + + this.SelectItemCount = function(id) + { + var count=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + count++; + } + } + return count; + } + + this.SelectItemSet = function(id) + { + var i,j=0; + var win=this.DOMSearchSelectWindow(); + for (i=0;i<win.childNodes.length;i++) + { + var child = win.childNodes[i]; // get span within a + if (child.className=='SelectItem') + { + var node = child.firstChild; + if (j==id) + { + node.innerHTML='•'; + } + else + { + node.innerHTML=' '; + } + j++; + } + } + } + + // Called when an search filter selection is made. + // set item with index id as the active item + this.OnSelectItem = function(id) + { + this.searchIndex = id; + this.SelectItemSet(id); + var searchValue = this.DOMSearchField().value.replace(/ +/g, ""); + if (searchValue!="" && this.searchActive) // something was found -> do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex<this.SelectItemCount()) // Down + { + this.searchIndex++; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==38 && this.searchIndex>0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var hexCode; + if (code<16) + { + hexCode="0"+code.toString(16); + } + else + { + hexCode=code.toString(16); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + if (indexSectionsWithContent[this.searchIndex].charAt(code) == '1') + { + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of <Search()>. + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; e<searchData.length; e++) + { + var id = searchData[e][0]; + var srResult = document.createElement('div'); + srResult.setAttribute('id','SR_'+id); + setClassAttr(srResult,'SRResult'); + var srEntry = document.createElement('div'); + setClassAttr(srEntry,'SREntry'); + var srLink = document.createElement('a'); + srLink.setAttribute('id','Item'+e); + setKeyActions(srLink,'return searchResults.Nav(event,'+e+')'); + setClassAttr(srLink,'SRSymbol'); + srLink.innerHTML = searchData[e][1][0]; + srEntry.appendChild(srLink); + if (searchData[e][1].length==2) // single result + { + srLink.setAttribute('href',searchData[e][1][1][0]); + if (searchData[e][1][1][1]) + { + srLink.setAttribute('target','_parent'); + } + var srScope = document.createElement('span'); + setClassAttr(srScope,'SRScope'); + srScope.innerHTML = searchData[e][1][1][2]; + srEntry.appendChild(srScope); + } + else // multiple results + { + srLink.setAttribute('href','javascript:searchResults.Toggle("SR_'+id+'")'); + var srChildren = document.createElement('div'); + setClassAttr(srChildren,'SRChildren'); + for (var c=0; c<searchData[e][1].length-1; c++) + { + var srChild = document.createElement('a'); + srChild.setAttribute('id','Item'+e+'_c'+c); + setKeyActions(srChild,'return searchResults.NavChild(event,'+e+','+c+')'); + setClassAttr(srChild,'SRScope'); + srChild.setAttribute('href',searchData[e][1][c+1][0]); + if (searchData[e][1][c+1][1]) + { + srChild.setAttribute('target','_parent'); + } + srChild.innerHTML = searchData[e][1][c+1][2]; + srChildren.appendChild(srChild); + } + srEntry.appendChild(srChildren); + } + srResult.appendChild(srEntry); + results.appendChild(srResult); + } +} + diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_l.png new file mode 100644 index 0000000000000000000000000000000000000000..c872f4da4a01d0754f923e6c94fd8159c0621bd1 GIT binary patch literal 604 zcmeAS@N?(olHy`uVBq!ia0y~yU=U$oU=ZeDV_;yI(4)JRfq{Xuz$3Dlfq`2Xgc%uT z&5>YWU{FZ*2=ZlM$eqE!P~6AB@W6tBq3J3ELlrv%!>KI{48|@D3^HXcW?Fk07#JUU zx;TbZ+*%W2yZTmuMBTZQmWIB691Pq<-UPUa>(AXKdh6msy}Q;TUJL7&mF#u?-}0BW z>DJO_**jew3tXCyX{?p^yr<V&k-y#~WB%Jc1#<KHzstC}Sh%jgp1dvhdG77JUF&}5 zZN7OYXZvlI=Q2Hpf4Fs&-jwY=^Lfvi43nz2yWX|um{m_c{nW*3ZrifV01;KY#O0S0 zKmYu5vchKH)zZI}OM?WLWhzbea=dK9p?E-|+f{=hVQbV<^~oofCvE((DQd0K{PTwm zcsw)@TDr&VW>C2G)@;7t^7THKYXa9_PmB~RiEW=EG~Gc*jC*p&y=z&fcQ@%sv@t5O z=&^pcSs$r4eZK1{i|0GoY&e?S76w$5tlgx%aLT7lwaE_y)4qSd^!+cp{=C`6p`n{6 zh8~kRWUxp2ljPOs&tkkR*$QI1cf2mVW+Yhp?f2h{udXf?xVZgmm268QhtjTj0fAH2 z_dWh|=WW>!`3IdYkB%4Z{PWI&ujame)c*TrIfvX9f7Iq^y8W==g^n0Eiz9>5t{pP} z(pmRa%==zxAkmY)S<+Q?Zm_3|g$$pC?&ov)%n6z;KVDSMyZ!$A{pnsyk6#Q92^9@G zwO@o=QLd+bu3XgGX$%4Ci_BN8GUGk0p*GobVdktumi<!?zGq}GeR?(S!dsrd3=9km Mp00i_>zopr04E;^4gdfE literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_m.png new file mode 100644 index 0000000000000000000000000000000000000000..b429a16ba641960da1e52e5da85dc80fd82635c8 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0y~yU|?ckU=Zd2k*0Cpz6=ZuEa{HEjtmUfZd~z?Fk)a} zkSuYHC<)F_D=AMbN@Z|N$xljE@XSq2PYp^<OsOn9nQFtpz+m9%;uunKD@jLRKRqEK z!KUtyMaQonAC)_P{r_)2At{N0IVwO$KsqAt?k?6P3`{%>OWFBt>K?i-XJBAp@O1Ta JS?83{1OS@7FGc_W literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmeAS@N?(olHy`uVBq!ia0y~yU=U(pU=ZeDV_;yIJ1O=P0|NtRfk$L90|U1(2s1Lw znj^u$z@U)q5#-CjkUN8cp}3EM;eiDML(^3ThAMUjhErP@7>r#Q7-Y&?%(V70FfhLI zba4!+xV7ZU{#8<rB5WV>zs=vomAy2qdLnKjHCBRvI!?(cCvqrJpudOF7vL7ku& zCzXUQ6HTW8N5uuxuZC{k{ch8_cV|2&Y8>Kywrcs@!~MlGezuib$sXzya#HzOQx~Np zW<SkqY24PRzd?G_|GF(!?E8Hq!N7tuHL^{`Q-G!MgH8VCn>lq6(@LXPU%h8C`)oY> ziSK_WPnhzlp*6ANX_4pSj}gZT{~X-*_Icmq7KQ^$rl>0_HBAu;@>-JFrO~w^LdQUc zul4n=_t{%-`L4d&WpeC>CVP*eMi-M()4JCNJj^>|_}UUz1f5#``RAYX{rBsaK4?5D z!JN!9YuUm8jRip~7sRd4W{6vJ{k1!PTc2ZSXyPn2t*Kl&x3@JZRFs)*IsR>O=;~0l zmWnkp@t=1teQl+4x@q0(-ONieZ`};m>|(lXGBZ))ba$Bbv44JL<)SVw59V+y{aO{% z?4c>x_OPvEU%ctXyzR};D{VtVYcH^>E>$^a>8m!`b^GmFCzk-dNKcN&uT^t>mR~M+ z>d0qU@RonGj`fq5@jsP+P0l@M8Mb<=1Yi67CWVT-dD|~nzf@mT%^|4h8(eTs@c71( z*z5DprrDnR>3zKL9pC!`6RC&w{{ttf+{oLWDB?Qb@_D{w^7g*RF2`&4vopk(yY(38 T+?dP2z`)??>gTe~DWM4f%J>KN literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html new file mode 100644 index 000000000..ebbf394de --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="typedefs_6e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js new file mode 100644 index 000000000..d74232e6f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/typedefs_6e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['neopixeltype',['neoPixelType',['../_adafruit___neo_pixel_8h.html#a6ff31bc7214a3ae338a80ed6142d69ff',1,'Adafruit_NeoPixel.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html new file mode 100644 index 000000000..ff1f937df --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_61.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js new file mode 100644 index 000000000..e5953b1ba --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_61.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['aun_5fir_5fbuffer',['aun_ir_buffer',['../main_8cpp.html#a07a24850120a56110cc2838d0afcafcf',1,'main.cpp']]], + ['aun_5fred_5fbuffer',['aun_red_buffer',['../main_8cpp.html#a85d1012c3814f9e393e6ff8d84e56723',1,'main.cpp']]], + ['auw_5fhamm',['auw_hamm',['../algorithm_8h.html#a1c25ffb675bce0db6a32fbf6ad514929',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html new file mode 100644 index 000000000..c649c81fb --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_63.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js new file mode 100644 index 000000000..4e7566ffc --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_63.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['ch_5fhr_5fvalid',['ch_hr_valid',['../main_8cpp.html#a43fb8ea97a26647405ca359095323280',1,'main.cpp']]], + ['ch_5fspo2_5fvalid',['ch_spo2_valid',['../main_8cpp.html#a2518324dce002f592cf6d7f0b1ad9024',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html new file mode 100644 index 000000000..4cc41d57f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_6e.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js new file mode 100644 index 000000000..31433021e --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_6e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['n_5fheart_5frate',['n_heart_rate',['../main_8cpp.html#a3171c70bfa71c3a4f960bf3e8203d13f',1,'main.cpp']]], + ['n_5fir_5fbuffer_5flength',['n_ir_buffer_length',['../main_8cpp.html#ac16b6dd0e762f0ccc30e7102f97260d6',1,'main.cpp']]], + ['n_5fsp02',['n_sp02',['../main_8cpp.html#a786e6c57c793d9af51360154ef90eb93',1,'main.cpp']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html new file mode 100644 index 000000000..b9cc25cf2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.html @@ -0,0 +1,25 @@ +<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> +<html><head><title></title> +<meta http-equiv="Content-Type" content="text/xhtml;charset=UTF-8"/> +<link rel="stylesheet" type="text/css" href="search.css"/> +<script type="text/javascript" src="variables_75.js"></script> +<script type="text/javascript" src="search.js"></script> +</head> +<body class="SRPage"> +<div id="SRIndex"> +<div class="SRStatus" id="Loading">Loading...</div> +<div id="SRResults"></div> +<script type="text/javascript"><!-- +createResults(); +--></script> +<div class="SRStatus" id="Searching">Searching...</div> +<div class="SRStatus" id="NoMatches">No Matches</div> +<script type="text/javascript"><!-- +document.getElementById("Loading").style.display="none"; +document.getElementById("NoMatches").style.display="none"; +var searchResults = new SearchResults("searchResults"); +searchResults.Search(); +--></script> +</div> +</body> +</html> diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js new file mode 100644 index 000000000..48a3fb1a5 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/search/variables_75.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['uch_5fdummy',['uch_dummy',['../main_8cpp.html#ac5e493da8cbdd1414d56e8f08282fcc2',1,'main.cpp']]], + ['uch_5fspo2_5ftable',['uch_spo2_table',['../algorithm_8h.html#adfeeb6b08271807492803acc50347108',1,'algorithm.h']]] +]; diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..45760303ba90f1e25c871e4814f19e687944fcdc GIT binary patch literal 837 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuL8c|2VlLn;{G-u3ng370tV z@&AD{3TG6WoHTj(l=yhg_|)o8S$2^l=ZeXMu;AM(j$Cn%k({h%x{_O1`0^5N@v@ss zdM6%f&AYNAK-fTS*N3?pp%a}x2xf|UGatVEe)n9-cYE(BCfvAZx&Kb_`?+`C&nw<n zeD2y;=ijCcC8u2WM(BriB~8?f>#lyZYlqf9mV!rY1pyj$BGy8s2ZFxDseJrnU+5+y zexA|0kn4g%ov0{-@dM%NBhw#E_;L7;0kgsM{G+Xrd+yZe2<`7a{E{h0Xut2}Tn6Kh zn{Q0rb7D=l;VY@w{WkImd@qjA6R$lfCL`F*_@+iqzd<>FnVQG}k-9>k9VQMAZ&-AW zJ}vqfx}vHk_v3PgzNVd(HNmmoVat-&n{{ts%h*!xyYBkwce6BBcXb)N9XrM#!`s&< z5FK*j-ixBHB9oa6I%OFR=g*d(dj5Q){;sBgI>rM%Q-1udk^k9K(8#B15GiGP;MJ3> zQZM_a-ICzmygB%P#|iPgxS*5Qx>DPoY+Sl%l0MVq!_TIN)r+r7b&k9+X_wRjk8Izm zp(fnF4`g<~@?u`2t*QFpyzkxkcp(L?gSwXbkFQC@96C4ag#F1KQU{i9WsQtvxNKGW ze_Ns1c9sL@o_{+Qd{U|VZn9;#<jLJT?j+dV<Kz8UXQ3DW(2LbVAo^s>pJzMo)+9;a znY}));9X|c+t(Kv)&|{7d-r+SQpF-0xyQdAeNNx<^&5ka;FNc_<)ag?nBLYaEiHPS zy8fsBcaz53XBp+b?S1(EpyRgIRhr*^eq1u&XVU-w_Lsxv)n0N;{~vuI=+;)&Tei2p z$$Xxiv%UST(30v0@#{*;8GRP6+!MHI+1AH`?;klclx3SXgq2M6)(v>JW`d{rE%|<H zzfjrciyt{3T1b99`t>BktUcwXGZ~&8C`e+u@1<8(-`UJi{6xKWXRW)nZb|CpuQCsk z=ZdJG`OL6kirB~Q6U;MM=f=37)i=+#c=p&Y>GQ>_dT%zYWx5gTS2N?BX2PZ=x8>wJ z-YRMB6XSIfm%Hm>@}S{e*dpDJL5ue@zOiGNt-8$ALs|R=0|Nttr>mdKI;Vst0K(Fa A7XSbN literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e7d5d6950414f407065414aeff08e7008e488095 GIT binary patch literal 830 zcmeAS@N?(olHy`uVBq!ia0y~yV2}V|4mJh`h6m-gKNuL8Sv_4GLn;{G-u3knNtZbA z@&AVSL+e;IABlyDX*O}|=-#Rl=)I^BvnEraOOSWkj8&fg$BrCP`<jrH<YQCua%1N* z%}(*;OH%x~!iH+!0#s*3{9%~#L)2blEt^>4$4a%`r_UI8JM82;uYcxT-m^;kdEaZ- zAA9)Do^ey8mRYyk#-Nr~cN<~bM_oUh?=TiTW-ZtlAtU&9W%U8EUu*Qf{+0gNZK3yz zF?xq;hLC+1S3@L6*WO3jg#mN6*3D#&NS^+qluv(qoa>_=iz&JX)jnS4Im~7tt$uXg z7xweF{65ER&OR;9c!oLmP31?WyUp)iB^zchIM1K(_<M#S;|{LQ<U<!&1TQi^NRe<W zioVJf)^5+Zp;PZn`tz<Rrg>|WZ)qjXT5vNrL+sbznqcAck)blr-X39TID6tp^s8>M z&HDc=k5)!`FkIe}-BjA3d&>S)di|cpRj#cJ##)@MKeoLyPHMI4WiUHC>jC%c$@-}l zR@twAT9})EUgH<FD>YIzT6@~;eXCZa)TU&ea=LW;?#3uHonEGG8kbm(zVysqxn^0Y zg?d2smTe}7W=#qTPWEisp|bVr?!*f+v2O0ZvXyrCSC{1ZCM>BB5a3{_nXuq`|Me4| zDO|2*yX&9Smo95KeaiP*c1FpR|Hp(b32oN(Idz|D{dCp7lY75?F%<vx&Tyj7GI`#t zCcT}RoBstI-}Cgc*4tG-e{TQxJEqQr!^btG?X5#?bLINbvcd)ZtNrB|x4pQi^sY>8 z$Ja-e`tEKSlT8Kq+CJ>mS>^C*=C^lu?#BIUYiF3VYb(2zO?|h`0kNHN^42OR4`2WP z`S)SQ1g$MC=3ZAzzTSIw|A<Dz?5ndJ@=GS4&I#yyB{ALgxvXExv$K0j_>N7Uob*e{ zC-&E)voBeq4w$<z9<Y({)_t)5((Jp;A7u~N{B(?eXLGSmY}e|Sb$lQ8`E?6lD`mK` zD0q(0Pln<JlS{7rDtg_Rym#GlKKZ*Zlk|>jHC$dAa=65oF?eFG@qW#+jvY7jX0_zm sRZYk^biFF7^YqH;vmWz4_`>(*#NzXhesAz*U|?YIboFyt=akR{09cEP8vp<R literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..b058dc0cdfe4adc72cbc88f07b05f9ef1eaec70c GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq@~))5S5Qg7IzaN!|tn zp5mO)4-T&u+y6Ld({Q6+a!ygs#1ob=yCWHImlovoUN$OTF;%D4QRtzTpo6=H<zZvj zwa@eB_MBP1Ts=2zclCR_{d<euo(su8_x~^5D6M^#>A>PYss#)T3=E#GelF{r5}E*c C#Wl+S literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..30c50156ab818d3cefa72b6b499b6f43aa85c5ce GIT binary patch literal 160 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq^02)5S5Qg7NL$gS>|o zc-#_i+lMacn;z`9SD4GU^FTn_Tb{EVA5DYWe|)(o@x`{TsN7G@Vv6C0daF&9-}}O| zZ&W$wbS>#x9+tdT^q^fv<M!`cIRq0u181DrVDNwa*`vN|j#ND1EspTFvX{<%FZ4W< Qfq{X+)78&qol`;+0JuIq3;+NC literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_h.png new file mode 100644 index 0000000000000000000000000000000000000000..f3dd60c32b2d54215b77d478f91bc43d939a7b5e GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jG)5S5Qg7NL$SgvLV z9@mE|;f^uE@ilLD&)v2yL3W9VmHn%0F?~D47oRg@QokR|cJ{SW>OAj8p1UTCWZCz8 zZ|hKF+jGVJL&d9otJN$d>Z?9i*IzluDY)>}T7%67fs<VCE2@{uD9-GZGhVk}U+>#y ZMv-+Af#wmNoD2*M44$rjF6*2UngCAXJpcdz literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tab_s.png new file mode 100644 index 0000000000000000000000000000000000000000..a937f624bef5baf71a02200be0c632366fc3b466 GIT binary patch literal 177 zcmeAS@N?(olHy`uVBq!ia0y~yU|?imU{K*;Vqjo6E_OVcfq|jI)5S5Qg7NL$ey)QK z3<n;be!nsx!$m{b(>dpR{_VTDpR3~B<c_Ya>|g)h^vLVa&%V9cQKmaR?wVQ3$KpR% zTIM~MuxWpAquTvdR#5!rV$s{Lj&JI`wlp<VYTC688)ogisNyy$<EW4KGB2Y**5sM| jEdo7V?1%UN`Nx|4RwH3gj@MHL1_lOCS3j3^P6<r_)woPi literal 0 HcmV?d00001 diff --git a/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css new file mode 100644 index 000000000..35a7f75b8 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/Code_Documentation/html/tabs.css @@ -0,0 +1,60 @@ +.tabs, .tabs2, .tabs3 { + background-image: url('tab_b.png'); + width: 100%; + z-index: 101; + font-size: 13px; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +} + +.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: #306E6B; + 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/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp new file mode 100644 index 000000000..19bdf56c2 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.cpp @@ -0,0 +1,220 @@ +/** \file max30102.cpp ****************************************************** +* +* Project: MAXREFDES117# +* Filename: max30102.cpp +* Description: This module is an embedded controller driver for the MAX30102 +* +* +* -------------------------------------------------------------------- +* +* This code follows the following naming conventions: +* +* char ch_pmod_value +* char (array) s_pmod_s_string[16] +* float f_pmod_value +* int32_t n_pmod_value +* int32_t (array) an_pmod_value[16] +* int16_t w_pmod_value +* int16_t (array) aw_pmod_value[16] +* uint16_t uw_pmod_value +* uint16_t (array) auw_pmod_value[16] +* uint8_t uch_pmod_value +* uint8_t (array) auch_pmod_buffer[16] +* uint32_t un_pmod_value +* int32_t * pn_pmod_value +* +* ------------------------------------------------------------------------- */ +/******************************************************************************* +* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ +#include "mbed.h" +#include "MAX30102.h" + +#ifdef TARGET_MAX32600MBED +I2C i2c(I2C1_SDA, I2C1_SCL); +#else +I2C i2c(I2C_SDA, I2C_SCL); +#endif + +bool maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data) +/** +* \brief Write a value to a MAX30102 register +* \par Details +* This function writes a value to a MAX30102 register +* +* \param[in] uch_addr - register address +* \param[in] uch_data - register data +* +* \retval true on success +*/ +{ + char ach_i2c_data[2]; + ach_i2c_data[0]=uch_addr; + ach_i2c_data[1]=uch_data; + + if(i2c.write(I2C_WRITE_ADDR, ach_i2c_data, 2, false)==0) + return true; + else + return false; +} + +bool maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data) +/** +* \brief Read a MAX30102 register +* \par Details +* This function reads a MAX30102 register +* +* \param[in] uch_addr - register address +* \param[out] puch_data - pointer that stores the register data +* +* \retval true on success +*/ +{ + char ch_i2c_data; + ch_i2c_data=uch_addr; + if(i2c.write(I2C_WRITE_ADDR, &ch_i2c_data, 1, true)!=0) + return false; + if(i2c.read(I2C_READ_ADDR, &ch_i2c_data, 1, false)==0) + { + *puch_data=(uint8_t) ch_i2c_data; + return true; + } + else + return false; +} + +bool maxim_max30102_init() +/** +* \brief Initialize the MAX30102 +* \par Details +* This function initializes the MAX30102 +* +* \param None +* +* \retval true on success +*/ +{ + if(!maxim_max30102_write_reg(REG_INTR_ENABLE_1,0xc0)) // INTR setting + return false; + if(!maxim_max30102_write_reg(REG_INTR_ENABLE_2,0x00)) + return false; + if(!maxim_max30102_write_reg(REG_FIFO_WR_PTR,0x00)) //FIFO_WR_PTR[4:0] + return false; + if(!maxim_max30102_write_reg(REG_OVF_COUNTER,0x00)) //OVF_COUNTER[4:0] + return false; + if(!maxim_max30102_write_reg(REG_FIFO_RD_PTR,0x00)) //FIFO_RD_PTR[4:0] + return false; + if(!maxim_max30102_write_reg(REG_FIFO_CONFIG,0x0f)) //sample avg = 1, fifo rollover=false, fifo almost full = 17 + return false; + if(!maxim_max30102_write_reg(REG_MODE_CONFIG,0x03)) //0x02 for Red only, 0x03 for SpO2 mode 0x07 multimode LED + return false; + if(!maxim_max30102_write_reg(REG_SPO2_CONFIG,0x27)) // SPO2_ADC range = 4096nA, SPO2 sample rate (100 Hz), LED pulseWidth (400uS) + return false; + + if(!maxim_max30102_write_reg(REG_LED1_PA,0x24)) //Choose value for ~ 7mA for LED1 + return false; + if(!maxim_max30102_write_reg(REG_LED2_PA,0x24)) // Choose value for ~ 7mA for LED2 + return false; + if(!maxim_max30102_write_reg(REG_PILOT_PA,0x7f)) // Choose value for ~ 25mA for Pilot LED + return false; + return true; +} + +bool maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led) +/** +* \brief Read a set of samples from the MAX30102 FIFO register +* \par Details +* This function reads a set of samples from the MAX30102 FIFO register +* +* \param[out] *pun_red_led - pointer that stores the red LED reading data +* \param[out] *pun_ir_led - pointer that stores the IR LED reading data +* +* \retval true on success +*/ +{ + uint32_t un_temp; + unsigned char uch_temp; + *pun_red_led=0; + *pun_ir_led=0; + char ach_i2c_data[6]; + + //read and clear status register + maxim_max30102_read_reg(REG_INTR_STATUS_1, &uch_temp); + maxim_max30102_read_reg(REG_INTR_STATUS_2, &uch_temp); + + ach_i2c_data[0]=REG_FIFO_DATA; + if(i2c.write(I2C_WRITE_ADDR, ach_i2c_data, 1, true)!=0) + return false; + if(i2c.read(I2C_READ_ADDR, ach_i2c_data, 6, false)!=0) + { + return false; + } + un_temp=(unsigned char) ach_i2c_data[0]; + un_temp<<=16; + *pun_red_led+=un_temp; + un_temp=(unsigned char) ach_i2c_data[1]; + un_temp<<=8; + *pun_red_led+=un_temp; + un_temp=(unsigned char) ach_i2c_data[2]; + *pun_red_led+=un_temp; + + un_temp=(unsigned char) ach_i2c_data[3]; + un_temp<<=16; + *pun_ir_led+=un_temp; + un_temp=(unsigned char) ach_i2c_data[4]; + un_temp<<=8; + *pun_ir_led+=un_temp; + un_temp=(unsigned char) ach_i2c_data[5]; + *pun_ir_led+=un_temp; + *pun_red_led&=0x03FFFF; //Mask MSB [23:18] + *pun_ir_led&=0x03FFFF; //Mask MSB [23:18] + + + return true; +} + +bool maxim_max30102_reset() +/** +* \brief Reset the MAX30102 +* \par Details +* This function resets the MAX30102 +* +* \param None +* +* \retval true on success +*/ +{ + if(!maxim_max30102_write_reg(REG_MODE_CONFIG,0x40)) + return false; + else + return true; +} diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h new file mode 100644 index 000000000..031f9876d --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/MAX30102/MAX30102.h @@ -0,0 +1,97 @@ +/** \file max30102.h ****************************************************** +* +* Project: MAXREFDES117# +* Filename: max30102.h +* Description: This module is an embedded controller driver header file for MAX30102 +* +* +* -------------------------------------------------------------------- +* +* This code follows the following naming conventions: +* +* char ch_pmod_value +* char (array) s_pmod_s_string[16] +* float f_pmod_value +* int32_t n_pmod_value +* int32_t (array) an_pmod_value[16] +* int16_t w_pmod_value +* int16_t (array) aw_pmod_value[16] +* uint16_t uw_pmod_value +* uint16_t (array) auw_pmod_value[16] +* uint8_t uch_pmod_value +* uint8_t (array) auch_pmod_buffer[16] +* uint32_t un_pmod_value +* int32_t * pn_pmod_value +* +* ------------------------------------------------------------------------- */ +/******************************************************************************* +* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ +#ifndef MAX30102_H_ +#define MAX30102_H_ + +#include "mbed.h" + +#define I2C_WRITE_ADDR 0xAE +#define I2C_READ_ADDR 0xAF + +//register addresses +#define REG_INTR_STATUS_1 0x00 +#define REG_INTR_STATUS_2 0x01 +#define REG_INTR_ENABLE_1 0x02 +#define REG_INTR_ENABLE_2 0x03 +#define REG_FIFO_WR_PTR 0x04 +#define REG_OVF_COUNTER 0x05 +#define REG_FIFO_RD_PTR 0x06 +#define REG_FIFO_DATA 0x07 +#define REG_FIFO_CONFIG 0x08 +#define REG_MODE_CONFIG 0x09 +#define REG_SPO2_CONFIG 0x0A +#define REG_LED1_PA 0x0C +#define REG_LED2_PA 0x0D +#define REG_PILOT_PA 0x10 +#define REG_MULTI_LED_CTRL1 0x11 +#define REG_MULTI_LED_CTRL2 0x12 +#define REG_TEMP_INTR 0x1F +#define REG_TEMP_FRAC 0x20 +#define REG_TEMP_CONFIG 0x21 +#define REG_PROX_INT_THRESH 0x30 +#define REG_REV_ID 0xFE +#define REG_PART_ID 0xFF + +bool maxim_max30102_init(); +bool maxim_max30102_read_fifo(uint32_t *pun_red_led, uint32_t *pun_ir_led); +bool maxim_max30102_write_reg(uint8_t uch_addr, uint8_t uch_data); +bool maxim_max30102_read_reg(uint8_t uch_addr, uint8_t *puch_data); +bool maxim_max30102_reset(void); + +#endif /* MAX30102_H_ */ \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp new file mode 100644 index 000000000..409ec615f --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.cpp @@ -0,0 +1,363 @@ +/** \file algorithm.cpp ****************************************************** +* +* Project: MAXREFDES117# +* Filename: algorithm.cpp +* Description: This module calculates the heart rate/SpO2 level +* +* +* -------------------------------------------------------------------- +* +* This code follows the following naming conventions: +* +* char ch_pmod_value +* char (array) s_pmod_s_string[16] +* float f_pmod_value +* int32_t n_pmod_value +* int32_t (array) an_pmod_value[16] +* int16_t w_pmod_value +* int16_t (array) aw_pmod_value[16] +* uint16_t uw_pmod_value +* uint16_t (array) auw_pmod_value[16] +* uint8_t uch_pmod_value +* uint8_t (array) auch_pmod_buffer[16] +* uint32_t un_pmod_value +* int32_t * pn_pmod_value +* +* ------------------------------------------------------------------------- */ +/******************************************************************************* +* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ +#include "algorithm.h" +#include "mbed.h" + +void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer, int32_t n_ir_buffer_length, uint32_t *pun_red_buffer, int32_t *pn_spo2, int8_t *pch_spo2_valid, + int32_t *pn_heart_rate, int8_t *pch_hr_valid) +/** +* \brief Calculate the heart rate and SpO2 level +* \par Details +* By detecting peaks of PPG cycle and corresponding AC/DC of red/infra-red signal, the ratio for the SPO2 is computed. +* Since this algorithm is aiming for Arm M0/M3. formaula for SPO2 did not achieve the accuracy due to register overflow. +* Thus, accurate SPO2 is precalculated and save longo uch_spo2_table[] per each ratio. +* +* \param[in] *pun_ir_buffer - IR sensor data buffer +* \param[in] n_ir_buffer_length - IR sensor data buffer length +* \param[in] *pun_red_buffer - Red sensor data buffer +* \param[out] *pn_spo2 - Calculated SpO2 value +* \param[out] *pch_spo2_valid - 1 if the calculated SpO2 value is valid +* \param[out] *pn_heart_rate - Calculated heart rate value +* \param[out] *pch_hr_valid - 1 if the calculated heart rate value is valid +* +* \retval None +*/ +{ + uint32_t un_ir_mean ,un_only_once ; + int32_t k ,n_i_ratio_count; + int32_t i, s, m, n_exact_ir_valley_locs_count ,n_middle_idx; + int32_t n_th1, n_npks,n_c_min; + int32_t an_ir_valley_locs[15] ; + int32_t an_exact_ir_valley_locs[15] ; + int32_t an_dx_peak_locs[15] ; + int32_t n_peak_interval_sum; + + int32_t n_y_ac, n_x_ac; + int32_t n_spo2_calc; + int32_t n_y_dc_max, n_x_dc_max; + int32_t n_y_dc_max_idx, n_x_dc_max_idx; + int32_t an_ratio[5],n_ratio_average; + int32_t n_nume, n_denom ; + // remove DC of ir signal + un_ir_mean =0; + for (k=0 ; k<n_ir_buffer_length ; k++ ) un_ir_mean += pun_ir_buffer[k] ; + un_ir_mean =un_ir_mean/n_ir_buffer_length ; + for (k=0 ; k<n_ir_buffer_length ; k++ ) an_x[k] = pun_ir_buffer[k] - un_ir_mean ; + + // 4 pt Moving Average + for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){ + n_denom= ( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3]); + an_x[k]= n_denom/(int32_t)4; + } + + // get difference of smoothed IR signal + + for( k=0; k<BUFFER_SIZE-MA4_SIZE-1; k++) + an_dx[k]= (an_x[k+1]- an_x[k]); + + // 2-pt Moving Average to an_dx + for(k=0; k< BUFFER_SIZE-MA4_SIZE-2; k++){ + an_dx[k] = ( an_dx[k]+an_dx[k+1])/2 ; + } + + // hamming window + // flip wave form so that we can detect valley with peak detector + for ( i=0 ; i<BUFFER_SIZE-HAMMING_SIZE-MA4_SIZE-2 ;i++){ + s= 0; + for( k=i; k<i+ HAMMING_SIZE ;k++){ + s -= an_dx[k] *auw_hamm[k-i] ; + } + an_dx[i]= s/ (int32_t)1146; // divide by sum of auw_hamm + } + + + n_th1=0; // threshold calculation + for ( k=0 ; k<BUFFER_SIZE-HAMMING_SIZE ;k++){ + n_th1 += ((an_dx[k]>0)? an_dx[k] : ((int32_t)0-an_dx[k])) ; + } + n_th1= n_th1/ ( BUFFER_SIZE-HAMMING_SIZE); + // peak location is acutally index for sharpest location of raw signal since we flipped the signal + maxim_find_peaks( an_dx_peak_locs, &n_npks, an_dx, BUFFER_SIZE-HAMMING_SIZE, n_th1, 8, 5 );//peak_height, peak_distance, max_num_peaks + + n_peak_interval_sum =0; + if (n_npks>=2){ + for (k=1; k<n_npks; k++) + n_peak_interval_sum += (an_dx_peak_locs[k]-an_dx_peak_locs[k -1]); + n_peak_interval_sum=n_peak_interval_sum/(n_npks-1); + *pn_heart_rate=(int32_t)(6000/n_peak_interval_sum);// beats per minutes + *pch_hr_valid = 1; + } + else { + *pn_heart_rate = -999; + *pch_hr_valid = 0; + } + + for ( k=0 ; k<n_npks ;k++) + an_ir_valley_locs[k]=an_dx_peak_locs[k]+HAMMING_SIZE/2; + + + // raw value : RED(=y) and IR(=X) + // we need to assess DC and AC value of ir and red PPG. + for (k=0 ; k<n_ir_buffer_length ; k++ ) { + an_x[k] = pun_ir_buffer[k] ; + an_y[k] = pun_red_buffer[k] ; + } + + // find precise min near an_ir_valley_locs + n_exact_ir_valley_locs_count =0; + for(k=0 ; k<n_npks ;k++){ + un_only_once =1; + m=an_ir_valley_locs[k]; + n_c_min= 16777216;//2^24; + if (m+5 < BUFFER_SIZE-HAMMING_SIZE && m-5 >0){ + for(i= m-5;i<m+5; i++) + if (an_x[i]<n_c_min){ + if (un_only_once >0){ + un_only_once =0; + } + n_c_min= an_x[i] ; + an_exact_ir_valley_locs[k]=i; + } + if (un_only_once ==0) + n_exact_ir_valley_locs_count ++ ; + } + } + if (n_exact_ir_valley_locs_count <2 ){ + *pn_spo2 = -999 ; // do not use SPO2 since signal ratio is out of range + *pch_spo2_valid = 0; + return; + } + // 4 pt MA + for(k=0; k< BUFFER_SIZE-MA4_SIZE; k++){ + an_x[k]=( an_x[k]+an_x[k+1]+ an_x[k+2]+ an_x[k+3])/(int32_t)4; + an_y[k]=( an_y[k]+an_y[k+1]+ an_y[k+2]+ an_y[k+3])/(int32_t)4; + } + + //using an_exact_ir_valley_locs , find ir-red DC andir-red AC for SPO2 calibration ratio + //finding AC/DC maximum of raw ir * red between two valley locations + n_ratio_average =0; + n_i_ratio_count =0; + + for(k=0; k< 5; k++) an_ratio[k]=0; + for (k=0; k< n_exact_ir_valley_locs_count; k++){ + if (an_exact_ir_valley_locs[k] > BUFFER_SIZE ){ + *pn_spo2 = -999 ; // do not use SPO2 since valley loc is out of range + *pch_spo2_valid = 0; + return; + } + } + // find max between two valley locations + // and use ratio betwen AC compoent of Ir & Red and DC compoent of Ir & Red for SPO2 + + for (k=0; k< n_exact_ir_valley_locs_count-1; k++){ + n_y_dc_max= -16777216 ; + n_x_dc_max= - 16777216; + if (an_exact_ir_valley_locs[k+1]-an_exact_ir_valley_locs[k] >10){ + for (i=an_exact_ir_valley_locs[k]; i< an_exact_ir_valley_locs[k+1]; i++){ + if (an_x[i]> n_x_dc_max) {n_x_dc_max =an_x[i];n_x_dc_max_idx =i; } + if (an_y[i]> n_y_dc_max) {n_y_dc_max =an_y[i];n_y_dc_max_idx=i;} + } + n_y_ac= (an_y[an_exact_ir_valley_locs[k+1]] - an_y[an_exact_ir_valley_locs[k] ] )*(n_y_dc_max_idx -an_exact_ir_valley_locs[k]); //red + n_y_ac= an_y[an_exact_ir_valley_locs[k]] + n_y_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]) ; + + + n_y_ac= an_y[n_y_dc_max_idx] - n_y_ac; // subracting linear DC compoenents from raw + n_x_ac= (an_x[an_exact_ir_valley_locs[k+1]] - an_x[an_exact_ir_valley_locs[k] ] )*(n_x_dc_max_idx -an_exact_ir_valley_locs[k]); // ir + n_x_ac= an_x[an_exact_ir_valley_locs[k]] + n_x_ac/ (an_exact_ir_valley_locs[k+1] - an_exact_ir_valley_locs[k]); + n_x_ac= an_x[n_y_dc_max_idx] - n_x_ac; // subracting linear DC compoenents from raw + n_nume=( n_y_ac *n_x_dc_max)>>7 ; //prepare X100 to preserve floating value + n_denom= ( n_x_ac *n_y_dc_max)>>7; + if (n_denom>0 && n_i_ratio_count <5 && n_nume != 0) + { + an_ratio[n_i_ratio_count]= (n_nume*100)/n_denom ; //formular is ( n_y_ac *n_x_dc_max) / ( n_x_ac *n_y_dc_max) ; + n_i_ratio_count++; + } + } + } + + maxim_sort_ascend(an_ratio, n_i_ratio_count); + n_middle_idx= n_i_ratio_count/2; + + if (n_middle_idx >1) + n_ratio_average =( an_ratio[n_middle_idx-1] +an_ratio[n_middle_idx])/2; // use median + else + n_ratio_average = an_ratio[n_middle_idx ]; + + if( n_ratio_average>2 && n_ratio_average <184){ + n_spo2_calc= uch_spo2_table[n_ratio_average] ; + *pn_spo2 = n_spo2_calc ; + *pch_spo2_valid = 1;// float_SPO2 = -45.060*n_ratio_average* n_ratio_average/10000 + 30.354 *n_ratio_average/100 + 94.845 ; // for comparison with table + } + else{ + *pn_spo2 = -999 ; // do not use SPO2 since signal ratio is out of range + *pch_spo2_valid = 0; + } +} + + +void maxim_find_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num) +/** +* \brief Find peaks +* \par Details +* Find at most MAX_NUM peaks above MIN_HEIGHT separated by at least MIN_DISTANCE +* +* \retval None +*/ +{ + maxim_peaks_above_min_height( pn_locs, pn_npks, pn_x, n_size, n_min_height ); + maxim_remove_close_peaks( pn_locs, pn_npks, pn_x, n_min_distance ); + *pn_npks = min( *pn_npks, n_max_num ); +} + +void maxim_peaks_above_min_height(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height) +/** +* \brief Find peaks above n_min_height +* \par Details +* Find all peaks above MIN_HEIGHT +* +* \retval None +*/ +{ + int32_t i = 1, n_width; + *pn_npks = 0; + + while (i < n_size-1){ + if (pn_x[i] > n_min_height && pn_x[i] > pn_x[i-1]){ // find left edge of potential peaks + n_width = 1; + while (i+n_width < n_size && pn_x[i] == pn_x[i+n_width]) // find flat peaks + n_width++; + if (pn_x[i] > pn_x[i+n_width] && (*pn_npks) < 15 ){ // find right edge of peaks + pn_locs[(*pn_npks)++] = i; + // for flat peaks, peak location is left edge + i += n_width+1; + } + else + i += n_width; + } + else + i++; + } +} + + +void maxim_remove_close_peaks(int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance) +/** +* \brief Remove peaks +* \par Details +* Remove peaks separated by less than MIN_DISTANCE +* +* \retval None +*/ +{ + + int32_t i, j, n_old_npks, n_dist; + + /* Order peaks from large to small */ + maxim_sort_indices_descend( pn_x, pn_locs, *pn_npks ); + + for ( i = -1; i < *pn_npks; i++ ){ + n_old_npks = *pn_npks; + *pn_npks = i+1; + for ( j = i+1; j < n_old_npks; j++ ){ + n_dist = pn_locs[j] - ( i == -1 ? -1 : pn_locs[i] ); // lag-zero peak of autocorr is at index -1 + if ( n_dist > n_min_distance || n_dist < -n_min_distance ) + pn_locs[(*pn_npks)++] = pn_locs[j]; + } + } + + // Resort indices longo ascending order + maxim_sort_ascend( pn_locs, *pn_npks ); +} + +void maxim_sort_ascend(int32_t *pn_x,int32_t n_size) +/** +* \brief Sort array +* \par Details +* Sort array in ascending order (insertion sort algorithm) +* +* \retval None +*/ +{ + int32_t i, j, n_temp; + for (i = 1; i < n_size; i++) { + n_temp = pn_x[i]; + for (j = i; j > 0 && n_temp < pn_x[j-1]; j--) + pn_x[j] = pn_x[j-1]; + pn_x[j] = n_temp; + } +} + +void maxim_sort_indices_descend(int32_t *pn_x, int32_t *pn_indx, int32_t n_size) +/** +* \brief Sort indices +* \par Details +* Sort indices according to descending order (insertion sort algorithm) +* +* \retval None +*/ +{ + int32_t i, j, n_temp; + for (i = 1; i < n_size; i++) { + n_temp = pn_indx[i]; + for (j = i; j > 0 && pn_x[n_temp] > pn_x[pn_indx[j-1]]; j--) + pn_indx[j] = pn_indx[j-1]; + pn_indx[j] = n_temp; + } +} + diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h new file mode 100644 index 000000000..ec8cd7f67 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/algorithm/algorithm.h @@ -0,0 +1,100 @@ +/** \file algorithm.h ****************************************************** +* +* Project: MAXREFDES117# +* Filename: algorithm.h +* Description: This module is the heart rate/SpO2 calculation algorithm header file +* +* Revision History: +*\n 1-18-2016 Rev 01.00 SK Initial release. +*\n +* +* -------------------------------------------------------------------- +* +* This code follows the following naming conventions: +* +*\n char ch_pmod_value +*\n char (array) s_pmod_s_string[16] +*\n float f_pmod_value +*\n int32_t n_pmod_value +*\n int32_t (array) an_pmod_value[16] +*\n int16_t w_pmod_value +*\n int16_t (array) aw_pmod_value[16] +*\n uint16_t uw_pmod_value +*\n uint16_t (array) auw_pmod_value[16] +*\n uint8_t uch_pmod_value +*\n uint8_t (array) auch_pmod_buffer[16] +*\n uint32_t un_pmod_value +*\n int32_t * pn_pmod_value +* +* ------------------------------------------------------------------------- */ +/******************************************************************************* +* Copyright (C) 2015 Maxim Integrated Products, Inc., All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ +#ifndef ALGORITHM_H_ +#define ALGORITHM_H_ + +#include "mbed.h" + +#define true 1 +#define false 0 +#define FS 100 +#define BUFFER_SIZE (FS* 5) +#define HR_FIFO_SIZE 7 +#define MA4_SIZE 4 // DO NOT CHANGE +#define HAMMING_SIZE 5// DO NOT CHANGE +#define min(x,y) ((x) < (y) ? (x) : (y)) + +const uint16_t auw_hamm[31]={ 41, 276, 512, 276, 41 }; //Hamm= long16(512* hamming(5)'); +//uch_spo2_table is computed as -45.060*ratioAverage* ratioAverage + 30.354 *ratioAverage + 94.845 ; +const uint8_t uch_spo2_table[184]={ 95, 95, 95, 96, 96, 96, 97, 97, 97, 97, 97, 98, 98, 98, 98, 98, 99, 99, 99, 99, + 99, 99, 99, 99, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, 100, + 100, 100, 100, 100, 99, 99, 99, 99, 99, 99, 99, 99, 98, 98, 98, 98, 98, 98, 97, 97, + 97, 97, 96, 96, 96, 96, 95, 95, 95, 94, 94, 94, 93, 93, 93, 92, 92, 92, 91, 91, + 90, 90, 89, 89, 89, 88, 88, 87, 87, 86, 86, 85, 85, 84, 84, 83, 82, 82, 81, 81, + 80, 80, 79, 78, 78, 77, 76, 76, 75, 74, 74, 73, 72, 72, 71, 70, 69, 69, 68, 67, + 66, 66, 65, 64, 63, 62, 62, 61, 60, 59, 58, 57, 56, 56, 55, 54, 53, 52, 51, 50, + 49, 48, 47, 46, 45, 44, 43, 42, 41, 40, 39, 38, 37, 36, 35, 34, 33, 31, 30, 29, + 28, 27, 26, 25, 23, 22, 21, 20, 19, 17, 16, 15, 14, 12, 11, 10, 9, 7, 6, 5, + 3, 2, 1 } ; +static int32_t an_dx[ BUFFER_SIZE-MA4_SIZE]; // delta +static int32_t an_x[ BUFFER_SIZE]; //ir +static int32_t an_y[ BUFFER_SIZE]; //red + + +void maxim_heart_rate_and_oxygen_saturation(uint32_t *pun_ir_buffer , int32_t n_ir_buffer_length, uint32_t *pun_red_buffer , int32_t *pn_spo2, int8_t *pch_spo2_valid , int32_t *pn_heart_rate , int8_t *pch_hr_valid); +void maxim_find_peaks( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height, int32_t n_min_distance, int32_t n_max_num ); +void maxim_peaks_above_min_height( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_size, int32_t n_min_height ); +void maxim_remove_close_peaks( int32_t *pn_locs, int32_t *pn_npks, int32_t *pn_x, int32_t n_min_distance ); +void maxim_sort_ascend( int32_t *pn_x, int32_t n_size ); +void maxim_sort_indices_descend( int32_t *pn_x, int32_t *pn_indx, int32_t n_size); + +#endif /* ALGORITHM_H_ */ \ No newline at end of file diff --git a/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp new file mode 100644 index 000000000..8b4596c77 --- /dev/null +++ b/lib/vendor/Maxim/rd117_mbed/RD117_MBED/main.cpp @@ -0,0 +1,219 @@ +/** \file main.cpp ****************************************************** +* +* Project: MAXREFDES117# +* Filename: main.cpp +* Description: This module contains the Main application for the MAXREFDES117 example program. +* +* +* -------------------------------------------------------------------- +* +* This code follows the following naming conventions: +* +* char ch_pmod_value +* char (array) s_pmod_s_string[16] +* float f_pmod_value +* int32_t n_pmod_value +* int32_t (array) an_pmod_value[16] +* int16_t w_pmod_value +* int16_t (array) aw_pmod_value[16] +* uint16_t uw_pmod_value +* uint16_t (array) auw_pmod_value[16] +* uint8_t uch_pmod_value +* uint8_t (array) auch_pmod_buffer[16] +* uint32_t un_pmod_value +* int32_t * pn_pmod_value +* +* ------------------------------------------------------------------------- */ +/******************************************************************************* +* Copyright (C) 2016 Maxim Integrated Products, Inc., All Rights Reserved. +* +* Permission is hereby granted, free of charge, to any person obtaining a +* copy of this software and associated documentation files (the "Software"), +* to deal in the Software without restriction, including without limitation +* the rights to use, copy, modify, merge, publish, distribute, sublicense, +* and/or sell copies of the Software, and to permit persons to whom the +* Software is furnished to do so, subject to the following conditions: +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ +/*!\mainpage Main Page +* +* \section intro_sec Introduction +* +* This is the code documentation for the MAXREFDES117# subsystem reference design. +* +* The Files page contains the File List page and the Globals page. +* +* The Globals page contains the Functions, Variables, and Macros sub-pages. +* +* \image html MAXREFDES117_Block_Diagram.png "MAXREFDES117# System Block Diagram" +* +* \image html MAXREFDES117_firmware_Flowchart.png "MAXREFDES117# Firmware Flowchart" +* +*/ +#include "mbed.h" +#include "algorithm.h" +#include "MAX30102.h" + +#define MAX_BRIGHTNESS 255 + +uint32_t aun_ir_buffer[500]; //IR LED sensor data +int32_t n_ir_buffer_length; //data length +uint32_t aun_red_buffer[500]; //Red LED sensor data +int32_t n_sp02; //SPO2 value +int8_t ch_spo2_valid; //indicator to show if the SP02 calculation is valid +int32_t n_heart_rate; //heart rate value +int8_t ch_hr_valid; //indicator to show if the heart rate calculation is valid +uint8_t uch_dummy; + +Serial pc(USBTX, USBRX); //initializes the serial port +#ifdef TARGET_KL25Z +PwmOut led(PTB18); //initializes the pwm output that connects to the on board LED +DigitalIn INT(PTD1); //pin PTD1 connects to the interrupt output pin of the MAX30102 +#endif +#ifdef TARGET_K64F +DigitalIn INT(PTD1); //pin PTD1 connects to the interrupt output pin of the MAX30102 +#endif +#ifdef TARGET_MAX32600MBED +PwmOut led(LED_RED); //initializes the pwm output that connects to the on board LED +DigitalIn INT(P2_0); //pin P20 connects to the interrupt output pin of the MAX30102 +#endif + +// the setup routine runs once when you press reset: +int main() { + uint32_t un_min, un_max, un_prev_data; //variables to calculate the on-board LED brightness that reflects the heartbeats + int i; + int32_t n_brightness; + float f_temp; + + maxim_max30102_reset(); //resets the MAX30102 + // initialize serial communication at 115200 bits per second: + pc.baud(115200); + pc.format(8,SerialBase::None,1); + wait(1); + + //read and clear status register + maxim_max30102_read_reg(0,&uch_dummy); + + //wait until the user presses a key + while(pc.readable()==0) + { + pc.printf("\x1B[2J"); //clear terminal program screen + pc.printf("Press any key to start conversion\n\r"); + wait(1); + } + uch_dummy=getchar(); + + maxim_max30102_init(); //initializes the MAX30102 + + + n_brightness=0; + un_min=0x3FFFF; + un_max=0; + + n_ir_buffer_length=500; //buffer length of 100 stores 5 seconds of samples running at 100sps + + //read the first 500 samples, and determine the signal range + for(i=0;i<n_ir_buffer_length;i++) + { + while(INT.read()==1); //wait until the interrupt pin asserts + + maxim_max30102_read_fifo((aun_red_buffer+i), (aun_ir_buffer+i)); //read from MAX30102 FIFO + + if(un_min>aun_red_buffer[i]) + un_min=aun_red_buffer[i]; //update signal min + if(un_max<aun_red_buffer[i]) + un_max=aun_red_buffer[i]; //update signal max + pc.printf("red="); + pc.printf("%i", aun_red_buffer[i]); + pc.printf(", ir="); + pc.printf("%i\n\r", aun_ir_buffer[i]); + } + un_prev_data=aun_red_buffer[i]; + + + //calculate heart rate and SpO2 after first 500 samples (first 5 seconds of samples) + maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid); + + //Continuously taking samples from MAX30102. Heart rate and SpO2 are calculated every 1 second + while(1) + { + i=0; + un_min=0x3FFFF; + un_max=0; + + //dumping the first 100 sets of samples in the memory and shift the last 400 sets of samples to the top + for(i=100;i<500;i++) + { + aun_red_buffer[i-100]=aun_red_buffer[i]; + aun_ir_buffer[i-100]=aun_ir_buffer[i]; + + //update the signal min and max + if(un_min>aun_red_buffer[i]) + un_min=aun_red_buffer[i]; + if(un_max<aun_red_buffer[i]) + un_max=aun_red_buffer[i]; + } + + //take 100 sets of samples before calculating the heart rate. + for(i=400;i<500;i++) + { + un_prev_data=aun_red_buffer[i-1]; + while(INT.read()==1); + maxim_max30102_read_fifo((aun_red_buffer+i), (aun_ir_buffer+i)); + + if(aun_red_buffer[i]>un_prev_data) + { + f_temp=aun_red_buffer[i]-un_prev_data; + f_temp/=(un_max-un_min); + f_temp*=MAX_BRIGHTNESS; + n_brightness-=(int)f_temp; + if(n_brightness<0) + n_brightness=0; + } + else + { + f_temp=un_prev_data-aun_red_buffer[i]; + f_temp/=(un_max-un_min); + f_temp*=MAX_BRIGHTNESS; + n_brightness+=(int)f_temp; + if(n_brightness>MAX_BRIGHTNESS) + n_brightness=MAX_BRIGHTNESS; + } +#if defined(TARGET_KL25Z) || defined(TARGET_MAX32600MBED) + led.write(1-(float)n_brightness/256); +#endif + //send samples and calculation result to terminal program through UART + pc.printf("red="); + pc.printf("%i", aun_red_buffer[i]); + pc.printf(", ir="); + pc.printf("%i", aun_ir_buffer[i]); + pc.printf(", HR=%i, ", n_heart_rate); + pc.printf("HRvalid=%i, ", ch_hr_valid); + pc.printf("SpO2=%i, ", n_sp02); + pc.printf("SPO2Valid=%i\n\r", ch_spo2_valid); + } + maxim_heart_rate_and_oxygen_saturation(aun_ir_buffer, n_ir_buffer_length, aun_red_buffer, &n_sp02, &ch_spo2_valid, &n_heart_rate, &ch_hr_valid); + } +} + \ No newline at end of file -- GitLab