From 04ec064b49d6e79b2445a577ae7e186433cac409 Mon Sep 17 00:00:00 2001 From: shennongmin Date: Wed, 12 Aug 2015 17:42:51 +0800 Subject: [PATCH] Update doc. Signed-off-by: shennongmin --- NexWaveform.cpp | 2 +- doc/API-html/_nex_slice_8cpp_source.html | 126 ---- doc/API-html/_nex_touch_8cpp.html | 148 ---- doc/API-html/_nex_touch_8cpp_source.html | 645 ------------------ doc/API-html/_nex_touch_8h.html | 154 ----- doc/API-html/_nex_touch_8h_source.html | 178 ----- doc/API-html/class_nex_hotspot-members.html | 80 --- doc/API-html/class_nex_pointer-members.html | 78 --- doc/API-html/class_nex_pointer.html | 207 ------ doc/API-html/class_nex_pointer.png | Bin 428 -> 0 bytes doc/API-html/class_nex_slice.html | 178 ----- doc/API-html/class_nex_slice.png | Bin 419 -> 0 bytes doc/API-html/class_nex_touch.html | 485 ------------- doc/API-html/class_nex_touch.png | Bin 2299 -> 0 bytes doc/API-html/dynsections_8js_source.html | 168 ----- doc/API-html/index.hhc | 270 -------- doc/API-html/index.hhk | 153 ----- doc/API-html/index.hhp | 145 ---- doc/API-html/jquery_8js_source.html | 76 --- doc/API.chm | Bin 204340 -> 0 bytes doc/{API-html => API}/ITEAD-logo.JPG | Bin doc/API/Logo.png | Bin 0 -> 1659 bytes doc/API/NextionLogo32.png | Bin 0 -> 637 bytes .../_comp_button_8ino-example.html | 11 +- .../_comp_button_8ino_source.html | 95 +-- .../_comp_crop_8ino-example.html | 10 +- .../_comp_crop_8ino_source.html | 20 +- .../_comp_gauge_8ino-example.html} | 27 +- .../_comp_gauge_8ino_source.html} | 140 ++-- .../_comp_hotspot_8ino-example.html | 10 +- .../_comp_hotspot_8ino_source.html | 20 +- .../_comp_page_8ino-example.html | 10 +- .../_comp_page_8ino_source.html | 20 +- .../_comp_picture_8ino-example.html | 10 +- .../_comp_picture_8ino_source.html | 20 +- .../_comp_progress_bar_8ino-example.html | 11 +- .../_comp_progress_bar_8ino_source.html | 130 ++-- .../_comp_slider_8ino-example.html} | 45 +- .../_comp_slider_8ino_source.html} | 86 +-- .../_comp_text_8ino-example.html | 11 +- .../_comp_text_8ino_source.html | 168 +++-- doc/API/_comp_waveform_8ino-example.html | 111 +++ doc/API/_comp_waveform_8ino_source.html | 120 ++++ doc/{API-html => API}/_nex_button_8cpp.html | 4 +- .../_nex_button_8cpp_source.html | 22 +- doc/{API-html => API}/_nex_button_8h.html | 5 +- .../_nex_button_8h_source.html | 40 +- doc/{API-html => API}/_nex_crop_8cpp.html | 4 +- .../_nex_crop_8cpp_source.html | 22 +- doc/{API-html => API}/_nex_crop_8h.html | 5 +- .../_nex_crop_8h_source.html | 40 +- .../_nex_gauge_8cpp.html} | 18 +- .../_nex_gauge_8cpp_source.html} | 44 +- .../_nex_gauge_8h.html} | 21 +- .../_nex_gauge_8h_source.html} | 53 +- doc/API/_nex_hardware_8cpp.html | 302 ++++++++ doc/API/_nex_hardware_8cpp_source.html | 294 ++++++++ doc/API/_nex_hardware_8h.html | 302 ++++++++ doc/API/_nex_hardware_8h_source.html | 85 +++ doc/{API-html => API}/_nex_hotspot_8cpp.html | 4 +- .../_nex_hotspot_8cpp_source.html | 6 +- doc/{API-html => API}/_nex_hotspot_8h.html | 5 +- .../_nex_hotspot_8h_source.html | 44 +- doc/{API-html => API}/_nex_page_8cpp.html | 4 +- .../_nex_page_8cpp_source.html | 16 +- doc/{API-html => API}/_nex_page_8h.html | 5 +- .../_nex_page_8h_source.html | 38 +- doc/{API-html => API}/_nex_picture_8cpp.html | 4 +- .../_nex_picture_8cpp_source.html | 22 +- doc/{API-html => API}/_nex_picture_8h.html | 5 +- .../_nex_picture_8h_source.html | 40 +- .../_nex_progress_bar_8cpp.html | 4 +- .../_nex_progress_bar_8cpp_source.html | 22 +- .../_nex_progress_bar_8h.html | 5 +- .../_nex_progress_bar_8h_source.html | 34 +- .../_nex_serial_config_8h.html | 4 +- .../_nex_serial_config_8h_source.html | 4 +- .../_nex_slider_8cpp.html} | 32 +- doc/API/_nex_slider_8cpp_source.html | 113 +++ .../_nex_slider_8h.html} | 21 +- doc/API/_nex_slider_8h_source.html | 90 +++ doc/{API-html => API}/_nex_text_8cpp.html | 4 +- .../_nex_text_8cpp_source.html | 22 +- doc/{API-html => API}/_nex_text_8h.html | 5 +- .../_nex_text_8h_source.html | 40 +- .../_nex_touch_8cpp.html} | 18 +- doc/API/_nex_touch_8cpp_source.html | 191 ++++++ doc/API/_nex_touch_8h.html | 84 +++ doc/API/_nex_touch_8h_source.html | 121 ++++ doc/API/_nex_waveform_8cpp.html | 74 ++ doc/API/_nex_waveform_8cpp_source.html | 90 +++ doc/API/_nex_waveform_8h.html | 84 +++ .../_nex_waveform_8h_source.html} | 45 +- doc/API/_nextion_8h.html | 88 +++ doc/API/_nextion_8h_source.html | 94 +++ doc/{API-html => API}/annotated.html | 18 +- doc/{API-html => API}/bc_s.png | Bin doc/{API-html => API}/bdwn.png | Bin .../class_nex_button-members.html | 14 +- doc/{API-html => API}/class_nex_button.html | 33 +- doc/{API-html => API}/class_nex_button.png | Bin .../class_nex_crop-members.html | 14 +- doc/{API-html => API}/class_nex_crop.html | 29 +- doc/{API-html => API}/class_nex_crop.png | Bin doc/API/class_nex_gauge-members.html | 72 ++ doc/API/class_nex_gauge.html | 184 +++++ doc/API/class_nex_gauge.png | Bin 0 -> 437 bytes .../class_nex_hotspot-members.html} | 19 +- doc/{API-html => API}/class_nex_hotspot.html | 29 +- doc/{API-html => API}/class_nex_hotspot.png | Bin .../class_nex_page-members.html | 14 +- doc/{API-html => API}/class_nex_page.html | 29 +- doc/{API-html => API}/class_nex_page.png | Bin .../class_nex_picture-members.html | 14 +- doc/{API-html => API}/class_nex_picture.html | 29 +- doc/{API-html => API}/class_nex_picture.png | Bin .../class_nex_progress_bar-members.html | 14 +- .../class_nex_progress_bar.html | 29 +- .../class_nex_progress_bar.png | Bin .../class_nex_slider-members.html} | 22 +- doc/API/class_nex_slider.html | 228 +++++++ doc/API/class_nex_slider.png | Bin 0 -> 422 bytes .../class_nex_text-members.html | 14 +- doc/{API-html => API}/class_nex_text.html | 33 +- doc/{API-html => API}/class_nex_text.png | Bin doc/API/class_nex_touch-members.html | 69 ++ doc/API/class_nex_touch.html | 250 +++++++ doc/API/class_nex_touch.png | Bin 0 -> 2814 bytes doc/API/class_nex_waveform-members.html | 71 ++ doc/API/class_nex_waveform.html | 158 +++++ doc/API/class_nex_waveform.png | Bin 0 -> 472 bytes doc/{API-html => API}/classes.html | 12 +- doc/{API-html => API}/closed.png | Bin ...dir_472f54fb1d9b74971d8e15d62f212bd3.html} | 12 +- ...dir_4b43661efaa18af91f213d2681ebd37e.html} | 14 +- .../dir_7962cac16a99e8bbaaea18abede03fcb.html | 4 +- .../dir_8dcbebf38b229bfa7bb34d68bf824093.html | 4 +- .../dir_9bbf8342b0f9a157b7af08fe1412fc17.html | 4 +- ...dir_a48692e2802a027399b146b680655303.html} | 12 +- .../dir_c918e8bf3fc71f849978cdb0d900e61c.html | 4 +- .../dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html | 4 +- .../dir_d28a4824dc47e487b107a5db32ef43c4.html | 12 +- .../dir_f3d39c87bc262720c50d5e3885667b8a.html | 4 +- .../dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html | 4 +- doc/{API-html => API}/doxygen.css | 0 doc/{API-html => API}/doxygen.png | Bin doc/{API-html => API}/dynsections.js | 0 doc/{API-html => API}/examples.html | 12 +- doc/{API-html => API}/files.html | 65 +- doc/{API-html => API}/ftv2blank.png | Bin doc/{API-html => API}/ftv2doc.png | Bin doc/{API-html => API}/ftv2folderclosed.png | Bin doc/{API-html => API}/ftv2folderopen.png | Bin doc/{API-html => API}/ftv2lastnode.png | Bin doc/{API-html => API}/ftv2link.png | Bin doc/{API-html => API}/ftv2mlastnode.png | Bin doc/{API-html => API}/ftv2mnode.png | Bin doc/{API-html => API}/ftv2node.png | Bin doc/{API-html => API}/ftv2plastnode.png | Bin doc/{API-html => API}/ftv2pnode.png | Bin doc/{API-html => API}/ftv2splitbar.png | Bin doc/{API-html => API}/ftv2vertline.png | Bin doc/{API-html => API}/functions.html | 58 +- doc/{API-html => API}/functions_func.html | 58 +- doc/{API-html => API}/globals.html | 28 +- doc/{API-html => API}/globals_func.html | 28 +- doc/{API-html => API}/hierarchy.html | 16 +- doc/{API-html => API}/index.html | 11 +- doc/{API-html => API}/jquery.js | 0 doc/{API-html => API}/md_readme.html | 4 +- doc/{API-html => API}/nav_f.png | Bin doc/{API-html => API}/nav_g.png | Bin doc/{API-html => API}/nav_h.png | Bin doc/{API-html => API}/open.png | Bin doc/{API-html => API}/pages.html | 4 +- doc/{API-html => API}/readme_8md_source.html | 130 ++-- doc/{API-html => API}/sync_off.png | Bin doc/{API-html => API}/sync_on.png | Bin doc/{API-html => API}/tab_a.png | Bin doc/{API-html => API}/tab_b.png | Bin doc/{API-html => API}/tab_h.png | Bin doc/{API-html => API}/tab_s.png | Bin doc/{API-html => API}/tabs.css | 0 doc/Logo.png | Bin 0 -> 1659 bytes doxygen.doxy | 8 +- readme.md | 7 +- 186 files changed, 4424 insertions(+), 4392 deletions(-) delete mode 100644 doc/API-html/_nex_slice_8cpp_source.html delete mode 100644 doc/API-html/_nex_touch_8cpp.html delete mode 100644 doc/API-html/_nex_touch_8cpp_source.html delete mode 100644 doc/API-html/_nex_touch_8h.html delete mode 100644 doc/API-html/_nex_touch_8h_source.html delete mode 100644 doc/API-html/class_nex_hotspot-members.html delete mode 100644 doc/API-html/class_nex_pointer-members.html delete mode 100644 doc/API-html/class_nex_pointer.html delete mode 100644 doc/API-html/class_nex_pointer.png delete mode 100644 doc/API-html/class_nex_slice.html delete mode 100644 doc/API-html/class_nex_slice.png delete mode 100644 doc/API-html/class_nex_touch.html delete mode 100644 doc/API-html/class_nex_touch.png delete mode 100644 doc/API-html/dynsections_8js_source.html delete mode 100644 doc/API-html/index.hhc delete mode 100644 doc/API-html/index.hhk delete mode 100644 doc/API-html/index.hhp delete mode 100644 doc/API-html/jquery_8js_source.html delete mode 100644 doc/API.chm rename doc/{API-html => API}/ITEAD-logo.JPG (100%) create mode 100644 doc/API/Logo.png create mode 100644 doc/API/NextionLogo32.png rename doc/{API-html => API}/_comp_button_8ino-example.html (93%) rename doc/{API-html => API}/_comp_button_8ino_source.html (71%) rename doc/{API-html => API}/_comp_crop_8ino-example.html (92%) rename doc/{API-html => API}/_comp_crop_8ino_source.html (81%) rename doc/{API-html/_comp_pointer_8ino-example.html => API/_comp_gauge_8ino-example.html} (81%) rename doc/{API-html/_comp_pointer_8ino_source.html => API/_comp_gauge_8ino_source.html} (59%) rename doc/{API-html => API}/_comp_hotspot_8ino-example.html (94%) rename doc/{API-html => API}/_comp_hotspot_8ino_source.html (86%) rename doc/{API-html => API}/_comp_page_8ino-example.html (95%) rename doc/{API-html => API}/_comp_page_8ino_source.html (87%) rename doc/{API-html => API}/_comp_picture_8ino-example.html (93%) rename doc/{API-html => API}/_comp_picture_8ino_source.html (84%) rename doc/{API-html => API}/_comp_progress_bar_8ino-example.html (92%) rename doc/{API-html => API}/_comp_progress_bar_8ino_source.html (71%) rename doc/{API-html/_comp_slice_8ino-example.html => API/_comp_slider_8ino-example.html} (67%) rename doc/{API-html/_comp_slice_8ino_source.html => API/_comp_slider_8ino_source.html} (50%) rename doc/{API-html => API}/_comp_text_8ino-example.html (94%) rename doc/{API-html => API}/_comp_text_8ino_source.html (74%) create mode 100644 doc/API/_comp_waveform_8ino-example.html create mode 100644 doc/API/_comp_waveform_8ino_source.html rename doc/{API-html => API}/_nex_button_8cpp.html (96%) rename doc/{API-html => API}/_nex_button_8cpp_source.html (83%) rename doc/{API-html => API}/_nex_button_8h.html (95%) rename doc/{API-html => API}/_nex_button_8h_source.html (85%) rename doc/{API-html => API}/_nex_crop_8cpp.html (96%) rename doc/{API-html => API}/_nex_crop_8cpp_source.html (84%) rename doc/{API-html => API}/_nex_crop_8h.html (95%) rename doc/{API-html => API}/_nex_crop_8h_source.html (83%) rename doc/{API-html/_nex_slice_8cpp.html => API/_nex_gauge_8cpp.html} (78%) rename doc/{API-html/_nex_pointer_8cpp_source.html => API/_nex_gauge_8cpp_source.html} (54%) rename doc/{API-html/_nex_slice_8h.html => API/_nex_gauge_8h.html} (74%) rename doc/{API-html/_nex_slice_8h_source.html => API/_nex_gauge_8h_source.html} (50%) create mode 100644 doc/API/_nex_hardware_8cpp.html create mode 100644 doc/API/_nex_hardware_8cpp_source.html create mode 100644 doc/API/_nex_hardware_8h.html create mode 100644 doc/API/_nex_hardware_8h_source.html rename doc/{API-html => API}/_nex_hotspot_8cpp.html (96%) rename doc/{API-html => API}/_nex_hotspot_8cpp_source.html (97%) rename doc/{API-html => API}/_nex_hotspot_8h.html (95%) rename doc/{API-html => API}/_nex_hotspot_8h_source.html (85%) rename doc/{API-html => API}/_nex_page_8cpp.html (96%) rename doc/{API-html => API}/_nex_page_8cpp_source.html (86%) rename doc/{API-html => API}/_nex_page_8h.html (95%) rename doc/{API-html => API}/_nex_page_8h_source.html (84%) rename doc/{API-html => API}/_nex_picture_8cpp.html (96%) rename doc/{API-html => API}/_nex_picture_8cpp_source.html (83%) rename doc/{API-html => API}/_nex_picture_8h.html (95%) rename doc/{API-html => API}/_nex_picture_8h_source.html (85%) rename doc/{API-html => API}/_nex_progress_bar_8cpp.html (96%) rename doc/{API-html => API}/_nex_progress_bar_8cpp_source.html (80%) rename doc/{API-html => API}/_nex_progress_bar_8h.html (95%) rename doc/{API-html => API}/_nex_progress_bar_8h_source.html (84%) rename doc/{API-html => API}/_nex_serial_config_8h.html (96%) rename doc/{API-html => API}/_nex_serial_config_8h_source.html (97%) rename doc/{API-html/_nex_touch_8cpp-example.html => API/_nex_slider_8cpp.html} (61%) create mode 100644 doc/API/_nex_slider_8cpp_source.html rename doc/{API-html/_nex_pointer_8h.html => API/_nex_slider_8h.html} (72%) create mode 100644 doc/API/_nex_slider_8h_source.html rename doc/{API-html => API}/_nex_text_8cpp.html (96%) rename doc/{API-html => API}/_nex_text_8cpp_source.html (83%) rename doc/{API-html => API}/_nex_text_8h.html (95%) rename doc/{API-html => API}/_nex_text_8h_source.html (85%) rename doc/{API-html/_nex_pointer_8cpp.html => API/_nex_touch_8cpp.html} (84%) create mode 100644 doc/API/_nex_touch_8cpp_source.html create mode 100644 doc/API/_nex_touch_8h.html create mode 100644 doc/API/_nex_touch_8h_source.html create mode 100644 doc/API/_nex_waveform_8cpp.html create mode 100644 doc/API/_nex_waveform_8cpp_source.html create mode 100644 doc/API/_nex_waveform_8h.html rename doc/{API-html/_nex_pointer_8h_source.html => API/_nex_waveform_8h_source.html} (50%) create mode 100644 doc/API/_nextion_8h.html create mode 100644 doc/API/_nextion_8h_source.html rename doc/{API-html => API}/annotated.html (58%) rename doc/{API-html => API}/bc_s.png (100%) rename doc/{API-html => API}/bdwn.png (100%) rename doc/{API-html => API}/class_nex_button-members.html (63%) rename doc/{API-html => API}/class_nex_button.html (72%) rename doc/{API-html => API}/class_nex_button.png (100%) rename doc/{API-html => API}/class_nex_crop-members.html (59%) rename doc/{API-html => API}/class_nex_crop.html (67%) rename doc/{API-html => API}/class_nex_crop.png (100%) create mode 100644 doc/API/class_nex_gauge-members.html create mode 100644 doc/API/class_nex_gauge.html create mode 100644 doc/API/class_nex_gauge.png rename doc/{API-html/class_nex_touch-members.html => API/class_nex_hotspot-members.html} (65%) rename doc/{API-html => API}/class_nex_hotspot.html (72%) rename doc/{API-html => API}/class_nex_hotspot.png (100%) rename doc/{API-html => API}/class_nex_page-members.html (61%) rename doc/{API-html => API}/class_nex_page.html (70%) rename doc/{API-html => API}/class_nex_page.png (100%) rename doc/{API-html => API}/class_nex_picture-members.html (63%) rename doc/{API-html => API}/class_nex_picture.html (73%) rename doc/{API-html => API}/class_nex_picture.png (100%) rename doc/{API-html => API}/class_nex_progress_bar-members.html (61%) rename doc/{API-html => API}/class_nex_progress_bar.html (69%) rename doc/{API-html => API}/class_nex_progress_bar.png (100%) rename doc/{API-html/class_nex_slice-members.html => API/class_nex_slider-members.html} (57%) create mode 100644 doc/API/class_nex_slider.html create mode 100644 doc/API/class_nex_slider.png rename doc/{API-html => API}/class_nex_text-members.html (63%) rename doc/{API-html => API}/class_nex_text.html (72%) rename doc/{API-html => API}/class_nex_text.png (100%) create mode 100644 doc/API/class_nex_touch-members.html create mode 100644 doc/API/class_nex_touch.html create mode 100644 doc/API/class_nex_touch.png create mode 100644 doc/API/class_nex_waveform-members.html create mode 100644 doc/API/class_nex_waveform.html create mode 100644 doc/API/class_nex_waveform.png rename doc/{API-html => API}/classes.html (74%) rename doc/{API-html => API}/closed.png (100%) rename doc/{API-html/dir_376a8598cfd3d58455c161124a3e8051.html => API/dir_472f54fb1d9b74971d8e15d62f212bd3.html} (78%) rename doc/{API-html/dir_b88c8d0e6f18ad1bf0485502083131b8.html => API/dir_4b43661efaa18af91f213d2681ebd37e.html} (70%) rename doc/{API-html => API}/dir_7962cac16a99e8bbaaea18abede03fcb.html (95%) rename doc/{API-html => API}/dir_8dcbebf38b229bfa7bb34d68bf824093.html (95%) rename doc/{API-html => API}/dir_9bbf8342b0f9a157b7af08fe1412fc17.html (95%) rename doc/{API-html/dir_0726b97e666c2e7f518aadd1fe5118dc.html => API/dir_a48692e2802a027399b146b680655303.html} (83%) rename doc/{API-html => API}/dir_c918e8bf3fc71f849978cdb0d900e61c.html (95%) rename doc/{API-html => API}/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html (95%) rename doc/{API-html => API}/dir_d28a4824dc47e487b107a5db32ef43c4.html (83%) rename doc/{API-html => API}/dir_f3d39c87bc262720c50d5e3885667b8a.html (95%) rename doc/{API-html => API}/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html (95%) rename doc/{API-html => API}/doxygen.css (100%) rename doc/{API-html => API}/doxygen.png (100%) rename doc/{API-html => API}/dynsections.js (100%) rename doc/{API-html => API}/examples.html (87%) rename doc/{API-html => API}/files.html (65%) rename doc/{API-html => API}/ftv2blank.png (100%) rename doc/{API-html => API}/ftv2doc.png (100%) rename doc/{API-html => API}/ftv2folderclosed.png (100%) rename doc/{API-html => API}/ftv2folderopen.png (100%) rename doc/{API-html => API}/ftv2lastnode.png (100%) rename doc/{API-html => API}/ftv2link.png (100%) rename doc/{API-html => API}/ftv2mlastnode.png (100%) rename doc/{API-html => API}/ftv2mnode.png (100%) rename doc/{API-html => API}/ftv2node.png (100%) rename doc/{API-html => API}/ftv2plastnode.png (100%) rename doc/{API-html => API}/ftv2pnode.png (100%) rename doc/{API-html => API}/ftv2splitbar.png (100%) rename doc/{API-html => API}/ftv2vertline.png (100%) rename doc/{API-html => API}/functions.html (82%) rename doc/{API-html => API}/functions_func.html (82%) rename doc/{API-html => API}/globals.html (62%) rename doc/{API-html => API}/globals_func.html (61%) rename doc/{API-html => API}/hierarchy.html (62%) rename doc/{API-html => API}/index.html (90%) rename doc/{API-html => API}/jquery.js (100%) rename doc/{API-html => API}/md_readme.html (93%) rename doc/{API-html => API}/nav_f.png (100%) rename doc/{API-html => API}/nav_g.png (100%) rename doc/{API-html => API}/nav_h.png (100%) rename doc/{API-html => API}/open.png (100%) rename doc/{API-html => API}/pages.html (94%) rename doc/{API-html => API}/readme_8md_source.html (78%) rename doc/{API-html => API}/sync_off.png (100%) rename doc/{API-html => API}/sync_on.png (100%) rename doc/{API-html => API}/tab_a.png (100%) rename doc/{API-html => API}/tab_b.png (100%) rename doc/{API-html => API}/tab_h.png (100%) rename doc/{API-html => API}/tab_s.png (100%) rename doc/{API-html => API}/tabs.css (100%) create mode 100644 doc/Logo.png diff --git a/NexWaveform.cpp b/NexWaveform.cpp index e7a908f..d45e0ee 100644 --- a/NexWaveform.cpp +++ b/NexWaveform.cpp @@ -28,7 +28,7 @@ NexWaveform::NexWaveform(NexPid pid, NexCid cid, char *name) /** * Add value to show. * - * param ch - channel of waveform(0-3). + * @param ch - channel of waveform(0-3). * @param number - the value of waveform. * * @retval true - success. diff --git a/doc/API-html/_nex_slice_8cpp_source.html b/doc/API-html/_nex_slice_8cpp_source.html deleted file mode 100644 index 0d6e66e..00000000 --- a/doc/API-html/_nex_slice_8cpp_source.html +++ /dev/null @@ -1,126 +0,0 @@ - - - - - - -API: NexSlice.cpp Source File - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
-
-
NexSlice.cpp
-
-
-Go to the documentation of this file.
1 
-
16 #include "NexSlice.h"
-
17 
-
22 NexSlice::NexSlice(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop, void *pop_ptr)
-
23  :NexTouch(pid, cid, name, pop, pop_ptr)
-
24 {
-
25 }
-
26 
-
27 /*
-
28  * Get the number of picture.
-
29  *
-
30  * @param number - an output parameter to save the number of picture.
-
31  *
-
32  * @retval true - success.
-
33  * @retval false - failed.
-
34  */
-
35 bool NexSlice::getPic(uint32_t *number)
-
36 {
-
37  String cmd = String("get ");
-
38  cmd += getObjName();
-
39  cmd += ".picc";
-
40  sendCommand(cmd.c_str());
-
41  return recvRetNumber(number);
-
42 }
-
43 
-
44 /*
-
45  * Set the number of picture.
-
46  *
-
47  * @param number - the number of picture.
-
48  *
-
49  * @retval true - success.
-
50  * @retval false - failed.
-
51  */
-
52 bool NexSlice::setPic(uint32_t number)
-
53 {
-
54  char buf[10] = {0};
-
55  String cmd;
-
56 
-
57  utoa(number, buf, 10);
-
58  cmd += getObjName();
-
59  cmd += ".picc=";
-
60  cmd += buf;
-
61 
-
62  sendCommand(cmd.c_str());
-
63  return recvRetCommandFinished();
-
64 }
-
65 
-
72 void NexSlice::attachPop(NexTouchEventCb pop, void *ptr)
-
73 {
-
74  NexTouch::attachPop(pop, ptr);
-
75 }
-
76 
- -
82 {
-
83  NexTouch::detachPop();
-
84 }
-
85 
-
void detachPop(void)
Unload slice pop callback function.
Definition: NexSlice.cpp:81
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:261
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:112
-
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register slice pop callback function.
Definition: NexSlice.cpp:72
-
API of NexSlice.
-
NexSlice(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexSlice.cpp:22
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:356
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:224
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
- - - - diff --git a/doc/API-html/_nex_touch_8cpp.html b/doc/API-html/_nex_touch_8cpp.html deleted file mode 100644 index 9c4230b..00000000 --- a/doc/API-html/_nex_touch_8cpp.html +++ /dev/null @@ -1,148 +0,0 @@ - - - - - - -API: NexTouch.cpp File Reference - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
- -
-
NexTouch.cpp File Reference
-
-
- -

API of Nextion. -More...

-
#include "NexTouch.h"
-
-

Go to the source code of this file.

- - - - - - - - -

-Functions

bool nexInit (void)
 Init Nextion's baudrate,page id. More...
 
bool nexLoop (NexTouch **nex_listen_list)
 Call mainEventLoop,watting for Nextion's touch event. More...
 
-

Detailed Description

-

API of Nextion.

-
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
-
Date
2015/7/10
- - -

Definition in file NexTouch.cpp.

-

Function Documentation

- -
-
- - - - - - - - -
bool nexInit (void )
-
- -

Init Nextion's baudrate,page id.

-
Return values
- - - -
true- success.
false- failed.
-
-
-
Examples:
CompButton.ino, CompCrop.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompPointer.ino, CompProgressBar.ino, and CompText.ino.
-
-

Definition at line 398 of file NexTouch.cpp.

- -
-
- -
-
- - - - - - - - -
bool nexLoop (NexTouch ** nex_listen_list)
-
- -

Call mainEventLoop,watting for Nextion's touch event.

-
Parameters
- - -
nex_listen_list- index to Nextion Components list.
-
-
-
Return values
- - -
false- failed.
-
-
-
Examples:
CompButton.ino, CompCrop.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompPointer.ino, CompProgressBar.ino, and CompText.ino.
-
-

Definition at line 415 of file NexTouch.cpp.

- -
-
-
- - - - diff --git a/doc/API-html/_nex_touch_8cpp_source.html b/doc/API-html/_nex_touch_8cpp_source.html deleted file mode 100644 index 70805eb..00000000 --- a/doc/API-html/_nex_touch_8cpp_source.html +++ /dev/null @@ -1,645 +0,0 @@ - - - - - - -API: NexTouch.cpp Source File - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
-
-
NexTouch.cpp
-
-
-Go to the documentation of this file.
1 
-
16 #include "NexTouch.h"
-
17 
-
18 uint8_t NexTouch::__buffer[256] = {0};
-
19 
- -
27 {
-
28  uint16_t i;
-
29  uint8_t c;
-
30  while (nexSerial.available() > 0)
-
31  {
-
32  delay(10);
-
33  c = nexSerial.read();
-
34 
-
35  if (NEX_RET_EVENT_TOUCH_HEAD == c)
-
36  {
-
37  if (nexSerial.available() >= 6)
-
38  {
-
39  __buffer[0] = c;
-
40  for (i = 1; i < 7; i++)
-
41  {
-
42  __buffer[i] = nexSerial.read();
-
43  }
-
44  __buffer[i] = 0x00;
-
45 
-
46  if (0xFF == __buffer[4] && 0xFF == __buffer[5] && 0xFF == __buffer[6])
-
47  {
-
48  iterate(list, (NexPid)__buffer[1], (NexCid)__buffer[2], (NexEventType)__buffer[3]);
-
49  }
-
50 
-
51  }
-
52  }
-
53  }
-
54  return 0;
-
55 }
-
56 
-
69 NexTouch::NexTouch(NexPid pid, NexCid cid, char *name,
-
70  NexTouchEventCb pop, void *pop_ptr,
-
71  NexTouchEventCb push, void *push_ptr)
-
72 {
-
73  this->pid = pid;
-
74  this->cid = cid;
-
75  this->name = name;
-
76  this->cbPush = push;
-
77  this->cbPop = pop;
-
78  this->__cbpop_ptr = pop_ptr;
-
79  this->__cbpush_ptr = push_ptr;
-
80 }
-
81 
-
87 NexPid NexTouch::getPid(void)
-
88 {
-
89  return pid;
-
90 }
-
91 
-
97 NexCid NexTouch::getCid(void)
-
98 {
-
99  return cid;
-
100 }
-
101 
-
107 const char* NexTouch::getObjName(void)
-
108 {
-
109  return name;
-
110 }
-
111 
-
117 void NexTouch::print(void)
-
118 {
-
119  dbSerialPrint("[");
-
120  dbSerialPrint((uint32_t)this);
-
121  dbSerialPrint(":");
-
122  dbSerialPrint(pid);
-
123  dbSerialPrint(",");
-
124  dbSerialPrint(cid);
-
125  dbSerialPrint(",");
-
126  if (name)
-
127  {
-
128  dbSerialPrint(name);
-
129  }
-
130  else
-
131  {
-
132  dbSerialPrint("(null)");
-
133  }
-
134  dbSerialPrint(",");
-
135  dbSerialPrint((uint32_t)cbPush);
-
136  dbSerialPrint(",");
-
137  dbSerialPrint((uint32_t)cbPop);
-
138  dbSerialPrintln("]");
-
139 }
-
140 
-
141 void NexTouch::attachPush(NexTouchEventCb push, void *ptr)
-
142 {
-
143  this->cbPush = push;
-
144  this->__cbpush_ptr = ptr;
-
145 }
-
146 
-
147 void NexTouch::detachPush(void)
-
148 {
-
149  this->cbPush = NULL;
-
150  this->__cbpush_ptr = NULL;
-
151 }
-
152 
-
153 void NexTouch::attachPop(NexTouchEventCb pop, void *ptr)
-
154 {
-
155  this->cbPop = pop;
-
156  this->__cbpop_ptr = ptr;
-
157 }
-
158 
-
159 void NexTouch::detachPop(void)
-
160 {
-
161  this->cbPop = NULL;
-
162  this->__cbpop_ptr = NULL;
-
163 }
-
164 
-
165 void NexTouch::iterate(NexTouch **list, NexPid pid, NexCid cid, NexEventType event)
-
166 {
-
167  NexTouch *e = NULL;
-
168  uint16_t i = 0;
-
169 
-
170  if (NULL == list)
-
171  {
-
172  return;
-
173  }
-
174 
-
175  for(i = 0; (e = list[i]) != NULL; i++)
-
176  {
-
177  if (e->getPid() == pid && e->getCid() == cid)
-
178  {
-
179  e->print();
-
180  if (NEX_EVENT_PUSH == event)
-
181  {
-
182  e->push();
-
183  }
-
184  else if (NEX_EVENT_POP == event)
-
185  {
-
186  e->pop();
-
187  }
-
188 
-
189  break;
-
190  }
-
191  }
-
192 }
-
193 
-
194 void NexTouch::push(void)
-
195 {
-
196  if (cbPush)
-
197  {
-
198  cbPush(__cbpush_ptr);
-
199  }
-
200 }
-
201 
-
202 void NexTouch::pop(void)
-
203 {
-
204  if (cbPop)
-
205  {
-
206  cbPop(__cbpop_ptr);
-
207  }
-
208 }
-
209 
-
219 bool NexTouch::recvRetCommandFinished(uint32_t timeout)
-
220 {
-
221  bool ret = false;
-
222  uint8_t temp[4] = {0};
-
223 
-
224  nexSerial.setTimeout(timeout);
-
225  if (sizeof(temp) != nexSerial.readBytes((char *)temp, sizeof(temp)))
-
226  {
-
227  ret = false;
-
228  }
-
229 
-
230  if (temp[0] == NEX_RET_CMD_FINISHED
-
231  && temp[1] == 0xFF
-
232  && temp[2] == 0xFF
-
233  && temp[3] == 0xFF
-
234  )
-
235  {
-
236  ret = true;
-
237  }
-
238 
-
239  if (ret)
-
240  {
-
241  dbSerialPrintln("recvRetCommandFinished ok");
-
242  }
-
243  else
-
244  {
-
245  dbSerialPrintln("recvRetCommandFinished err");
-
246  }
-
247 
-
248  return ret;
-
249 }
-
250 
-
256 void NexTouch::sendCommand(const char* cmd)
-
257 {
-
258  while (nexSerial.available())
-
259  {
-
260  nexSerial.read();
-
261  }
-
262 
-
263  nexSerial.print(cmd);
-
264  nexSerial.write(0xFF);
-
265  nexSerial.write(0xFF);
-
266  nexSerial.write(0xFF);
-
267 }
-
268 
-
279 uint16_t NexTouch::recvRetString(char *buffer, uint16_t len, uint32_t timeout)
-
280 {
-
281  uint16_t ret = 0;
-
282  bool str_start_flag = false;
-
283  uint8_t cnt_0xff = 0;
-
284  String temp = String("");
-
285  uint8_t c = 0;
-
286  long start;
-
287 
-
288  if (!buffer || len == 0)
-
289  {
-
290  goto __return;
-
291  }
-
292 
-
293  start = millis();
-
294  while (millis() - start <= timeout)
-
295  {
-
296  while (nexSerial.available())
-
297  {
-
298  c = nexSerial.read();
-
299  if (str_start_flag)
-
300  {
-
301  if (0xFF == c)
-
302  {
-
303  cnt_0xff++;
-
304  if (cnt_0xff >= 3)
-
305  {
-
306  break;
-
307  }
-
308  }
-
309  else
-
310  {
-
311  temp += (char)c;
-
312  }
-
313  }
-
314  else if (NEX_RET_STRING_HEAD == c)
-
315  {
-
316  str_start_flag = true;
-
317  }
-
318  }
-
319 
-
320  if (cnt_0xff >= 3)
-
321  {
-
322  break;
-
323  }
-
324  }
-
325 
-
326  ret = temp.length();
-
327  ret = ret > len ? len : ret;
-
328  strncpy(buffer, temp.c_str(), ret);
-
329 
-
330 __return:
-
331 
-
332  dbSerialPrint("recvRetString[");
-
333  dbSerialPrint(temp.length());
-
334  dbSerialPrint(",");
-
335  dbSerialPrint(temp);
-
336  dbSerialPrintln("]");
-
337 
-
338  return ret;
-
339 }
-
340 
-
351 bool NexTouch::recvRetNumber(uint32_t *number, uint32_t timeout)
-
352 {
-
353  bool ret = false;
-
354  uint8_t temp[8] = {0};
-
355 
-
356  if (!number)
-
357  {
-
358  goto __return;
-
359  }
-
360 
-
361  nexSerial.setTimeout(timeout);
-
362  if (sizeof(temp) != nexSerial.readBytes((char *)temp, sizeof(temp)))
-
363  {
-
364  goto __return;
-
365  }
-
366 
-
367  if (temp[0] == NEX_RET_NUMBER_HEAD
-
368  && temp[5] == 0xFF
-
369  && temp[6] == 0xFF
-
370  && temp[7] == 0xFF
-
371  )
-
372  {
-
373  *number = (temp[4] << 24) | (temp[3] << 16) | (temp[2] << 8) | (temp[1]);
-
374  ret = true;
-
375  }
-
376 
-
377 __return:
-
378 
-
379  if (ret)
-
380  {
-
381  dbSerialPrint("recvRetNumber :");
-
382  dbSerialPrintln(*number);
-
383  }
-
384  else
-
385  {
-
386  dbSerialPrintln("recvRetNumber err");
-
387  }
-
388 
-
389  return ret;
-
390 }
-
391 
-
398 bool nexInit(void)
-
399 {
-
400  dbSerialBegin(9600);
-
401  nexSerial.begin(9600);
- -
403  NexTouch::sendCommand("page 0");
-
404  delay(100);
-
405  return true;
-
406 }
-
407 
-
415 bool nexLoop(NexTouch **nex_listen_list)
-
416 {
-
417  NexTouch::mainEventLoop(nex_listen_list);
-
418  return false;
-
419 }
-
420 
-
421 #if 0
-
422 
-
430 bool sendCurrentPageId(uint8_t* pageId)
-
431 {
-
432 
-
433  bool ret = false;
-
434  uint8_t temp[5] = {0};
-
435 
-
436  if (!pageId)
-
437  {
-
438  goto __return;
-
439  }
-
440  NexTouch::sendCommand("sendme");
-
441  delay(50);
-
442  nexSerial.setTimeout(500);
-
443  if (sizeof(temp) != nexSerial.readBytes((char *)temp, sizeof(temp)))
-
444  {
-
445  goto __return;
-
446  }
-
447 
-
448  if (temp[0] == NEX_RET_CURRENT_PAGE_ID_HEAD
-
449  && temp[2] == 0xFF
-
450  && temp[3] == 0xFF
-
451  && temp[4] == 0xFF
-
452  )
-
453  {
-
454  *pageId = temp[1];
-
455  ret = true;
-
456  }
-
457 
-
458  __return:
-
459 
-
460  if (ret)
-
461  {
-
462  dbSerialPrint("recvPageId :");
-
463  dbSerialPrintln(*pageId);
-
464  }
-
465  else
-
466  {
-
467  dbSerialPrintln("recvPageId err");
-
468  }
-
469 
-
470  return ret;
-
471 
-
472 }
-
473 
-
480 bool touchCalibration(void)
-
481 {
-
482  bool ret = false;
-
483  NexTouch::sendCommand("touch_j");
-
484  delay(10);
- -
486  {
-
487  dbSerialPrintln("TouchCalibration ok ");
-
488  ret = true;
-
489  }
-
490  else
-
491  {
-
492  dbSerialPrintln("TouchCalibration err ");
-
493  }
-
494 
-
495  return ret;
-
496 }
-
497 
-
504 bool disableTouchFocus(void)
-
505 {
-
506  bool ret = false;
-
507  NexTouch::sendCommand("cle_c");
-
508  delay(10);
- -
510  {
-
511  dbSerialPrintln("disableTouchFocus ok ");
-
512  ret = true;
-
513  }
-
514  else
-
515  {
-
516  dbSerialPrintln("disableTouchFocus err ");
-
517  }
-
518 
-
519  return ret;
-
520 }
-
521 
-
528 bool pauseSerialCommand(void)
-
529 {
-
530 
-
531  bool ret = false;
-
532  NexTouch::sendCommand("com_stop");
-
533  delay(10);
- -
535  {
-
536  dbSerialPrintln("pauseSerialCommand ok ");
-
537  ret = true;
-
538  }
-
539  else
-
540  {
-
541  dbSerialPrintln("pauseSerialCommand err ");
-
542  }
-
543 
-
544  return ret;
-
545 }
-
546 
-
553 bool recoverySerialCommand(void)
-
554 {
-
555  bool ret = false;
-
556  NexTouch::sendCommand("com_star");
-
557  delay(10);
- -
559  {
-
560  dbSerialPrintln("recoverySerialCommand ok ");
-
561  ret = true;
-
562  }
-
563  else
-
564  {
-
565  dbSerialPrintln("recoverySerialCommand err ");
-
566  }
-
567 
-
568  return ret;
-
569 }
-
570 
-
579 bool setCurrentBrightness(uint8_t dimValue)
-
580 {
-
581  bool ret = false;
-
582  char buf[10] = {0};
-
583  String cmd;
-
584  utoa(dimValue, buf, 10);
-
585  cmd += "dim=";
-
586  cmd += buf;
-
587  NexTouch::sendCommand(cmd.c_str());
-
588  delay(10);
-
589 
- -
591  {
-
592  dbSerialPrint("setCurrentBrightness[ ");
-
593  dbSerialPrint(dimValue);
-
594  dbSerialPrintln("]ok ");
-
595 
-
596  ret = true;
-
597  }
-
598  else
-
599  {
-
600  dbSerialPrintln("setCurrentBrightness err ");
-
601  }
-
602 
-
603  return ret;
-
604 }
-
605 
-
614 bool setDefaultBrightness(uint8_t dimDefaultValue)
-
615 {
-
616  bool ret = false;
-
617  char buf[10] = {0};
-
618  String cmd;
-
619  utoa(dimDefaultValue, buf, 10);
-
620  cmd += "dims=";
-
621  cmd += buf;
-
622  NexTouch::sendCommand(cmd.c_str());
-
623  delay(10);
-
624 
- -
626  {
-
627  dbSerialPrint("setDefaultBrightness[");
-
628  dbSerialPrint(dimDefaultValue);
-
629  dbSerialPrintln("]ok");
-
630  ret = true;
-
631  }
-
632  else
-
633  {
-
634  dbSerialPrintln("setDefaultBrightness err ");
-
635  }
-
636 
-
637  return ret;
-
638 }
-
639 
-
648 bool sleepMode(uint8_t mode)
-
649 {
-
650  bool ret = false;
-
651  char buf[10] = {0};
-
652  String cmd;
-
653  if(mode != 0 && mode != 1)
-
654  {
-
655  dbSerialPrintln("mode input ok ");
-
656  return ret;
-
657  }
-
658  utoa(mode, buf, 10);
-
659  cmd += "sleep=";
-
660  cmd += buf;
-
661  NexTouch::sendCommand(cmd.c_str());
-
662  delay(10);
-
663 
- -
665  {
-
666  dbSerialPrintln("sleepMode ok ");
-
667  ret = true;
-
668  }
-
669  else
-
670  {
-
671  dbSerialPrintln("sleepMode err ");
-
672  }
-
673 
-
674  return ret;
-
675 }
-
676 
-
685 bool setCurrentBaudrate(uint32_t baudrate)
-
686 {
-
687  bool ret = false;
-
688  char buf[10] = {0};
-
689  String cmd;
-
690  utoa(baudrate, buf, 10);
-
691  cmd += "baud=";
-
692  cmd += buf;
-
693  NexTouch::sendCommand(cmd.c_str());
-
694  delay(10);
-
695 
- -
697  {
-
698  dbSerialPrintln("setCurrentBaudrate ok ");
-
699  ret = true;
-
700  }
-
701  else
-
702  {
-
703  dbSerialPrintln("setCurrentBaudrate err ");
-
704  }
-
705 
-
706  return ret;
-
707 }
-
708 
-
717 bool setDefaultBaudrate(uint32_t defaultBaudrate)
-
718 {
-
719  bool ret = false;
-
720  char buf[10] = {0};
-
721  String cmd;
-
722  utoa(defaultBaudrate, buf, 10);
-
723  cmd += "bauds=";
-
724  cmd += buf;
-
725  NexTouch::sendCommand(cmd.c_str());
-
726  delay(10);
-
727 
- -
729  {
-
730  dbSerialPrintln("setDefaultBaudrate ok ");
-
731  ret = true;
-
732  }
-
733  else
-
734  {
-
735  dbSerialPrintln("setDefaultBaudrate err ");
-
736  }
-
737 
-
738  return ret;
-
739 }
-
740 
-
741 #endif
-
NexPid getPid(void)
Get page id.
Definition: NexTouch.cpp:87
-
NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
Constructor of Nextouch.
Definition: NexTouch.cpp:69
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
void print(void)
Print current object address,page id,component id, component name,pop event function address...
Definition: NexTouch.cpp:117
-
static uint8_t mainEventLoop(NexTouch **list)
Watting for Nextion's touch event.
Definition: NexTouch.cpp:26
-
NexCid getCid(void)
Get component id.
Definition: NexTouch.cpp:97
-
API of Nextion.
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
-
static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)
Receive string data.
Definition: NexTouch.cpp:279
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
- - - - diff --git a/doc/API-html/_nex_touch_8h.html b/doc/API-html/_nex_touch_8h.html deleted file mode 100644 index 64cb132..00000000 --- a/doc/API-html/_nex_touch_8h.html +++ /dev/null @@ -1,154 +0,0 @@ - - - - - - -API: NexTouch.h File Reference - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
- -
-
NexTouch.h File Reference
-
-
- -

API of Nextion. -More...

-
#include <Arduino.h>
-#include "NexSerialConfig.h"
-
-

Go to the source code of this file.

- - - - - -

-Classes

class  NexTouch
 Root Class of Nextion Components. More...
 
- - - - - - - -

-Functions

bool nexInit (void)
 Init Nextion's baudrate,page id. More...
 
bool nexLoop (NexTouch **nex_listen_list)
 Call mainEventLoop,watting for Nextion's touch event. More...
 
-

Detailed Description

-

API of Nextion.

-
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
-
Date
2015/7/10
- - -

Definition in file NexTouch.h.

-

Function Documentation

- -
-
- - - - - - - - -
bool nexInit (void )
-
- -

Init Nextion's baudrate,page id.

-
Return values
- - - -
true- success.
false- failed.
-
-
- -

Definition at line 398 of file NexTouch.cpp.

- -
-
- -
-
- - - - - - - - -
bool nexLoop (NexTouch ** nex_listen_list)
-
- -

Call mainEventLoop,watting for Nextion's touch event.

-
Parameters
- - -
nex_listen_list- index to Nextion Components list.
-
-
-
Return values
- - -
false- failed.
-
-
- -

Definition at line 415 of file NexTouch.cpp.

- -
-
-
- - - - diff --git a/doc/API-html/_nex_touch_8h_source.html b/doc/API-html/_nex_touch_8h_source.html deleted file mode 100644 index b9cd71f..00000000 --- a/doc/API-html/_nex_touch_8h_source.html +++ /dev/null @@ -1,178 +0,0 @@ - - - - - - -API: NexTouch.h Source File - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
-
-
NexTouch.h
-
-
-Go to the documentation of this file.
1 
-
16 #ifndef __NEXTOUCH_H__
-
17 #define __NEXTOUCH_H__
-
18 #ifdef __cplusplus
-
19 #include <Arduino.h>
-
20 #include "NexSerialConfig.h"
-
21 
-
22 typedef uint8_t NexPid;
-
23 typedef uint8_t NexCid;
-
24 
-
25 typedef enum {
-
26  NEX_EVENT_POP = 0x00,
-
27  NEX_EVENT_PUSH = 0x01,
-
28  NEX_EVENT_NULL
-
29 } NexEventType;
-
30 
-
31 /*The first byte of Nextoin's return value*/
-
32 #define NEX_RET_CMD_FINISHED (0x01)
-
33 #define NEX_RET_EVENT_LAUNCHED (0x88)
-
34 #define NEX_RET_EVENT_UPGRADED (0x89)
-
35 #define NEX_RET_EVENT_TOUCH_HEAD (0x65)
-
36 #define NEX_RET_EVENT_POSITION_HEAD (0x67)
-
37 #define NEX_RET_EVENT_SLEEP_POSITION_HEAD (0x68)
-
38 #define NEX_RET_CURRENT_PAGE_ID_HEAD (0x66)
-
39 #define NEX_RET_STRING_HEAD (0x70)
-
40 #define NEX_RET_NUMBER_HEAD (0x71)
-
41 #define NEX_RET_INVALID_CMD (0x00)
-
42 #define NEX_RET_INVALID_COMPONENT_ID (0x02)
-
43 #define NEX_RET_INVALID_PAGE_ID (0x03)
-
44 #define NEX_RET_INVALID_PICTURE_ID (0x04)
-
45 #define NEX_RET_INVALID_FONT_ID (0x05)
-
46 #define NEX_RET_INVALID_BAUD (0x11)
-
47 #define NEX_RET_INVALID_VARIABLE (0x1A)
-
48 #define NEX_RET_INVALID_OPERATION (0x1B)
-
49 
-
50 
-
51 typedef void (*NexTouchEventCb)(void *ptr);
-
52 
-
57 class NexTouch
-
58 {
-
59 public: /* static methods */
-
60  static uint8_t mainEventLoop(NexTouch **list);
-
61  static void sendCommand(const char *cmd);
-
62  static bool recvRetCommandFinished(uint32_t timeout = 100);
-
63  static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout = 500);
-
64  static bool recvRetNumber(uint32_t *number, uint32_t timeout = 500);
-
65 
-
66 public: /* methods */
-
67  NexTouch(NexPid pid, NexCid cid, char *name,
-
68  NexTouchEventCb pop = NULL, void *pop_ptr = NULL,
-
69  NexTouchEventCb push = NULL, void *push_ptr = NULL);
-
70 
-
71  NexPid getPid(void);
-
72  NexCid getCid(void);
-
73  const char *getObjName(void);
-
74  void print(void);
-
75 
-
76 protected: /* static methods */
-
77 
-
78 protected: /* methods */
-
79  void attachPush(NexTouchEventCb push, void *ptr = NULL);
-
80  void detachPush(void);
-
81  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
82  void detachPop(void);
-
83 
-
84 private: /* static methods */
-
85  static void iterate(NexTouch **list, NexPid pid, NexCid cid, NexEventType event);
-
86 
-
87 private: /* methods */
-
88  void push(void);
-
89  void pop(void);
-
90 
-
91 private: /* static data */
-
92  static uint8_t __buffer[256];
-
93 
-
94 private: /* data */
-
95  NexPid pid; /* Page ID */
-
96  NexCid cid; /* Component ID */
-
97  char *name; /* An unique name */
-
98  NexTouchEventCb cbPush;
-
99  void *__cbpush_ptr;
-
100  NexTouchEventCb cbPop;
-
101  void *__cbpop_ptr;
-
102 };
-
103 
-
104 bool nexInit(void);
-
105 bool nexLoop(NexTouch **nex_listen_list);
-
106 
-
107 #if 0
-
108 bool sendCurrentPageId(uint8_t* pageId);
-
109 bool touchCalibration(void);
-
110 bool disableTouchFocus(void);
-
111 bool pauseSerialCommand(void);
-
112 bool recoverySerialCommand(void);
-
113 bool clearSerialSurplusCommand(void);
-
114 bool setCurrentBrightness(uint8_t dimValue);
-
115 bool setDefaultBrightness(uint8_t dimDefaultValue);
-
116 bool sleepMode(uint8_t mode);
-
117 bool setCurrentBaudrate(uint32_t baudrate);
-
118 bool setDefaultBaudrate(uint32_t baudrate);
-
119 #endif
-
120 
-
121 #endif /* #ifdef __cplusplus */
-
122 #endif /* #ifndef __NEXTOUCH_H__ */
-
NexPid getPid(void)
Get page id.
Definition: NexTouch.cpp:87
-
NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
Constructor of Nextouch.
Definition: NexTouch.cpp:69
-
Serial configure.
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
-
void print(void)
Print current object address,page id,component id, component name,pop event function address...
Definition: NexTouch.cpp:117
-
static uint8_t mainEventLoop(NexTouch **list)
Watting for Nextion's touch event.
Definition: NexTouch.cpp:26
-
NexCid getCid(void)
Get component id.
Definition: NexTouch.cpp:97
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
-
static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)
Receive string data.
Definition: NexTouch.cpp:279
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
- - - - diff --git a/doc/API-html/class_nex_hotspot-members.html b/doc/API-html/class_nex_hotspot-members.html deleted file mode 100644 index 178cdeb..00000000 --- a/doc/API-html/class_nex_hotspot-members.html +++ /dev/null @@ -1,80 +0,0 @@ - - - - - - -API: Member List - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
-
-
NexHotspot Member List
-
-
- -

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

- - - - - - - - - - - - - - - - -
attachPop(NexTouchEventCb pop, void *ptr=NULL)NexHotspot
attachPush(NexTouchEventCb push, void *ptr=NULL)NexHotspot
detachPop(void)NexHotspot
detachPush(void)NexHotspot
getCid(void)NexTouch
getObjName(void)NexTouch
getPid(void)NexTouch
mainEventLoop(NexTouch **list)NexTouchstatic
NexHotspot(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexHotspot
NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
print(void)NexTouch
recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
sendCommand(const char *cmd)NexTouchstatic
- - - - diff --git a/doc/API-html/class_nex_pointer-members.html b/doc/API-html/class_nex_pointer-members.html deleted file mode 100644 index dd440b0..00000000 --- a/doc/API-html/class_nex_pointer-members.html +++ /dev/null @@ -1,78 +0,0 @@ - - - - - - -API: Member List - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
-
-
NexPointer Member List
-
-
- -

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

- - - - - - - - - - - - - - -
getCid(void)NexTouch
getObjName(void)NexTouch
getPid(void)NexTouch
getValue(uint32_t *number)NexPointer
mainEventLoop(NexTouch **list)NexTouchstatic
NexPointer(NexPid pid, NexCid cid, char *name)NexPointer
NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
print(void)NexTouch
recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
sendCommand(const char *cmd)NexTouchstatic
setValue(uint32_t number)NexPointer
- - - - diff --git a/doc/API-html/class_nex_pointer.html b/doc/API-html/class_nex_pointer.html deleted file mode 100644 index 87c0bc2..00000000 --- a/doc/API-html/class_nex_pointer.html +++ /dev/null @@ -1,207 +0,0 @@ - - - - - - -API: NexPointer Class Reference - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
- -
-
NexPointer Class Reference
-
-
- -

NexPointer,subclass of NexTouch,provides simple methods to control pointer component. - More...

- -

#include <NexPointer.h>

-
-Inheritance diagram for NexPointer:
-
-
- - -NexTouch - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

NexPointer (NexPid pid, NexCid cid, char *name)
 Constructor,inherited NexTouch's constructor function.
 
bool getValue (uint32_t *number)
 Get the value of pointer. More...
 
bool setValue (uint32_t number)
 Set the value of pointer. More...
 
- Public Member Functions inherited from NexTouch
 NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
 Constructor of Nextouch. More...
 
NexPid getPid (void)
 Get page id. More...
 
NexCid getCid (void)
 Get component id. More...
 
const char * getObjName (void)
 Get component name. More...
 
-void print (void)
 Print current object address,page id,component id, component name,pop event function address,push event function address.
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Static Public Member Functions inherited from NexTouch
static uint8_t mainEventLoop (NexTouch **list)
 Watting for Nextion's touch event. More...
 
static void sendCommand (const char *cmd)
 Send command to Nextion. More...
 
static bool recvRetCommandFinished (uint32_t timeout=100)
 Command is executed successfully. More...
 
static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
 Receive string data. More...
 
static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
 Receive uint32_t data. More...
 
-

Detailed Description

-

NexPointer,subclass of NexTouch,provides simple methods to control pointer component.

-
Examples:
CompPointer.ino.
-
-

Definition at line 25 of file NexPointer.h.

-

Member Function Documentation

- -
-
- - - - - - - - -
bool NexPointer::getValue (uint32_t * number)
-
- -

Get the value of pointer.

-
Parameters
- - -
number- an output parameter to save pointer's value.
-
-
-
Return values
- - - -
true- success.
false- failed.
-
-
-
Examples:
CompPointer.ino.
-
-

Definition at line 35 of file NexPointer.cpp.

- -
-
- -
-
- - - - - - - - -
bool NexPointer::setValue (uint32_t number)
-
- -

Set the value of pointer.

-
Parameters
- - -
number- the value of pointer.
-
-
-
Return values
- - - -
true- success.
false- failed.
-
-
-
Examples:
CompPointer.ino.
-
-

Definition at line 52 of file NexPointer.cpp.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/doc/API-html/class_nex_pointer.png b/doc/API-html/class_nex_pointer.png deleted file mode 100644 index 87aa56e318e0e88c43de7988f70261b384188dbc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 428 zcmeAS@N?(olHy`uVBq!ia0vp^UO*hc!3-ojorU)SDTx4|5ZC|z{{xxNKKx2s{BQ!0 z1;z&s99UzUTmj^Almz(&GXNEVz|~VBMhpy$)}AhoAr*{o=ibgcqQK+Q-@E1i|C6~s zhg2P=<^By=={9S^k!KHjZq}+Tol@fx6#6w_K}hKLD+`wFoTga0VpZR(`0X0qJ*&m$ zxKC;IVc*(tJ}Y;*-s6ai7t&T(UA1bT;2VDG$ZD<=(bvyQ1je2fzP)zS=?wmm=%@XG zPd{%iG~M|zf5V%XF>9?W8gB9F1*}@NKM-X87x@6qrB9R^zE?5+IKlt5YUjp30ryq( zrzyYcFEa>Wn9U_}U>+0ehUE^7Z!`lKs=21{3JS_AGRT3%xwQPt^WOPPw!P;YV8*}V z=%(~3cW3auI;pWDW)7=PjGn0BqE{iEZ%^w@E0^3mD - - - - - -API: NexSlice Class Reference - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
-
- -
-
NexSlice Class Reference
-
-
- -

NexSlice,subclass of NexTouch,provides simple methods to control slice component. - More...

- -

#include <NexSlice.h>

-
-Inheritance diagram for NexSlice:
-
-
- - -NexTouch - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - -

-Public Member Functions

NexSlice (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
 Constructor,inherited NexTouch's constructor function.
 
void attachPop (NexTouchEventCb pop, void *ptr=NULL)
 Register slice pop callback function. More...
 
-void detachPop (void)
 Unload slice pop callback function.
 
- Public Member Functions inherited from NexTouch
 NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
 Constructor of Nextouch. More...
 
NexPid getPid (void)
 Get page id. More...
 
NexCid getCid (void)
 Get component id. More...
 
const char * getObjName (void)
 Get component name. More...
 
-void print (void)
 Print current object address,page id,component id, component name,pop event function address,push event function address.
 
- - - - - - - - - - - - - - - - - -

-Additional Inherited Members

- Static Public Member Functions inherited from NexTouch
static uint8_t mainEventLoop (NexTouch **list)
 Watting for Nextion's touch event. More...
 
static void sendCommand (const char *cmd)
 Send command to Nextion. More...
 
static bool recvRetCommandFinished (uint32_t timeout=100)
 Command is executed successfully. More...
 
static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
 Receive string data. More...
 
static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
 Receive uint32_t data. More...
 
-

Detailed Description

-

NexSlice,subclass of NexTouch,provides simple methods to control slice component.

-
Examples:
CompSlice.ino.
-
-

Definition at line 25 of file NexSlice.h.

-

Member Function Documentation

- -
-
- - - - - - - - - - - - - - - - - - -
void NexSlice::attachPop (NexTouchEventCb pop,
void * ptr = NULL 
)
-
- -

Register slice pop callback function.

-
Parameters
- - - -
pop- the pointer to slice pop callback function.
ptr- the parameter to be transmitted to slice pop callback function.
-
-
-
Examples:
CompSlice.ino.
-
-

Definition at line 72 of file NexSlice.cpp.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/doc/API-html/class_nex_slice.png b/doc/API-html/class_nex_slice.png deleted file mode 100644 index 31250a95efb7393c0de76bf96393b553c1307205..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 419 zcmeAS@N?(olHy`uVBq!ia0vp^u0R~X!3-oTJUonnlth3}i0l9V|AEYBAAY4RemDWh z0^_Ft^jg5N`m}?8GwpF;OeOmBL)UWBTpB{kP61Pb8q(@R^V~zXV?7y|K#q* zf^O%Hd#IGC4$v%Y?WT7TdlT>`trT}9aMa|aciFcORcxNrC*=?J7>w3t$Up{?M+Qr z9y8rr^j7lD^p8DdZq~~F6PIiU8UA(R6rfe22YSsKGHso1Zc{ht52#b*Pnfsx&uU3s zt^=)NtOv3K8TLS_eUp>Y%yfAYg1VU=Tn)N(D)2GSqWX#i_s-MB8D;xc?OgxVqS$`l zlIMR9Pv$!POmyk2Dc1vjbvVZFx-e&c&fQbHAHO^H{$)@&SH$OO`_IZgox*i(kGOKd z - - - - - -API: NexTouch Class Reference - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - -
- -
- -

Root Class of Nextion Components. - More...

- -

#include <NexTouch.h>

-
-Inheritance diagram for NexTouch:
-
-
- - -NexButton -NexCrop -NexHotspot -NexPage -NexPicture -NexPointer -NexProgressBar -NexText - -
- - - - - - - - - - - - - - - - - -

-Public Member Functions

 NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
 Constructor of Nextouch. More...
 
NexPid getPid (void)
 Get page id. More...
 
NexCid getCid (void)
 Get component id. More...
 
const char * getObjName (void)
 Get component name. More...
 
-void print (void)
 Print current object address,page id,component id, component name,pop event function address,push event function address.
 
- - - - - - - - - - - - - - - - -

-Static Public Member Functions

static uint8_t mainEventLoop (NexTouch **list)
 Watting for Nextion's touch event. More...
 
static void sendCommand (const char *cmd)
 Send command to Nextion. More...
 
static bool recvRetCommandFinished (uint32_t timeout=100)
 Command is executed successfully. More...
 
static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
 Receive string data. More...
 
static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
 Receive uint32_t data. More...
 
-

Detailed Description

-

Root Class of Nextion Components.

-
Examples:
CompButton.ino, CompCrop.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompPointer.ino, CompProgressBar.ino, and CompText.ino.
-
-

Definition at line 57 of file NexTouch.h.

-

Constructor & Destructor Documentation

- -
-
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
NexTouch::NexTouch (NexPid pid,
NexCid cid,
char * name,
NexTouchEventCb pop = NULL,
void * pop_ptr = NULL,
NexTouchEventCb push = NULL,
void * push_ptr = NULL 
)
-
- -

Constructor of Nextouch.

-
Parameters
- - - - - - - - -
pid- page id.
cid- component id.
name- component name.
pop- pop event function pointer.
pop_ptr- the parameter was transmitted to pop event function pointer.
push- push event function pointer.
push_ptr- the parameter was transmitted to push event function pointer.
-
-
- -

Definition at line 69 of file NexTouch.cpp.

- -
-
-

Member Function Documentation

- -
-
- - - - - - - - -
NexCid NexTouch::getCid (void )
-
- -

Get component id.

-
Returns
the id of component.
- -

Definition at line 97 of file NexTouch.cpp.

- -
-
- -
-
- - - - - - - - -
const char * NexTouch::getObjName (void )
-
- -

Get component name.

-
Returns
the name of component.
- -

Definition at line 107 of file NexTouch.cpp.

- -
-
- -
-
- - - - - - - - -
NexPid NexTouch::getPid (void )
-
- -

Get page id.

-
Returns
the id of page.
- -

Definition at line 87 of file NexTouch.cpp.

- -
-
- -
-
- - - - - -
- - - - - - - - -
uint8_t NexTouch::mainEventLoop (NexTouch ** list)
-
-static
-
- -

Watting for Nextion's touch event.

-
Parameters
- - -
list- index to Nextion Components list.
-
-
- -

Definition at line 26 of file NexTouch.cpp.

- -
-
- -
-
- - - - - -
- - - - - - - - -
bool NexTouch::recvRetCommandFinished (uint32_t timeout = 100)
-
-static
-
- -

Command is executed successfully.

-
Parameters
- - -
timeout- set timeout time.
-
-
-
Return values
- - - -
true- success.
false- failed.
-
-
- -

Definition at line 219 of file NexTouch.cpp.

- -
-
- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - -
bool NexTouch::recvRetNumber (uint32_t * number,
uint32_t timeout = 500 
)
-
-static
-
- -

Receive uint32_t data.

-
Parameters
- - - -
number- save uint32_t data.
timeout- set timeout time.
-
-
-
Return values
- - - -
true- success.
false- failed.
-
-
- -

Definition at line 351 of file NexTouch.cpp.

- -
-
- -
-
- - - - - -
- - - - - - - - - - - - - - - - - - - - - - - - -
uint16_t NexTouch::recvRetString (char * buffer,
uint16_t len,
uint32_t timeout = 500 
)
-
-static
-
- -

Receive string data.

-
Parameters
- - - - -
buffer- save string data.
len- string buffer length.
timeout- set timeout time.
-
-
-
Returns
the length of string buffer.
- -

Definition at line 279 of file NexTouch.cpp.

- -
-
- -
-
- - - - - -
- - - - - - - - -
void NexTouch::sendCommand (const char * cmd)
-
-static
-
- -

Send command to Nextion.

-
Parameters
- - -
cmd- the string of command.
-
-
- -

Definition at line 256 of file NexTouch.cpp.

- -
-
-
The documentation for this class was generated from the following files: -
- - - - diff --git a/doc/API-html/class_nex_touch.png b/doc/API-html/class_nex_touch.png deleted file mode 100644 index 0d299dbbf4945b8d96c7a375f68c9b2f0192c62e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2299 zcma)82~-o;8lK2&u?kqEG(v;a8bD+bh_opPqNp(7ix#QD5)?r}#byCylLtKNiL#X% zmJ}gEWjP8OWNQLJ!cGMe6bOq+OhNz+At0NP{SD$PdTM=d&Y5%X%$;-Y{r+$HC+;Z5 zNqvLv1^@umLFWT*&?o=^Sl@aTXr}2Cq6rOKjvjVDxV*d!O^091`Q=J}fo8Ao+S=N? zcD`ZIH2n!ig#2V4J))1%Ys1mKDfPKF(I@rF%c2Uk%$`?b)nOwvX5xdQq zDeLZjF1X#6hUEqKHN0r5A~Y}d)nJu8^msa8iPHGerx|vj9UXH`NA*)nDe#pa!l5xy<=U?# zK=a+jk`!jDTNN^fYMYRfx6w)?rxhI&(hPP!oU0ec`&!!66ehgHI=kg^iCtd$#2If7 zK`{SVZqRr4n6rZ2$!8m$?f(K6P9yCk0~zZ*c03)s`FN7&Id z`r}Q-@Hj^hU8~+;Q7zJ93J;%*R|#W_*c*DzmMf4S;lG8$Lj`8NRQu~N9d7!{Ttzq8oDxWjRXvdY@@9_%co4Mi|t$X{- zrj&x%(_&w#X71-&mtUbrAXPC=$~AT^G();Ri>b0qTXd}4as}x ze0Ndd<|3m2C&x@N6!SmOF*~Ke6CESaNUj=c^0U%O`7By*Z2dPvF=L>>HcOYb(ONqE zc-A8O#;$&{!5z9IF3L0M-s7RYIj<6tyh|0sh4Ws9=b{uux%PG9)Tr5w8JTT6&VC}B z*kGYHt^^pF56M1PlPrVeElVv4{se$FO%K(G-taOM$OfMog0O-^(m>*i7K}t zp$UzMl<6H(pfFM8oPQRQHcB8G=La7Ic7<+MeMI;_<@+vPNZUDHkVG~^5@`ZEKYFX6 zLJ7X9WQ*P@%CsBAZUd}WH#P5+9AdWtV%Pl(d`4}y?*tWDF#?B#T!Lti2HncG_TpZ) zmz8-2rCB2IHy`j&`mHnr>DG%V!T|a7mZ#(23h;&rWkZ=rVNpkM>>k@8vYX@+(}OwPDo)5aGc7UsnAK z*8iG31gaYd)$Ma55Pk;XkVXO&i79z0m#(n1TYQ2ezn9LNAn$k`Van*6m<`^C|8(%4 zrJz3ZEN=U<38lQq2^ZDY-0vd!USXb^=Vd1;;MFK=@AegEe-Z`UWc z^>e+#Z_<9O?rA3UvaJq}L`i7*PXf_esSg6^7su?K8uZ$9I7ppFb-} z&4a(Ckfo2IY{o*_Y(xSU|F&g)s6s2v?g`{61ISY+vXEZCtac6*hJxwYK6V^2C0?Mo zFN`jwx-SODWsc2;NjnmqTlfBpD+ud?+FGtT>PCwO%J|NLOqVK}#2xqD=1*rT!`DqY zdL%V9a>^L^ZQ69i{N7aq=wi8N!e1398`Q?#oZaccND7AytLN(`#9#Jf;Ig51z}t?Y n*i%SAcKd1<`*Spfh?ME?bz&aU0A@0vKNSExh&e#t?;ZOeqs>q7 diff --git a/doc/API-html/dynsections_8js_source.html b/doc/API-html/dynsections_8js_source.html deleted file mode 100644 index 311154f..00000000 --- a/doc/API-html/dynsections_8js_source.html +++ /dev/null @@ -1,168 +0,0 @@ - - - - - - -API: API-html/dynsections.js Source File - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - - -
-
-
-
dynsections.js
-
-
-
1 function toggleVisibility(linkObj)
-
2 {
-
3  var base = $(linkObj).attr('id');
-
4  var summary = $('#'+base+'-summary');
-
5  var content = $('#'+base+'-content');
-
6  var trigger = $('#'+base+'-trigger');
-
7  var src=$(trigger).attr('src');
-
8  if (content.is(':visible')===true) {
-
9  content.hide();
-
10  summary.show();
-
11  $(linkObj).addClass('closed').removeClass('opened');
-
12  $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png');
-
13  } else {
-
14  content.show();
-
15  summary.hide();
-
16  $(linkObj).removeClass('closed').addClass('opened');
-
17  $(trigger).attr('src',src.substring(0,src.length-10)+'open.png');
-
18  }
-
19  return false;
-
20 }
-
21 
-
22 function updateStripes()
-
23 {
-
24  $('table.directory tr').
-
25  removeClass('even').filter(':visible:even').addClass('even');
-
26 }
-
27 
-
28 function toggleLevel(level)
-
29 {
-
30  $('table.directory tr').each(function() {
-
31  var l = this.id.split('_').length-1;
-
32  var i = $('#img'+this.id.substring(3));
-
33  var a = $('#arr'+this.id.substring(3));
-
34  if (l<level+1) {
-
35  i.removeClass('iconfopen iconfclosed').addClass('iconfopen');
-
36  a.html('&#9660;');
-
37  $(this).show();
-
38  } else if (l==level+1) {
-
39  i.removeClass('iconfclosed iconfopen').addClass('iconfclosed');
-
40  a.html('&#9658;');
-
41  $(this).show();
-
42  } else {
-
43  $(this).hide();
-
44  }
-
45  });
-
46  updateStripes();
-
47 }
-
48 
-
49 function toggleFolder(id)
-
50 {
-
51  // the clicked row
-
52  var currentRow = $('#row_'+id);
-
53 
-
54  // all rows after the clicked row
-
55  var rows = currentRow.nextAll("tr");
-
56 
-
57  var re = new RegExp('^row_'+id+'\\d+_$', "i"); //only one sub
-
58 
-
59  // only match elements AFTER this one (can't hide elements before)
-
60  var childRows = rows.filter(function() { return this.id.match(re); });
-
61 
-
62  // first row is visible we are HIDING
-
63  if (childRows.filter(':first').is(':visible')===true) {
-
64  // replace down arrow by right arrow for current row
-
65  var currentRowSpans = currentRow.find("span");
-
66  currentRowSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
-
67  currentRowSpans.filter(".arrow").html('&#9658;');
-
68  rows.filter("[id^=row_"+id+"]").hide(); // hide all children
-
69  } else { // we are SHOWING
-
70  // replace right arrow by down arrow for current row
-
71  var currentRowSpans = currentRow.find("span");
-
72  currentRowSpans.filter(".iconfclosed").removeClass("iconfclosed").addClass("iconfopen");
-
73  currentRowSpans.filter(".arrow").html('&#9660;');
-
74  // replace down arrows by right arrows for child rows
-
75  var childRowsSpans = childRows.find("span");
-
76  childRowsSpans.filter(".iconfopen").removeClass("iconfopen").addClass("iconfclosed");
-
77  childRowsSpans.filter(".arrow").html('&#9658;');
-
78  childRows.show(); //show all children
-
79  }
-
80  updateStripes();
-
81 }
-
82 
-
83 
-
84 function toggleInherit(id)
-
85 {
-
86  var rows = $('tr.inherit.'+id);
-
87  var img = $('tr.inherit_header.'+id+' img');
-
88  var src = $(img).attr('src');
-
89  if (rows.filter(':first').is(':visible')===true) {
-
90  rows.css('display','none');
-
91  $(img).attr('src',src.substring(0,src.length-8)+'closed.png');
-
92  } else {
-
93  rows.css('display','table-row'); // using show() causes jump in firefox
-
94  $(img).attr('src',src.substring(0,src.length-10)+'open.png');
-
95  }
-
96 }
-
97 
-
98 
-
99 $(document).ready(function() {
-
100  $('.code,.codeRef').each(function() {
-
101  $(this).data('powertip',$('#'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html());
-
102  $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true });
-
103  });
-
104 });
-
- - - - diff --git a/doc/API-html/index.hhc b/doc/API-html/index.hhc deleted file mode 100644 index 6c3fe9d..00000000 --- a/doc/API-html/index.hhc +++ /dev/null @@ -1,270 +0,0 @@ - - - - - -
    -
  • -
  • -
      -
    • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        -
      -
    • -
    • -
        -
      • -
          -
        • -
        • -
        • -
        • -
        • -
        • -
        • -
        • -
        -
      -
    • -
        -
      • -
      • -
      -
    -
  • -
      -
    • -
        -
      • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        • -
            -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          -
        -
      • -
          -
        -
      • -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          • -
          -
        -
      • -
          -
        • -
        • -
        -
      • -
          -
        • -
            -
          • -
          • -
          • -
          • -
          • -
          -
            -
          -
        • -
        • -
        -
      -
    • -
        -
      • -
      • -
      -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
- - diff --git a/doc/API-html/index.hhk b/doc/API-html/index.hhk deleted file mode 100644 index e92c49d..00000000 --- a/doc/API-html/index.hhk +++ /dev/null @@ -1,153 +0,0 @@ - - - - - -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    • -
    -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
  • -
      -
    • -
    • -
    -
  • -
      -
    • -
    • -
    -
  • -
- - diff --git a/doc/API-html/index.hhp b/doc/API-html/index.hhp deleted file mode 100644 index af26030..00000000 --- a/doc/API-html/index.hhp +++ /dev/null @@ -1,145 +0,0 @@ -[OPTIONS] -Compiled file=../API.chm -Compatibility=1.1 -Full-text search=Yes -Contents file=index.hhc -Default Window=main -Default topic=index.html -Index file=index.hhk -Language=0x409 English (United States) -Title=API - -[WINDOWS] -main="API","index.hhc","index.hhk","index.html","index.html",,,,,0x23520,,0x10387e,,,,,,,,0 - -[FILES] -_comp_button_8ino-example.html -_comp_crop_8ino-example.html -_comp_hotspot_8ino-example.html -_comp_page_8ino-example.html -_comp_picture_8ino-example.html -_comp_pointer_8ino-example.html -_comp_progress_bar_8ino-example.html -_comp_text_8ino-example.html -_comp_button_8ino_source.html -_comp_crop_8ino_source.html -_comp_hotspot_8ino_source.html -_comp_page_8ino_source.html -_comp_picture_8ino_source.html -_comp_pointer_8ino_source.html -_comp_progress_bar_8ino_source.html -_comp_text_8ino_source.html -_nex_button_8cpp_source.html -_nex_button_8h_source.html -_nex_crop_8cpp_source.html -_nex_crop_8h_source.html -_nex_hotspot_8cpp_source.html -_nex_hotspot_8h_source.html -_nex_page_8cpp_source.html -_nex_page_8h_source.html -_nex_picture_8cpp_source.html -_nex_picture_8h_source.html -_nex_pointer_8cpp_source.html -_nex_pointer_8h_source.html -_nex_progress_bar_8cpp_source.html -_nex_progress_bar_8h_source.html -_nex_serial_config_8h_source.html -_nex_text_8cpp_source.html -_nex_text_8h_source.html -_nex_touch_8cpp_source.html -_nex_touch_8h_source.html -readme_8md_source.html -_nex_button_8cpp.html -_nex_button_8h.html -_nex_crop_8cpp.html -_nex_crop_8h.html -_nex_hotspot_8cpp.html -_nex_hotspot_8h.html -_nex_page_8cpp.html -_nex_page_8h.html -_nex_picture_8cpp.html -_nex_picture_8h.html -_nex_pointer_8cpp.html -_nex_pointer_8h.html -_nex_progress_bar_8cpp.html -_nex_progress_bar_8h.html -_nex_serial_config_8h.html -_nex_text_8cpp.html -_nex_text_8h.html -_nex_touch_8cpp.html -_nex_touch_8h.html -md_readme.html -class_nex_button.html -class_nex_button-members.html -class_nex_crop.html -class_nex_crop-members.html -class_nex_hotspot.html -class_nex_hotspot-members.html -class_nex_page.html -class_nex_page-members.html -class_nex_picture.html -class_nex_picture-members.html -class_nex_pointer.html -class_nex_pointer-members.html -class_nex_progress_bar.html -class_nex_progress_bar-members.html -class_nex_text.html -class_nex_text-members.html -class_nex_touch.html -class_nex_touch-members.html -dir_9bbf8342b0f9a157b7af08fe1412fc17.html -dir_8dcbebf38b229bfa7bb34d68bf824093.html -dir_f3d39c87bc262720c50d5e3885667b8a.html -dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html -dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html -dir_376a8598cfd3d58455c161124a3e8051.html -dir_7962cac16a99e8bbaaea18abede03fcb.html -dir_c918e8bf3fc71f849978cdb0d900e61c.html -dir_d28a4824dc47e487b107a5db32ef43c4.html -index.html -pages.html -annotated.html -classes.html -hierarchy.html -functions.html -functions_func.html -files.html -globals.html -globals_func.html -examples.html -tab_a.png -tab_b.png -tab_h.png -tab_s.png -nav_h.png -nav_f.png -bc_s.png -doxygen.png -closed.png -open.png -bdwn.png -sync_on.png -sync_off.png -ITEAD-logo.JPG -ftv2blank.png -ftv2doc.png -ftv2folderclosed.png -ftv2folderopen.png -ftv2lastnode.png -ftv2link.png -ftv2mlastnode.png -ftv2mnode.png -ftv2node.png -ftv2plastnode.png -ftv2pnode.png -ftv2vertline.png -ftv2splitbar.png -class_nex_button.png -class_nex_crop.png -class_nex_hotspot.png -class_nex_page.png -class_nex_picture.png -class_nex_pointer.png -class_nex_progress_bar.png -class_nex_text.png -class_nex_touch.png diff --git a/doc/API-html/jquery_8js_source.html b/doc/API-html/jquery_8js_source.html deleted file mode 100644 index 21b2ac4..00000000 --- a/doc/API-html/jquery_8js_source.html +++ /dev/null @@ -1,76 +0,0 @@ - - - - - - -API: API-html/jquery.js Source File - - - - - - -
-
- - - - - - - -
-
API -
-
For Arduino developers
-
-
- - - - - -
-
-
-
jquery.js
-
-
-
1 
-
16 (function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b4<b3;b4++){if((b9=arguments[b4])!=null){for(b2 in b9){b0=b5[b2];b1=b9[b2];if(b5===b1){continue}if(b8&&b1&&(bF.isPlainObject(b1)||(b6=bF.isArray(b1)))){if(b6){b6=false;b7=b0&&bF.isArray(b0)?b0:[]}else{b7=b0&&bF.isPlainObject(b0)?b0:{}}b5[b2]=bF.extend(b8,b7,b1)}else{if(b1!==L){b5[b2]=b1}}}}}return b5};bF.extend({noConflict:function(b0){if(bb.$===bF){bb.$=bH}if(b0&&bb.jQuery===bF){bb.jQuery=bU}return bF},isReady:false,readyWait:1,holdReady:function(b0){if(b0){bF.readyWait++}else{bF.ready(true)}},ready:function(b0){if((b0===true&&!--bF.readyWait)||(b0!==true&&!bF.isReady)){if(!av.body){return setTimeout(bF.ready,1)}bF.isReady=true;if(b0!==true&&--bF.readyWait>0){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b4<b5;){if(b6.apply(b3[b4++],b2)===false){break}}}}else{if(b0){for(b1 in b3){if(b6.call(b3[b1],b1,b3[b1])===false){break}}}else{for(;b4<b5;){if(b6.call(b3[b4],b4,b3[b4++])===false){break}}}}return b3},trim:bO?function(b0){return b0==null?"":bO.call(b0)}:function(b0){return b0==null?"":b0.toString().replace(bI,"").replace(bE,"")},makeArray:function(b3,b1){var b0=b1||[];if(b3!=null){var b2=bF.type(b3);if(b3.length==null||b2==="string"||b2==="function"||b2==="regexp"||bF.isWindow(b3)){bz.call(b0,b3)}else{bF.merge(b0,b3)}}return b0},inArray:function(b2,b3,b1){var b0;if(b3){if(bv){return bv.call(b3,b2,b1)}b0=b3.length;b1=b1?b1<0?Math.max(0,b0+b1):b1:0;for(;b1<b0;b1++){if(b1 in b3&&b3[b1]===b2){return b1}}}return -1},merge:function(b4,b2){var b3=b4.length,b1=0;if(typeof b2.length==="number"){for(var b0=b2.length;b1<b0;b1++){b4[b3++]=b2[b1]}}else{while(b2[b1]!==L){b4[b3++]=b2[b1++]}}b4.length=b3;return b4},grep:function(b1,b6,b0){var b2=[],b5;b0=!!b0;for(var b3=0,b4=b1.length;b3<b4;b3++){b5=!!b6(b1[b3],b3);if(b0!==b5){b2.push(b1[b3])}}return b2},map:function(b0,b7,b8){var b5,b6,b4=[],b2=0,b1=b0.length,b3=b0 instanceof bF||b1!==L&&typeof b1==="number"&&((b1>0&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b2<b1;b2++){b5=b7(b0[b2],b2,b8);if(b5!=null){b4[b4.length]=b5}}}else{for(b6 in b0){b5=b7(b0[b6],b6,b8);if(b5!=null){b4[b4.length]=b5}}}return b4.concat.apply([],b4)},guid:1,proxy:function(b4,b3){if(typeof b3==="string"){var b2=b4[b3];b3=b4;b4=b2}if(!bF.isFunction(b4)){return L}var b0=bK.call(arguments,2),b1=function(){return b4.apply(b3,b0.concat(bK.call(arguments)))};b1.guid=b4.guid=b4.guid||b1.guid||bF.guid++;return b1},access:function(b0,b8,b6,b2,b5,b7){var b1=b0.length;if(typeof b8==="object"){for(var b3 in b8){bF.access(b0,b3,b8[b3],b2,b5,b6)}return b0}if(b6!==L){b2=!b7&&b2&&bF.isFunction(b6);for(var b4=0;b4<b1;b4++){b5(b0[b4],b8,b2?b6.call(b0[b4],b4,b5(b0[b4],b8)):b6,b7)}return b0}return b1?b5(b0[0],b8):L},now:function(){return(new Date()).getTime()},uaMatch:function(b1){b1=b1.toLowerCase();var b0=by.exec(b1)||bR.exec(b1)||bQ.exec(b1)||b1.indexOf("compatible")<0&&bS.exec(b1)||[];return{browser:b0[1]||"",version:b0[2]||"0"}},sub:function(){function b0(b3,b4){return new b0.fn.init(b3,b4)}bF.extend(true,b0,this);b0.superclass=this;b0.fn=b0.prototype=this();b0.fn.constructor=b0;b0.sub=this.sub;b0.fn.init=function b2(b3,b4){if(b4&&b4 instanceof bF&&!(b4 instanceof b0)){b4=b0(b4)}return bF.fn.init.call(this,b3,b4,b1)};b0.fn.init.prototype=b0.fn;var b1=b0(av);return b0},browser:{}});bF.each("Boolean Number String Function Array Date RegExp Object".split(" "),function(b1,b0){bx["[object "+b0+"]"]=b0.toLowerCase()});bV=bF.uaMatch(bX);if(bV.browser){bF.browser[bV.browser]=true;bF.browser.version=bV.version}if(bF.browser.webkit){bF.browser.safari=true}if(bM.test("\xA0")){bI=/^[\s\xA0]+/;bE=/[\s\xA0]+$/}bD=bF(av);if(av.addEventListener){e=function(){av.removeEventListener("DOMContentLoaded",e,false);bF.ready()}}else{if(av.attachEvent){e=function(){if(av.readyState==="complete"){av.detachEvent("onreadystatechange",e);bF.ready()}}}}function bw(){if(bF.isReady){return}try{av.documentElement.doScroll("left")}catch(b0){setTimeout(bw,1);return}bF.ready()}return bF})();var a2={};function X(e){var bv=a2[e]={},bw,bx;e=e.split(/\s+/);for(bw=0,bx=e.length;bw<bx;bw++){bv[e[bw]]=true}return bv}b.Callbacks=function(bw){bw=bw?(a2[bw]||X(bw)):{};var bB=[],bC=[],bx,by,bv,bz,bA,bE=function(bF){var bG,bJ,bI,bH,bK;for(bG=0,bJ=bF.length;bG<bJ;bG++){bI=bF[bG];bH=b.type(bI);if(bH==="array"){bE(bI)}else{if(bH==="function"){if(!bw.unique||!bD.has(bI)){bB.push(bI)}}}}},e=function(bG,bF){bF=bF||[];bx=!bw.memory||[bG,bF];by=true;bA=bv||0;bv=0;bz=bB.length;for(;bB&&bA<bz;bA++){if(bB[bA].apply(bG,bF)===false&&bw.stopOnFalse){bx=true;break}}by=false;if(bB){if(!bw.once){if(bC&&bC.length){bx=bC.shift();bD.fireWith(bx[0],bx[1])}}else{if(bx===true){bD.disable()}else{bB=[]}}}},bD={add:function(){if(bB){var bF=bB.length;bE(arguments);if(by){bz=bB.length}else{if(bx&&bx!==true){bv=bF;e(bx[0],bx[1])}}}return this},remove:function(){if(bB){var bF=arguments,bH=0,bI=bF.length;for(;bH<bI;bH++){for(var bG=0;bG<bB.length;bG++){if(bF[bH]===bB[bG]){if(by){if(bG<=bz){bz--;if(bG<=bA){bA--}}}bB.splice(bG--,1);if(bw.unique){break}}}}}return this},has:function(bG){if(bB){var bF=0,bH=bB.length;for(;bF<bH;bF++){if(bG===bB[bF]){return true}}}return false},empty:function(){bB=[];return this},disable:function(){bB=bC=bx=L;return this},disabled:function(){return !bB},lock:function(){bC=L;if(!bx||bx===true){bD.disable()}return this},locked:function(){return !bC},fireWith:function(bG,bF){if(bC){if(by){if(!bw.once){bC.push([bG,bF])}}else{if(!(bw.once&&bx)){e(bG,bF)}}}return this},fire:function(){bD.fireWith(this,arguments);return this},fired:function(){return !!bx}};return bD};var aJ=[].slice;b.extend({Deferred:function(by){var bx=b.Callbacks("once memory"),bw=b.Callbacks("once memory"),bv=b.Callbacks("memory"),e="pending",bA={resolve:bx,reject:bw,notify:bv},bC={done:bx.add,fail:bw.add,progress:bv.add,state:function(){return e},isResolved:bx.fired,isRejected:bw.fired,then:function(bE,bD,bF){bB.done(bE).fail(bD).progress(bF);return this},always:function(){bB.done.apply(bB,arguments).fail.apply(bB,arguments);return this},pipe:function(bF,bE,bD){return b.Deferred(function(bG){b.each({done:[bF,"resolve"],fail:[bE,"reject"],progress:[bD,"notify"]},function(bI,bL){var bH=bL[0],bK=bL[1],bJ;if(b.isFunction(bH)){bB[bI](function(){bJ=bH.apply(this,arguments);if(bJ&&b.isFunction(bJ.promise)){bJ.promise().then(bG.resolve,bG.reject,bG.notify)}else{bG[bK+"With"](this===bB?bG:this,[bJ])}})}else{bB[bI](bG[bK])}})}).promise()},promise:function(bE){if(bE==null){bE=bC}else{for(var bD in bC){bE[bD]=bC[bD]}}return bE}},bB=bC.promise({}),bz;for(bz in bA){bB[bz]=bA[bz].fire;bB[bz+"With"]=bA[bz].fireWith}bB.done(function(){e="resolved"},bw.disable,bv.lock).fail(function(){e="rejected"},bx.disable,bv.lock);if(by){by.call(bB,bB)}return bB},when:function(bA){var bx=aJ.call(arguments,0),bv=0,e=bx.length,bB=new Array(e),bw=e,by=e,bC=e<=1&&bA&&b.isFunction(bA.promise)?bA:b.Deferred(),bE=bC.promise();function bD(bF){return function(bG){bx[bF]=arguments.length>1?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv<e;bv++){if(bx[bv]&&bx[bv].promise&&b.isFunction(bx[bv].promise)){bx[bv].promise().then(bD(bv),bC.reject,bz(bv))
-
17 }else{--bw}}if(!bw){bC.resolveWith(bC,bx)}}else{if(bC!==bA){bC.resolveWith(bC,e?[bA]:[])}}return bE}});b.support=(function(){var bJ,bI,bF,bG,bx,bE,bA,bD,bz,bK,bB,by,bw,bv=av.createElement("div"),bH=av.documentElement;bv.setAttribute("className","t");bv.innerHTML=" <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav></:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="<div "+e+"><div></div></div><table "+e+" cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="<div style='width:4px;'></div>";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA<bz;bA++){delete bB[bv[bA]]}if(!(by?S:b.isEmptyObject)(bB)){return}}}if(!by){delete e[bw].data;if(!S(e[bw])){return}}if(b.support.deleteExpando||!e.setInterval){delete e[bw]}else{e[bw]=null}if(bD){if(b.support.deleteExpando){delete bx[bC]}else{if(bx.removeAttribute){bx.removeAttribute(bC)}else{bx[bC]=null}}}},_data:function(bv,e,bw){return b.data(bv,e,bw,true)},acceptData:function(bv){if(bv.nodeName){var e=b.noData[bv.nodeName.toLowerCase()];if(e){return !(e===true||bv.getAttribute("classid")!==e)}}return true}});b.fn.extend({data:function(by,bA){var bB,e,bw,bz=null;if(typeof by==="undefined"){if(this.length){bz=b.data(this[0]);if(this[0].nodeType===1&&!b._data(this[0],"parsedAttrs")){e=this[0].attributes;for(var bx=0,bv=e.length;bx<bv;bx++){bw=e[bx].name;if(bw.indexOf("data-")===0){bw=b.camelCase(bw.substring(5));a5(this[0],bw,bz[bw])}}b._data(this[0],"parsedAttrs",true)}}return bz}else{if(typeof by==="object"){return this.each(function(){b.data(this,by)})}}bB=by.split(".");bB[1]=bB[1]?"."+bB[1]:"";if(bA===L){bz=this.triggerHandler("getData"+bB[1]+"!",[bB[0]]);if(bz===L&&this.length){bz=b.data(this[0],by);bz=a5(this[0],by,bz)}return bz===L&&bB[1]?this.data(bB[0]):bz}else{return this.each(function(){var bC=b(this),bD=[bB[0],bA];bC.triggerHandler("setData"+bB[1]+"!",bD);b.data(this,by,bA);bC.triggerHandler("changeData"+bB[1]+"!",bD)})}},removeData:function(e){return this.each(function(){b.removeData(this,e)})}});function a5(bx,bw,by){if(by===L&&bx.nodeType===1){var bv="data-"+bw.replace(aA,"-$1").toLowerCase();by=bx.getAttribute(bv);if(typeof by==="string"){try{by=by==="true"?true:by==="false"?false:by==="null"?null:b.isNumeric(by)?parseFloat(by):aS.test(by)?b.parseJSON(by):by}catch(bz){}b.data(bx,bw,by)}else{by=L}}return by}function S(bv){for(var e in bv){if(e==="data"&&b.isEmptyObject(bv[e])){continue}if(e!=="toJSON"){return false}}return true}function bi(by,bx,bA){var bw=bx+"defer",bv=bx+"queue",e=bx+"mark",bz=b._data(by,bw);if(bz&&(bA==="queue"||!b._data(by,bv))&&(bA==="mark"||!b._data(by,e))){setTimeout(function(){if(!b._data(by,bv)&&!b._data(by,e)){b.removeData(by,bw,true);bz.fire()}},0)}}b.extend({_mark:function(bv,e){if(bv){e=(e||"fx")+"mark";b._data(bv,e,(b._data(bv,e)||0)+1)}},_unmark:function(by,bx,bv){if(by!==true){bv=bx;bx=by;by=false}if(bx){bv=bv||"fx";var e=bv+"mark",bw=by?0:((b._data(bx,e)||1)-1);if(bw){b._data(bx,e,bw)}else{b.removeData(bx,e,true);bi(bx,bv,"mark")}}},queue:function(bv,e,bx){var bw;if(bv){e=(e||"fx")+"queue";bw=b._data(bv,e);if(bx){if(!bw||b.isArray(bx)){bw=b._data(bv,e,b.makeArray(bx))}else{bw.push(bx)}}return bw||[]}},dequeue:function(by,bx){bx=bx||"fx";var bv=b.queue(by,bx),bw=bv.shift(),e={};if(bw==="inprogress"){bw=bv.shift()}if(bw){if(bx==="fx"){bv.unshift("inprogress")}b._data(by,bx+".run",e);bw.call(by,function(){b.dequeue(by,bx)},e)}if(!bv.length){b.removeData(by,bx+"queue "+bx+".run",true);bi(by,bx,"queue")}}});b.fn.extend({queue:function(e,bv){if(typeof e!=="string"){bv=e;e="fx"}if(bv===L){return b.queue(this[0],e)}return this.each(function(){var bw=b.queue(this,e,bv);if(e==="fx"&&bw[0]!=="inprogress"){b.dequeue(this,e)}})},dequeue:function(e){return this.each(function(){b.dequeue(this,e)})},delay:function(bv,e){bv=b.fx?b.fx.speeds[bv]||bv:bv;e=e||"fx";return this.queue(e,function(bx,bw){var by=setTimeout(bx,bv);bw.stop=function(){clearTimeout(by)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(bD,bw){if(typeof bD!=="string"){bw=bD;bD=L}bD=bD||"fx";var e=b.Deferred(),bv=this,by=bv.length,bB=1,bz=bD+"defer",bA=bD+"queue",bC=bD+"mark",bx;function bE(){if(!(--bB)){e.resolveWith(bv,[bv])}}while(by--){if((bx=b.data(bv[by],bz,L,true)||(b.data(bv[by],bA,L,true)||b.data(bv[by],bC,L,true))&&b.data(bv[by],bz,b.Callbacks("once memory"),true))){bB++;bx.add(bE)}}bE();return e.promise()}});var aP=/[\n\t\r]/g,af=/\s+/,aU=/\r/g,g=/^(?:button|input)$/i,D=/^(?:button|input|object|select|textarea)$/i,l=/^a(?:rea)?$/i,ao=/^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,F=b.support.getSetAttribute,be,aY,aF;b.fn.extend({attr:function(e,bv){return b.access(this,e,bv,true,b.attr)},removeAttr:function(e){return this.each(function(){b.removeAttr(this,e)})},prop:function(e,bv){return b.access(this,e,bv,true,b.prop)},removeProp:function(e){e=b.propFix[e]||e;return this.each(function(){try{this[e]=L;delete this[e]}catch(bv){}})},addClass:function(by){var bA,bw,bv,bx,bz,bB,e;if(b.isFunction(by)){return this.each(function(bC){b(this).addClass(by.call(this,bC,this.className))})}if(by&&typeof by==="string"){bA=by.split(af);for(bw=0,bv=this.length;bw<bv;bw++){bx=this[bw];if(bx.nodeType===1){if(!bx.className&&bA.length===1){bx.className=by}else{bz=" "+bx.className+" ";for(bB=0,e=bA.length;bB<e;bB++){if(!~bz.indexOf(" "+bA[bB]+" ")){bz+=bA[bB]+" "}}bx.className=b.trim(bz)}}}}return this},removeClass:function(bz){var bA,bw,bv,by,bx,bB,e;if(b.isFunction(bz)){return this.each(function(bC){b(this).removeClass(bz.call(this,bC,this.className))})}if((bz&&typeof bz==="string")||bz===L){bA=(bz||"").split(af);for(bw=0,bv=this.length;bw<bv;bw++){by=this[bw];if(by.nodeType===1&&by.className){if(bz){bx=(" "+by.className+" ").replace(aP," ");for(bB=0,e=bA.length;bB<e;bB++){bx=bx.replace(" "+bA[bB]+" "," ")}by.className=b.trim(bx)}else{by.className=""}}}}return this},toggleClass:function(bx,bv){var bw=typeof bx,e=typeof bv==="boolean";if(b.isFunction(bx)){return this.each(function(by){b(this).toggleClass(bx.call(this,by,this.className,bv),bv)})}return this.each(function(){if(bw==="string"){var bA,bz=0,by=b(this),bB=bv,bC=bx.split(af);while((bA=bC[bz++])){bB=e?bB:!by.hasClass(bA);by[bB?"addClass":"removeClass"](bA)}}else{if(bw==="undefined"||bw==="boolean"){if(this.className){b._data(this,"__className__",this.className)}this.className=this.className||bx===false?"":b._data(this,"__className__")||""}}})},hasClass:function(e){var bx=" "+e+" ",bw=0,bv=this.length;for(;bw<bv;bw++){if(this[bw].nodeType===1&&(" "+this[bw].className+" ").replace(aP," ").indexOf(bx)>-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv<bz;bv++){bx=bC[bv];if(bx.selected&&(b.support.optDisabled?!bx.disabled:bx.getAttribute("disabled")===null)&&(!bx.parentNode.disabled||!b.nodeName(bx.parentNode,"optgroup"))){bA=b(bx).val();if(bw){return bA}bB.push(bA)}}if(bw&&!bB.length&&bC.length){return b(bC[by]).val()}return bB},set:function(bv,bw){var e=b.makeArray(bw);b(bv).find("option").each(function(){this.selected=b.inArray(b(this).val(),e)>=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;
-
18 if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw<e;bw++){bv=bA[bw];if(bv){by=b.propFix[bv]||bv;b.attr(bx,bv,"");bx.removeAttribute(F?bv:by);if(ao.test(bv)&&by in bx){bx[by]=false}}}}},attrHooks:{type:{set:function(e,bv){if(g.test(e.nodeName)&&e.parentNode){b.error("type property can't be changed")}else{if(!b.support.radioValue&&bv==="radio"&&b.nodeName(e,"input")){var bw=e.value;e.setAttribute("type",bv);if(bw){e.value=bw}return bv}}}},value:{get:function(bv,e){if(be&&b.nodeName(bv,"button")){return be.get(bv,e)}return e in bv?bv.value:null},set:function(bv,bw,e){if(be&&b.nodeName(bv,"button")){return be.set(bv,bw,e)}bv.value=bw}}},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(bz,bx,bA){var bw,e,by,bv=bz.nodeType;if(!bz||bv===3||bv===8||bv===2){return}by=bv!==1||!b.isXMLDoc(bz);if(by){bx=b.propFix[bx]||bx;e=b.propHooks[bx]}if(bA!==L){if(e&&"set" in e&&(bw=e.set(bz,bA,bx))!==L){return bw}else{return(bz[bx]=bA)}}else{if(e&&"get" in e&&(bw=e.get(bz,bx))!==null){return bw}else{return bz[bx]}}},propHooks:{tabIndex:{get:function(bv){var e=bv.getAttributeNode("tabindex");return e&&e.specified?parseInt(e.value,10):D.test(bv.nodeName)||l.test(bv.nodeName)&&bv.href?0:L}}}});b.attrHooks.tabindex=b.propHooks.tabIndex;aY={get:function(bv,e){var bx,bw=b.prop(bv,e);return bw===true||typeof bw!=="boolean"&&(bx=bv.getAttributeNode(e))&&bx.nodeValue!==false?e.toLowerCase():L},set:function(bv,bx,e){var bw;if(bx===false){b.removeAttr(bv,e)}else{bw=b.propFix[e]||e;if(bw in bv){bv[bw]=true}bv.setAttribute(e,e.toLowerCase())}return e}};if(!F){aF={name:true,id:true};be=b.valHooks.button={get:function(bw,bv){var e;e=bw.getAttributeNode(bv);return e&&(aF[bv]?e.nodeValue!=="":e.specified)?e.nodeValue:L},set:function(bw,bx,bv){var e=bw.getAttributeNode(bv);if(!e){e=av.createAttribute(bv);bw.setAttributeNode(e)}return(e.nodeValue=bx+"")}};b.attrHooks.tabindex.set=be.set;b.each(["width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{set:function(bw,bx){if(bx===""){bw.setAttribute(e,"auto");return bx}}})});b.attrHooks.contenteditable={get:be.get,set:function(bv,bw,e){if(bw===""){bw="false"}be.set(bv,bw,e)}}}if(!b.support.hrefNormalized){b.each(["href","src","width","height"],function(bv,e){b.attrHooks[e]=b.extend(b.attrHooks[e],{get:function(bx){var bw=bx.getAttribute(e,2);return bw===null?L:bw}})})}if(!b.support.style){b.attrHooks.style={get:function(e){return e.style.cssText.toLowerCase()||L},set:function(e,bv){return(e.style.cssText=""+bv)}}}if(!b.support.optSelected){b.propHooks.selected=b.extend(b.propHooks.selected,{get:function(bv){var e=bv.parentNode;if(e){e.selectedIndex;if(e.parentNode){e.parentNode.selectedIndex}}return null}})}if(!b.support.enctype){b.propFix.enctype="encoding"}if(!b.support.checkOn){b.each(["radio","checkbox"],function(){b.valHooks[this]={get:function(e){return e.getAttribute("value")===null?"on":e.value}}})}b.each(["radio","checkbox"],function(){b.valHooks[this]=b.extend(b.valHooks[this],{set:function(e,bv){if(b.isArray(bv)){return(e.checked=b.inArray(b(e).val(),bv)>=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI<bC.length;bI++){bH=n.exec(bC[bI])||[];bF=bH[1];e=(bH[2]||"").split(".").sort();bE=b.event.special[bF]||{};bF=(by?bE.delegateType:bE.bindType)||bF;bE=b.event.special[bF]||{};bG=b.extend({type:bF,origType:bH[1],data:bA,handler:bJ,guid:bJ.guid,selector:by,quick:Y(by),namespace:e.join(".")},bv);bw=bK[bF];if(!bw){bw=bK[bF]=[];bw.delegateCount=0;if(!bE.setup||bE.setup.call(bx,bA,e,bB)===false){if(bx.addEventListener){bx.addEventListener(bF,bB,false)}else{if(bx.attachEvent){bx.attachEvent("on"+bF,bB)}}}}if(bE.add){bE.add.call(bx,bG);if(!bG.handler.guid){bG.handler.guid=bJ.guid}}if(by){bw.splice(bw.delegateCount++,0,bG)}else{bw.push(bG)}b.event.global[bF]=true}bx=null},global:{},remove:function(bJ,bE,bv,bH,bB){var bI=b.hasData(bJ)&&b._data(bJ),bF,bx,bz,bL,bC,bA,bG,bw,by,bK,bD,e;if(!bI||!(bw=bI.events)){return}bE=b.trim(bt(bE||"")).split(" ");for(bF=0;bF<bE.length;bF++){bx=n.exec(bE[bF])||[];bz=bL=bx[1];bC=bx[2];if(!bz){for(bz in bw){b.event.remove(bJ,bz+bE[bF],bv,bH,true)}continue}by=b.event.special[bz]||{};bz=(bH?by.delegateType:by.bindType)||bz;bD=bw[bz]||[];bA=bD.length;bC=bC?new RegExp("(^|\\.)"+bC.split(".").sort().join("\\.(?:.*\\.)?")+"(\\.|$)"):null;for(bG=0;bG<bD.length;bG++){e=bD[bG];if((bB||bL===e.origType)&&(!bv||bv.guid===e.guid)&&(!bC||bC.test(e.namespace))&&(!bH||bH===e.selector||bH==="**"&&e.selector)){bD.splice(bG--,1);if(e.selector){bD.delegateCount--}if(by.remove){by.remove.call(bJ,e)}}}if(bD.length===0&&bA!==bD.length){if(!by.teardown||by.teardown.call(bJ,bC)===false){b.removeEvent(bJ,bz,bI.handle)}delete bw[bz]}}if(b.isEmptyObject(bw)){bK=bI.handle;if(bK){bK.elem=null}b.removeData(bJ,["events","handle"],true)}},customEvent:{getData:true,setData:true,changeData:true},trigger:function(bv,bD,bA,bJ){if(bA&&(bA.nodeType===3||bA.nodeType===8)){return}var bG=bv.type||bv,bx=[],e,bw,bC,bH,bz,by,bF,bE,bB,bI;if(T.test(bG+b.event.triggered)){return}if(bG.indexOf("!")>=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bC<bB.length&&!bv.isPropagationStopped();bC++){bH=bB[bC][0];bv.type=bB[bC][1];bE=(b._data(bH,"events")||{})[bv.type]&&b._data(bH,"handle");if(bE){bE.apply(bH,bD)}bE=by&&bH[by];if(bE&&b.acceptData(bH)&&bE.apply(bH,bD)===false){bv.preventDefault()}}bv.type=bG;if(!bJ&&!bv.isDefaultPrevented()){if((!bF._default||bF._default.apply(bA.ownerDocument,bD)===false)&&!(bG==="click"&&b.nodeName(bA,"a"))&&b.acceptData(bA)){if(by&&bA[bG]&&((bG!=="focus"&&bG!=="blur")||bv.target.offsetWidth!==0)&&!b.isWindow(bA)){bz=bA[by];if(bz){bA[by]=null}b.event.triggered=bG;bA[bG]();b.event.triggered=L;if(bz){bA[by]=bz}}}}return bv.result},dispatch:function(e){e=b.event.fix(e||bb.event);var bz=((b._data(this,"events")||{})[e.type]||[]),bA=bz.delegateCount,bG=[].slice.call(arguments,0),by=!e.exclusive&&!e.namespace,bH=[],bC,bB,bK,bx,bF,bE,bv,bD,bI,bw,bJ;bG[0]=e;e.delegateTarget=this;if(bA&&!e.target.disabled&&!(e.button&&e.type==="click")){bx=b(this);bx.context=this.ownerDocument||this;for(bK=e.target;bK!=this;bK=bK.parentNode||this){bE={};bD=[];bx[0]=bK;for(bC=0;bC<bA;bC++){bI=bz[bC];bw=bI.selector;if(bE[bw]===L){bE[bw]=(bI.quick?j(bK,bI.quick):bx.is(bw))}if(bE[bw]){bD.push(bI)}}if(bD.length){bH.push({elem:bK,matches:bD})}}}if(bz.length>bA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC<bH.length&&!e.isPropagationStopped();bC++){bv=bH[bC];e.currentTarget=bv.elem;for(bB=0;bB<bv.matches.length&&!e.isImmediatePropagationStopped();bB++){bI=bv.matches[bB];if(by||(!e.namespace&&!bI.namespace)||e.namespace_re&&e.namespace_re.test(bI.namespace)){e.data=bI.data;e.handleObj=bI;bF=((b.event.special[bI.origType]||{}).handle||bI.handler).apply(bv.elem,bG);if(bF!==L){e.result=bF;if(bF===false){e.preventDefault();e.stopPropagation()}}}}}return e.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(bv,e){if(bv.which==null){bv.which=e.charCode!=null?e.charCode:e.keyCode}return bv}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(bx,bw){var by,bz,e,bv=bw.button,bA=bw.fromElement;if(bx.pageX==null&&bw.clientX!=null){by=bx.target.ownerDocument||av;bz=by.documentElement;e=by.body;bx.pageX=bw.clientX+(bz&&bz.scrollLeft||e&&e.scrollLeft||0)-(bz&&bz.clientLeft||e&&e.clientLeft||0);bx.pageY=bw.clientY+(bz&&bz.scrollTop||e&&e.scrollTop||0)-(bz&&bz.clientTop||e&&e.clientTop||0)}if(!bx.relatedTarget&&bA){bx.relatedTarget=bA===bx.target?bw.toElement:bA}if(!bx.which&&bv!==L){bx.which=(bv&1?1:(bv&2?3:(bv&4?2:0)))}return bx}},fix:function(bw){if(bw[b.expando]){return bw}var bv,bz,e=bw,bx=b.event.fixHooks[bw.type]||{},by=bx.props?this.props.concat(bx.props):this.props;bw=b.Event(e);for(bv=by.length;bv;){bz=by[--bv];bw[bz]=e[bz]}if(!bw.target){bw.target=e.srcElement||av}if(bw.target.nodeType===3){bw.target=bw.target.parentNode}if(bw.metaKey===L){bw.metaKey=bw.ctrlKey}return bx.filter?bx.filter(bw,e):bw},special:{ready:{setup:b.bindReady},load:{noBubble:true},focus:{delegateType:"focusin"},blur:{delegateType:"focusout"},beforeunload:{setup:function(bw,bv,e){if(b.isWindow(this)){this.onbeforeunload=e}},teardown:function(bv,e){if(this.onbeforeunload===e){this.onbeforeunload=null}}}},simulate:function(bw,by,bx,bv){var bz=b.extend(new b.Event(),bx,{type:bw,isSimulated:true,originalEvent:{}});if(bv){b.event.trigger(bz,null,by)}else{b.event.dispatch.call(by,bz)}if(bz.isDefaultPrevented()){bx.preventDefault()}}};b.event.handle=b.event.dispatch;b.removeEvent=av.removeEventListener?function(bv,e,bw){if(bv.removeEventListener){bv.removeEventListener(e,bw,false)}}:function(bv,e,bw){if(bv.detachEvent){bv.detachEvent("on"+e,bw)}};b.Event=function(bv,e){if(!(this instanceof b.Event)){return new b.Event(bv,e)}if(bv&&bv.type){this.originalEvent=bv;this.type=bv.type;this.isDefaultPrevented=(bv.defaultPrevented||bv.returnValue===false||bv.getPreventDefault&&bv.getPreventDefault())?i:bk}else{this.type=bv}if(e){b.extend(this,e)}this.timeStamp=bv&&bv.timeStamp||b.now();this[b.expando]=true};function bk(){return false}function i(){return true}b.Event.prototype={preventDefault:function(){this.isDefaultPrevented=i;var bv=this.originalEvent;if(!bv){return}if(bv.preventDefault){bv.preventDefault()}else{bv.returnValue=false}},stopPropagation:function(){this.isPropagationStopped=i;var bv=this.originalEvent;if(!bv){return}if(bv.stopPropagation){bv.stopPropagation()}bv.cancelBubble=true},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=i;this.stopPropagation()},isDefaultPrevented:bk,isPropagationStopped:bk,isImmediatePropagationStopped:bk};b.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(bv,e){b.event.special[bv]={delegateType:e,bindType:e,handle:function(bz){var bB=this,bA=bz.relatedTarget,by=bz.handleObj,bw=by.selector,bx;if(!bA||(bA!==bB&&!b.contains(bB,bA))){bz.type=by.origType;bx=by.handler.apply(this,arguments);bz.type=e}return bx}}});if(!b.support.submitBubbles){b.event.special.submit={setup:function(){if(b.nodeName(this,"form")){return false
-
19 }b.event.add(this,"click._submit keypress._submit",function(bx){var bw=bx.target,bv=b.nodeName(bw,"input")||b.nodeName(bw,"button")?bw.form:L;if(bv&&!bv._submit_attached){b.event.add(bv,"submit._submit",function(e){if(this.parentNode&&!e.isTrigger){b.event.simulate("submit",this.parentNode,e,true)}});bv._submit_attached=true}})},teardown:function(){if(b.nodeName(this,"form")){return false}b.event.remove(this,"._submit")}}}if(!b.support.changeBubbles){b.event.special.change={setup:function(){if(bd.test(this.nodeName)){if(this.type==="checkbox"||this.type==="radio"){b.event.add(this,"propertychange._change",function(e){if(e.originalEvent.propertyName==="checked"){this._just_changed=true}});b.event.add(this,"click._change",function(e){if(this._just_changed&&!e.isTrigger){this._just_changed=false;b.event.simulate("change",this,e,true)}})}return false}b.event.add(this,"beforeactivate._change",function(bw){var bv=bw.target;if(bd.test(bv.nodeName)&&!bv._change_attached){b.event.add(bv,"change._change",function(e){if(this.parentNode&&!e.isSimulated&&!e.isTrigger){b.event.simulate("change",this.parentNode,e,true)}});bv._change_attached=true}})},handle:function(bv){var e=bv.target;if(this!==e||bv.isSimulated||bv.isTrigger||(e.type!=="radio"&&e.type!=="checkbox")){return bv.handleObj.handler.apply(this,arguments)}},teardown:function(){b.event.remove(this,"._change");return bd.test(this.nodeName)}}}if(!b.support.focusinBubbles){b.each({focus:"focusin",blur:"focusout"},function(bx,e){var bv=0,bw=function(by){b.event.simulate(e,by.target,b.event.fix(by),true)};b.event.special[e]={setup:function(){if(bv++===0){av.addEventListener(bx,bw,true)}},teardown:function(){if(--bv===0){av.removeEventListener(bx,bw,true)}}}})}b.fn.extend({on:function(bw,e,bz,by,bv){var bA,bx;if(typeof bw==="object"){if(typeof e!=="string"){bz=e;e=L}for(bx in bw){this.on(bx,e,bz,bw[bx],bv)}return this}if(bz==null&&by==null){by=e;bz=e=L}else{if(by==null){if(typeof e==="string"){by=bz;bz=L}else{by=bz;bz=e;e=L}}}if(by===false){by=bk}else{if(!by){return this}}if(bv===1){bA=by;by=function(bB){b().off(bB);return bA.apply(this,arguments)};by.guid=bA.guid||(bA.guid=b.guid++)}return this.each(function(){b.event.add(this,bw,by,bz,e)})},one:function(bv,e,bx,bw){return this.on.call(this,bv,e,bx,bw,1)},off:function(bw,e,by){if(bw&&bw.preventDefault&&bw.handleObj){var bv=bw.handleObj;b(bw.delegateTarget).off(bv.namespace?bv.type+"."+bv.namespace:bv.type,bv.selector,bv.handler);return this}if(typeof bw==="object"){for(var bx in bw){this.off(bx,e,bw[bx])}return this}if(e===false||typeof e==="function"){by=e;e=L}if(by===false){by=bk}return this.each(function(){b.event.remove(this,bw,by,e)})},bind:function(e,bw,bv){return this.on(e,null,bw,bv)},unbind:function(e,bv){return this.off(e,null,bv)},live:function(e,bw,bv){b(this.context).on(e,this.selector,bw,bv);return this},die:function(e,bv){b(this.context).off(e,this.selector||"**",bv);return this},delegate:function(e,bv,bx,bw){return this.on(bv,e,bx,bw)},undelegate:function(e,bv,bw){return arguments.length==1?this.off(e,"**"):this.off(bv,e,bw)},trigger:function(e,bv){return this.each(function(){b.event.trigger(e,bv,this)})},triggerHandler:function(e,bv){if(this[0]){return b.event.trigger(e,bv,this[0],true)}},toggle:function(bx){var bv=arguments,e=bx.guid||b.guid++,bw=0,by=function(bz){var bA=(b._data(this,"lastToggle"+bx.guid)||0)%bw;b._data(this,"lastToggle"+bx.guid,bA+1);bz.preventDefault();return bv[bA].apply(this,arguments)||false};by.guid=e;while(bw<bv.length){bv[bw++].guid=e}return this.click(by)},hover:function(e,bv){return this.mouseenter(e).mouseleave(bv||e)}});b.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(bv,e){b.fn[e]=function(bx,bw){if(bw==null){bw=bx;bx=null}return arguments.length>0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}});
-
26 (function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e<bR.length;e++){if(bR[e]===bR[e-1]){bR.splice(e--,1)}}}}return bR};by.matches=function(e,bR){return by(e,null,null,bR)};by.matchesSelector=function(e,bR){return by(bR,null,null,[e]).length>0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS<bU;bS++){bV=bE.order[bS];if((bT=bE.leftMatch[bV].exec(bX))){bR=bT[1];bT.splice(1,1);if(bR.substr(bR.length-1)!=="\\"){bT[1]=(bT[1]||"").replace(bK,"");bW=bE.find[bV](bT,e,bY);if(bW!=null){bX=bX.replace(bE.match[bV],"");break}}}}if(!bW){bW=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:bW,expr:bX}};by.filter=function(b1,b0,b4,bU){var bW,e,bZ,b6,b3,bR,bT,bV,b2,bS=b1,b5=[],bY=b0,bX=b0&&b0[0]&&by.isXML(b0[0]);while(b1&&b0.length){for(bZ in bE.filter){if((bW=bE.leftMatch[bZ].exec(b1))!=null&&bW[2]){bR=bE.filter[bZ];bT=bW[1];e=false;bW.splice(1,1);if(bT.substr(bT.length-1)==="\\"){continue}if(bY===b5){b5=[]}if(bE.preFilter[bZ]){bW=bE.preFilter[bZ](bW,bY,b4,b5,bU,bX);if(!bW){e=b6=true}else{if(bW===true){continue}}}if(bW){for(bV=0;(b3=bY[bV])!=null;bV++){if(b3){b6=bR(b3,bW,bV,bY);b2=bU^b6;if(b4&&b6!=null){if(b2){e=true}else{bY[bV]=false}}else{if(b2){b5.push(b3);e=true}}}}}if(b6!==L){if(!b4){bY=b5}b1=b1.replace(bE.match[bZ],"");if(!e){return[]}break}}}if(b1===bS){if(e==null){by.error(b1)}else{break}}bS=b1}return bY};by.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var bw=by.getText=function(bU){var bS,bT,e=bU.nodeType,bR="";if(e){if(e===1||e===9){if(typeof bU.textContent==="string"){return bU.textContent}else{if(typeof bU.innerText==="string"){return bU.innerText.replace(bO,"")}else{for(bU=bU.firstChild;bU;bU=bU.nextSibling){bR+=bw(bU)}}}}else{if(e===3||e===4){return bU.nodeValue}}}else{for(bS=0;(bT=bU[bS]);bS++){if(bT.nodeType!==8){bR+=bw(bT)}}}return bR};var bE=by.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(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(bW,bR){var bT=typeof bR==="string",bV=bT&&!bQ.test(bR),bX=bT&&!bV;if(bV){bR=bR.toLowerCase()}for(var bS=0,e=bW.length,bU;bS<e;bS++){if((bU=bW[bS])){while((bU=bU.previousSibling)&&bU.nodeType!==1){}bW[bS]=bX||bU&&bU.nodeName.toLowerCase()===bR?bU||false:bU===bR}}if(bX){by.filter(bR,bW,true)}},">":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS<e;bS++){bV=bW[bS];if(bV){var bT=bV.parentNode;bW[bS]=bT.nodeName.toLowerCase()===bR?bT:false}}}else{for(;bS<e;bS++){bV=bW[bS];if(bV){bW[bS]=bU?bV.parentNode:bV.parentNode===bR}}if(bU){by.filter(bR,bW,true)}}},"":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("parentNode",bR,bS,bT,bU,bV)},"~":function(bT,bR,bV){var bU,bS=bI++,e=bN;if(typeof bR==="string"&&!bQ.test(bR)){bR=bR.toLowerCase();bU=bR;e=bv}e("previousSibling",bR,bS,bT,bU,bV)}},find:{ID:function(bR,bS,bT){if(typeof bS.getElementById!=="undefined"&&!bT){var e=bS.getElementById(bR[1]);return e&&e.parentNode?[e]:[]}},NAME:function(bS,bV){if(typeof bV.getElementsByName!=="undefined"){var bR=[],bU=bV.getElementsByName(bS[1]);for(var bT=0,e=bU.length;bT<e;bT++){if(bU[bT].getAttribute("name")===bS[1]){bR.push(bU[bT])}}return bR.length===0?null:bR}},TAG:function(e,bR){if(typeof bR.getElementsByTagName!=="undefined"){return bR.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(bT,bR,bS,e,bW,bX){bT=" "+bT[1].replace(bK,"")+" ";if(bX){return bT}for(var bU=0,bV;(bV=bR[bU])!=null;bU++){if(bV){if(bW^(bV.className&&(" "+bV.className+" ").replace(/[\t\n\r]/g," ").indexOf(bT)>=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1
-
27 },lt:function(bS,bR,e){return bR<e[3]-0},gt:function(bS,bR,e){return bR>e[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV<bU;bV++){if(bT[bV]===bS){return false}}return true}else{by.error(e)}}}},CHILD:function(bS,bU){var bT,b0,bW,bZ,e,bV,bY,bX=bU[1],bR=bS;switch(bX){case"only":case"first":while((bR=bR.previousSibling)){if(bR.nodeType===1){return false}}if(bX==="first"){return true}bR=bS;case"last":while((bR=bR.nextSibling)){if(bR.nodeType===1){return false}}return true;case"nth":bT=bU[2];b0=bU[3];if(bT===1&&b0===0){return true}bW=bU[0];bZ=bS.parentNode;if(bZ&&(bZ[bC]!==bW||!bS.nodeIndex)){bV=0;for(bR=bZ.firstChild;bR;bR=bR.nextSibling){if(bR.nodeType===1){bR.nodeIndex=++bV}}bZ[bC]=bW}bY=bS.nodeIndex-b0;if(bT===0){return bY===0}else{return(bY%bT===0&&bY/bT>=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS<e;bS++){bR.push(bU[bS])}}else{for(;bU[bS];bS++){bR.push(bU[bS])}}}return bR}}var bJ,bG;if(av.documentElement.compareDocumentPosition){bJ=function(bR,e){if(bR===e){bB=true;return 0}if(!bR.compareDocumentPosition||!e.compareDocumentPosition){return bR.compareDocumentPosition?-1:1}return bR.compareDocumentPosition(e)&4?-1:1}}else{bJ=function(bY,bX){if(bY===bX){bB=true;return 0}else{if(bY.sourceIndex&&bX.sourceIndex){return bY.sourceIndex-bX.sourceIndex}}var bV,bR,bS=[],e=[],bU=bY.parentNode,bW=bX.parentNode,bZ=bU;if(bU===bW){return bG(bY,bX)}else{if(!bU){return -1}else{if(!bW){return 1}}}while(bZ){bS.unshift(bZ);bZ=bZ.parentNode}bZ=bW;while(bZ){e.unshift(bZ);bZ=bZ.parentNode}bV=bS.length;bR=e.length;for(var bT=0;bT<bV&&bT<bR;bT++){if(bS[bT]!==e[bT]){return bG(bS[bT],e[bT])}}return bT===bV?bG(bY,e[bT],-1):bG(bS[bT],bX,1)};bG=function(bR,e,bS){if(bR===e){return bS}var bT=bR.nextSibling;while(bT){if(bT===e){return -1}bT=bT.nextSibling}return 1}}(function(){var bR=av.createElement("div"),bS="script"+(new Date()).getTime(),e=av.documentElement;bR.innerHTML="<a name='"+bS+"'/>";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="<p class='TEST'></p>";if(bT.querySelectorAll&&bT.querySelectorAll(".TEST").length===0){return}by=function(b4,bV,bZ,b3){bV=bV||av;if(!b3&&!by.isXML(bV)){var b2=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(b4);if(b2&&(bV.nodeType===1||bV.nodeType===9)){if(b2[1]){return bF(bV.getElementsByTagName(b4),bZ)}else{if(b2[2]&&bE.find.CLASS&&bV.getElementsByClassName){return bF(bV.getElementsByClassName(b2[2]),bZ)}}}if(bV.nodeType===9){if(b4==="body"&&bV.body){return bF([bV.body],bZ)}else{if(b2&&b2[3]){var bY=bV.getElementById(b2[3]);if(bY&&bY.parentNode){if(bY.id===b2[3]){return bF([bY],bZ)}}else{return bF([],bZ)}}}try{return bF(bV.querySelectorAll(b4),bZ)}catch(b0){}}else{if(bV.nodeType===1&&bV.nodeName.toLowerCase()!=="object"){var bW=bV,bX=bV.getAttribute("id"),bU=bX||bS,b6=bV.parentNode,b5=/^\s*[+~]/.test(b4);if(!bX){bV.setAttribute("id",bU)}else{bU=bU.replace(/'/g,"\\$&")}if(b5&&b6){bV=bV.parentNode}try{if(!b5||b6){return bF(bV.querySelectorAll("[id='"+bU+"'] "+b4),bZ)}}catch(b1){}finally{if(!bX){bW.removeAttribute("id")}}}}}return e(b4,bV,bZ,b3)};for(var bR in e){by[bR]=e[bR]}bT=null})()}(function(){var e=av.documentElement,bS=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(bS){var bU=!bS.call(av.createElement("div"),"div"),bR=false;try{bS.call(av.documentElement,"[test!='']:sizzle")}catch(bT){bR=true}by.matchesSelector=function(bW,bY){bY=bY.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!by.isXML(bW)){try{if(bR||!bE.match.PSEUDO.test(bY)&&!/!=/.test(bY)){var bV=bS.call(bW,bY);if(bV||!bU||bW.document&&bW.document.nodeType!==11){return bV}}}catch(bX){}}return by(bY,null,null,[bW]).length>0}}})();(function(){var e=av.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}bE.order.splice(1,0,"CLASS");bE.find.CLASS=function(bR,bS,bT){if(typeof bS.getElementsByClassName!=="undefined"&&!bT){return bS.getElementsByClassName(bR[1])}};e=null})();function bv(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1&&!bY){e[bC]=bV;e.sizset=bT}if(e.nodeName.toLowerCase()===bW){bU=e;break}e=e[bR]}bZ[bT]=bU}}}function bN(bR,bW,bV,bZ,bX,bY){for(var bT=0,bS=bZ.length;bT<bS;bT++){var e=bZ[bT];if(e){var bU=false;e=e[bR];while(e){if(e[bC]===bV){bU=bZ[e.sizset];break}if(e.nodeType===1){if(!bY){e[bC]=bV;e.sizset=bT}if(typeof bW!=="string"){if(e===bW){bU=true;break}}else{if(by.filter(bW,[e]).length>0){bU=e;break}}}e=e[bR]}bZ[bT]=bU}}}if(av.documentElement.contains){by.contains=function(bR,e){return bR!==e&&(bR.contains?bR.contains(e):true)}}else{if(av.documentElement.compareDocumentPosition){by.contains=function(bR,e){return !!(bR.compareDocumentPosition(e)&16)}}else{by.contains=function(){return false}}}by.isXML=function(e){var bR=(e?e.ownerDocument||e:0).documentElement;return bR?bR.nodeName!=="HTML":false};var bM=function(bS,e,bW){var bV,bX=[],bU="",bY=e.nodeType?[e]:e;while((bV=bE.match.PSEUDO.exec(bS))){bU+=bV[0];bS=bS.replace(bE.match.PSEUDO,"")}bS=bE.relative[bS]?bS+"*":bS;for(var bT=0,bR=bY.length;bT<bR;bT++){by(bS,bY[bT],bX,bW)}return by.filter(bU,bX)};by.attr=b.attr;by.selectors.attrMap={};b.find=by;b.expr=by.selectors;b.expr[":"]=b.expr.filters;b.unique=by.uniqueSort;b.text=by.getText;b.isXMLDoc=by.isXML;b.contains=by.contains})();var ab=/Until$/,aq=/^(?:parents|prevUntil|prevAll)/,a9=/,/,bp=/^.[^:#\[\.,]*$/,P=Array.prototype.slice,H=b.expr.match.POS,ay={children:true,contents:true,next:true,prev:true};b.fn.extend({find:function(e){var bw=this,by,bv;if(typeof e!=="string"){return b(e).filter(function(){for(by=0,bv=bw.length;by<bv;by++){if(b.contains(bw[by],this)){return true}}})}var bx=this.pushStack("","find",e),bA,bB,bz;for(by=0,bv=this.length;by<bv;by++){bA=bx.length;b.find(e,this[by],bx);if(by>0){for(bB=bA;bB<bx.length;bB++){for(bz=0;bz<bA;bz++){if(bx[bz]===bx[bB]){bx.splice(bB--,1);break}}}}}return bx},has:function(bv){var e=b(bv);return this.filter(function(){for(var bx=0,bw=e.length;bx<bw;bx++){if(b.contains(this,e[bx])){return true}}})},not:function(e){return this.pushStack(aG(this,e,false),"not",e)},filter:function(e){return this.pushStack(aG(this,e,true),"filter",e)},is:function(e){return !!e&&(typeof e==="string"?H.test(e)?b(e,this.context).index(this[0])>=0:b.filter(e,this).length>0:this.filter(e).length>0)},closest:function(by,bx){var bv=[],bw,e,bz=this[0];if(b.isArray(by)){var bB=1;while(bz&&bz.ownerDocument&&bz!==bx){for(bw=0;bw<by.length;bw++){if(b(bz).is(by[bw])){bv.push({selector:by[bw],elem:bz,level:bB})}}bz=bz.parentNode;bB++}return bv}var bA=H.test(by)||typeof by!=="string"?b(by,bx||this.context):0;for(bw=0,e=this.length;bw<e;bw++){bz=this[bw];while(bz){if(bA?bA.index(bz)>-1:b.find.matchesSelector(bz,by)){bv.push(bz);break}else{bz=bz.parentNode;if(!bz||!bz.ownerDocument||bz===bx||bz.nodeType===11){break}}}}bv=bv.length>1?b.unique(bv):bv;return this.pushStack(bv,"closest",by)},index:function(e){if(!e){return(this[0]&&this[0].parentNode)?this.prevAll().length:-1}if(typeof e==="string"){return b.inArray(this[0],b(e))}return b.inArray(e.jquery?e[0]:e,this)},add:function(e,bv){var bx=typeof e==="string"?b(e,bv):b.makeArray(e&&e.nodeType?[e]:e),bw=b.merge(this.get(),bx);return this.pushStack(C(bx[0])||C(bw[0])?bw:b.unique(bw))},andSelf:function(){return this.add(this.prevObject)}});function C(e){return !e||!e.parentNode||e.parentNode.nodeType===11}b.each({parent:function(bv){var e=bv.parentNode;return e&&e.nodeType!==11?e:null},parents:function(e){return b.dir(e,"parentNode")},parentsUntil:function(bv,e,bw){return b.dir(bv,"parentNode",bw)},next:function(e){return b.nth(e,2,"nextSibling")},prev:function(e){return b.nth(e,2,"previousSibling")},nextAll:function(e){return b.dir(e,"nextSibling")},prevAll:function(e){return b.dir(e,"previousSibling")},nextUntil:function(bv,e,bw){return b.dir(bv,"nextSibling",bw)},prevUntil:function(bv,e,bw){return b.dir(bv,"previousSibling",bw)},siblings:function(e){return b.sibling(e.parentNode.firstChild,e)},children:function(e){return b.sibling(e.firstChild)},contents:function(e){return b.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:b.makeArray(e.childNodes)}},function(e,bv){b.fn[e]=function(by,bw){var bx=b.map(this,bv,by);if(!ab.test(e)){bw=by}if(bw&&typeof bw==="string"){bx=b.filter(bw,bx)}bx=this.length>1&&!ay[e]?b.unique(bx):bx;if((this.length>1||a9.test(bw))&&aq.test(e)){bx=bx.reverse()}return this.pushStack(bx,e,P.call(arguments).join(","))}});b.extend({filter:function(bw,e,bv){if(bv){bw=":not("+bw+")"}return e.length===1?b.find.matchesSelector(e[0],bw)?[e[0]]:[]:b.find.matches(bw,e)},dir:function(bw,bv,by){var e=[],bx=bw[bv];while(bx&&bx.nodeType!==9&&(by===L||bx.nodeType!==1||!b(bx).is(by))){if(bx.nodeType===1){e.push(bx)}bx=bx[bv]}return e},nth:function(by,e,bw,bx){e=e||1;var bv=0;for(;by;by=by[bw]){if(by.nodeType===1&&++bv===e){break}}return by},sibling:function(bw,bv){var e=[];for(;bw;bw=bw.nextSibling){if(bw.nodeType===1&&bw!==bv){e.push(bw)}}return e}});function aG(bx,bw,e){bw=bw||0;if(b.isFunction(bw)){return b.grep(bx,function(bz,by){var bA=!!bw.call(bz,by,bz);return bA===e})}else{if(bw.nodeType){return b.grep(bx,function(bz,by){return(bz===bw)===e})}else{if(typeof bw==="string"){var bv=b.grep(bx,function(by){return by.nodeType===1});if(bp.test(bw)){return b.filter(bw,bv,!e)}else{bw=b.filter(bw,bv)}}}}return b.grep(bx,function(bz,by){return(b.inArray(bz,bw)>=0)===e})}function a(e){var bw=aR.split("|"),bv=e.createDocumentFragment();if(bv.createElement){while(bw.length){bv.createElement(bw.pop())}}return bv}var aR="abbr|article|aside|audio|canvas|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",ag=/ jQuery\d+="(?:\d+|null)"/g,ar=/^\s+/,R=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,d=/<([\w:]+)/,w=/<tbody/i,W=/<|&#?\w+;/,ae=/<(?:script|style)/i,O=/<(?:script|object|embed|option|style)/i,ah=new RegExp("<(?:"+aR+")","i"),o=/checked\s*(?:[^=]|=\s*.checked.)/i,bm=/\/(java|ecma)script/i,aN=/^\s*<!(?:\[CDATA\[|\-\-)/,ax={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,"",""]},ac=a(av);
-
28 ax.optgroup=ax.option;ax.tbody=ax.tfoot=ax.colgroup=ax.caption=ax.thead;ax.th=ax.td;if(!b.support.htmlSerialize){ax._default=[1,"div<div>","</div>"]}b.fn.extend({text:function(e){if(b.isFunction(e)){return this.each(function(bw){var bv=b(this);bv.text(e.call(this,bw,bv.text()))})}if(typeof e!=="object"&&e!==L){return this.empty().append((this[0]&&this[0].ownerDocument||av).createTextNode(e))}return b.text(this)},wrapAll:function(e){if(b.isFunction(e)){return this.each(function(bw){b(this).wrapAll(e.call(this,bw))})}if(this[0]){var bv=b(e,this[0].ownerDocument).eq(0).clone(true);if(this[0].parentNode){bv.insertBefore(this[0])}bv.map(function(){var bw=this;while(bw.firstChild&&bw.firstChild.nodeType===1){bw=bw.firstChild}return bw}).append(this)}return this},wrapInner:function(e){if(b.isFunction(e)){return this.each(function(bv){b(this).wrapInner(e.call(this,bv))})}return this.each(function(){var bv=b(this),bw=bv.contents();if(bw.length){bw.wrapAll(e)}else{bv.append(e)}})},wrap:function(e){var bv=b.isFunction(e);return this.each(function(bw){b(this).wrapAll(bv?e.call(this,bw):e)})},unwrap:function(){return this.parent().each(function(){if(!b.nodeName(this,"body")){b(this).replaceWith(this.childNodes)}}).end()},append:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.appendChild(e)}})},prepend:function(){return this.domManip(arguments,true,function(e){if(this.nodeType===1){this.insertBefore(e,this.firstChild)}})},before:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this)})}else{if(arguments.length){var e=b.clean(arguments);e.push.apply(e,this.toArray());return this.pushStack(e,"before",arguments)}}},after:function(){if(this[0]&&this[0].parentNode){return this.domManip(arguments,false,function(bv){this.parentNode.insertBefore(bv,this.nextSibling)})}else{if(arguments.length){var e=this.pushStack(this,"after",arguments);e.push.apply(e,b.clean(arguments));return e}}},remove:function(e,bx){for(var bv=0,bw;(bw=this[bv])!=null;bv++){if(!e||b.filter(e,[bw]).length){if(!bx&&bw.nodeType===1){b.cleanData(bw.getElementsByTagName("*"));b.cleanData([bw])}if(bw.parentNode){bw.parentNode.removeChild(bw)}}}return this},empty:function(){for(var e=0,bv;(bv=this[e])!=null;e++){if(bv.nodeType===1){b.cleanData(bv.getElementsByTagName("*"))}while(bv.firstChild){bv.removeChild(bv.firstChild)}}return this},clone:function(bv,e){bv=bv==null?false:bv;e=e==null?bv:e;return this.map(function(){return b.clone(this,bv,e)})},html:function(bx){if(bx===L){return this[0]&&this[0].nodeType===1?this[0].innerHTML.replace(ag,""):null}else{if(typeof bx==="string"&&!ae.test(bx)&&(b.support.leadingWhitespace||!ar.test(bx))&&!ax[(d.exec(bx)||["",""])[1].toLowerCase()]){bx=bx.replace(R,"<$1></$2>");try{for(var bw=0,bv=this.length;bw<bv;bw++){if(this[bw].nodeType===1){b.cleanData(this[bw].getElementsByTagName("*"));this[bw].innerHTML=bx}}}catch(by){this.empty().append(bx)}}else{if(b.isFunction(bx)){this.each(function(bz){var e=b(this);e.html(bx.call(this,bz,e.html()))})}else{this.empty().append(bx)}}}return this},replaceWith:function(e){if(this[0]&&this[0].parentNode){if(b.isFunction(e)){return this.each(function(bx){var bw=b(this),bv=bw.html();bw.replaceWith(e.call(this,bx,bv))})}if(typeof e!=="string"){e=b(e).detach()}return this.each(function(){var bw=this.nextSibling,bv=this.parentNode;b(this).remove();if(bw){b(bw).before(e)}else{b(bv).append(e)}})}else{return this.length?this.pushStack(b(b.isFunction(e)?e():e),"replaceWith",e):this}},detach:function(e){return this.remove(e,true)},domManip:function(bB,bF,bE){var bx,by,bA,bD,bC=bB[0],bv=[];if(!b.support.checkClone&&arguments.length===3&&typeof bC==="string"&&o.test(bC)){return this.each(function(){b(this).domManip(bB,bF,bE,true)})}if(b.isFunction(bC)){return this.each(function(bH){var bG=b(this);bB[0]=bC.call(this,bH,bF?bG.html():L);bG.domManip(bB,bF,bE)})}if(this[0]){bD=bC&&bC.parentNode;if(b.support.parentNode&&bD&&bD.nodeType===11&&bD.childNodes.length===this.length){bx={fragment:bD}}else{bx=b.buildFragment(bB,this,bv)}bA=bx.fragment;if(bA.childNodes.length===1){by=bA=bA.firstChild}else{by=bA.firstChild}if(by){bF=bF&&b.nodeName(by,"tr");for(var bw=0,e=this.length,bz=e-1;bw<e;bw++){bE.call(bF?ba(this[bw],by):this[bw],bx.cacheable||(e>1&&bw<bz)?b.clone(bA,true,true):bA)}}if(bv.length){b.each(bv,bo)}}return this}});function ba(e,bv){return b.nodeName(e,"table")?(e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody"))):e}function t(bB,bv){if(bv.nodeType!==1||!b.hasData(bB)){return}var by,bx,e,bA=b._data(bB),bz=b._data(bv,bA),bw=bA.events;if(bw){delete bz.handle;bz.events={};for(by in bw){for(bx=0,e=bw[by].length;bx<e;bx++){b.event.add(bv,by+(bw[by][bx].namespace?".":"")+bw[by][bx].namespace,bw[by][bx],bw[by][bx].data)}}}if(bz.data){bz.data=b.extend({},bz.data)}}function ai(bv,e){var bw;if(e.nodeType!==1){return}if(e.clearAttributes){e.clearAttributes()}if(e.mergeAttributes){e.mergeAttributes(bv)}bw=e.nodeName.toLowerCase();if(bw==="object"){e.outerHTML=bv.outerHTML}else{if(bw==="input"&&(bv.type==="checkbox"||bv.type==="radio")){if(bv.checked){e.defaultChecked=e.checked=bv.checked}if(e.value!==bv.value){e.value=bv.value}}else{if(bw==="option"){e.selected=bv.defaultSelected}else{if(bw==="input"||bw==="textarea"){e.defaultValue=bv.defaultValue}}}}e.removeAttribute(b.expando)}b.buildFragment=function(bz,bx,bv){var by,e,bw,bA,bB=bz[0];if(bx&&bx[0]){bA=bx[0].ownerDocument||bx[0]}if(!bA.createDocumentFragment){bA=av}if(bz.length===1&&typeof bB==="string"&&bB.length<512&&bA===av&&bB.charAt(0)==="<"&&!O.test(bB)&&(b.support.checkClone||!o.test(bB))&&(b.support.html5Clone||!ah.test(bB))){e=true;bw=b.fragments[bB];if(bw&&bw!==1){by=bw}}if(!by){by=bA.createDocumentFragment();b.clean(bz,bA,by,bv)}if(e){b.fragments[bB]=bw?by:1}return{fragment:by,cacheable:e}};b.fragments={};b.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,bv){b.fn[e]=function(bw){var bz=[],bC=b(bw),bB=this.length===1&&this[0].parentNode;if(bB&&bB.nodeType===11&&bB.childNodes.length===1&&bC.length===1){bC[bv](this[0]);return this}else{for(var bA=0,bx=bC.length;bA<bx;bA++){var by=(bA>0?this.clone(true):this).get();b(bC[bA])[bv](by);bz=bz.concat(by)}return this.pushStack(bz,e,bC.selector)}}});function bg(e){if(typeof e.getElementsByTagName!=="undefined"){return e.getElementsByTagName("*")}else{if(typeof e.querySelectorAll!=="undefined"){return e.querySelectorAll("*")}else{return[]}}}function az(e){if(e.type==="checkbox"||e.type==="radio"){e.defaultChecked=e.checked}}function E(e){var bv=(e.nodeName||"").toLowerCase();if(bv==="input"){az(e)}else{if(bv!=="script"&&typeof e.getElementsByTagName!=="undefined"){b.grep(e.getElementsByTagName("input"),az)}}}function al(e){var bv=av.createElement("div");ac.appendChild(bv);bv.innerHTML=e.outerHTML;return bv.firstChild}b.extend({clone:function(by,bA,bw){var e,bv,bx,bz=b.support.html5Clone||!ah.test("<"+by.nodeName)?by.cloneNode(true):al(by);if((!b.support.noCloneEvent||!b.support.noCloneChecked)&&(by.nodeType===1||by.nodeType===11)&&!b.isXMLDoc(by)){ai(by,bz);e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){if(bv[bx]){ai(e[bx],bv[bx])}}}if(bA){t(by,bz);if(bw){e=bg(by);bv=bg(bz);for(bx=0;e[bx];++bx){t(e[bx],bv[bx])}}}e=bv=null;return bz},clean:function(bw,by,bH,bA){var bF;by=by||av;if(typeof by.createElement==="undefined"){by=by.ownerDocument||by[0]&&by[0].ownerDocument||av}var bI=[],bB;for(var bE=0,bz;(bz=bw[bE])!=null;bE++){if(typeof bz==="number"){bz+=""}if(!bz){continue}if(typeof bz==="string"){if(!W.test(bz)){bz=by.createTextNode(bz)}else{bz=bz.replace(R,"<$1></$2>");var bK=(d.exec(bz)||["",""])[1].toLowerCase(),bx=ax[bK]||ax._default,bD=bx[0],bv=by.createElement("div");if(by===av){ac.appendChild(bv)}else{a(by).appendChild(bv)}bv.innerHTML=bx[1]+bz+bx[2];while(bD--){bv=bv.lastChild}if(!b.support.tbody){var e=w.test(bz),bC=bK==="table"&&!e?bv.firstChild&&bv.firstChild.childNodes:bx[1]==="<table>"&&!e?bv.childNodes:[];for(bB=bC.length-1;bB>=0;--bB){if(b.nodeName(bC[bB],"tbody")&&!bC[bB].childNodes.length){bC[bB].parentNode.removeChild(bC[bB])}}}if(!b.support.leadingWhitespace&&ar.test(bz)){bv.insertBefore(by.createTextNode(ar.exec(bz)[0]),bv.firstChild)}bz=bv.childNodes}}var bG;if(!b.support.appendChecked){if(bz[0]&&typeof(bG=bz.length)==="number"){for(bB=0;bB<bG;bB++){E(bz[bB])}}else{E(bz)}}if(bz.nodeType){bI.push(bz)}else{bI=b.merge(bI,bz)}}if(bH){bF=function(bL){return !bL.type||bm.test(bL.type)};for(bE=0;bI[bE];bE++){if(bA&&b.nodeName(bI[bE],"script")&&(!bI[bE].type||bI[bE].type.toLowerCase()==="text/javascript")){bA.push(bI[bE].parentNode?bI[bE].parentNode.removeChild(bI[bE]):bI[bE])}else{if(bI[bE].nodeType===1){var bJ=b.grep(bI[bE].getElementsByTagName("script"),bF);bI.splice.apply(bI,[bE+1,0].concat(bJ))}bH.appendChild(bI[bE])}}}return bI},cleanData:function(bv){var by,bw,e=b.cache,bB=b.event.special,bA=b.support.deleteExpando;for(var bz=0,bx;(bx=bv[bz])!=null;bz++){if(bx.nodeName&&b.noData[bx.nodeName.toLowerCase()]){continue}bw=bx[b.expando];if(bw){by=e[bw];if(by&&by.events){for(var bC in by.events){if(bB[bC]){b.event.remove(bx,bC)}else{b.removeEvent(bx,bC,by.handle)}}if(by.handle){by.handle.elem=null}}if(bA){delete bx[b.expando]}else{if(bx.removeAttribute){bx.removeAttribute(b.expando)}}delete e[bw]}}}});function bo(e,bv){if(bv.src){b.ajax({url:bv.src,async:false,dataType:"script"})}else{b.globalEval((bv.text||bv.textContent||bv.innerHTML||"").replace(aN,"/*$0*/"))}if(bv.parentNode){bv.parentNode.removeChild(bv)}}var ak=/alpha\([^)]*\)/i,au=/opacity=([^)]*)/,z=/([A-Z]|^ms)/g,bc=/^-?\d+(?:px)?$/i,bn=/^-?\d/,I=/^([\-+])=([\-+.\de]+)/,a7={position:"absolute",visibility:"hidden",display:"block"},an=["Left","Right"],a1=["Top","Bottom"],Z,aI,aX;b.fn.css=function(e,bv){if(arguments.length===2&&bv===L){return this}return b.access(this,e,bv,true,function(bx,bw,by){return by!==L?b.style(bx,bw,by):b.css(bx,bw)})};b.extend({cssHooks:{opacity:{get:function(bw,bv){if(bv){var e=Z(bw,"opacity","opacity");return e===""?"1":e}else{return bw.style.opacity}}}},cssNumber:{fillOpacity:true,fontWeight:true,lineHeight:true,opacity:true,orphans:true,widows:true,zIndex:true,zoom:true},cssProps:{"float":b.support.cssFloat?"cssFloat":"styleFloat"},style:function(bx,bw,bD,by){if(!bx||bx.nodeType===3||bx.nodeType===8||!bx.style){return}var bB,bC,bz=b.camelCase(bw),bv=bx.style,bE=b.cssHooks[bz];bw=b.cssProps[bz]||bz;if(bD!==L){bC=typeof bD;if(bC==="string"&&(bB=I.exec(bD))){bD=(+(bB[1]+1)*+bB[2])+parseFloat(b.css(bx,bw));bC="number"}if(bD==null||bC==="number"&&isNaN(bD)){return}if(bC==="number"&&!b.cssNumber[bz]){bD+="px"}if(!bE||!("set" in bE)||(bD=bE.set(bx,bD))!==L){try{bv[bw]=bD}catch(bA){}}}else{if(bE&&"get" in bE&&(bB=bE.get(bx,false,by))!==L){return bB}return bv[bw]}},css:function(by,bx,bv){var bw,e;bx=b.camelCase(bx);e=b.cssHooks[bx];bx=b.cssProps[bx]||bx;if(bx==="cssFloat"){bx="float"}if(e&&"get" in e&&(bw=e.get(by,true,bv))!==L){return bw}else{if(Z){return Z(by,bx)}}},swap:function(bx,bw,by){var e={};for(var bv in bw){e[bv]=bx.style[bv];bx.style[bv]=bw[bv]}by.call(bx);for(bv in bw){bx.style[bv]=e[bv]}}});b.curCSS=b.css;b.each(["height","width"],function(bv,e){b.cssHooks[e]={get:function(by,bx,bw){var bz;if(bx){if(by.offsetWidth!==0){return p(by,e,bw)}else{b.swap(by,a7,function(){bz=p(by,e,bw)})}return bz}},set:function(bw,bx){if(bc.test(bx)){bx=parseFloat(bx);if(bx>=0){return bx+"px"}}else{return bx}}}});if(!b.support.opacity){b.cssHooks.opacity={get:function(bv,e){return au.test((e&&bv.currentStyle?bv.currentStyle.filter:bv.style.filter)||"")?(parseFloat(RegExp.$1)/100)+"":e?"1":""},set:function(by,bz){var bx=by.style,bv=by.currentStyle,e=b.isNumeric(bz)?"alpha(opacity="+bz*100+")":"",bw=bv&&bv.filter||bx.filter||"";bx.zoom=1;if(bz>=1&&b.trim(bw.replace(ak,""))===""){bx.removeAttribute("filter");if(bv&&!bv.filter){return}}bx.filter=ak.test(bw)?bw.replace(ak,e):bw+" "+e}}}b(function(){if(!b.support.reliableMarginRight){b.cssHooks.marginRight={get:function(bw,bv){var e;b.swap(bw,{display:"inline-block"},function(){if(bv){e=Z(bw,"margin-right","marginRight")}else{e=bw.style.marginRight}});return e}}}});if(av.defaultView&&av.defaultView.getComputedStyle){aI=function(by,bw){var bv,bx,e;bw=bw.replace(z,"-$1").toLowerCase();if((bx=by.ownerDocument.defaultView)&&(e=bx.getComputedStyle(by,null))){bv=e.getPropertyValue(bw);if(bv===""&&!b.contains(by.ownerDocument.documentElement,by)){bv=b.style(by,bw)}}return bv}}if(av.documentElement.currentStyle){aX=function(bz,bw){var bA,e,by,bv=bz.currentStyle&&bz.currentStyle[bw],bx=bz.style;if(bv===null&&bx&&(by=bx[bw])){bv=by}if(!bc.test(bv)&&bn.test(bv)){bA=bx.left;e=bz.runtimeStyle&&bz.runtimeStyle.left;if(e){bz.runtimeStyle.left=bz.currentStyle.left}bx.left=bw==="fontSize"?"1em":(bv||0);bv=bx.pixelLeft+"px";bx.left=bA;if(e){bz.runtimeStyle.left=e}}return bv===""?"auto":bv}}Z=aI||aX;function p(by,bw,bv){var bA=bw==="width"?by.offsetWidth:by.offsetHeight,bz=bw==="width"?an:a1,bx=0,e=bz.length;
-
29 if(bA>0){if(bv!=="border"){for(;bx<e;bx++){if(!bv){bA-=parseFloat(b.css(by,"padding"+bz[bx]))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}else{bA-=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}}}return bA+"px"}bA=Z(by,bw,bw);if(bA<0||bA==null){bA=by.style[bw]||0}bA=parseFloat(bA)||0;if(bv){for(;bx<e;bx++){bA+=parseFloat(b.css(by,"padding"+bz[bx]))||0;if(bv!=="padding"){bA+=parseFloat(b.css(by,"border"+bz[bx]+"Width"))||0}if(bv==="margin"){bA+=parseFloat(b.css(by,bv+bz[bx]))||0}}}return bA+"px"}if(b.expr&&b.expr.filters){b.expr.filters.hidden=function(bw){var bv=bw.offsetWidth,e=bw.offsetHeight;return(bv===0&&e===0)||(!b.support.reliableHiddenOffsets&&((bw.style&&bw.style.display)||b.css(bw,"display"))==="none")};b.expr.filters.visible=function(e){return !b.expr.filters.hidden(e)}}var k=/%20/g,ap=/\[\]$/,bs=/\r?\n/g,bq=/#.*$/,aD=/^(.*?):[ \t]*([^\r\n]*)\r?$/mg,aZ=/^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,aM=/^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,aQ=/^(?:GET|HEAD)$/,c=/^\/\//,M=/\?/,a6=/<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,q=/^(?:select|textarea)/i,h=/\s+/,br=/([?&])_=[^&]*/,K=/^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,A=b.fn.load,aa={},r={},aE,s,aV=["*/"]+["*"];try{aE=bl.href}catch(aw){aE=av.createElement("a");aE.href="";aE=aE.href}s=K.exec(aE.toLowerCase())||[];function f(e){return function(by,bA){if(typeof by!=="string"){bA=by;by="*"}if(b.isFunction(bA)){var bx=by.toLowerCase().split(h),bw=0,bz=bx.length,bv,bB,bC;for(;bw<bz;bw++){bv=bx[bw];bC=/^\+/.test(bv);if(bC){bv=bv.substr(1)||"*"}bB=e[bv]=e[bv]||[];bB[bC?"unshift":"push"](bA)}}}}function aW(bv,bE,bz,bD,bB,bx){bB=bB||bE.dataTypes[0];bx=bx||{};bx[bB]=true;var bA=bv[bB],bw=0,e=bA?bA.length:0,by=(bv===aa),bC;for(;bw<e&&(by||!bC);bw++){bC=bA[bw](bE,bz,bD);if(typeof bC==="string"){if(!by||bx[bC]){bC=L}else{bE.dataTypes.unshift(bC);bC=aW(bv,bE,bz,bD,bC,bx)}}}if((by||!bC)&&!bx["*"]){bC=aW(bv,bE,bz,bD,"*",bx)}return bC}function am(bw,bx){var bv,e,by=b.ajaxSettings.flatOptions||{};for(bv in bx){if(bx[bv]!==L){(by[bv]?bw:(e||(e={})))[bv]=bx[bv]}}if(e){b.extend(true,bw,e)}}b.fn.extend({load:function(bw,bz,bA){if(typeof bw!=="string"&&A){return A.apply(this,arguments)}else{if(!this.length){return this}}var by=bw.indexOf(" ");if(by>=0){var e=bw.slice(by,bw.length);bw=bw.slice(0,by)}var bx="GET";if(bz){if(b.isFunction(bz)){bA=bz;bz=L}else{if(typeof bz==="object"){bz=b.param(bz,b.ajaxSettings.traditional);bx="POST"}}}var bv=this;b.ajax({url:bw,type:bx,dataType:"html",data:bz,complete:function(bC,bB,bD){bD=bC.responseText;if(bC.isResolved()){bC.done(function(bE){bD=bE});bv.html(e?b("<div>").append(bD.replace(a6,"")).find(e):bD)}if(bA){bv.each(bA,[bD,bB,bC])}}});return this},serialize:function(){return b.param(this.serializeArray())},serializeArray:function(){return this.map(function(){return this.elements?b.makeArray(this.elements):this}).filter(function(){return this.name&&!this.disabled&&(this.checked||q.test(this.nodeName)||aZ.test(this.type))}).map(function(e,bv){var bw=b(this).val();return bw==null?null:b.isArray(bw)?b.map(bw,function(by,bx){return{name:bv.name,value:by.replace(bs,"\r\n")}}):{name:bv.name,value:bw.replace(bs,"\r\n")}}).get()}});b.each("ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "),function(e,bv){b.fn[bv]=function(bw){return this.on(bv,bw)}});b.each(["get","post"],function(e,bv){b[bv]=function(bw,by,bz,bx){if(b.isFunction(by)){bx=bx||bz;bz=by;by=L}return b.ajax({type:bv,url:bw,data:by,success:bz,dataType:bx})}});b.extend({getScript:function(e,bv){return b.get(e,L,bv,"script")},getJSON:function(e,bv,bw){return b.get(e,bv,bw,"json")},ajaxSetup:function(bv,e){if(e){am(bv,b.ajaxSettings)}else{e=bv;bv=b.ajaxSettings}am(bv,e);return bv},ajaxSettings:{url:aE,isLocal:aM.test(s[1]),global:true,type:"GET",contentType:"application/x-www-form-urlencoded",processData:true,async:true,accepts:{xml:"application/xml, text/xml",html:"text/html",text:"text/plain",json:"application/json, text/javascript","*":aV},contents:{xml:/xml/,html:/html/,json:/json/},responseFields:{xml:"responseXML",text:"responseText"},converters:{"* text":bb.String,"text html":true,"text json":b.parseJSON,"text xml":b.parseXML},flatOptions:{context:true,url:true}},ajaxPrefilter:f(aa),ajaxTransport:f(r),ajax:function(bz,bx){if(typeof bz==="object"){bx=bz;bz=L}bx=bx||{};var bD=b.ajaxSetup({},bx),bS=bD.context||bD,bG=bS!==bD&&(bS.nodeType||bS instanceof b)?b(bS):b.event,bR=b.Deferred(),bN=b.Callbacks("once memory"),bB=bD.statusCode||{},bC,bH={},bO={},bQ,by,bL,bE,bI,bA=0,bw,bK,bJ={readyState:0,setRequestHeader:function(bT,bU){if(!bA){var e=bT.toLowerCase();bT=bO[e]=bO[e]||bT;bH[bT]=bU}return this},getAllResponseHeaders:function(){return bA===2?bQ:null},getResponseHeader:function(bT){var e;if(bA===2){if(!by){by={};while((e=aD.exec(bQ))){by[e[1].toLowerCase()]=e[2]}}e=by[bT.toLowerCase()]}return e===L?null:e},overrideMimeType:function(e){if(!bA){bD.mimeType=e}return this},abort:function(e){e=e||"abort";if(bL){bL.abort(e)}bF(0,e);return this}};function bF(bZ,bU,b0,bW){if(bA===2){return}bA=2;if(bE){clearTimeout(bE)}bL=L;bQ=bW||"";bJ.readyState=bZ>0?4:0;var bT,b4,b3,bX=bU,bY=b0?bj(bD,bJ,b0):L,bV,b2;if(bZ>=200&&bZ<300||bZ===304){if(bD.ifModified){if((bV=bJ.getResponseHeader("Last-Modified"))){b.lastModified[bC]=bV}if((b2=bJ.getResponseHeader("Etag"))){b.etag[bC]=b2}}if(bZ===304){bX="notmodified";bT=true}else{try{b4=G(bD,bY);bX="success";bT=true}catch(b1){bX="parsererror";b3=b1}}}else{b3=bX;if(!bX||bZ){bX="error";if(bZ<0){bZ=0}}}bJ.status=bZ;bJ.statusText=""+(bU||bX);if(bT){bR.resolveWith(bS,[b4,bX,bJ])}else{bR.rejectWith(bS,[bJ,bX,b3])}bJ.statusCode(bB);bB=L;if(bw){bG.trigger("ajax"+(bT?"Success":"Error"),[bJ,bD,bT?b4:b3])}bN.fireWith(bS,[bJ,bX]);if(bw){bG.trigger("ajaxComplete",[bJ,bD]);if(!(--b.active)){b.event.trigger("ajaxStop")}}}bR.promise(bJ);bJ.success=bJ.done;bJ.error=bJ.fail;bJ.complete=bN.add;bJ.statusCode=function(bT){if(bT){var e;if(bA<2){for(e in bT){bB[e]=[bB[e],bT[e]]}}else{e=bT[bJ.status];bJ.then(e,e)}}return this};bD.url=((bz||bD.url)+"").replace(bq,"").replace(c,s[1]+"//");bD.dataTypes=b.trim(bD.dataType||"*").toLowerCase().split(h);if(bD.crossDomain==null){bI=K.exec(bD.url.toLowerCase());bD.crossDomain=!!(bI&&(bI[1]!=s[1]||bI[2]!=s[2]||(bI[3]||(bI[1]==="http:"?80:443))!=(s[3]||(s[1]==="http:"?80:443))))}if(bD.data&&bD.processData&&typeof bD.data!=="string"){bD.data=b.param(bD.data,bD.traditional)}aW(aa,bD,bx,bJ);if(bA===2){return false}bw=bD.global;bD.type=bD.type.toUpperCase();bD.hasContent=!aQ.test(bD.type);if(bw&&b.active++===0){b.event.trigger("ajaxStart")}if(!bD.hasContent){if(bD.data){bD.url+=(M.test(bD.url)?"&":"?")+bD.data;delete bD.data}bC=bD.url;if(bD.cache===false){var bv=b.now(),bP=bD.url.replace(br,"$1_="+bv);bD.url=bP+((bP===bD.url)?(M.test(bD.url)?"&":"?")+"_="+bv:"")}}if(bD.data&&bD.hasContent&&bD.contentType!==false||bx.contentType){bJ.setRequestHeader("Content-Type",bD.contentType)}if(bD.ifModified){bC=bC||bD.url;if(b.lastModified[bC]){bJ.setRequestHeader("If-Modified-Since",b.lastModified[bC])}if(b.etag[bC]){bJ.setRequestHeader("If-None-Match",b.etag[bC])}}bJ.setRequestHeader("Accept",bD.dataTypes[0]&&bD.accepts[bD.dataTypes[0]]?bD.accepts[bD.dataTypes[0]]+(bD.dataTypes[0]!=="*"?", "+aV+"; q=0.01":""):bD.accepts["*"]);for(bK in bD.headers){bJ.setRequestHeader(bK,bD.headers[bK])}if(bD.beforeSend&&(bD.beforeSend.call(bS,bJ,bD)===false||bA===2)){bJ.abort();return false}for(bK in {success:1,error:1,complete:1}){bJ[bK](bD[bK])}bL=aW(r,bD,bx,bJ);if(!bL){bF(-1,"No Transport")}else{bJ.readyState=1;if(bw){bG.trigger("ajaxSend",[bJ,bD])}if(bD.async&&bD.timeout>0){bE=setTimeout(function(){bJ.abort("timeout")},bD.timeout)}try{bA=1;bL.send(bH,bF)}catch(bM){if(bA<2){bF(-1,bM)}else{throw bM}}}return bJ},param:function(e,bw){var bv=[],by=function(bz,bA){bA=b.isFunction(bA)?bA():bA;bv[bv.length]=encodeURIComponent(bz)+"="+encodeURIComponent(bA)};if(bw===L){bw=b.ajaxSettings.traditional}if(b.isArray(e)||(e.jquery&&!b.isPlainObject(e))){b.each(e,function(){by(this.name,this.value)})}else{for(var bx in e){v(bx,e[bx],bw,by)}}return bv.join("&").replace(k,"+")}});function v(bw,by,bv,bx){if(b.isArray(by)){b.each(by,function(bA,bz){if(bv||ap.test(bw)){bx(bw,bz)}else{v(bw+"["+(typeof bz==="object"||b.isArray(bz)?bA:"")+"]",bz,bv,bx)}})}else{if(!bv&&by!=null&&typeof by==="object"){for(var e in by){v(bw+"["+e+"]",by[e],bv,bx)}}else{bx(bw,by)}}}b.extend({active:0,lastModified:{},etag:{}});function bj(bD,bC,bz){var bv=bD.contents,bB=bD.dataTypes,bw=bD.responseFields,by,bA,bx,e;for(bA in bw){if(bA in bz){bC[bw[bA]]=bz[bA]}}while(bB[0]==="*"){bB.shift();if(by===L){by=bD.mimeType||bC.getResponseHeader("content-type")}}if(by){for(bA in bv){if(bv[bA]&&bv[bA].test(by)){bB.unshift(bA);break}}}if(bB[0] in bz){bx=bB[0]}else{for(bA in bz){if(!bB[0]||bD.converters[bA+" "+bB[0]]){bx=bA;break}if(!e){e=bA}}bx=bx||e}if(bx){if(bx!==bB[0]){bB.unshift(bx)}return bz[bx]}}function G(bH,bz){if(bH.dataFilter){bz=bH.dataFilter(bz,bH.dataType)}var bD=bH.dataTypes,bG={},bA,bE,bw=bD.length,bB,bC=bD[0],bx,by,bF,bv,e;for(bA=1;bA<bw;bA++){if(bA===1){for(bE in bH.converters){if(typeof bE==="string"){bG[bE.toLowerCase()]=bH.converters[bE]}}}bx=bC;bC=bD[bA];if(bC==="*"){bC=bx}else{if(bx!=="*"&&bx!==bC){by=bx+" "+bC;bF=bG[by]||bG["* "+bC];if(!bF){e=L;for(bv in bG){bB=bv.split(" ");if(bB[0]===bx||bB[0]==="*"){e=bG[bB[1]+" "+bC];if(e){bv=bG[bv];if(bv===true){bF=e}else{if(e===true){bF=bv}}break}}}}if(!(bF||e)){b.error("No conversion from "+by.replace(" "," to "))}if(bF!==true){bz=bF?bF(bz):e(bv(bz))}}}}return bz}var aC=b.now(),u=/(\=)\?(&|$)|\?\?/i;b.ajaxSetup({jsonp:"callback",jsonpCallback:function(){return b.expando+"_"+(aC++)}});b.ajaxPrefilter("json jsonp",function(bD,bA,bC){var bx=bD.contentType==="application/x-www-form-urlencoded"&&(typeof bD.data==="string");if(bD.dataTypes[0]==="jsonp"||bD.jsonp!==false&&(u.test(bD.url)||bx&&u.test(bD.data))){var bB,bw=bD.jsonpCallback=b.isFunction(bD.jsonpCallback)?bD.jsonpCallback():bD.jsonpCallback,bz=bb[bw],e=bD.url,by=bD.data,bv="$1"+bw+"$2";if(bD.jsonp!==false){e=e.replace(u,bv);if(bD.url===e){if(bx){by=by.replace(u,bv)}if(bD.data===by){e+=(/\?/.test(e)?"&":"?")+bD.jsonp+"="+bw}}}bD.url=e;bD.data=by;bb[bw]=function(bE){bB=[bE]};bC.always(function(){bb[bw]=bz;if(bB&&b.isFunction(bz)){bb[bw](bB[0])}});bD.converters["script json"]=function(){if(!bB){b.error(bw+" was not called")}return bB[0]};bD.dataTypes[0]="json";return"script"}});b.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/javascript|ecmascript/},converters:{"text script":function(e){b.globalEval(e);return e}}});b.ajaxPrefilter("script",function(e){if(e.cache===L){e.cache=false}if(e.crossDomain){e.type="GET";e.global=false}});b.ajaxTransport("script",function(bw){if(bw.crossDomain){var e,bv=av.head||av.getElementsByTagName("head")[0]||av.documentElement;return{send:function(bx,by){e=av.createElement("script");e.async="async";if(bw.scriptCharset){e.charset=bw.scriptCharset}e.src=bw.url;e.onload=e.onreadystatechange=function(bA,bz){if(bz||!e.readyState||/loaded|complete/.test(e.readyState)){e.onload=e.onreadystatechange=null;if(bv&&e.parentNode){bv.removeChild(e)}e=L;if(!bz){by(200,"success")}}};bv.insertBefore(e,bv.firstChild)},abort:function(){if(e){e.onload(0,1)}}}}});var B=bb.ActiveXObject?function(){for(var e in N){N[e](0,1)}}:false,y=0,N;function aL(){try{return new bb.XMLHttpRequest()}catch(bv){}}function aj(){try{return new bb.ActiveXObject("Microsoft.XMLHTTP")}catch(bv){}}b.ajaxSettings.xhr=bb.ActiveXObject?function(){return !this.isLocal&&aL()||aj()}:aL;(function(e){b.extend(b.support,{ajax:!!e,cors:!!e&&("withCredentials" in e)})})(b.ajaxSettings.xhr());if(b.support.ajax){b.ajaxTransport(function(e){if(!e.crossDomain||b.support.cors){var bv;return{send:function(bB,bw){var bA=e.xhr(),bz,by;if(e.username){bA.open(e.type,e.url,e.async,e.username,e.password)}else{bA.open(e.type,e.url,e.async)}if(e.xhrFields){for(by in e.xhrFields){bA[by]=e.xhrFields[by]}}if(e.mimeType&&bA.overrideMimeType){bA.overrideMimeType(e.mimeType)}if(!e.crossDomain&&!bB["X-Requested-With"]){bB["X-Requested-With"]="XMLHttpRequest"}try{for(by in bB){bA.setRequestHeader(by,bB[by])}}catch(bx){}bA.send((e.hasContent&&e.data)||null);bv=function(bK,bE){var bF,bD,bC,bI,bH;try{if(bv&&(bE||bA.readyState===4)){bv=L;if(bz){bA.onreadystatechange=b.noop;if(B){delete N[bz]}}if(bE){if(bA.readyState!==4){bA.abort()}}else{bF=bA.status;bC=bA.getAllResponseHeaders();bI={};bH=bA.responseXML;if(bH&&bH.documentElement){bI.xml=bH}bI.text=bA.responseText;try{bD=bA.statusText}catch(bJ){bD=""}if(!bF&&e.isLocal&&!e.crossDomain){bF=bI.text?200:404}else{if(bF===1223){bF=204}}}}}catch(bG){if(!bE){bw(-1,bG)}}if(bI){bw(bF,bD,bI,bC)}};if(!e.async||bA.readyState===4){bv()}else{bz=++y;if(B){if(!N){N={};b(bb).unload(B)}N[bz]=bv}bA.onreadystatechange=bv}},abort:function(){if(bv){bv(0,1)
-
30 }}}}})}var Q={},a8,m,aB=/^(?:toggle|show|hide)$/,aT=/^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,a3,aH=[["height","marginTop","marginBottom","paddingTop","paddingBottom"],["width","marginLeft","marginRight","paddingLeft","paddingRight"],["opacity"]],a4;b.fn.extend({show:function(bx,bA,bz){var bw,by;if(bx||bx===0){return this.animate(a0("show",3),bx,bA,bz)}else{for(var bv=0,e=this.length;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(!b._data(bw,"olddisplay")&&by==="none"){by=bw.style.display=""}if(by===""&&b.css(bw,"display")==="none"){b._data(bw,"olddisplay",x(bw.nodeName))}}}for(bv=0;bv<e;bv++){bw=this[bv];if(bw.style){by=bw.style.display;if(by===""||by==="none"){bw.style.display=b._data(bw,"olddisplay")||""}}}return this}},hide:function(bx,bA,bz){if(bx||bx===0){return this.animate(a0("hide",3),bx,bA,bz)}else{var bw,by,bv=0,e=this.length;for(;bv<e;bv++){bw=this[bv];if(bw.style){by=b.css(bw,"display");if(by!=="none"&&!b._data(bw,"olddisplay")){b._data(bw,"olddisplay",by)}}}for(bv=0;bv<e;bv++){if(this[bv].style){this[bv].style.display="none"}}return this}},_toggle:b.fn.toggle,toggle:function(bw,bv,bx){var e=typeof bw==="boolean";if(b.isFunction(bw)&&b.isFunction(bv)){this._toggle.apply(this,arguments)}else{if(bw==null||e){this.each(function(){var by=e?bw:b(this).is(":hidden");b(this)[by?"show":"hide"]()})}else{this.animate(a0("toggle",3),bw,bv,bx)}}return this},fadeTo:function(e,bx,bw,bv){return this.filter(":hidden").css("opacity",0).show().end().animate({opacity:bx},e,bw,bv)},animate:function(bz,bw,by,bx){var e=b.speed(bw,by,bx);if(b.isEmptyObject(bz)){return this.each(e.complete,[false])}bz=b.extend({},bz);function bv(){if(e.queue===false){b._mark(this)}var bE=b.extend({},e),bK=this.nodeType===1,bI=bK&&b(this).is(":hidden"),bB,bF,bD,bJ,bH,bC,bG,bL,bA;bE.animatedProperties={};for(bD in bz){bB=b.camelCase(bD);if(bD!==bB){bz[bB]=bz[bD];delete bz[bD]}bF=bz[bB];if(b.isArray(bF)){bE.animatedProperties[bB]=bF[1];bF=bz[bB]=bF[0]}else{bE.animatedProperties[bB]=bE.specialEasing&&bE.specialEasing[bB]||bE.easing||"swing"}if(bF==="hide"&&bI||bF==="show"&&!bI){return bE.complete.call(this)}if(bK&&(bB==="height"||bB==="width")){bE.overflow=[this.style.overflow,this.style.overflowX,this.style.overflowY];if(b.css(this,"display")==="inline"&&b.css(this,"float")==="none"){if(!b.support.inlineBlockNeedsLayout||x(this.nodeName)==="inline"){this.style.display="inline-block"}else{this.style.zoom=1}}}}if(bE.overflow!=null){this.style.overflow="hidden"}for(bD in bz){bJ=new b.fx(this,bE,bD);bF=bz[bD];if(aB.test(bF)){bA=b._data(this,"toggle"+bD)||(bF==="toggle"?bI?"show":"hide":0);if(bA){b._data(this,"toggle"+bD,bA==="show"?"hide":"show");bJ[bA]()}else{bJ[bF]()}}else{bH=aT.exec(bF);bC=bJ.cur();if(bH){bG=parseFloat(bH[2]);bL=bH[3]||(b.cssNumber[bD]?"":"px");if(bL!=="px"){b.style(this,bD,(bG||1)+bL);bC=((bG||1)/bJ.cur())*bC;b.style(this,bD,bC+bL)}if(bH[1]){bG=((bH[1]==="-="?-1:1)*bG)+bC}bJ.custom(bC,bG,bL)}else{bJ.custom(bC,bF,"")}}}return true}return e.queue===false?this.each(bv):this.queue(e.queue,bv)},stop:function(bw,bv,e){if(typeof bw!=="string"){e=bv;bv=bw;bw=L}if(bv&&bw!==false){this.queue(bw||"fx",[])}return this.each(function(){var bx,by=false,bA=b.timers,bz=b._data(this);if(!e){b._unmark(true,this)}function bB(bE,bF,bD){var bC=bF[bD];b.removeData(bE,bD,true);bC.stop(e)}if(bw==null){for(bx in bz){if(bz[bx]&&bz[bx].stop&&bx.indexOf(".run")===bx.length-4){bB(this,bz,bx)}}}else{if(bz[bx=bw+".run"]&&bz[bx].stop){bB(this,bz,bx)}}for(bx=bA.length;bx--;){if(bA[bx].elem===this&&(bw==null||bA[bx].queue===bw)){if(e){bA[bx](true)}else{bA[bx].saveState()}by=true;bA.splice(bx,1)}}if(!(e&&by)){b.dequeue(this,bw)}})}});function bh(){setTimeout(at,0);return(a4=b.now())}function at(){a4=L}function a0(bv,e){var bw={};b.each(aH.concat.apply([],aH.slice(0,e)),function(){bw[this]=bv});return bw}b.each({slideDown:a0("show",1),slideUp:a0("hide",1),slideToggle:a0("toggle",1),fadeIn:{opacity:"show"},fadeOut:{opacity:"hide"},fadeToggle:{opacity:"toggle"}},function(e,bv){b.fn[e]=function(bw,by,bx){return this.animate(bv,bw,by,bx)}});b.extend({speed:function(bw,bx,bv){var e=bw&&typeof bw==="object"?b.extend({},bw):{complete:bv||!bv&&bx||b.isFunction(bw)&&bw,duration:bw,easing:bv&&bx||bx&&!b.isFunction(bx)&&bx};e.duration=b.fx.off?0:typeof e.duration==="number"?e.duration:e.duration in b.fx.speeds?b.fx.speeds[e.duration]:b.fx.speeds._default;if(e.queue==null||e.queue===true){e.queue="fx"}e.old=e.complete;e.complete=function(by){if(b.isFunction(e.old)){e.old.call(this)}if(e.queue){b.dequeue(this,e.queue)}else{if(by!==false){b._unmark(this)}}};return e},easing:{linear:function(bw,bx,e,bv){return e+bv*bw},swing:function(bw,bx,e,bv){return((-Math.cos(bw*Math.PI)/2)+0.5)*bv+e}},timers:[],fx:function(bv,e,bw){this.options=e;this.elem=bv;this.prop=bw;e.orig=e.orig||{}}});b.fx.prototype={update:function(){if(this.options.step){this.options.step.call(this.elem,this.now,this)}(b.fx.step[this.prop]||b.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 e,bv=b.css(this.elem,this.prop);return isNaN(e=parseFloat(bv))?!bv||bv==="auto"?0:bv:e},custom:function(bz,by,bx){var e=this,bw=b.fx;this.startTime=a4||bh();this.end=by;this.now=this.start=bz;this.pos=this.state=0;this.unit=bx||this.unit||(b.cssNumber[this.prop]?"":"px");function bv(bA){return e.step(bA)}bv.queue=this.options.queue;bv.elem=this.elem;bv.saveState=function(){if(e.options.hide&&b._data(e.elem,"fxshow"+e.prop)===L){b._data(e.elem,"fxshow"+e.prop,e.start)}};if(bv()&&b.timers.push(bv)&&!a3){a3=setInterval(bw.tick,bw.interval)}},show:function(){var e=b._data(this.elem,"fxshow"+this.prop);this.options.orig[this.prop]=e||b.style(this.elem,this.prop);this.options.show=true;if(e!==L){this.custom(this.cur(),e)}else{this.custom(this.prop==="width"||this.prop==="height"?1:0,this.cur())}b(this.elem).show()},hide:function(){this.options.orig[this.prop]=b._data(this.elem,"fxshow"+this.prop)||b.style(this.elem,this.prop);this.options.hide=true;this.custom(this.cur(),0)},step:function(by){var bA,bB,bv,bx=a4||bh(),e=true,bz=this.elem,bw=this.options;if(by||bx>=bw.duration+this.startTime){this.now=this.end;this.pos=this.state=1;this.update();bw.animatedProperties[this.prop]=true;for(bA in bw.animatedProperties){if(bw.animatedProperties[bA]!==true){e=false}}if(e){if(bw.overflow!=null&&!b.support.shrinkWrapBlocks){b.each(["","X","Y"],function(bC,bD){bz.style["overflow"+bD]=bw.overflow[bC]})}if(bw.hide){b(bz).hide()}if(bw.hide||bw.show){for(bA in bw.animatedProperties){b.style(bz,bA,bw.orig[bA]);b.removeData(bz,"fxshow"+bA,true);b.removeData(bz,"toggle"+bA,true)}}bv=bw.complete;if(bv){bw.complete=false;bv.call(bz)}}return false}else{if(bw.duration==Infinity){this.now=bx}else{bB=bx-this.startTime;this.state=bB/bw.duration;this.pos=b.easing[bw.animatedProperties[this.prop]](this.state,bB,0,1,bw.duration);this.now=this.start+((this.end-this.start)*this.pos)}this.update()}return true}};b.extend(b.fx,{tick:function(){var bw,bv=b.timers,e=0;for(;e<bv.length;e++){bw=bv[e];if(!bw()&&bv[e]===bw){bv.splice(e--,1)}}if(!bv.length){b.fx.stop()}},interval:13,stop:function(){clearInterval(a3);a3=null},speeds:{slow:600,fast:200,_default:400},step:{opacity:function(e){b.style(e.elem,"opacity",e.now)},_default:function(e){if(e.elem.style&&e.elem.style[e.prop]!=null){e.elem.style[e.prop]=e.now+e.unit}else{e.elem[e.prop]=e.now}}}});b.each(["width","height"],function(e,bv){b.fx.step[bv]=function(bw){b.style(bw.elem,bv,Math.max(0,bw.now)+bw.unit)}});if(b.expr&&b.expr.filters){b.expr.filters.animated=function(e){return b.grep(b.timers,function(bv){return e===bv.elem}).length}}function x(bx){if(!Q[bx]){var e=av.body,bv=b("<"+bx+">").appendTo(e),bw=bv.css("display");bv.remove();if(bw==="none"||bw===""){if(!a8){a8=av.createElement("iframe");a8.frameBorder=a8.width=a8.height=0}e.appendChild(a8);if(!m||!a8.createElement){m=(a8.contentWindow||a8.contentDocument).document;m.write((av.compatMode==="CSS1Compat"?"<!doctype html>":"")+"<html><body>");m.close()}bv=m.createElement(bx);m.body.appendChild(bv);bw=b.css(bv,"display");e.removeChild(a8)}Q[bx]=bw}return Q[bx]}var V=/^t(?:able|d|h)$/i,ad=/^(?:body|html)$/i;if("getBoundingClientRect" in av.documentElement){b.fn.offset=function(bI){var by=this[0],bB;if(bI){return this.each(function(e){b.offset.setOffset(this,bI,e)})}if(!by||!by.ownerDocument){return null}if(by===by.ownerDocument.body){return b.offset.bodyOffset(by)}try{bB=by.getBoundingClientRect()}catch(bF){}var bH=by.ownerDocument,bw=bH.documentElement;if(!bB||!b.contains(bw,by)){return bB?{top:bB.top,left:bB.left}:{top:0,left:0}}var bC=bH.body,bD=aK(bH),bA=bw.clientTop||bC.clientTop||0,bE=bw.clientLeft||bC.clientLeft||0,bv=bD.pageYOffset||b.support.boxModel&&bw.scrollTop||bC.scrollTop,bz=bD.pageXOffset||b.support.boxModel&&bw.scrollLeft||bC.scrollLeft,bG=bB.top+bv-bA,bx=bB.left+bz-bE;return{top:bG,left:bx}}}else{b.fn.offset=function(bF){var bz=this[0];if(bF){return this.each(function(bG){b.offset.setOffset(this,bF,bG)})}if(!bz||!bz.ownerDocument){return null}if(bz===bz.ownerDocument.body){return b.offset.bodyOffset(bz)}var bC,bw=bz.offsetParent,bv=bz,bE=bz.ownerDocument,bx=bE.documentElement,bA=bE.body,bB=bE.defaultView,e=bB?bB.getComputedStyle(bz,null):bz.currentStyle,bD=bz.offsetTop,by=bz.offsetLeft;while((bz=bz.parentNode)&&bz!==bA&&bz!==bx){if(b.support.fixedPosition&&e.position==="fixed"){break}bC=bB?bB.getComputedStyle(bz,null):bz.currentStyle;bD-=bz.scrollTop;by-=bz.scrollLeft;if(bz===bw){bD+=bz.offsetTop;by+=bz.offsetLeft;if(b.support.doesNotAddBorder&&!(b.support.doesAddBorderForTableAndCells&&V.test(bz.nodeName))){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}bv=bw;bw=bz.offsetParent}if(b.support.subtractsBorderForOverflowNotVisible&&bC.overflow!=="visible"){bD+=parseFloat(bC.borderTopWidth)||0;by+=parseFloat(bC.borderLeftWidth)||0}e=bC}if(e.position==="relative"||e.position==="static"){bD+=bA.offsetTop;by+=bA.offsetLeft}if(b.support.fixedPosition&&e.position==="fixed"){bD+=Math.max(bx.scrollTop,bA.scrollTop);by+=Math.max(bx.scrollLeft,bA.scrollLeft)}return{top:bD,left:by}}}b.offset={bodyOffset:function(e){var bw=e.offsetTop,bv=e.offsetLeft;if(b.support.doesNotIncludeMarginInBodyOffset){bw+=parseFloat(b.css(e,"marginTop"))||0;bv+=parseFloat(b.css(e,"marginLeft"))||0}return{top:bw,left:bv}},setOffset:function(bx,bG,bA){var bB=b.css(bx,"position");if(bB==="static"){bx.style.position="relative"}var bz=b(bx),bv=bz.offset(),e=b.css(bx,"top"),bE=b.css(bx,"left"),bF=(bB==="absolute"||bB==="fixed")&&b.inArray("auto",[e,bE])>-1,bD={},bC={},bw,by;if(bF){bC=bz.position();bw=bC.top;by=bC.left}else{bw=parseFloat(e)||0;by=parseFloat(bE)||0}if(b.isFunction(bG)){bG=bG.call(bx,bA,bv)}if(bG.top!=null){bD.top=(bG.top-bv.top)+bw}if(bG.left!=null){bD.left=(bG.left-bv.left)+by}if("using" in bG){bG.using.call(bx,bD)}else{bz.css(bD)}}};b.fn.extend({position:function(){if(!this[0]){return null}var bw=this[0],bv=this.offsetParent(),bx=this.offset(),e=ad.test(bv[0].nodeName)?{top:0,left:0}:bv.offset();bx.top-=parseFloat(b.css(bw,"marginTop"))||0;bx.left-=parseFloat(b.css(bw,"marginLeft"))||0;e.top+=parseFloat(b.css(bv[0],"borderTopWidth"))||0;e.left+=parseFloat(b.css(bv[0],"borderLeftWidth"))||0;return{top:bx.top-e.top,left:bx.left-e.left}},offsetParent:function(){return this.map(function(){var e=this.offsetParent||av.body;while(e&&(!ad.test(e.nodeName)&&b.css(e,"position")==="static")){e=e.offsetParent}return e})}});b.each(["Left","Top"],function(bv,e){var bw="scroll"+e;b.fn[bw]=function(bz){var bx,by;if(bz===L){bx=this[0];if(!bx){return null}by=aK(bx);return by?("pageXOffset" in by)?by[bv?"pageYOffset":"pageXOffset"]:b.support.boxModel&&by.document.documentElement[bw]||by.document.body[bw]:bx[bw]}return this.each(function(){by=aK(this);if(by){by.scrollTo(!bv?bz:b(by).scrollLeft(),bv?bz:b(by).scrollTop())}else{this[bw]=bz}})}});function aK(e){return b.isWindow(e)?e:e.nodeType===9?e.defaultView||e.parentWindow:false}b.each(["Height","Width"],function(bv,e){var bw=e.toLowerCase();b.fn["inner"+e]=function(){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,"padding")):this[bw]():null};b.fn["outer"+e]=function(by){var bx=this[0];return bx?bx.style?parseFloat(b.css(bx,bw,by?"margin":"border")):this[bw]():null};b.fn[bw]=function(bz){var bA=this[0];if(!bA){return bz==null?null:this}if(b.isFunction(bz)){return this.each(function(bE){var bD=b(this);bD[bw](bz.call(this,bE,bD[bw]()))})}if(b.isWindow(bA)){var bB=bA.document.documentElement["client"+e],bx=bA.document.body;return bA.document.compatMode==="CSS1Compat"&&bB||bx&&bx["client"+e]||bB}else{if(bA.nodeType===9){return Math.max(bA.documentElement["client"+e],bA.body["scroll"+e],bA.documentElement["scroll"+e],bA.body["offset"+e],bA.documentElement["offset"+e])}else{if(bz===L){var bC=b.css(bA,bw),by=parseFloat(bC);return b.isNumeric(by)?by:bC}else{return this.css(bw,typeof bz==="string"?bz:bz+"px")}}}}});bb.jQuery=bb.$=b;if(typeof define==="function"&&define.amd&&define.amd.jQuery){define("jquery",[],function(){return b
-
31 })}})(window);
-
39 (function(a){if(typeof define==="function"&&define.amd){define(["jquery"],a)}else{a(jQuery)}}(function(k){var A=k(document),s=k(window),w=k("body");var n="displayController",e="hasActiveHover",d="forcedOpen",u="hasMouseMove",f="mouseOnToPopup",g="originalTitle",y="powertip",o="powertipjq",l="powertiptarget",E=180/Math.PI;var c={isTipOpen:false,isFixedTipOpen:false,isClosing:false,tipOpenImminent:false,activeHover:null,currentX:0,currentY:0,previousX:0,previousY:0,desyncTimeout:null,mouseTrackingActive:false,delayInProgress:false,windowWidth:0,windowHeight:0,scrollTop:0,scrollLeft:0};var p={none:0,top:1,bottom:2,left:4,right:8};k.fn.powerTip=function(F,N){if(!this.length){return this}if(k.type(F)==="string"&&k.powerTip[F]){return k.powerTip[F].call(this,this,N)}var O=k.extend({},k.fn.powerTip.defaults,F),G=new x(O);h();this.each(function M(){var R=k(this),Q=R.data(y),P=R.data(o),T=R.data(l),S;if(R.data(n)){k.powerTip.destroy(R)}S=R.attr("title");if(!Q&&!T&&!P&&S){R.data(y,S);R.data(g,S);R.removeAttr("title")}R.data(n,new t(R,O,G))});if(!O.manual){this.on({"mouseenter.powertip":function J(P){k.powerTip.show(this,P)},"mouseleave.powertip":function L(){k.powerTip.hide(this)},"focus.powertip":function K(){k.powerTip.show(this)},"blur.powertip":function H(){k.powerTip.hide(this,true)},"keydown.powertip":function I(P){if(P.keyCode===27){k.powerTip.hide(this,true)}}})}return this};k.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false};k.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};k.powerTip={show:function z(F,G){if(G){i(G);c.previousX=G.pageX;c.previousY=G.pageY;k(F).data(n).show()}else{k(F).first().data(n).show(true,true)}return F},reposition:function r(F){k(F).first().data(n).resetPosition();return F},hide:function D(G,F){if(G){k(G).first().data(n).hide(F)}else{if(c.activeHover){c.activeHover.data(n).hide(true)}}return G},destroy:function C(G){k(G).off(".powertip").each(function F(){var I=k(this),H=[g,n,e,d];if(I.data(g)){I.attr("title",I.data(g));H.push(y)}I.removeData(H)});return G}};k.powerTip.showTip=k.powerTip.show;k.powerTip.closeTip=k.powerTip.hide;function b(){var F=this;F.top="auto";F.left="auto";F.right="auto";F.bottom="auto";F.set=function(H,G){if(k.isNumeric(G)){F[H]=Math.round(G)}}}function t(K,N,F){var J=null;function L(P,Q){M();if(!K.data(e)){if(!P){c.tipOpenImminent=true;J=setTimeout(function O(){J=null;I()},N.intentPollInterval)}else{if(Q){K.data(d,true)}F.showTip(K)}}}function G(P){M();c.tipOpenImminent=false;if(K.data(e)){K.data(d,false);if(!P){c.delayInProgress=true;J=setTimeout(function O(){J=null;F.hideTip(K);c.delayInProgress=false},N.closeDelay)}else{F.hideTip(K)}}}function I(){var Q=Math.abs(c.previousX-c.currentX),O=Math.abs(c.previousY-c.currentY),P=Q+O;if(P<N.intentSensitivity){F.showTip(K)}else{c.previousX=c.currentX;c.previousY=c.currentY;L()}}function M(){J=clearTimeout(J);c.delayInProgress=false}function H(){F.resetPosition(K)}this.show=L;this.hide=G;this.cancel=M;this.resetPosition=H}function j(){function G(M,L,J,O,P){var K=L.split("-")[0],N=new b(),I;if(q(M)){I=H(M,K)}else{I=F(M,K)}switch(L){case"n":N.set("left",I.left-(J/2));N.set("bottom",c.windowHeight-I.top+P);break;case"e":N.set("left",I.left+P);N.set("top",I.top-(O/2));break;case"s":N.set("left",I.left-(J/2));N.set("top",I.top+P);break;case"w":N.set("top",I.top-(O/2));N.set("right",c.windowWidth-I.left+P);break;case"nw":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"nw-alt":N.set("left",I.left);N.set("bottom",c.windowHeight-I.top+P);break;case"ne":N.set("left",I.left-20);N.set("bottom",c.windowHeight-I.top+P);break;case"ne-alt":N.set("bottom",c.windowHeight-I.top+P);N.set("right",c.windowWidth-I.left);break;case"sw":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left-20);break;case"sw-alt":N.set("left",I.left);N.set("top",I.top+P);break;case"se":N.set("left",I.left-20);N.set("top",I.top+P);break;case"se-alt":N.set("top",I.top+P);N.set("right",c.windowWidth-I.left);break}return N}function F(K,J){var O=K.offset(),N=K.outerWidth(),I=K.outerHeight(),M,L;switch(J){case"n":M=O.left+N/2;L=O.top;break;case"e":M=O.left+N;L=O.top+I/2;break;case"s":M=O.left+N/2;L=O.top+I;break;case"w":M=O.left;L=O.top+I/2;break;case"nw":M=O.left;L=O.top;break;case"ne":M=O.left+N;L=O.top;break;case"sw":M=O.left;L=O.top+I;break;case"se":M=O.left+N;L=O.top+I;break}return{top:L,left:M}}function H(O,K){var S=O.closest("svg")[0],N=O[0],W=S.createSVGPoint(),L=N.getBBox(),V=N.getScreenCTM(),M=L.width/2,Q=L.height/2,P=[],I=["nw","n","ne","e","se","s","sw","w"],U,X,R,T;function J(){P.push(W.matrixTransform(V))}W.x=L.x;W.y=L.y;J();W.x+=M;J();W.x+=M;J();W.y+=Q;J();W.y+=Q;J();W.x-=M;J();W.x-=M;J();W.y-=Q;J();if(P[0].y!==P[1].y||P[0].x!==P[7].x){X=Math.atan2(V.b,V.a)*E;R=Math.ceil(((X%360)-22.5)/45);if(R<1){R+=8}while(R--){I.push(I.shift())}}for(T=0;T<P.length;T++){if(I[T]===K){U=P[T];break}}return{top:U.y+c.scrollTop,left:U.x+c.scrollLeft}}this.compute=G}function x(Q){var P=new j(),O=k("#"+Q.popupId);if(O.length===0){O=k("<div/>",{id:Q.popupId});if(w.length===0){w=k("body")}w.append(O)}if(Q.followMouse){if(!O.data(u)){A.on("mousemove",M);s.on("scroll",M);O.data(u,true)}}if(Q.mouseOnToPopup){O.on({mouseenter:function L(){if(O.data(f)){if(c.activeHover){c.activeHover.data(n).cancel()}}},mouseleave:function N(){if(c.activeHover){c.activeHover.data(n).hide()}}})}function I(S){S.data(e,true);O.queue(function R(T){H(S);T()})}function H(S){var U;if(!S.data(e)){return}if(c.isTipOpen){if(!c.isClosing){K(c.activeHover)}O.delay(100).queue(function R(V){H(S);V()});return}S.trigger("powerTipPreRender");U=B(S);if(U){O.empty().append(U)}else{return}S.trigger("powerTipRender");c.activeHover=S;c.isTipOpen=true;O.data(f,Q.mouseOnToPopup);if(!Q.followMouse){G(S);c.isFixedTipOpen=true}else{M()}O.fadeIn(Q.fadeInTime,function T(){if(!c.desyncTimeout){c.desyncTimeout=setInterval(J,500)}S.trigger("powerTipOpen")})}function K(R){c.isClosing=true;c.activeHover=null;c.isTipOpen=false;c.desyncTimeout=clearInterval(c.desyncTimeout);R.data(e,false);R.data(d,false);O.fadeOut(Q.fadeOutTime,function S(){var T=new b();c.isClosing=false;c.isFixedTipOpen=false;O.removeClass();T.set("top",c.currentY+Q.offset);T.set("left",c.currentX+Q.offset);O.css(T);R.trigger("powerTipClose")})}function M(){if(!c.isFixedTipOpen&&(c.isTipOpen||(c.tipOpenImminent&&O.data(u)))){var R=O.outerWidth(),V=O.outerHeight(),U=new b(),S,T;U.set("top",c.currentY+Q.offset);U.set("left",c.currentX+Q.offset);S=m(U,R,V);if(S!==p.none){T=a(S);if(T===1){if(S===p.right){U.set("left",c.windowWidth-R)}else{if(S===p.bottom){U.set("top",c.scrollTop+c.windowHeight-V)}}}else{U.set("left",c.currentX-R-Q.offset);U.set("top",c.currentY-V-Q.offset)}}O.css(U)}}function G(S){var R,T;if(Q.smartPlacement){R=k.fn.powerTip.smartPlacementLists[Q.placement];k.each(R,function(U,W){var V=m(F(S,W),O.outerWidth(),O.outerHeight());T=W;if(V===p.none){return false}})}else{F(S,Q.placement);T=Q.placement}O.addClass(T)}function F(U,T){var R=0,S,W,V=new b();V.set("top",0);V.set("left",0);O.css(V);do{S=O.outerWidth();W=O.outerHeight();V=P.compute(U,T,S,W,Q.offset);O.css(V)}while(++R<=5&&(S!==O.outerWidth()||W!==O.outerHeight()));return V}function J(){var R=false;if(c.isTipOpen&&!c.isClosing&&!c.delayInProgress){if(c.activeHover.data(e)===false||c.activeHover.is(":disabled")){R=true}else{if(!v(c.activeHover)&&!c.activeHover.is(":focus")&&!c.activeHover.data(d)){if(O.data(f)){if(!v(O)){R=true}}else{R=true}}}if(R){K(c.activeHover)}}}this.showTip=I;this.hideTip=K;this.resetPosition=G}function q(F){return window.SVGElement&&F[0] instanceof SVGElement}function h(){if(!c.mouseTrackingActive){c.mouseTrackingActive=true;k(function H(){c.scrollLeft=s.scrollLeft();c.scrollTop=s.scrollTop();c.windowWidth=s.width();c.windowHeight=s.height()});A.on("mousemove",i);s.on({resize:function G(){c.windowWidth=s.width();c.windowHeight=s.height()},scroll:function F(){var I=s.scrollLeft(),J=s.scrollTop();if(I!==c.scrollLeft){c.currentX+=I-c.scrollLeft;c.scrollLeft=I}if(J!==c.scrollTop){c.currentY+=J-c.scrollTop;c.scrollTop=J}}})}}function i(F){c.currentX=F.pageX;c.currentY=F.pageY}function v(F){var H=F.offset(),J=F[0].getBoundingClientRect(),I=J.right-J.left,G=J.bottom-J.top;return c.currentX>=H.left&&c.currentX<=H.left+I&&c.currentY>=H.top&&c.currentY<=H.top+G}function B(I){var G=I.data(y),F=I.data(o),K=I.data(l),H,J;if(G){if(k.isFunction(G)){G=G.call(I[0])}J=G}else{if(F){if(k.isFunction(F)){F=F.call(I[0])}if(F.length>0){J=F.clone(true,true)}}else{if(K){H=k("#"+K);if(H.length>0){J=H.html()}}}}return J}function m(M,L,K){var G=c.scrollTop,J=c.scrollLeft,I=G+c.windowHeight,F=J+c.windowWidth,H=p.none;if(M.top<G||Math.abs(M.bottom-c.windowHeight)-K<G){H|=p.top}if(M.top+K>I||Math.abs(M.bottom-c.windowHeight)>I){H|=p.bottom}if(M.left<J||M.right+L>F){H|=p.left}if(M.left+L>F||M.right<J){H|=p.right}return H}function a(G){var F=0;while(G){G&=G-1;F++}return F}}));
-
- - - - diff --git a/doc/API.chm b/doc/API.chm deleted file mode 100644 index 78b381a0cecc9e50d28b01fb368892305aba96c9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 204340 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 z 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 z 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 GKlu+WN8Z~2 literal 0 HcmV?d00001 diff --git a/doc/API/NextionLogo32.png b/doc/API/NextionLogo32.png new file mode 100644 index 0000000000000000000000000000000000000000..92136a4fe3ceda307236a4bf8f9ddd47926e2701 GIT binary patch literal 637 zcmV-@0)qXCP)Nklj@C?4m+`{jrFsb!ecy?M{FtvpVk5}iaQv>37o%U zjUkmhI*=TT0G?&0dNa1(&y8-=VveI@6=g0DYzViu^5curo7(| zq|vdzZUBnsgn=&B|Dv@%1Dz^jsh0rb@_)(R0K{McZ;Idjm5pdF&GVZ9&?*Jz(rM^S z8|!P;CboA9aH+y!@nk!N`xW-HWjEV>F)8Y748}XKFIB4u%qq|S!g_5^ia;;b^D_Ja X%>A0^V0HWz00000NkvXXu0mjf`rH`k literal 0 HcmV?d00001 diff --git a/doc/API-html/_comp_button_8ino-example.html b/doc/API/_comp_button_8ino-example.html similarity index 93% rename from doc/API-html/_comp_button_8ino-example.html rename to doc/API/_comp_button_8ino-example.html index 6fa69ac..7229f73 100644 --- a/doc/API-html/_comp_button_8ino-example.html +++ b/doc/API/_comp_button_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,9 +49,10 @@
-
#include "NexButton.h"
+
#include "Nextion.h"
NexButton b0 = NexButton(0, 1, "b0");
+
char buffer[100] = {0};
NexTouch *nex_listen_list[] =
@@ -82,19 +83,19 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
b0.attachPop(b0PopCallback, &b0);
dbSerialPrintln("setup done");
}
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_button_8ino_source.html b/doc/API/_comp_button_8ino_source.html similarity index 71% rename from doc/API-html/_comp_button_8ino_source.html rename to doc/API/_comp_button_8ino_source.html index a4212ed..c6452b7 100644 --- a/doc/API-html/_comp_button_8ino_source.html +++ b/doc/API/_comp_button_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,60 +54,61 @@
1 
-
16 #include "NexButton.h"
+
16 #include "Nextion.h"
17 
18 NexButton b0 = NexButton(0, 1, "b0");
-
19 char buffer[100] = {0};
-
20 
-
21 NexTouch *nex_listen_list[] =
-
22 {
-
23  &b0,
-
24  NULL
-
25 };
-
26 
-
27 void b0PopCallback(void *ptr)
-
28 {
-
29  uint16_t len;
-
30  uint16_t number;
-
31  NexButton *btn = (NexButton *)ptr;
-
32  dbSerialPrintln("b0PopCallback");
-
33  dbSerialPrint("ptr=");
-
34  dbSerialPrintln((uint32_t)ptr);
-
35  memset(buffer, 0, sizeof(buffer));
-
36  btn->getText(buffer, sizeof(buffer));
-
37 
-
38  number = atoi(buffer);
-
39  number += 1;
-
40 
-
41  memset(buffer, 0, sizeof(buffer));
-
42  itoa(number, buffer, 10);
-
43 
-
44  btn->setText(buffer);
-
45 }
-
46 
-
47 void setup(void)
-
48 {
-
49  nexInit();
-
50  b0.attachPop(b0PopCallback, &b0);
-
51  dbSerialPrintln("setup done");
-
52 }
-
53 
-
54 void loop(void)
-
55 {
-
56  nexLoop(nex_listen_list);
-
57 }
+
19 
+
20 char buffer[100] = {0};
+
21 
+
22 NexTouch *nex_listen_list[] =
+
23 {
+
24  &b0,
+
25  NULL
+
26 };
+
27 
+
28 void b0PopCallback(void *ptr)
+
29 {
+
30  uint16_t len;
+
31  uint16_t number;
+
32  NexButton *btn = (NexButton *)ptr;
+
33  dbSerialPrintln("b0PopCallback");
+
34  dbSerialPrint("ptr=");
+
35  dbSerialPrintln((uint32_t)ptr);
+
36  memset(buffer, 0, sizeof(buffer));
+
37  btn->getText(buffer, sizeof(buffer));
+
38 
+
39  number = atoi(buffer);
+
40  number += 1;
+
41 
+
42  memset(buffer, 0, sizeof(buffer));
+
43  itoa(number, buffer, 10);
+
44 
+
45  btn->setText(buffer);
+
46 }
+
47 
+
48 void setup(void)
+
49 {
+
50  nexInit();
+
51  b0.attachPop(b0PopCallback, &b0);
+
52  dbSerialPrintln("setup done");
+
53 }
+
54 
+
55 void loop(void)
+
56 {
+
57  nexLoop(nex_listen_list);
+
58 }
uint16_t getText(char *buffer, uint16_t len)
Get text value from button component.
Definition: NexButton.cpp:35
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
API of NexButton.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register button pop callback function.
Definition: NexButton.cpp:70
-
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:25
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
+
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:26
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
bool setText(const char *buffer)
Set text value of button component.
Definition: NexButton.cpp:53
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_comp_crop_8ino-example.html b/doc/API/_comp_crop_8ino-example.html similarity index 92% rename from doc/API-html/_comp_crop_8ino-example.html rename to doc/API/_comp_crop_8ino-example.html index 06a40fb..2a69605 100644 --- a/doc/API-html/_comp_crop_8ino-example.html +++ b/doc/API/_comp_crop_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,7 +49,7 @@
-
#include "NexCrop.h"
+
#include "Nextion.h"
NexCrop q0 = NexCrop(0, 1, "q0");
@@ -75,20 +75,20 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
q0.attachPop(q0PopCallback);
dbSerialPrintln("setup done");
}
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_crop_8ino_source.html b/doc/API/_comp_crop_8ino_source.html similarity index 81% rename from doc/API-html/_comp_crop_8ino_source.html rename to doc/API/_comp_crop_8ino_source.html index 52b935e..b2bb86c 100644 --- a/doc/API-html/_comp_crop_8ino_source.html +++ b/doc/API/_comp_crop_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,7 +54,7 @@
1 
-
16 #include "NexCrop.h"
+
16 #include "Nextion.h"
17 
18 NexCrop q0 = NexCrop(0, 1, "q0");
19 
@@ -80,26 +80,26 @@
39 
40 void setup(void)
41 {
-
42  nexInit();
+
42  nexInit();
43  q0.attachPop(q0PopCallback);
44  dbSerialPrintln("setup done");
45 }
46 
47 void loop(void)
48 {
-
49  nexLoop(nex_listen_list);
+
49  nexLoop(nex_listen_list);
50 }
51 
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
API of NexCrop.
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register crop pop callback function.
Definition: NexCrop.cpp:72
-
NexCrop,subclass of NexTouch,provides simple methods to control crop component.
Definition: NexCrop.h:25
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
+
NexCrop,subclass of NexTouch,provides simple methods to control crop component.
Definition: NexCrop.h:26
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_comp_pointer_8ino-example.html b/doc/API/_comp_gauge_8ino-example.html similarity index 81% rename from doc/API-html/_comp_pointer_8ino-example.html rename to doc/API/_comp_gauge_8ino-example.html index 748081a..850fa4f 100644 --- a/doc/API-html/_comp_pointer_8ino-example.html +++ b/doc/API/_comp_gauge_8ino-example.html @@ -4,7 +4,7 @@ -API: CompPointer.ino +API: CompGauge.ino @@ -16,7 +16,7 @@ - +
API
@@ -40,19 +40,18 @@
-
CompPointer.ino
+
CompGauge.ino
-
Show how to use API of class NexPointer.
+
Show how to use API of class NexGauge.
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
Date
2015/7/10
-
#include "NexPointer.h"
-
#include "NexButton.h"
+
#include "Nextion.h"
-
NexPointer pointer = NexPointer(0, 1, "pointer");
+
NexGauge pointer = NexGauge(0, 1, "pointer");
NexButton btn_up = NexButton(0, 2, "btn_up");
NexButton btn_down = NexButton(0, 3, "btn_down");
@@ -68,7 +67,7 @@ This program is free software; you can redistribute it and/or modify it under th
uint32_t number = 0;
dbSerialPrintln("buttonUpPopCallback");
-
pointer.getValue(&number);
+
pointer.getValue(&number);
number += 5;
if (number >= 360)
@@ -76,28 +75,28 @@ This program is free software; you can redistribute it and/or modify it under th
number = 0;
}
-
pointer.setValue(number);
+
pointer.setValue(number);
}
void buttonDownPopCallback(void *ptr)
{
uint32_t number = 0;
dbSerialPrintln("buttonDownPopCallback");
-
pointer.getValue(&number);
+
pointer.getValue(&number);
if (number >= 5)
{
number -= 5;
}
-
pointer.setValue(number);
+
pointer.setValue(number);
}
void setup(void)
{
- +
btn_up.attachPop(buttonUpPopCallback);
btn_down.attachPop(buttonDownPopCallback);
dbSerialPrintln("setup done");
@@ -105,13 +104,13 @@ This program is free software; you can redistribute it and/or modify it under th
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_pointer_8ino_source.html b/doc/API/_comp_gauge_8ino_source.html similarity index 59% rename from doc/API-html/_comp_pointer_8ino_source.html rename to doc/API/_comp_gauge_8ino_source.html index daf2848..1b617c5 100644 --- a/doc/API-html/_comp_pointer_8ino_source.html +++ b/doc/API/_comp_gauge_8ino_source.html @@ -4,7 +4,7 @@ -API: examples/CompPointer/CompPointer.ino Source File +API: examples/CompGauge/CompGauge.ino Source File @@ -16,7 +16,7 @@ - +
API
@@ -45,88 +45,86 @@
-
CompPointer.ino
+
CompGauge.ino
1 
-
16 #include "NexPointer.h"
-
17 #include "NexButton.h"
-
18 
-
19 NexPointer pointer = NexPointer(0, 1, "pointer");
-
20 NexButton btn_up = NexButton(0, 2, "btn_up");
-
21 NexButton btn_down = NexButton(0, 3, "btn_down");
-
22 
-
23 NexTouch *nex_listen_list[] =
-
24 {
-
25  &btn_up,
-
26  &btn_down,
-
27  NULL
-
28 };
-
29 
-
30 void buttonUpPopCallback(void *ptr)
-
31 {
-
32  uint32_t number = 0;
-
33  dbSerialPrintln("buttonUpPopCallback");
-
34 
-
35  pointer.getValue(&number);
-
36 
-
37  number += 5;
-
38  if (number >= 360)
-
39  {
-
40  number = 0;
-
41  }
-
42 
-
43  pointer.setValue(number);
-
44 }
-
45 void buttonDownPopCallback(void *ptr)
-
46 {
-
47  uint32_t number = 0;
-
48  dbSerialPrintln("buttonDownPopCallback");
-
49 
-
50  pointer.getValue(&number);
-
51 
-
52  if (number >= 5)
-
53  {
-
54  number -= 5;
-
55  }
-
56 
-
57  pointer.setValue(number);
-
58 }
+
16 #include "Nextion.h"
+
17 
+
18 NexGauge pointer = NexGauge(0, 1, "pointer");
+
19 NexButton btn_up = NexButton(0, 2, "btn_up");
+
20 NexButton btn_down = NexButton(0, 3, "btn_down");
+
21 
+
22 NexTouch *nex_listen_list[] =
+
23 {
+
24  &btn_up,
+
25  &btn_down,
+
26  NULL
+
27 };
+
28 
+
29 void buttonUpPopCallback(void *ptr)
+
30 {
+
31  uint32_t number = 0;
+
32  dbSerialPrintln("buttonUpPopCallback");
+
33 
+
34  pointer.getValue(&number);
+
35 
+
36  number += 5;
+
37  if (number >= 360)
+
38  {
+
39  number = 0;
+
40  }
+
41 
+
42  pointer.setValue(number);
+
43 }
+
44 void buttonDownPopCallback(void *ptr)
+
45 {
+
46  uint32_t number = 0;
+
47  dbSerialPrintln("buttonDownPopCallback");
+
48 
+
49  pointer.getValue(&number);
+
50 
+
51  if (number >= 5)
+
52  {
+
53  number -= 5;
+
54  }
+
55 
+
56  pointer.setValue(number);
+
57 }
+
58 
59 
60 
-
61 
-
62 void setup(void)
-
63 {
-
64  nexInit();
-
65  btn_up.attachPop(buttonUpPopCallback);
-
66  btn_down.attachPop(buttonDownPopCallback);
-
67  dbSerialPrintln("setup done");
-
68 }
-
69 
-
70 void loop(void)
-
71 {
-
72  nexLoop(nex_listen_list);
-
73 }
-
74 
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
API of NexButton.
+
61 void setup(void)
+
62 {
+
63  nexInit();
+
64  btn_up.attachPop(buttonUpPopCallback);
+
65  btn_down.attachPop(buttonDownPopCallback);
+
66  dbSerialPrintln("setup done");
+
67 }
+
68 
+
69 void loop(void)
+
70 {
+
71  nexLoop(nex_listen_list);
+
72 }
+
73 
+
NexGauge,subclass of NexTouch,provides simple methods to control gauge component. ...
Definition: NexGauge.h:26
+
bool setValue(uint32_t number)
Set the value of gauge.
Definition: NexGauge.cpp:52
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register button pop callback function.
Definition: NexButton.cpp:70
-
bool getValue(uint32_t *number)
Get the value of pointer.
Definition: NexPointer.cpp:35
-
NexPointer,subclass of NexTouch,provides simple methods to control pointer component.
Definition: NexPointer.h:25
-
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:25
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
bool setValue(uint32_t number)
Set the value of pointer.
Definition: NexPointer.cpp:52
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
API of NexPointer.
+
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:26
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
bool getValue(uint32_t *number)
Get the value of gauge.
Definition: NexGauge.cpp:35
+
Header file of Nextion Library.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_comp_hotspot_8ino-example.html b/doc/API/_comp_hotspot_8ino-example.html similarity index 94% rename from doc/API-html/_comp_hotspot_8ino-example.html rename to doc/API/_comp_hotspot_8ino-example.html index bf67efb..dec7eca 100644 --- a/doc/API-html/_comp_hotspot_8ino-example.html +++ b/doc/API/_comp_hotspot_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,7 +49,7 @@
-
#include "NexHotspot.h"
+
#include "Nextion.h"
NexHotspot hot0 = NexHotspot(0, 1, "hot0");
NexHotspot hot1 = NexHotspot(0, 2, "hot1");
@@ -91,7 +91,7 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
hot0.attachPush(hot0PushCallback, &hot0);
hot0.attachPop(hot0PopCallback, &hot0);
hot1.attachPush(hot1PushCallback, &hot1);
@@ -101,12 +101,12 @@ This program is free software; you can redistribute it and/or modify it under th
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_hotspot_8ino_source.html b/doc/API/_comp_hotspot_8ino_source.html similarity index 86% rename from doc/API-html/_comp_hotspot_8ino_source.html rename to doc/API/_comp_hotspot_8ino_source.html index 153472b..4e85747 100644 --- a/doc/API-html/_comp_hotspot_8ino_source.html +++ b/doc/API/_comp_hotspot_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,7 +54,7 @@
1 
-
16 #include "NexHotspot.h"
+
16 #include "Nextion.h"
17 
18 NexHotspot hot0 = NexHotspot(0, 1, "hot0");
19 NexHotspot hot1 = NexHotspot(0, 2, "hot1");
@@ -96,7 +96,7 @@
55 
56 void setup(void)
57 {
-
58  nexInit();
+
58  nexInit();
59  hot0.attachPush(hot0PushCallback, &hot0);
60  hot0.attachPop(hot0PopCallback, &hot0);
61  hot1.attachPush(hot1PushCallback, &hot1);
@@ -106,19 +106,19 @@
65 
66 void loop(void)
67 {
-
68  nexLoop(nex_listen_list);
+
68  nexLoop(nex_listen_list);
69 }
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
API of NexHotspot.
-
NexHotspot,subclass of NexTouch,provides simple methods to control hotspot component.
Definition: NexHotspot.h:25
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
+
NexHotspot,subclass of NexTouch,provides simple methods to control hotspot component.
Definition: NexHotspot.h:26
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register hotspot pop callback function.
Definition: NexHotspot.cpp:55
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
void attachPush(NexTouchEventCb push, void *ptr=NULL)
Register hotspot push callback function.
Definition: NexHotspot.cpp:35
diff --git a/doc/API-html/_comp_page_8ino-example.html b/doc/API/_comp_page_8ino-example.html similarity index 95% rename from doc/API-html/_comp_page_8ino-example.html rename to doc/API/_comp_page_8ino-example.html index 3ed6752..f2ea607 100644 --- a/doc/API-html/_comp_page_8ino-example.html +++ b/doc/API/_comp_page_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,7 +49,7 @@
-
#include "NexPage.h"
+
#include "Nextion.h"
NexPage page0 = NexPage(0, 0, "page0");
NexPage page1 = NexPage(1, 0, "page1");
@@ -91,7 +91,7 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
dbSerialPrintln("setup begin");
page0.attachPop(page0PopCallback);
@@ -104,12 +104,12 @@ This program is free software; you can redistribute it and/or modify it under th
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_page_8ino_source.html b/doc/API/_comp_page_8ino_source.html similarity index 87% rename from doc/API-html/_comp_page_8ino_source.html rename to doc/API/_comp_page_8ino_source.html index 7efbbee..8965190 100644 --- a/doc/API-html/_comp_page_8ino_source.html +++ b/doc/API/_comp_page_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,7 +54,7 @@
1 
-
16 #include "NexPage.h"
+
16 #include "Nextion.h"
17 
18 NexPage page0 = NexPage(0, 0, "page0");
19 NexPage page1 = NexPage(1, 0, "page1");
@@ -96,7 +96,7 @@
55 
56 void setup(void)
57 {
-
58  nexInit();
+
58  nexInit();
59  dbSerialPrintln("setup begin");
60 
61  page0.attachPop(page0PopCallback);
@@ -109,19 +109,19 @@
68 
69 void loop(void)
70 {
-
71  nexLoop(nex_listen_list);
+
71  nexLoop(nex_listen_list);
72 }
bool show(void)
Change page.
Definition: NexPage.cpp:33
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
API of NexPage.
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
NexPage,subclass of NexTouch,provides simple methods to control page component.
Definition: NexPage.h:25
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
NexPage,subclass of NexTouch,provides simple methods to control page component.
Definition: NexPage.h:26
+
Header file of Nextion Library.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register page pop callback function.
Definition: NexPage.cpp:55
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_comp_picture_8ino-example.html b/doc/API/_comp_picture_8ino-example.html similarity index 93% rename from doc/API-html/_comp_picture_8ino-example.html rename to doc/API/_comp_picture_8ino-example.html index 8566e87..ade948d 100644 --- a/doc/API-html/_comp_picture_8ino-example.html +++ b/doc/API/_comp_picture_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,7 +49,7 @@
-
#include "NexPicture.h"
+
#include "Nextion.h"
NexPicture p0 = NexPicture(0, 1, "p0");
@@ -81,20 +81,20 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
p0.attachPop(p0PopCallback);
dbSerialPrintln("setup done");
}
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_picture_8ino_source.html b/doc/API/_comp_picture_8ino_source.html similarity index 84% rename from doc/API-html/_comp_picture_8ino_source.html rename to doc/API/_comp_picture_8ino_source.html index 0a483aa..dbfca32 100644 --- a/doc/API-html/_comp_picture_8ino_source.html +++ b/doc/API/_comp_picture_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,7 +54,7 @@
1 
-
16 #include "NexPicture.h"
+
16 #include "Nextion.h"
17 
18 NexPicture p0 = NexPicture(0, 1, "p0");
19 
@@ -86,28 +86,28 @@
45 
46 void setup(void)
47 {
-
48  nexInit();
+
48  nexInit();
49  p0.attachPop(p0PopCallback);
50  dbSerialPrintln("setup done");
51 }
52 
53 void loop(void)
54 {
-
55  nexLoop(nex_listen_list);
+
55  nexLoop(nex_listen_list);
56 }
57 
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
bool setPic(uint32_t number)
Set picture's number.
Definition: NexPicture.cpp:52
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
-
NexPicture,subclass of NexTouch,provides simple methods to control picture component.
Definition: NexPicture.h:25
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
NexPicture,subclass of NexTouch,provides simple methods to control picture component.
Definition: NexPicture.h:26
+
bool nexInit(void)
Init Nextion's baudrate,page id.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register picture pop callback function.
Definition: NexPicture.cpp:72
+
Header file of Nextion Library.
bool getPic(uint32_t *number)
Get picture's number.
Definition: NexPicture.cpp:35
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
API of NexPicture.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_comp_progress_bar_8ino-example.html b/doc/API/_comp_progress_bar_8ino-example.html similarity index 92% rename from doc/API-html/_comp_progress_bar_8ino-example.html rename to doc/API/_comp_progress_bar_8ino-example.html index 5f74b3a..a98c30d 100644 --- a/doc/API-html/_comp_progress_bar_8ino-example.html +++ b/doc/API/_comp_progress_bar_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,8 +49,7 @@
-
#include "NexProgressBar.h"
-
#include "NexButton.h"
+
#include "Nextion.h"
NexProgressBar j0 = NexProgressBar(0, 3, "j0");
NexButton btn_up = NexButton(0, 1, "btn_up");
@@ -97,7 +96,7 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
btn_up.attachPop(buttonUpPopCallback);
btn_down.attachPop(buttonDownPopCallback);
dbSerialPrintln("setup done");
@@ -105,13 +104,13 @@ This program is free software; you can redistribute it and/or modify it under th
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_progress_bar_8ino_source.html b/doc/API/_comp_progress_bar_8ino_source.html similarity index 71% rename from doc/API-html/_comp_progress_bar_8ino_source.html rename to doc/API/_comp_progress_bar_8ino_source.html index 0036c08..fbedb9f 100644 --- a/doc/API-html/_comp_progress_bar_8ino_source.html +++ b/doc/API/_comp_progress_bar_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,79 +54,77 @@
1 
-
16 #include "NexProgressBar.h"
-
17 #include "NexButton.h"
-
18 
-
19 NexProgressBar j0 = NexProgressBar(0, 3, "j0");
-
20 NexButton btn_up = NexButton(0, 1, "btn_up");
-
21 NexButton btn_down = NexButton(0, 2, "btn_down");
-
22 
-
23 NexTouch *nex_listen_list[] =
-
24 {
-
25  &btn_up,
-
26  &btn_down,
-
27  NULL
-
28 };
-
29 
-
30 void buttonUpPopCallback(void *ptr)
-
31 {
-
32  uint32_t number = 0;
-
33  dbSerialPrintln("buttonUpPopCallback");
-
34 
-
35  j0.getValue(&number);
-
36 
-
37  number += 5;
-
38  if (number >= 100)
-
39  {
-
40  number = 100;
-
41  }
-
42 
-
43  j0.setValue(number);
-
44 }
-
45 void buttonDownPopCallback(void *ptr)
-
46 {
-
47  uint32_t number = 0;
-
48  dbSerialPrintln("buttonDownPopCallback");
-
49 
-
50  j0.getValue(&number);
-
51 
-
52  if (number >= 5)
-
53  {
-
54  number -= 5;
-
55  }
-
56 
-
57  j0.setValue(number);
-
58 }
+
16 #include "Nextion.h"
+
17 
+
18 NexProgressBar j0 = NexProgressBar(0, 3, "j0");
+
19 NexButton btn_up = NexButton(0, 1, "btn_up");
+
20 NexButton btn_down = NexButton(0, 2, "btn_down");
+
21 
+
22 NexTouch *nex_listen_list[] =
+
23 {
+
24  &btn_up,
+
25  &btn_down,
+
26  NULL
+
27 };
+
28 
+
29 void buttonUpPopCallback(void *ptr)
+
30 {
+
31  uint32_t number = 0;
+
32  dbSerialPrintln("buttonUpPopCallback");
+
33 
+
34  j0.getValue(&number);
+
35 
+
36  number += 5;
+
37  if (number >= 100)
+
38  {
+
39  number = 100;
+
40  }
+
41 
+
42  j0.setValue(number);
+
43 }
+
44 void buttonDownPopCallback(void *ptr)
+
45 {
+
46  uint32_t number = 0;
+
47  dbSerialPrintln("buttonDownPopCallback");
+
48 
+
49  j0.getValue(&number);
+
50 
+
51  if (number >= 5)
+
52  {
+
53  number -= 5;
+
54  }
+
55 
+
56  j0.setValue(number);
+
57 }
+
58 
59 
60 
-
61 
-
62 void setup(void)
-
63 {
-
64  nexInit();
-
65  btn_up.attachPop(buttonUpPopCallback);
-
66  btn_down.attachPop(buttonDownPopCallback);
-
67  dbSerialPrintln("setup done");
-
68 }
-
69 
-
70 void loop(void)
-
71 {
-
72  nexLoop(nex_listen_list);
-
73 }
-
74 
+
61 void setup(void)
+
62 {
+
63  nexInit();
+
64  btn_up.attachPop(buttonUpPopCallback);
+
65  btn_down.attachPop(buttonDownPopCallback);
+
66  dbSerialPrintln("setup done");
+
67 }
+
68 
+
69 void loop(void)
+
70 {
+
71  nexLoop(nex_listen_list);
+
72 }
+
73 
bool setValue(uint32_t number)
Set the value of progress bar.
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
API of NexButton.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register button pop callback function.
Definition: NexButton.cpp:70
-
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:25
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
+
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:26
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
bool getValue(uint32_t *number)
Get the value of progress bar.
-
API of NexProgressBar.
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
NexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component...
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
NexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component...
diff --git a/doc/API-html/_comp_slice_8ino-example.html b/doc/API/_comp_slider_8ino-example.html similarity index 67% rename from doc/API-html/_comp_slice_8ino-example.html rename to doc/API/_comp_slider_8ino-example.html index 4eeaa03..ac33d10 100644 --- a/doc/API-html/_comp_slice_8ino-example.html +++ b/doc/API/_comp_slider_8ino-example.html @@ -4,7 +4,7 @@ -API: CompSlice.ino +API: CompSlider.ino @@ -16,7 +16,7 @@ - +
API
@@ -40,57 +40,56 @@
-
CompSlice.ino
+
CompSlider.ino
-
Show how to use API of class NexSlice.
+
Show how to use API of class NexSlider.
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
-
Date
2015/7/10
+
Date
2015/8/11
-
#include "NexSlice.h"
+
#include "Nextion.h"
-
NexSlice q0 = NexSlice(0, 1, "q0");
-
NexTouch *nexListenList[] =
+
NexText t0 = NexText(0, 2, "t0");
+
NexSlider h0 = NexSlider(0, 1, "h0");
+
+
NexTouch *nex_listen_list[] =
{
-
&q0,
+
&h0,
NULL
};
-
void q0PopCallback(void *ptr)
+
void h0PopCallback(void *ptr)
{
uint32_t number = 0;
-
dbSerialPrintln("q0PopCallback");
-
-
q0.getPic(&number);
-
-
number += 1;
-
number %= 2;
+
char temp[10] = {0};
-
q0.setPic(number);
+
dbSerialPrintln("h0PopCallback");
+
+
h0.getValue(&number);
+
utoa(number, temp, 10);
+
t0.setText(temp);
}
void setup(void)
{
-
dbSerialBegin(9600);
- -
q0.attachPop(q0PopCallback);
+ +
h0.attachPop(h0PopCallback);
dbSerialPrintln("setup done");
}
void loop(void)
{
-
dbSerialPrintln("nexLoop");
-
nexLoop(nexListenList);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_slice_8ino_source.html b/doc/API/_comp_slider_8ino_source.html similarity index 50% rename from doc/API-html/_comp_slice_8ino_source.html rename to doc/API/_comp_slider_8ino_source.html index 8afee7a..72f008a 100644 --- a/doc/API-html/_comp_slice_8ino_source.html +++ b/doc/API/_comp_slider_8ino_source.html @@ -4,7 +4,7 @@ -API: examples/CompSlice/CompSlice.ino Source File +API: examples/CompSlider/CompSlider.ino Source File @@ -16,7 +16,7 @@ - +
API
@@ -45,63 +45,65 @@
-
CompSlice.ino
+
CompSlider.ino
1 
-
16 #include "NexSlice.h"
+
16 #include "Nextion.h"
17 
-
18 NexSlice q0 = NexSlice(0, 1, "q0");
-
19 
-
20 NexTouch *nexListenList[] =
-
21 {
-
22  &q0,
-
23  NULL
-
24 };
-
25 
-
26 void q0PopCallback(void *ptr)
-
27 {
-
28  uint32_t number = 0;
-
29  dbSerialPrintln("q0PopCallback");
-
30 
-
31  q0.getPic(&number);
-
32 
-
33  number += 1;
-
34  number %= 2;
-
35 
-
36  q0.setPic(number);
-
37 }
-
38 
+
18 
+
19 NexText t0 = NexText(0, 2, "t0");
+
20 NexSlider h0 = NexSlider(0, 1, "h0");
+
21 
+
22 NexTouch *nex_listen_list[] =
+
23 {
+
24  &h0,
+
25  NULL
+
26 };
+
27 
+
28 void h0PopCallback(void *ptr)
+
29 {
+
30  uint32_t number = 0;
+
31  char temp[10] = {0};
+
32 
+
33  dbSerialPrintln("h0PopCallback");
+
34 
+
35  h0.getValue(&number);
+
36  utoa(number, temp, 10);
+
37  t0.setText(temp);
+
38 }
39 
-
40 void setup(void)
-
41 {
-
42  dbSerialBegin(9600);
-
43  nexInit();
-
44  q0.attachPop(q0PopCallback);
+
40 
+
41 void setup(void)
+
42 {
+
43  nexInit();
+
44  h0.attachPop(h0PopCallback);
45  dbSerialPrintln("setup done");
46 }
47 
48 void loop(void)
49 {
-
50  dbSerialPrintln("nexLoop");
-
51  nexLoop(nexListenList);
-
52 }
-
53 
-
NexSlice,subclass of NexTouch,provides simple methods to control slice component. ...
Definition: NexSlice.h:25
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:409
-
bool nexLoop(NexTouch **nexListenList)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:425
-
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register slice pop callback function.
Definition: NexSlice.cpp:72
-
API of NexSlice.
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
50  nexLoop(nex_listen_list);
+
51 }
+
52 
+
NexSlider,subclass of NexTouch,provides simple methods to control slider component.
Definition: NexSlider.h:26
+
bool setText(const char *buffer)
Set the value of text.
Definition: NexText.cpp:53
+
bool getValue(uint32_t *number)
Get the value of slider.
Definition: NexSlider.cpp:36
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
+
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register slider pop callback function.
Definition: NexSlider.cpp:73
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
NexText,subclass of NexTouch,provides simple methods to control text component.
Definition: NexText.h:26
diff --git a/doc/API-html/_comp_text_8ino-example.html b/doc/API/_comp_text_8ino-example.html similarity index 94% rename from doc/API-html/_comp_text_8ino-example.html rename to doc/API/_comp_text_8ino-example.html index 73d012f..032f177 100644 --- a/doc/API-html/_comp_text_8ino-example.html +++ b/doc/API/_comp_text_8ino-example.html @@ -16,7 +16,7 @@ - +
API
@@ -49,8 +49,7 @@
-
#include "NexButton.h"
-
#include "NexText.h"
+
#include "Nextion.h"
void t0PopCallback(void *ptr);
void b0PopCallback(void *ptr);
@@ -116,19 +115,19 @@ This program is free software; you can redistribute it and/or modify it under th
void setup(void)
{
- +
dbSerialPrintln("setup done");
}
void loop(void)
{
-
nexLoop(nex_listen_list);
+
nexLoop(nex_listen_list);
}
diff --git a/doc/API-html/_comp_text_8ino_source.html b/doc/API/_comp_text_8ino_source.html similarity index 74% rename from doc/API-html/_comp_text_8ino_source.html rename to doc/API/_comp_text_8ino_source.html index 78f85c6..df7fa72 100644 --- a/doc/API-html/_comp_text_8ino_source.html +++ b/doc/API/_comp_text_8ino_source.html @@ -16,7 +16,7 @@ - +
API
@@ -54,95 +54,93 @@
1 
-
16 #include "NexButton.h"
-
17 #include "NexText.h"
-
18 
-
19 void t0PopCallback(void *ptr);
-
20 void b0PopCallback(void *ptr);
-
21 void b1PopCallback(void *ptr);
-
22 
-
23 NexText t0 = NexText(0, 1, "t0", t0PopCallback);
-
24 NexButton b0 = NexButton(0, 2, "b0", b0PopCallback);
-
25 NexButton b1 = NexButton(0, 3, "b1", b1PopCallback);
-
26 
-
27 char buffer[100] = {0};
-
28 
-
29 NexTouch *nex_listen_list[] =
-
30 {
-
31  &t0,
-
32  &b0,
-
33  &b1,
-
34  NULL
-
35 };
-
36 
-
37 void t0PopCallback(void *ptr)
-
38 {
-
39  dbSerialPrintln("t0PopCallback");
-
40  t0.setText("50");
-
41 }
-
42 
-
43 void b0PopCallback(void *ptr)
-
44 {
-
45  uint16_t len;
-
46  uint16_t number;
-
47 
-
48  dbSerialPrintln("b0PopCallback");
-
49 
-
50  memset(buffer, 0, sizeof(buffer));
-
51  t0.getText(buffer, sizeof(buffer));
-
52 
-
53  number = atoi(buffer);
-
54  number += 1;
-
55 
-
56  memset(buffer, 0, sizeof(buffer));
-
57  itoa(number, buffer, 10);
-
58 
-
59  t0.setText(buffer);
-
60 }
-
61 
-
62 void b1PopCallback(void *ptr)
-
63 {
-
64  uint16_t len;
-
65  uint16_t number;
-
66 
-
67  dbSerialPrintln("b1PopCallback");
-
68 
-
69  memset(buffer, 0, sizeof(buffer));
-
70  t0.getText(buffer, sizeof(buffer));
-
71 
-
72  number = atoi(buffer);
-
73  number -= 1;
-
74 
-
75  memset(buffer, 0, sizeof(buffer));
-
76  itoa(number, buffer, 10);
-
77 
-
78  t0.setText(buffer);
-
79 }
-
80 
-
81 void setup(void)
-
82 {
-
83  nexInit();
-
84  dbSerialPrintln("setup done");
-
85 }
-
86 
-
87 void loop(void)
-
88 {
-
89  nexLoop(nex_listen_list);
-
90 }
-
91 
+
16 #include "Nextion.h"
+
17 
+
18 void t0PopCallback(void *ptr);
+
19 void b0PopCallback(void *ptr);
+
20 void b1PopCallback(void *ptr);
+
21 
+
22 NexText t0 = NexText(0, 1, "t0", t0PopCallback);
+
23 NexButton b0 = NexButton(0, 2, "b0", b0PopCallback);
+
24 NexButton b1 = NexButton(0, 3, "b1", b1PopCallback);
+
25 
+
26 char buffer[100] = {0};
+
27 
+
28 NexTouch *nex_listen_list[] =
+
29 {
+
30  &t0,
+
31  &b0,
+
32  &b1,
+
33  NULL
+
34 };
+
35 
+
36 void t0PopCallback(void *ptr)
+
37 {
+
38  dbSerialPrintln("t0PopCallback");
+
39  t0.setText("50");
+
40 }
+
41 
+
42 void b0PopCallback(void *ptr)
+
43 {
+
44  uint16_t len;
+
45  uint16_t number;
+
46 
+
47  dbSerialPrintln("b0PopCallback");
+
48 
+
49  memset(buffer, 0, sizeof(buffer));
+
50  t0.getText(buffer, sizeof(buffer));
+
51 
+
52  number = atoi(buffer);
+
53  number += 1;
+
54 
+
55  memset(buffer, 0, sizeof(buffer));
+
56  itoa(number, buffer, 10);
+
57 
+
58  t0.setText(buffer);
+
59 }
+
60 
+
61 void b1PopCallback(void *ptr)
+
62 {
+
63  uint16_t len;
+
64  uint16_t number;
+
65 
+
66  dbSerialPrintln("b1PopCallback");
+
67 
+
68  memset(buffer, 0, sizeof(buffer));
+
69  t0.getText(buffer, sizeof(buffer));
+
70 
+
71  number = atoi(buffer);
+
72  number -= 1;
+
73 
+
74  memset(buffer, 0, sizeof(buffer));
+
75  itoa(number, buffer, 10);
+
76 
+
77  t0.setText(buffer);
+
78 }
+
79 
+
80 void setup(void)
+
81 {
+
82  nexInit();
+
83  dbSerialPrintln("setup done");
+
84 }
+
85 
+
86 void loop(void)
+
87 {
+
88  nexLoop(nex_listen_list);
+
89 }
+
90 
bool setText(const char *buffer)
Set the value of text.
Definition: NexText.cpp:53
-
bool nexInit(void)
Init Nextion's baudrate,page id.
Definition: NexTouch.cpp:398
-
API of NexText.
-
API of NexButton.
-
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:25
-
bool nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
Definition: NexTouch.cpp:415
+
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:26
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
uint16_t getText(char *buffer, uint16_t len)
Get the value of text.
Definition: NexText.cpp:35
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
NexText,subclass of NexTouch,provides simple methods to control text component.
Definition: NexText.h:25
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Header file of Nextion Library.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
NexText,subclass of NexTouch,provides simple methods to control text component.
Definition: NexText.h:26
diff --git a/doc/API/_comp_waveform_8ino-example.html b/doc/API/_comp_waveform_8ino-example.html new file mode 100644 index 00000000..f6884b0 --- /dev/null +++ b/doc/API/_comp_waveform_8ino-example.html @@ -0,0 +1,111 @@ + + + + + + +API: CompWaveform.ino + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + +
+
+
+
CompWaveform.ino
+
+
+
Show how to use API of class NexWaveform.
+
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
+
Date
2015/8/11
+ +
+
#include "Nextion.h"
+
+
#define LEVEL_HIGH (30)
+
#define LEVEL_LOW (0)
+
+
#define CH0_OFFSET (40 - LEVEL_HIGH/2)
+
#define CH1_OFFSET (CH0_OFFSET + 40 * 1)
+
#define CH2_OFFSET (CH0_OFFSET + 40 * 2)
+
#define CH3_OFFSET (CH0_OFFSET + 40 * 3)
+
+
+
NexWaveform s0 = NexWaveform(0, 1, "s0");
+
+
static uint8_t ch0_data = LEVEL_LOW;
+
static uint8_t ch1_data = LEVEL_LOW;
+
static uint8_t ch2_data = LEVEL_LOW;
+
static uint8_t ch3_data = LEVEL_LOW;
+
+
void setup(void)
+
{
+ +
dbSerialPrintln("setup done");
+
}
+
+
void loop(void)
+
{
+
static uint32_t started = 0;
+
if (millis() - started >= 2000)
+
{
+
started = millis();
+
if (LEVEL_HIGH == ch0_data)
+
{
+
ch0_data = LEVEL_LOW;
+
}
+
else
+
{
+
ch0_data = LEVEL_HIGH;
+
}
+
}
+
+
ch1_data = ch0_data + random(0, 2);
+
ch2_data = ch0_data + random(0, 5);
+
ch3_data = ch0_data + random(0, 8);
+
+
s0.addValue(0, CH0_OFFSET + ch0_data);
+
s0.addValue(1, CH1_OFFSET + ch1_data);
+
s0.addValue(2, CH2_OFFSET + ch2_data);
+
s0.addValue(3, CH3_OFFSET + ch3_data);
+
+
}
+
+
+ + + + diff --git a/doc/API/_comp_waveform_8ino_source.html b/doc/API/_comp_waveform_8ino_source.html new file mode 100644 index 00000000..a05ee98 --- /dev/null +++ b/doc/API/_comp_waveform_8ino_source.html @@ -0,0 +1,120 @@ + + + + + + +API: examples/CompWaveform/CompWaveform.ino Source File + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + + + +
+
+
+
CompWaveform.ino
+
+
+
1 
+
16 #include "Nextion.h"
+
17 
+
18 #define LEVEL_HIGH (30)
+
19 #define LEVEL_LOW (0)
+
20 
+
21 #define CH0_OFFSET (40 - LEVEL_HIGH/2)
+
22 #define CH1_OFFSET (CH0_OFFSET + 40 * 1)
+
23 #define CH2_OFFSET (CH0_OFFSET + 40 * 2)
+
24 #define CH3_OFFSET (CH0_OFFSET + 40 * 3)
+
25 
+
26 
+
27 NexWaveform s0 = NexWaveform(0, 1, "s0");
+
28 
+
29 static uint8_t ch0_data = LEVEL_LOW;
+
30 static uint8_t ch1_data = LEVEL_LOW;
+
31 static uint8_t ch2_data = LEVEL_LOW;
+
32 static uint8_t ch3_data = LEVEL_LOW;
+
33 
+
34 void setup(void)
+
35 {
+
36  nexInit();
+
37  dbSerialPrintln("setup done");
+
38 }
+
39 
+
40 void loop(void)
+
41 {
+
42  static uint32_t started = 0;
+
43  if (millis() - started >= 2000)
+
44  {
+
45  started = millis();
+
46  if (LEVEL_HIGH == ch0_data)
+
47  {
+
48  ch0_data = LEVEL_LOW;
+
49  }
+
50  else
+
51  {
+
52  ch0_data = LEVEL_HIGH;
+
53  }
+
54  }
+
55 
+
56  ch1_data = ch0_data + random(0, 2);
+
57  ch2_data = ch0_data + random(0, 5);
+
58  ch3_data = ch0_data + random(0, 8);
+
59 
+
60  s0.addValue(0, CH0_OFFSET + ch0_data);
+
61  s0.addValue(1, CH1_OFFSET + ch1_data);
+
62  s0.addValue(2, CH2_OFFSET + ch2_data);
+
63  s0.addValue(3, CH3_OFFSET + ch3_data);
+
64 
+
65 }
+
66 
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
bool addValue(uint8_t ch, uint8_t number)
Add value to show.
Definition: NexWaveform.cpp:37
+
Header file of Nextion Library.
+
NexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component.
Definition: NexWaveform.h:25
+
+ + + + diff --git a/doc/API-html/_nex_button_8cpp.html b/doc/API/_nex_button_8cpp.html similarity index 96% rename from doc/API-html/_nex_button_8cpp.html rename to doc/API/_nex_button_8cpp.html index e16defa..a04df15 100644 --- a/doc/API-html/_nex_button_8cpp.html +++ b/doc/API/_nex_button_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_button_8cpp_source.html b/doc/API/_nex_button_8cpp_source.html similarity index 83% rename from doc/API-html/_nex_button_8cpp_source.html rename to doc/API/_nex_button_8cpp_source.html index 725c54b..18fd62e 100644 --- a/doc/API-html/_nex_button_8cpp_source.html +++ b/doc/API/_nex_button_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -63,8 +63,8 @@
38  cmd += "get ";
39  cmd += getObjName();
40  cmd += ".txt";
-
41  sendCommand(cmd.c_str());
-
42  return recvRetString(buffer,len);
+
41  sendCommand(cmd.c_str());
+
42  return recvRetString(buffer,len);
43 }
44 
53 bool NexButton::setText(const char *buffer)
@@ -74,8 +74,8 @@
57  cmd += ".txt=\"";
58  cmd += buffer;
59  cmd += "\"";
-
60  sendCommand(cmd.c_str());
-
61  return recvRetCommandFinished();
+
60  sendCommand(cmd.c_str());
+
61  return recvRetCommandFinished();
62 }
63 
70 void NexButton::attachPop(NexTouchEventCb pop, void *ptr)
@@ -90,20 +90,20 @@
83 
84 
NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexButton.cpp:22
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
uint16_t getText(char *buffer, uint16_t len)
Get text value from button component.
Definition: NexButton.cpp:35
API of NexButton.
+
uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout)
Receive string data.
Definition: NexHardware.cpp:97
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register button pop callback function.
Definition: NexButton.cpp:70
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
bool setText(const char *buffer)
Set text value of button component.
Definition: NexButton.cpp:53
-
static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)
Receive string data.
Definition: NexTouch.cpp:279
+
void sendCommand(const char *cmd)
Send command to Nextion.
void detachPop(void)
Unload button pop callback function.
Definition: NexButton.cpp:79
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_button_8h.html b/doc/API/_nex_button_8h.html similarity index 95% rename from doc/API-html/_nex_button_8h.html rename to doc/API/_nex_button_8h.html index b737d4b..e116e24 100644 --- a/doc/API-html/_nex_button_8h.html +++ b/doc/API/_nex_button_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexButton. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_button_8h_source.html b/doc/API/_nex_button_8h_source.html similarity index 85% rename from doc/API-html/_nex_button_8h_source.html rename to doc/API/_nex_button_8h_source.html index 428a014..9d550bb 100644 --- a/doc/API-html/_nex_button_8h_source.html +++ b/doc/API/_nex_button_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,33 +54,35 @@
17 #define __NEXBUTTON_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexButton: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
-
29 
-
30  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
31  void detachPop(void);
-
32 
-
33  uint16_t getText(char *buffer, uint16_t len);
-
34  bool setText(const char *buffer);
-
35 };
-
36 
-
37 #endif /* #ifdef __cplusplus */
-
38 #endif /* #ifndef __NEXBUTTON_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexButton: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
+
30 
+
31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
+
32  void detachPop(void);
+
33 
+
34  uint16_t getText(char *buffer, uint16_t len);
+
35  bool setText(const char *buffer);
+
36 };
+
37 
+
38 #endif /* #ifdef __cplusplus */
+
39 #endif /* #ifndef __NEXBUTTON_H__ */
NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexButton.cpp:22
uint16_t getText(char *buffer, uint16_t len)
Get text value from button component.
Definition: NexButton.cpp:35
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register button pop callback function.
Definition: NexButton.cpp:70
-
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:25
+
NexButton,subclass of NexTouch,provides simple methods to control button component.
Definition: NexButton.h:26
bool setText(const char *buffer)
Set text value of button component.
Definition: NexButton.cpp:53
API of Nextion.
+
Hardware Srial API.
void detachPop(void)
Unload button pop callback function.
Definition: NexButton.cpp:79
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_crop_8cpp.html b/doc/API/_nex_crop_8cpp.html similarity index 96% rename from doc/API-html/_nex_crop_8cpp.html rename to doc/API/_nex_crop_8cpp.html index 540f124..06bed25 100644 --- a/doc/API-html/_nex_crop_8cpp.html +++ b/doc/API/_nex_crop_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_crop_8cpp_source.html b/doc/API/_nex_crop_8cpp_source.html similarity index 84% rename from doc/API-html/_nex_crop_8cpp_source.html rename to doc/API/_nex_crop_8cpp_source.html index 1ebfa61..80bb030 100644 --- a/doc/API-html/_nex_crop_8cpp_source.html +++ b/doc/API/_nex_crop_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -70,8 +70,8 @@
37  String cmd = String("get ");
38  cmd += getObjName();
39  cmd += ".picc";
-
40  sendCommand(cmd.c_str());
-
41  return recvRetNumber(number);
+
40  sendCommand(cmd.c_str());
+
41  return recvRetNumber(number);
42 }
43 
44 /*
@@ -92,8 +92,8 @@
59  cmd += ".picc=";
60  cmd += buf;
61 
-
62  sendCommand(cmd.c_str());
-
63  return recvRetCommandFinished();
+
62  sendCommand(cmd.c_str());
+
63  return recvRetCommandFinished();
64 }
65 
72 void NexCrop::attachPop(NexTouchEventCb pop, void *ptr)
@@ -106,19 +106,19 @@
83  NexTouch::detachPop();
84 }
85 
+
bool recvRetNumber(uint32_t *number, uint32_t timeout)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexCrop.cpp:22
void detachPop(void)
Unload crop pop callback function.
Definition: NexCrop.cpp:81
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
API of NexCrop.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register crop pop callback function.
Definition: NexCrop.cpp:72
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
void sendCommand(const char *cmd)
Send command to Nextion.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_crop_8h.html b/doc/API/_nex_crop_8h.html similarity index 95% rename from doc/API-html/_nex_crop_8h.html rename to doc/API/_nex_crop_8h.html index 8d47ce6..dfe0016 100644 --- a/doc/API-html/_nex_crop_8h.html +++ b/doc/API/_nex_crop_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexCrop. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_crop_8h_source.html b/doc/API/_nex_crop_8h_source.html similarity index 83% rename from doc/API-html/_nex_crop_8h_source.html rename to doc/API/_nex_crop_8h_source.html index db487c5..d55566a 100644 --- a/doc/API-html/_nex_crop_8h_source.html +++ b/doc/API/_nex_crop_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,31 +54,33 @@
17 #define __NEXCROP_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexCrop: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
-
29 
-
30  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
31  void detachPop(void);
-
32 
-
33  bool getPic(uint32_t *number);
-
34  bool setPic(uint32_t number);
-
35 };
-
36 
-
37 #endif /* #ifdef __cplusplus */
-
38 #endif /* #ifndef __NEXCROP_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexCrop: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
+
30 
+
31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
+
32  void detachPop(void);
+
33 
+
34  bool getPic(uint32_t *number);
+
35  bool setPic(uint32_t number);
+
36 };
+
37 
+
38 #endif /* #ifdef __cplusplus */
+
39 #endif /* #ifndef __NEXCROP_H__ */
NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexCrop.cpp:22
void detachPop(void)
Unload crop pop callback function.
Definition: NexCrop.cpp:81
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register crop pop callback function.
Definition: NexCrop.cpp:72
API of Nextion.
-
NexCrop,subclass of NexTouch,provides simple methods to control crop component.
Definition: NexCrop.h:25
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Hardware Srial API.
+
NexCrop,subclass of NexTouch,provides simple methods to control crop component.
Definition: NexCrop.h:26
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_slice_8cpp.html b/doc/API/_nex_gauge_8cpp.html similarity index 78% rename from doc/API-html/_nex_slice_8cpp.html rename to doc/API/_nex_gauge_8cpp.html index a56c993..aa5a249 100644 --- a/doc/API-html/_nex_slice_8cpp.html +++ b/doc/API/_nex_gauge_8cpp.html @@ -4,7 +4,7 @@ -API: NexSlice.cpp File Reference +API: NexGauge.cpp File Reference @@ -16,7 +16,7 @@ - +
API
@@ -46,27 +46,27 @@
-
NexSlice.cpp File Reference
+
NexGauge.cpp File Reference
-

API of NexSlice. +

API of NexGauge. More...

-
#include "NexSlice.h"
+
#include "NexGauge.h"
-

Go to the source code of this file.

+

Go to the source code of this file.

Detailed Description

-

API of NexSlice.

+

API of NexGauge.

Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
Date
2015/7/10
-

Definition in file NexSlice.cpp.

+

Definition in file NexGauge.cpp.

diff --git a/doc/API-html/_nex_pointer_8cpp_source.html b/doc/API/_nex_gauge_8cpp_source.html similarity index 54% rename from doc/API-html/_nex_pointer_8cpp_source.html rename to doc/API/_nex_gauge_8cpp_source.html index 1b6307e..728953c 100644 --- a/doc/API-html/_nex_pointer_8cpp_source.html +++ b/doc/API/_nex_gauge_8cpp_source.html @@ -4,7 +4,7 @@ -API: NexPointer.cpp Source File +API: NexGauge.cpp Source File @@ -16,7 +16,7 @@ - +
API
@@ -46,27 +46,27 @@
-
NexPointer.cpp
+
NexGauge.cpp
-Go to the documentation of this file.
1 
-
16 #include "NexPointer.h"
+Go to the documentation of this file.
1 
+
16 #include "NexGauge.h"
17 
-
22 NexPointer::NexPointer(NexPid pid, NexCid cid, char *name)
+
22 NexGauge::NexGauge(NexPid pid, NexCid cid, char *name)
23  :NexTouch(pid, cid, name)
24 {
25 }
26 
-
35 bool NexPointer::getValue(uint32_t *number)
+
35 bool NexGauge::getValue(uint32_t *number)
36 {
37  String cmd = String("get ");
38  cmd += getObjName();
39  cmd += ".val";
-
40  sendCommand(cmd.c_str());
-
41  return recvRetNumber(number);
+
40  sendCommand(cmd.c_str());
+
41  return recvRetNumber(number);
42 }
43 
-
52 bool NexPointer::setValue(uint32_t number)
+
52 bool NexGauge::setValue(uint32_t number)
53 {
54  char buf[10] = {0};
55  String cmd;
@@ -76,23 +76,23 @@
59  cmd += ".val=";
60  cmd += buf;
61 
-
62  sendCommand(cmd.c_str());
-
63  return recvRetCommandFinished();
+
62  sendCommand(cmd.c_str());
+
63  return recvRetCommandFinished();
64 }
65 
-
bool getValue(uint32_t *number)
Get the value of pointer.
Definition: NexPointer.cpp:35
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
-
NexPointer(NexPid pid, NexCid cid, char *name)
Constructor,inherited NexTouch's constructor function.
Definition: NexPointer.cpp:22
-
bool setValue(uint32_t number)
Set the value of pointer.
Definition: NexPointer.cpp:52
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
API of NexPointer.
+
bool recvRetNumber(uint32_t *number, uint32_t timeout)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
+
bool setValue(uint32_t number)
Set the value of gauge.
Definition: NexGauge.cpp:52
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
+
API of NexGauge.
+
bool getValue(uint32_t *number)
Get the value of gauge.
Definition: NexGauge.cpp:35
+
void sendCommand(const char *cmd)
Send command to Nextion.
+
NexGauge(NexPid pid, NexCid cid, char *name)
Constructor,inherited NexTouch's constructor function.
Definition: NexGauge.cpp:22
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_slice_8h.html b/doc/API/_nex_gauge_8h.html similarity index 74% rename from doc/API-html/_nex_slice_8h.html rename to doc/API/_nex_gauge_8h.html index 594eee5..a220f47 100644 --- a/doc/API-html/_nex_slice_8h.html +++ b/doc/API/_nex_gauge_8h.html @@ -4,7 +4,7 @@ -API: NexSlice.h File Reference +API: NexGauge.h File Reference @@ -16,7 +16,7 @@ - +
API
@@ -48,34 +48,35 @@
-
NexSlice.h File Reference
+
NexGauge.h File Reference
-

API of NexSlice. +

API of NexGauge. More...

#include "NexTouch.h"
+#include "NexHardware.h"
-

Go to the source code of this file.

+

Go to the source code of this file.

- - + +

Classes

class  NexSlice
 NexSlice,subclass of NexTouch,provides simple methods to control slice component. More...
class  NexGauge
 NexGauge,subclass of NexTouch,provides simple methods to control gauge component. More...
 

Detailed Description

-

API of NexSlice.

+

API of NexGauge.

Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
Date
2015/7/10
-

Definition in file NexSlice.h.

+

Definition in file NexGauge.h.

diff --git a/doc/API-html/_nex_slice_8h_source.html b/doc/API/_nex_gauge_8h_source.html similarity index 50% rename from doc/API-html/_nex_slice_8h_source.html rename to doc/API/_nex_gauge_8h_source.html index 50611b4..62fb8cd 100644 --- a/doc/API-html/_nex_slice_8h_source.html +++ b/doc/API/_nex_gauge_8h_source.html @@ -4,7 +4,7 @@ -API: NexSlice.h Source File +API: NexGauge.h Source File @@ -16,7 +16,7 @@ - +
API
@@ -46,39 +46,38 @@
-
NexSlice.h
+
NexGauge.h
-Go to the documentation of this file.
1 
-
16 #ifndef __NEXSLICE_H__
-
17 #define __NEXSLICE_H__
+Go to the documentation of this file.
1 
+
16 #ifndef __NEXGAUGE_H__
+
17 #define __NEXGAUGE_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexSlice: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexSlice(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
-
29 
-
30  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
31  void detachPop(void);
-
32 
-
33  bool getPic(uint32_t *number);
-
34  bool setPic(uint32_t number);
-
35 };
-
36 
-
37 #endif /* #ifdef __cplusplus */
-
38 #endif /* #ifndef __NEXSLICE_H__ */
-
NexSlice,subclass of NexTouch,provides simple methods to control slice component. ...
Definition: NexSlice.h:25
-
void detachPop(void)
Unload slice pop callback function.
Definition: NexSlice.cpp:81
+
20 #include "NexHardware.h"
+
21 
+
26 class NexGauge: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexGauge(NexPid pid, NexCid cid, char *name);
+
30 
+
31  bool getValue(uint32_t *number);
+
32  bool setValue(uint32_t number);
+
33 };
+
34 
+
35 #endif /* #ifdef __cplusplus */
+
36 #endif /* #ifndef __NEXGAUGE_H__ */
+
NexGauge,subclass of NexTouch,provides simple methods to control gauge component. ...
Definition: NexGauge.h:26
+
bool setValue(uint32_t number)
Set the value of gauge.
Definition: NexGauge.cpp:52
API of Nextion.
-
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register slice pop callback function.
Definition: NexSlice.cpp:72
-
NexSlice(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexSlice.cpp:22
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
bool getValue(uint32_t *number)
Get the value of gauge.
Definition: NexGauge.cpp:35
+
Hardware Srial API.
+
NexGauge(NexPid pid, NexCid cid, char *name)
Constructor,inherited NexTouch's constructor function.
Definition: NexGauge.cpp:22
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API/_nex_hardware_8cpp.html b/doc/API/_nex_hardware_8cpp.html new file mode 100644 index 00000000..fca42ef --- /dev/null +++ b/doc/API/_nex_hardware_8cpp.html @@ -0,0 +1,302 @@ + + + + + + +API: NexHardware.cpp File Reference + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + + +
+
+ +
+
NexHardware.cpp File Reference
+
+
+ +

Hardware Srial API. +More...

+
#include "NexHardware.h"
+
+

Go to the source code of this file.

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

+Functions

bool recvRetNumber (uint32_t *number, uint32_t timeout)
 Receive uint32_t data. More...
 
uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout)
 Receive string data. More...
 
void sendCommand (const char *cmd)
 Send command to Nextion. More...
 
bool recvRetCommandFinished (uint32_t timeout)
 Command is executed successfully. More...
 
bool nexInit (void)
 Init Nextion's baudrate,page id. More...
 
void nexLoop (NexTouch **nex_listen_list)
 Call mainEventLoop,watting for Nextion's touch event. More...
 
+

Detailed Description

+

Hardware Srial API.

+
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
+
Date
2015/8/11
+ + +

Definition in file NexHardware.cpp.

+

Function Documentation

+ +
+
+ + + + + + + + +
bool nexInit (void )
+
+ +

Init Nextion's baudrate,page id.

+
Return values
+ + + +
true- success.
false- failed.
+
+
+
Examples:
CompButton.ino, CompCrop.ino, CompGauge.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompProgressBar.ino, CompSlider.ino, CompText.ino, and CompWaveform.ino.
+
+

Definition at line 266 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void nexLoop (NexTouch ** nex_listen_list)
+
+ +

Call mainEventLoop,watting for Nextion's touch event.

+
Parameters
+ + +
nex_listen_list- index to Nextion Components list.
+
+
+
Examples:
CompButton.ino, CompCrop.ino, CompGauge.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompProgressBar.ino, CompSlider.ino, and CompText.ino.
+
+

Definition at line 287 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
bool recvRetCommandFinished (uint32_t timeout)
+
+ +

Command is executed successfully.

+
Parameters
+ + +
timeout- set timeout time.
+
+
+
Return values
+ + + +
true- success.
false- failed.
+
+
+ +

Definition at line 187 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
bool recvRetNumber (uint32_t * number,
uint32_t timeout 
)
+
+ +

Receive uint32_t data.

+
Parameters
+ + + +
number- save uint32_t data.
timeout- set timeout time.
+
+
+
Return values
+ + + +
true- success.
false- failed.
+
+
+ +

Definition at line 45 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t recvRetString (char * buffer,
uint16_t len,
uint32_t timeout 
)
+
+ +

Receive string data.

+
Parameters
+ + + + +
buffer- save string data.
len- string buffer length.
timeout- set timeout time.
+
+
+
Returns
the length of string buffer.
+ +

Definition at line 97 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void sendCommand (const char * cmd)
+
+ +

Send command to Nextion.

+
Parameters
+ + +
cmd- the string of command.
+
+
+ +

Definition at line 164 of file NexHardware.cpp.

+ +
+
+
+ + + + diff --git a/doc/API/_nex_hardware_8cpp_source.html b/doc/API/_nex_hardware_8cpp_source.html new file mode 100644 index 00000000..d67f1c8 --- /dev/null +++ b/doc/API/_nex_hardware_8cpp_source.html @@ -0,0 +1,294 @@ + + + + + + +API: NexHardware.cpp Source File + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + + +
+
+
+
NexHardware.cpp
+
+
+Go to the documentation of this file.
1 
+
15 #include "NexHardware.h"
+
16 
+
17 #define NEX_RET_CMD_FINISHED (0x01)
+
18 #define NEX_RET_EVENT_LAUNCHED (0x88)
+
19 #define NEX_RET_EVENT_UPGRADED (0x89)
+
20 #define NEX_RET_EVENT_TOUCH_HEAD (0x65)
+
21 #define NEX_RET_EVENT_POSITION_HEAD (0x67)
+
22 #define NEX_RET_EVENT_SLEEP_POSITION_HEAD (0x68)
+
23 #define NEX_RET_CURRENT_PAGE_ID_HEAD (0x66)
+
24 #define NEX_RET_STRING_HEAD (0x70)
+
25 #define NEX_RET_NUMBER_HEAD (0x71)
+
26 #define NEX_RET_INVALID_CMD (0x00)
+
27 #define NEX_RET_INVALID_COMPONENT_ID (0x02)
+
28 #define NEX_RET_INVALID_PAGE_ID (0x03)
+
29 #define NEX_RET_INVALID_PICTURE_ID (0x04)
+
30 #define NEX_RET_INVALID_FONT_ID (0x05)
+
31 #define NEX_RET_INVALID_BAUD (0x11)
+
32 #define NEX_RET_INVALID_VARIABLE (0x1A)
+
33 #define NEX_RET_INVALID_OPERATION (0x1B)
+
34 
+
45 bool recvRetNumber(uint32_t *number, uint32_t timeout)
+
46 {
+
47  bool ret = false;
+
48  uint8_t temp[8] = {0};
+
49 
+
50  if (!number)
+
51  {
+
52  goto __return;
+
53  }
+
54 
+
55  nexSerial.setTimeout(timeout);
+
56  if (sizeof(temp) != nexSerial.readBytes((char *)temp, sizeof(temp)))
+
57  {
+
58  goto __return;
+
59  }
+
60 
+
61  if (temp[0] == NEX_RET_NUMBER_HEAD
+
62  && temp[5] == 0xFF
+
63  && temp[6] == 0xFF
+
64  && temp[7] == 0xFF
+
65  )
+
66  {
+
67  *number = (temp[4] << 24) | (temp[3] << 16) | (temp[2] << 8) | (temp[1]);
+
68  ret = true;
+
69  }
+
70 
+
71 __return:
+
72 
+
73  if (ret)
+
74  {
+
75  dbSerialPrint("recvRetNumber :");
+
76  dbSerialPrintln(*number);
+
77  }
+
78  else
+
79  {
+
80  dbSerialPrintln("recvRetNumber err");
+
81  }
+
82 
+
83  return ret;
+
84 }
+
85 
+
86 
+
97 uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout)
+
98 {
+
99  uint16_t ret = 0;
+
100  bool str_start_flag = false;
+
101  uint8_t cnt_0xff = 0;
+
102  String temp = String("");
+
103  uint8_t c = 0;
+
104  long start;
+
105 
+
106  if (!buffer || len == 0)
+
107  {
+
108  goto __return;
+
109  }
+
110 
+
111  start = millis();
+
112  while (millis() - start <= timeout)
+
113  {
+
114  while (nexSerial.available())
+
115  {
+
116  c = nexSerial.read();
+
117  if (str_start_flag)
+
118  {
+
119  if (0xFF == c)
+
120  {
+
121  cnt_0xff++;
+
122  if (cnt_0xff >= 3)
+
123  {
+
124  break;
+
125  }
+
126  }
+
127  else
+
128  {
+
129  temp += (char)c;
+
130  }
+
131  }
+
132  else if (NEX_RET_STRING_HEAD == c)
+
133  {
+
134  str_start_flag = true;
+
135  }
+
136  }
+
137 
+
138  if (cnt_0xff >= 3)
+
139  {
+
140  break;
+
141  }
+
142  }
+
143 
+
144  ret = temp.length();
+
145  ret = ret > len ? len : ret;
+
146  strncpy(buffer, temp.c_str(), ret);
+
147 
+
148 __return:
+
149 
+
150  dbSerialPrint("recvRetString[");
+
151  dbSerialPrint(temp.length());
+
152  dbSerialPrint(",");
+
153  dbSerialPrint(temp);
+
154  dbSerialPrintln("]");
+
155 
+
156  return ret;
+
157 }
+
158 
+
164 void sendCommand(const char* cmd)
+
165 {
+
166  while (nexSerial.available())
+
167  {
+
168  nexSerial.read();
+
169  }
+
170 
+
171  nexSerial.print(cmd);
+
172  nexSerial.write(0xFF);
+
173  nexSerial.write(0xFF);
+
174  nexSerial.write(0xFF);
+
175 }
+
176 
+
177 
+
187 bool recvRetCommandFinished(uint32_t timeout)
+
188 {
+
189  bool ret = false;
+
190  uint8_t temp[4] = {0};
+
191 
+
192  nexSerial.setTimeout(timeout);
+
193  if (sizeof(temp) != nexSerial.readBytes((char *)temp, sizeof(temp)))
+
194  {
+
195  ret = false;
+
196  }
+
197 
+
198  if (temp[0] == NEX_RET_CMD_FINISHED
+
199  && temp[1] == 0xFF
+
200  && temp[2] == 0xFF
+
201  && temp[3] == 0xFF
+
202  )
+
203  {
+
204  ret = true;
+
205  }
+
206 
+
207  if (ret)
+
208  {
+
209  dbSerialPrintln("recvRetCommandFinished ok");
+
210  }
+
211  else
+
212  {
+
213  dbSerialPrintln("recvRetCommandFinished err");
+
214  }
+
215 
+
216  return ret;
+
217 }
+
218 
+
219 
+
220 
+
227 static void mainEventLoop(NexTouch **list)
+
228 {
+
229  static uint8_t __buffer[16];
+
230 
+
231  uint16_t i;
+
232  uint8_t c;
+
233 
+
234  while (nexSerial.available() > 0)
+
235  {
+
236  delay(10);
+
237  c = nexSerial.read();
+
238 
+
239  if (NEX_RET_EVENT_TOUCH_HEAD == c)
+
240  {
+
241  if (nexSerial.available() >= 6)
+
242  {
+
243  __buffer[0] = c;
+
244  for (i = 1; i < 7; i++)
+
245  {
+
246  __buffer[i] = nexSerial.read();
+
247  }
+
248  __buffer[i] = 0x00;
+
249 
+
250  if (0xFF == __buffer[4] && 0xFF == __buffer[5] && 0xFF == __buffer[6])
+
251  {
+
252  NexTouch::iterate(list, (NexPid)__buffer[1], (NexCid)__buffer[2], (NexEventType)__buffer[3]);
+
253  }
+
254 
+
255  }
+
256  }
+
257  }
+
258 }
+
259 
+
266 bool nexInit(void)
+
267 {
+
268  bool ret1 = false;
+
269  bool ret2 = false;
+
270 
+
271  dbSerialBegin(9600);
+
272  nexSerial.begin(9600);
+
273  sendCommand("");
+
274  sendCommand("bkcmd=1");
+
275  ret1 = recvRetCommandFinished();
+
276  sendCommand("page 0");
+
277  ret2 = recvRetCommandFinished();
+
278  return ret1 && ret2;
+
279 }
+
280 
+
287 void nexLoop(NexTouch **nex_listen_list)
+
288 {
+
289  mainEventLoop(nex_listen_list);
+
290 }
+
291 
+
bool recvRetNumber(uint32_t *number, uint32_t timeout)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
+
uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout)
Receive string data.
Definition: NexHardware.cpp:97
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
void sendCommand(const char *cmd)
Send command to Nextion.
+
Hardware Srial API.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
+ + + + diff --git a/doc/API/_nex_hardware_8h.html b/doc/API/_nex_hardware_8h.html new file mode 100644 index 00000000..f5842ed --- /dev/null +++ b/doc/API/_nex_hardware_8h.html @@ -0,0 +1,302 @@ + + + + + + +API: NexHardware.h File Reference + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + + +
+
+ +
+
NexHardware.h File Reference
+
+
+ +

Hardware Srial API. +More...

+
#include <Arduino.h>
+#include "NexSerialConfig.h"
+#include "NexTouch.h"
+
+

Go to the source code of this file.

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

+Functions

bool recvRetNumber (uint32_t *number, uint32_t timeout=100)
 Receive uint32_t data. More...
 
uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=100)
 Receive string data. More...
 
void sendCommand (const char *cmd)
 Send command to Nextion. More...
 
bool recvRetCommandFinished (uint32_t timeout=100)
 Command is executed successfully. More...
 
bool nexInit (void)
 Init Nextion's baudrate,page id. More...
 
void nexLoop (NexTouch **nex_listen_list)
 Call mainEventLoop,watting for Nextion's touch event. More...
 
+

Detailed Description

+

Hardware Srial API.

+
Author
Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
+
Date
2015/8/11
+ + +

Definition in file NexHardware.h.

+

Function Documentation

+ +
+
+ + + + + + + + +
bool nexInit (void )
+
+ +

Init Nextion's baudrate,page id.

+
Return values
+ + + +
true- success.
false- failed.
+
+
+ +

Definition at line 266 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void nexLoop (NexTouch ** nex_listen_list)
+
+ +

Call mainEventLoop,watting for Nextion's touch event.

+
Parameters
+ + +
nex_listen_list- index to Nextion Components list.
+
+
+ +

Definition at line 287 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
bool recvRetCommandFinished (uint32_t timeout)
+
+ +

Command is executed successfully.

+
Parameters
+ + +
timeout- set timeout time.
+
+
+
Return values
+ + + +
true- success.
false- failed.
+
+
+ +

Definition at line 187 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + +
bool recvRetNumber (uint32_t * number,
uint32_t timeout 
)
+
+ +

Receive uint32_t data.

+
Parameters
+ + + +
number- save uint32_t data.
timeout- set timeout time.
+
+
+
Return values
+ + + +
true- success.
false- failed.
+
+
+ +

Definition at line 45 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + + + + + + + + + + + + + + + + + +
uint16_t recvRetString (char * buffer,
uint16_t len,
uint32_t timeout 
)
+
+ +

Receive string data.

+
Parameters
+ + + + +
buffer- save string data.
len- string buffer length.
timeout- set timeout time.
+
+
+
Returns
the length of string buffer.
+ +

Definition at line 97 of file NexHardware.cpp.

+ +
+
+ +
+
+ + + + + + + + +
void sendCommand (const char * cmd)
+
+ +

Send command to Nextion.

+
Parameters
+ + +
cmd- the string of command.
+
+
+ +

Definition at line 164 of file NexHardware.cpp.

+ +
+
+
+ + + + diff --git a/doc/API/_nex_hardware_8h_source.html b/doc/API/_nex_hardware_8h_source.html new file mode 100644 index 00000000..00c6893 --- /dev/null +++ b/doc/API/_nex_hardware_8h_source.html @@ -0,0 +1,85 @@ + + + + + + +API: NexHardware.h Source File + + + + + + +
+
+ + + + + + + +
+
API +
+
For Arduino developers
+
+
+ + + + +
+
+
+
NexHardware.h
+
+
+Go to the documentation of this file.
1 
+
15 #ifndef __NEXHARDWARE_H__
+
16 #define __NEXHARDWARE_H__
+
17 #include <Arduino.h>
+
18 #include "NexSerialConfig.h"
+
19 #include "NexTouch.h"
+
20 
+
21 bool recvRetNumber(uint32_t *number, uint32_t timeout = 100);
+
22 uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout = 100);
+
23 void sendCommand(const char* cmd);
+
24 bool recvRetCommandFinished(uint32_t timeout = 100);
+
25 
+
26 bool nexInit(void);
+
27 void nexLoop(NexTouch **nex_listen_list);
+
28 
+
29 #endif /* #ifndef __NEXHARDWARE_H__ */
+
bool nexInit(void)
Init Nextion's baudrate,page id.
+
Serial configure.
+
bool recvRetNumber(uint32_t *number, uint32_t timeout=100)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
void nexLoop(NexTouch **nex_listen_list)
Call mainEventLoop,watting for Nextion's touch event.
+
uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=100)
Receive string data.
Definition: NexHardware.cpp:97
+
API of Nextion.
+
bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
void sendCommand(const char *cmd)
Send command to Nextion.
+
+ + + + diff --git a/doc/API-html/_nex_hotspot_8cpp.html b/doc/API/_nex_hotspot_8cpp.html similarity index 96% rename from doc/API-html/_nex_hotspot_8cpp.html rename to doc/API/_nex_hotspot_8cpp.html index 58245ff..f11e185 100644 --- a/doc/API-html/_nex_hotspot_8cpp.html +++ b/doc/API/_nex_hotspot_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_hotspot_8cpp_source.html b/doc/API/_nex_hotspot_8cpp_source.html similarity index 97% rename from doc/API-html/_nex_hotspot_8cpp_source.html rename to doc/API/_nex_hotspot_8cpp_source.html index 3c20051..2696eb9 100644 --- a/doc/API-html/_nex_hotspot_8cpp_source.html +++ b/doc/API/_nex_hotspot_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -83,12 +83,12 @@
NexHotspot(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexHotspot.cpp:22
API of NexHotspot.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register hotspot pop callback function.
Definition: NexHotspot.cpp:55
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
void attachPush(NexTouchEventCb push, void *ptr=NULL)
Register hotspot push callback function.
Definition: NexHotspot.cpp:35
diff --git a/doc/API-html/_nex_hotspot_8h.html b/doc/API/_nex_hotspot_8h.html similarity index 95% rename from doc/API-html/_nex_hotspot_8h.html rename to doc/API/_nex_hotspot_8h.html index 6c34e8e..387a2bb 100644 --- a/doc/API-html/_nex_hotspot_8h.html +++ b/doc/API/_nex_hotspot_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexHotspot. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_hotspot_8h_source.html b/doc/API/_nex_hotspot_8h_source.html similarity index 85% rename from doc/API-html/_nex_hotspot_8h_source.html rename to doc/API/_nex_hotspot_8h_source.html index b51fe8c..c31e041 100644 --- a/doc/API-html/_nex_hotspot_8h_source.html +++ b/doc/API/_nex_hotspot_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,35 +54,37 @@
17 #define __NEXHOTSPOT_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexHotspot: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexHotspot(NexPid pid, NexCid cid, char *name,
-
29  NexTouchEventCb pop = NULL, void *pop_ptr = NULL,
-
30  NexTouchEventCb push = NULL, void *push_ptr = NULL);
-
31 
-
32  void attachPush(NexTouchEventCb push, void *ptr = NULL);
-
33  void detachPush(void);
-
34  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
35  void detachPop(void);
-
36 
-
37 };
-
38 
-
39 #endif /* #ifdef __cplusplus */
-
40 #endif /* #ifndef __NEXHOTSPOT_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexHotspot: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexHotspot(NexPid pid, NexCid cid, char *name,
+
30  NexTouchEventCb pop = NULL, void *pop_ptr = NULL,
+
31  NexTouchEventCb push = NULL, void *push_ptr = NULL);
+
32 
+
33  void attachPush(NexTouchEventCb push, void *ptr = NULL);
+
34  void detachPush(void);
+
35  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
+
36  void detachPop(void);
+
37 
+
38 };
+
39 
+
40 #endif /* #ifdef __cplusplus */
+
41 #endif /* #ifndef __NEXHOTSPOT_H__ */
void detachPop(void)
Unload hotsopt pop callback function.
Definition: NexHotspot.cpp:64
void detachPush(void)
Unload hotsopt push callback function.
Definition: NexHotspot.cpp:44
API of Nextion.
NexHotspot(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexHotspot.cpp:22
-
NexHotspot,subclass of NexTouch,provides simple methods to control hotspot component.
Definition: NexHotspot.h:25
+
Hardware Srial API.
+
NexHotspot,subclass of NexTouch,provides simple methods to control hotspot component.
Definition: NexHotspot.h:26
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register hotspot pop callback function.
Definition: NexHotspot.cpp:55
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
void attachPush(NexTouchEventCb push, void *ptr=NULL)
Register hotspot push callback function.
Definition: NexHotspot.cpp:35
diff --git a/doc/API-html/_nex_page_8cpp.html b/doc/API/_nex_page_8cpp.html similarity index 96% rename from doc/API-html/_nex_page_8cpp.html rename to doc/API/_nex_page_8cpp.html index 93795bd..3b0001e 100644 --- a/doc/API-html/_nex_page_8cpp.html +++ b/doc/API/_nex_page_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_page_8cpp_source.html b/doc/API/_nex_page_8cpp_source.html similarity index 86% rename from doc/API-html/_nex_page_8cpp_source.html rename to doc/API/_nex_page_8cpp_source.html index 347454b..3e84334 100644 --- a/doc/API-html/_nex_page_8cpp_source.html +++ b/doc/API/_nex_page_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -69,8 +69,8 @@
42 
43  String cmd = String("page ");
44  cmd += name;
-
45  sendCommand(cmd.c_str());
-
46  return recvRetCommandFinished();
+
45  sendCommand(cmd.c_str());
+
46  return recvRetCommandFinished();
47 }
48 
55 void NexPage::attachPop(NexTouchEventCb pop, void *ptr)
@@ -83,18 +83,18 @@
66  NexTouch::detachPop();
67 }
void detachPop(void)
Unload page pop callback function.
Definition: NexPage.cpp:64
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
bool show(void)
Change page.
Definition: NexPage.cpp:33
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
API of NexPage.
NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexPage.cpp:22
+
void sendCommand(const char *cmd)
Send command to Nextion.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register page pop callback function.
Definition: NexPage.cpp:55
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_page_8h.html b/doc/API/_nex_page_8h.html similarity index 95% rename from doc/API-html/_nex_page_8h.html rename to doc/API/_nex_page_8h.html index a8d6903..fb88f98 100644 --- a/doc/API-html/_nex_page_8h.html +++ b/doc/API/_nex_page_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexPage. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_page_8h_source.html b/doc/API/_nex_page_8h_source.html similarity index 84% rename from doc/API-html/_nex_page_8h_source.html rename to doc/API/_nex_page_8h_source.html index f0672ab..a1ad91e 100644 --- a/doc/API-html/_nex_page_8h_source.html +++ b/doc/API/_nex_page_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,31 +54,33 @@
17 #define __NEXPAGE_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexPage: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
-
29  bool show(void);
-
30 
-
31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
32  void detachPop(void);
-
33 
-
34 };
-
35 
-
36 #endif /* #ifdef __cplusplus */
-
37 #endif /* #ifndef __NEXPAGE_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexPage: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
+
30  bool show(void);
+
31 
+
32  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
+
33  void detachPop(void);
+
34 
+
35 };
+
36 
+
37 #endif /* #ifdef __cplusplus */
+
38 #endif /* #ifndef __NEXPAGE_H__ */
void detachPop(void)
Unload page pop callback function.
Definition: NexPage.cpp:64
bool show(void)
Change page.
Definition: NexPage.cpp:33
-
NexPage,subclass of NexTouch,provides simple methods to control page component.
Definition: NexPage.h:25
+
NexPage,subclass of NexTouch,provides simple methods to control page component.
Definition: NexPage.h:26
API of Nextion.
NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexPage.cpp:22
+
Hardware Srial API.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register page pop callback function.
Definition: NexPage.cpp:55
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_picture_8cpp.html b/doc/API/_nex_picture_8cpp.html similarity index 96% rename from doc/API-html/_nex_picture_8cpp.html rename to doc/API/_nex_picture_8cpp.html index f04aaed..a4d56f4 100644 --- a/doc/API-html/_nex_picture_8cpp.html +++ b/doc/API/_nex_picture_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_picture_8cpp_source.html b/doc/API/_nex_picture_8cpp_source.html similarity index 83% rename from doc/API-html/_nex_picture_8cpp_source.html rename to doc/API/_nex_picture_8cpp_source.html index 4e8b37f..be7d846 100644 --- a/doc/API-html/_nex_picture_8cpp_source.html +++ b/doc/API/_nex_picture_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -62,8 +62,8 @@
37  String cmd = String("get ");
38  cmd += getObjName();
39  cmd += ".pic";
-
40  sendCommand(cmd.c_str());
-
41  return recvRetNumber(number);
+
40  sendCommand(cmd.c_str());
+
41  return recvRetNumber(number);
42 }
43 
52 bool NexPicture::setPic(uint32_t number)
@@ -76,8 +76,8 @@
59  cmd += ".pic=";
60  cmd += buf;
61 
-
62  sendCommand(cmd.c_str());
-
63  return recvRetCommandFinished();
+
62  sendCommand(cmd.c_str());
+
63  return recvRetCommandFinished();
64 }
65 
72 void NexPicture::attachPop(NexTouchEventCb pop, void *ptr)
@@ -90,21 +90,21 @@
83  NexTouch::detachPop();
84 }
85 
+
bool recvRetNumber(uint32_t *number, uint32_t timeout)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
void detachPop(void)
Unload picture pop callback function.
Definition: NexPicture.cpp:81
bool setPic(uint32_t number)
Set picture's number.
Definition: NexPicture.cpp:52
NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexPicture.cpp:22
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
+
void sendCommand(const char *cmd)
Send command to Nextion.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register picture pop callback function.
Definition: NexPicture.cpp:72
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
bool getPic(uint32_t *number)
Get picture's number.
Definition: NexPicture.cpp:35
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
API of NexPicture.
diff --git a/doc/API-html/_nex_picture_8h.html b/doc/API/_nex_picture_8h.html similarity index 95% rename from doc/API-html/_nex_picture_8h.html rename to doc/API/_nex_picture_8h.html index 71db89e..93c9c8d 100644 --- a/doc/API-html/_nex_picture_8h.html +++ b/doc/API/_nex_picture_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexPicture. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_picture_8h_source.html b/doc/API/_nex_picture_8h_source.html similarity index 85% rename from doc/API-html/_nex_picture_8h_source.html rename to doc/API/_nex_picture_8h_source.html index 81e485f..63f8c5c 100644 --- a/doc/API-html/_nex_picture_8h_source.html +++ b/doc/API/_nex_picture_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,33 +54,35 @@
17 #define __NEXPICTURE_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexPicture: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
-
29 
-
30  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
-
31  void detachPop(void);
-
32 
-
33  bool getPic(uint32_t *number);
-
34  bool setPic(uint32_t number);
-
35 };
-
36 
-
37 #endif /* #ifdef __cplusplus */
-
38 #endif /* #ifndef __NEXPICTURE_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexPicture: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
+
30 
+
31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
+
32  void detachPop(void);
+
33 
+
34  bool getPic(uint32_t *number);
+
35  bool setPic(uint32_t number);
+
36 };
+
37 
+
38 #endif /* #ifdef __cplusplus */
+
39 #endif /* #ifndef __NEXPICTURE_H__ */
void detachPop(void)
Unload picture pop callback function.
Definition: NexPicture.cpp:81
bool setPic(uint32_t number)
Set picture's number.
Definition: NexPicture.cpp:52
NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
Constructor,inherited NexTouch's constructor function.
Definition: NexPicture.cpp:22
-
NexPicture,subclass of NexTouch,provides simple methods to control picture component.
Definition: NexPicture.h:25
+
NexPicture,subclass of NexTouch,provides simple methods to control picture component.
Definition: NexPicture.h:26
API of Nextion.
void attachPop(NexTouchEventCb pop, void *ptr=NULL)
Register picture pop callback function.
Definition: NexPicture.cpp:72
+
Hardware Srial API.
bool getPic(uint32_t *number)
Get picture's number.
Definition: NexPicture.cpp:35
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_progress_bar_8cpp.html b/doc/API/_nex_progress_bar_8cpp.html similarity index 96% rename from doc/API-html/_nex_progress_bar_8cpp.html rename to doc/API/_nex_progress_bar_8cpp.html index 71c11ac..d0f5c3a 100644 --- a/doc/API-html/_nex_progress_bar_8cpp.html +++ b/doc/API/_nex_progress_bar_8cpp.html @@ -16,7 +16,7 @@ - +
API
@@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_progress_bar_8cpp_source.html b/doc/API/_nex_progress_bar_8cpp_source.html similarity index 80% rename from doc/API-html/_nex_progress_bar_8cpp_source.html rename to doc/API/_nex_progress_bar_8cpp_source.html index 53ac057..913920f 100644 --- a/doc/API-html/_nex_progress_bar_8cpp_source.html +++ b/doc/API/_nex_progress_bar_8cpp_source.html @@ -16,7 +16,7 @@ - +
API
@@ -62,8 +62,8 @@
37  String cmd = String("get ");
38  cmd += getObjName();
39  cmd += ".val";
-
40  sendCommand(cmd.c_str());
-
41  return recvRetNumber(number);
+
40  sendCommand(cmd.c_str());
+
41  return recvRetNumber(number);
42 }
43 
52 bool NexProgressBar::setValue(uint32_t number)
@@ -76,23 +76,23 @@
59  cmd += ".val=";
60  cmd += buf;
61 
-
62  sendCommand(cmd.c_str());
-
63  return recvRetCommandFinished();
+
62  sendCommand(cmd.c_str());
+
63  return recvRetCommandFinished();
64 }
65 
+
bool recvRetNumber(uint32_t *number, uint32_t timeout)
Receive uint32_t data.
Definition: NexHardware.cpp:45
+
bool recvRetCommandFinished(uint32_t timeout)
Command is executed successfully.
bool setValue(uint32_t number)
Set the value of progress bar.
-
static void sendCommand(const char *cmd)
Send command to Nextion.
Definition: NexTouch.cpp:256
-
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:107
+
const char * getObjName(void)
Get component name.
Definition: NexTouch.cpp:69
+
void sendCommand(const char *cmd)
Send command to Nextion.
bool getValue(uint32_t *number)
Get the value of progress bar.
-
static bool recvRetNumber(uint32_t *number, uint32_t timeout=500)
Receive uint32_t data.
Definition: NexTouch.cpp:351
NexProgressBar(NexPid pid, NexCid cid, char *name)
Constructor,inherited NexTouch's constructor function.
-
static bool recvRetCommandFinished(uint32_t timeout=100)
Command is executed successfully.
Definition: NexTouch.cpp:219
API of NexProgressBar.
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
diff --git a/doc/API-html/_nex_progress_bar_8h.html b/doc/API/_nex_progress_bar_8h.html similarity index 95% rename from doc/API-html/_nex_progress_bar_8h.html rename to doc/API/_nex_progress_bar_8h.html index 680112a..9c40d5b 100644 --- a/doc/API-html/_nex_progress_bar_8h.html +++ b/doc/API/_nex_progress_bar_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -55,6 +55,7 @@

API of NexProgressBar. More...

#include "NexTouch.h"
+#include "NexHardware.h"

Go to the source code of this file.

@@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_progress_bar_8h_source.html b/doc/API/_nex_progress_bar_8h_source.html similarity index 84% rename from doc/API-html/_nex_progress_bar_8h_source.html rename to doc/API/_nex_progress_bar_8h_source.html index f5f62a6..b3d021c 100644 --- a/doc/API-html/_nex_progress_bar_8h_source.html +++ b/doc/API/_nex_progress_bar_8h_source.html @@ -16,7 +16,7 @@
- +
API
@@ -54,28 +54,30 @@
17 #define __NEXPROGRESSBAR_H__
18 #ifdef __cplusplus
19 #include "NexTouch.h"
-
20 
-
25 class NexProgressBar: public NexTouch
-
26 {
-
27 public: /* methods */
-
28  NexProgressBar(NexPid pid, NexCid cid, char *name);
-
29 
-
30  bool getValue(uint32_t *number);
-
31  bool setValue(uint32_t number);
-
32 };
-
33 
-
34 #endif /* #ifdef __cplusplus */
-
35 #endif /* #ifndef __NEXPROGRESSBAR_H__ */
+
20 #include "NexHardware.h"
+
21 
+
26 class NexProgressBar: public NexTouch
+
27 {
+
28 public: /* methods */
+
29  NexProgressBar(NexPid pid, NexCid cid, char *name);
+
30 
+
31  bool getValue(uint32_t *number);
+
32  bool setValue(uint32_t number);
+
33 };
+
34 
+
35 #endif /* #ifdef __cplusplus */
+
36 #endif /* #ifndef __NEXPROGRESSBAR_H__ */
bool setValue(uint32_t number)
Set the value of progress bar.
API of Nextion.
+
Hardware Srial API.
bool getValue(uint32_t *number)
Get the value of progress bar.
NexProgressBar(NexPid pid, NexCid cid, char *name)
Constructor,inherited NexTouch's constructor function.
-
Root Class of Nextion Components.
Definition: NexTouch.h:57
-
NexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component...
+
Root Class of Nextion Components.
Definition: NexTouch.h:37
+
NexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component...
diff --git a/doc/API-html/_nex_serial_config_8h.html b/doc/API/_nex_serial_config_8h.html similarity index 96% rename from doc/API-html/_nex_serial_config_8h.html rename to doc/API/_nex_serial_config_8h.html index 79e5fe9..6c0b160 100644 --- a/doc/API-html/_nex_serial_config_8h.html +++ b/doc/API/_nex_serial_config_8h.html @@ -16,7 +16,7 @@ - +
API
@@ -65,7 +65,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_serial_config_8h_source.html b/doc/API/_nex_serial_config_8h_source.html similarity index 97% rename from doc/API-html/_nex_serial_config_8h_source.html rename to doc/API/_nex_serial_config_8h_source.html index 2e18b58..d297406 100644 --- a/doc/API-html/_nex_serial_config_8h_source.html +++ b/doc/API/_nex_serial_config_8h_source.html @@ -16,7 +16,7 @@ - +
API
@@ -76,7 +76,7 @@ diff --git a/doc/API-html/_nex_touch_8cpp-example.html b/doc/API/_nex_slider_8cpp.html similarity index 61% rename from doc/API-html/_nex_touch_8cpp-example.html rename to doc/API/_nex_slider_8cpp.html index 271da47..99dcae7 100644 --- a/doc/API-html/_nex_touch_8cpp-example.html +++ b/doc/API/_nex_slider_8cpp.html @@ -4,7 +4,7 @@ -API: NexTouch.cpp +API: NexSlider.cpp File Reference @@ -16,6 +16,7 @@ +
API
@@ -32,25 +33,40 @@
  • Main Page
  • Related Pages
  • Classes
  • -
  • Files
  • +
  • Files
  • Examples
  • +
    -
    NexTouch.cpp
    +
    NexSlider.cpp File Reference
    -
    Show how to use API of class NexPicture.
    + +

    API of NexSlider. +More...

    +
    #include "NexSlider.h"
    +
    +

    Go to the source code of this file.

    +

    Detailed Description

    +

    API of NexSlider.

    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    -
    Date
    2015/7/10
    +
    Date
    2015/8/11
    -
    +This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. + +

    Definition in file NexSlider.cpp.

    +
    diff --git a/doc/API/_nex_slider_8cpp_source.html b/doc/API/_nex_slider_8cpp_source.html new file mode 100644 index 00000000..cc20d0d --- /dev/null +++ b/doc/API/_nex_slider_8cpp_source.html @@ -0,0 +1,113 @@ + + + + + + +API: NexSlider.cpp Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexSlider.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    +
    16 #include "NexSlider.h"
    +
    17 
    +
    22 NexSlider::NexSlider(NexPid pid, NexCid cid, char *name,
    +
    23  NexTouchEventCb pop, void *pop_ptr)
    +
    24  :NexTouch(pid, cid, name, pop, pop_ptr)
    +
    25 {
    +
    26 }
    +
    27 
    +
    36 bool NexSlider::getValue(uint32_t *number)
    +
    37 {
    +
    38  String cmd = String("get ");
    +
    39  cmd += getObjName();
    +
    40  cmd += ".val";
    +
    41  sendCommand(cmd.c_str());
    +
    42  return recvRetNumber(number);
    +
    43 }
    +
    44 
    +
    53 bool NexSlider::setValue(uint32_t number)
    +
    54 {
    +
    55  char buf[10] = {0};
    +
    56  String cmd;
    +
    57 
    +
    58  utoa(number, buf, 10);
    +
    59  cmd += getObjName();
    +
    60  cmd += ".val=";
    +
    61  cmd += buf;
    +
    62 
    +
    63  sendCommand(cmd.c_str());
    +
    64  return recvRetCommandFinished();
    +
    65 }
    +
    66 
    +
    73 void NexSlider::attachPop(NexTouchEventCb pop, void *ptr)
    +
    74 {
    +
    75  NexTouch::attachPop(pop, ptr);
    +
    76 }
    +
    77 
    + +
    83 {
    +
    84  NexTouch::detachPop();
    +
    85 }
    +
    86 
    +
    bool recvRetNumber(uint32_t *number, uint32_t timeout)
    Receive uint32_t data.
    Definition: NexHardware.cpp:45
    +
    bool recvRetCommandFinished(uint32_t timeout)
    Command is executed successfully.
    +
    bool setValue(uint32_t number)
    Set the value of slider.
    Definition: NexSlider.cpp:53
    +
    bool getValue(uint32_t *number)
    Get the value of slider.
    Definition: NexSlider.cpp:36
    +
    API of NexSlider.
    +
    const char * getObjName(void)
    Get component name.
    Definition: NexTouch.cpp:69
    +
    void detachPop(void)
    Unload slider pop callback function.
    Definition: NexSlider.cpp:82
    +
    void sendCommand(const char *cmd)
    Send command to Nextion.
    +
    NexSlider(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexSlider.cpp:22
    +
    void attachPop(NexTouchEventCb pop, void *ptr=NULL)
    Register slider pop callback function.
    Definition: NexSlider.cpp:73
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    + + + + diff --git a/doc/API-html/_nex_pointer_8h.html b/doc/API/_nex_slider_8h.html similarity index 72% rename from doc/API-html/_nex_pointer_8h.html rename to doc/API/_nex_slider_8h.html index a52869b..a3365e4 100644 --- a/doc/API-html/_nex_pointer_8h.html +++ b/doc/API/_nex_slider_8h.html @@ -4,7 +4,7 @@ -API: NexPointer.h File Reference +API: NexSlider.h File Reference @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_text.png b/doc/API/class_nex_text.png similarity index 100% rename from doc/API-html/class_nex_text.png rename to doc/API/class_nex_text.png diff --git a/doc/API/class_nex_touch-members.html b/doc/API/class_nex_touch-members.html new file mode 100644 index 00000000..1791002 --- /dev/null +++ b/doc/API/class_nex_touch-members.html @@ -0,0 +1,69 @@ + + + + + + +API: Member List + + + + + + +
    +
    +
    API
    @@ -48,34 +48,35 @@
    -
    NexPointer.h File Reference
    +
    NexSlider.h File Reference
    -

    API of NexPointer. +

    API of NexSlider. More...

    #include "NexTouch.h"
    +#include "NexHardware.h"
    -

    Go to the source code of this file.

    +

    Go to the source code of this file.

    - - + +

    Classes

    class  NexPointer
     NexPointer,subclass of NexTouch,provides simple methods to control pointer component. More...
    class  NexSlider
     NexSlider,subclass of NexTouch,provides simple methods to control slider component. More...
     

    Detailed Description

    -

    API of NexPointer.

    +

    API of NexSlider.

    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    Date
    2015/7/10
    -

    Definition in file NexPointer.h.

    +

    Definition in file NexSlider.h.

    diff --git a/doc/API/_nex_slider_8h_source.html b/doc/API/_nex_slider_8h_source.html new file mode 100644 index 00000000..f28051d --- /dev/null +++ b/doc/API/_nex_slider_8h_source.html @@ -0,0 +1,90 @@ + + + + + + +API: NexSlider.h Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexSlider.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    16 #ifndef __NEXSLIDER_H__
    +
    17 #define __NEXSLIDER_H__
    +
    18 #ifdef __cplusplus
    +
    19 #include "NexTouch.h"
    +
    20 #include "NexHardware.h"
    +
    21 
    +
    26 class NexSlider: public NexTouch
    +
    27 {
    +
    28 public: /* methods */
    +
    29  NexSlider(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
    +
    30 
    +
    31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
    +
    32  void detachPop(void);
    +
    33 
    +
    34  bool getValue(uint32_t *number);
    +
    35  bool setValue(uint32_t number);
    +
    36 };
    +
    37 
    +
    38 #endif /* #ifdef __cplusplus */
    +
    39 #endif /* #ifndef __NEXSLIDER_H__ */
    +
    NexSlider,subclass of NexTouch,provides simple methods to control slider component.
    Definition: NexSlider.h:26
    +
    bool setValue(uint32_t number)
    Set the value of slider.
    Definition: NexSlider.cpp:53
    +
    bool getValue(uint32_t *number)
    Get the value of slider.
    Definition: NexSlider.cpp:36
    +
    void detachPop(void)
    Unload slider pop callback function.
    Definition: NexSlider.cpp:82
    +
    API of Nextion.
    +
    NexSlider(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexSlider.cpp:22
    +
    Hardware Srial API.
    +
    void attachPop(NexTouchEventCb pop, void *ptr=NULL)
    Register slider pop callback function.
    Definition: NexSlider.cpp:73
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    + + + + diff --git a/doc/API-html/_nex_text_8cpp.html b/doc/API/_nex_text_8cpp.html similarity index 96% rename from doc/API-html/_nex_text_8cpp.html rename to doc/API/_nex_text_8cpp.html index d34a7fe..e85f84e 100644 --- a/doc/API-html/_nex_text_8cpp.html +++ b/doc/API/_nex_text_8cpp.html @@ -16,7 +16,7 @@ - +
    API
    @@ -66,7 +66,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_text_8cpp_source.html b/doc/API/_nex_text_8cpp_source.html similarity index 83% rename from doc/API-html/_nex_text_8cpp_source.html rename to doc/API/_nex_text_8cpp_source.html index 5daef7f..665d033 100644 --- a/doc/API-html/_nex_text_8cpp_source.html +++ b/doc/API/_nex_text_8cpp_source.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_progress_bar.png b/doc/API/class_nex_progress_bar.png similarity index 100% rename from doc/API-html/class_nex_progress_bar.png rename to doc/API/class_nex_progress_bar.png diff --git a/doc/API-html/class_nex_slice-members.html b/doc/API/class_nex_slider-members.html similarity index 57% rename from doc/API-html/class_nex_slice-members.html rename to doc/API/class_nex_slider-members.html index a5614b3..53c2785 100644 --- a/doc/API-html/class_nex_slice-members.html +++ b/doc/API/class_nex_slider-members.html @@ -16,7 +16,7 @@
    API
    @@ -63,8 +63,8 @@
    38  cmd += "get ";
    39  cmd += getObjName();
    40  cmd += ".txt";
    -
    41  sendCommand(cmd.c_str());
    -
    42  return recvRetString(buffer,len);
    +
    41  sendCommand(cmd.c_str());
    +
    42  return recvRetString(buffer,len);
    43 }
    44 
    53 bool NexText::setText(const char *buffer)
    @@ -74,8 +74,8 @@
    57  cmd += ".txt=\"";
    58  cmd += buffer;
    59  cmd += "\"";
    -
    60  sendCommand(cmd.c_str());
    -
    61  return recvRetCommandFinished();
    +
    60  sendCommand(cmd.c_str());
    +
    61  return recvRetCommandFinished();
    62 }
    63 
    70 void NexText::attachPop(NexTouchEventCb pop, void *ptr)
    @@ -88,21 +88,21 @@
    81  NexTouch::detachPop();
    82 }
    83 
    +
    bool recvRetCommandFinished(uint32_t timeout)
    Command is executed successfully.
    bool setText(const char *buffer)
    Set the value of text.
    Definition: NexText.cpp:53
    void detachPop(void)
    Unload text pop callback function.
    Definition: NexText.cpp:79
    API of NexText.
    -
    static void sendCommand(const char *cmd)
    Send command to Nextion.
    Definition: NexTouch.cpp:256
    -
    const char * getObjName(void)
    Get component name.
    Definition: NexTouch.cpp:107
    +
    uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout)
    Receive string data.
    Definition: NexHardware.cpp:97
    +
    const char * getObjName(void)
    Get component name.
    Definition: NexTouch.cpp:69
    uint16_t getText(char *buffer, uint16_t len)
    Get the value of text.
    Definition: NexText.cpp:35
    NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexText.cpp:22
    -
    static uint16_t recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)
    Receive string data.
    Definition: NexTouch.cpp:279
    +
    void sendCommand(const char *cmd)
    Send command to Nextion.
    void attachPop(NexTouchEventCb pop, void *ptr=NULL)
    Register text pop callback function.
    Definition: NexText.cpp:70
    -
    static bool recvRetCommandFinished(uint32_t timeout=100)
    Command is executed successfully.
    Definition: NexTouch.cpp:219
    -
    Root Class of Nextion Components.
    Definition: NexTouch.h:57
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    diff --git a/doc/API-html/_nex_text_8h.html b/doc/API/_nex_text_8h.html similarity index 95% rename from doc/API-html/_nex_text_8h.html rename to doc/API/_nex_text_8h.html index 7a0fc9f..59320ca 100644 --- a/doc/API-html/_nex_text_8h.html +++ b/doc/API/_nex_text_8h.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_picture.png b/doc/API/class_nex_picture.png similarity index 100% rename from doc/API-html/class_nex_picture.png rename to doc/API/class_nex_picture.png diff --git a/doc/API-html/class_nex_progress_bar-members.html b/doc/API/class_nex_progress_bar-members.html similarity index 61% rename from doc/API-html/class_nex_progress_bar-members.html rename to doc/API/class_nex_progress_bar-members.html index 3fbbc9b..cfaab8f 100644 --- a/doc/API-html/class_nex_progress_bar-members.html +++ b/doc/API/class_nex_progress_bar-members.html @@ -16,7 +16,7 @@
    API
    @@ -55,6 +55,7 @@

    API of NexText. More...

    #include "NexTouch.h"
    +#include "NexHardware.h"

    Go to the source code of this file.

    @@ -75,7 +76,7 @@ This program is free software; you can redistribute it and/or modify it under th diff --git a/doc/API-html/_nex_text_8h_source.html b/doc/API/_nex_text_8h_source.html similarity index 85% rename from doc/API-html/_nex_text_8h_source.html rename to doc/API/_nex_text_8h_source.html index d099c96..f74fa63 100644 --- a/doc/API-html/_nex_text_8h_source.html +++ b/doc/API/_nex_text_8h_source.html @@ -16,7 +16,7 @@
    - + diff --git a/doc/API-html/class_nex_page.png b/doc/API/class_nex_page.png similarity index 100% rename from doc/API-html/class_nex_page.png rename to doc/API/class_nex_page.png diff --git a/doc/API-html/class_nex_picture-members.html b/doc/API/class_nex_picture-members.html similarity index 63% rename from doc/API-html/class_nex_picture-members.html rename to doc/API/class_nex_picture-members.html index 3dab74d..ae3eab6 100644 --- a/doc/API-html/class_nex_picture-members.html +++ b/doc/API/class_nex_picture-members.html @@ -16,7 +16,7 @@
    API
    @@ -54,33 +54,35 @@
    17 #define __NEXTEXT_H__
    18 #ifdef __cplusplus
    19 #include "NexTouch.h"
    -
    20 
    -
    25 class NexText: public NexTouch
    -
    26 {
    -
    27 public: /* methods */
    -
    28  NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
    -
    29 
    -
    30  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
    -
    31  void detachPop(void);
    -
    32 
    -
    33  uint16_t getText(char *buffer, uint16_t len);
    -
    34  bool setText(const char *buffer);
    -
    35 };
    -
    36 
    -
    37 #endif /* #ifdef __cplusplus */
    -
    38 #endif /* #ifndef __NEXTEXT_H__ */
    +
    20 #include "NexHardware.h"
    +
    21 
    +
    26 class NexText: public NexTouch
    +
    27 {
    +
    28 public: /* methods */
    +
    29  NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop = NULL, void *pop_ptr = NULL);
    +
    30 
    +
    31  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
    +
    32  void detachPop(void);
    +
    33 
    +
    34  uint16_t getText(char *buffer, uint16_t len);
    +
    35  bool setText(const char *buffer);
    +
    36 };
    +
    37 
    +
    38 #endif /* #ifdef __cplusplus */
    +
    39 #endif /* #ifndef __NEXTEXT_H__ */
    bool setText(const char *buffer)
    Set the value of text.
    Definition: NexText.cpp:53
    void detachPop(void)
    Unload text pop callback function.
    Definition: NexText.cpp:79
    uint16_t getText(char *buffer, uint16_t len)
    Get the value of text.
    Definition: NexText.cpp:35
    API of Nextion.
    NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexText.cpp:22
    +
    Hardware Srial API.
    void attachPop(NexTouchEventCb pop, void *ptr=NULL)
    Register text pop callback function.
    Definition: NexText.cpp:70
    -
    Root Class of Nextion Components.
    Definition: NexTouch.h:57
    -
    NexText,subclass of NexTouch,provides simple methods to control text component.
    Definition: NexText.h:25
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    NexText,subclass of NexTouch,provides simple methods to control text component.
    Definition: NexText.h:26
    diff --git a/doc/API-html/_nex_pointer_8cpp.html b/doc/API/_nex_touch_8cpp.html similarity index 84% rename from doc/API-html/_nex_pointer_8cpp.html rename to doc/API/_nex_touch_8cpp.html index 8eef084..c58c2d1 100644 --- a/doc/API-html/_nex_pointer_8cpp.html +++ b/doc/API/_nex_touch_8cpp.html @@ -4,7 +4,7 @@ -API: NexPointer.cpp File Reference +API: NexTouch.cpp File Reference @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_crop.png b/doc/API/class_nex_crop.png similarity index 100% rename from doc/API-html/class_nex_crop.png rename to doc/API/class_nex_crop.png diff --git a/doc/API/class_nex_gauge-members.html b/doc/API/class_nex_gauge-members.html new file mode 100644 index 00000000..7c6013f --- /dev/null +++ b/doc/API/class_nex_gauge-members.html @@ -0,0 +1,72 @@ + + + + + + +API: Member List + + + + + + +
    +
    +
    API
    @@ -46,27 +46,27 @@
    -
    NexPointer.cpp File Reference
    +
    NexTouch.cpp File Reference
    -

    API of Nexpointer. +

    API of Nextion. More...

    -
    #include "NexPointer.h"
    +
    #include "NexTouch.h"
    -

    Go to the source code of this file.

    +

    Go to the source code of this file.

    Detailed Description

    -

    API of Nexpointer.

    +

    API of Nextion.

    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    Date
    2015/7/10
    -

    Definition in file NexPointer.cpp.

    +

    Definition in file NexTouch.cpp.

    diff --git a/doc/API/_nex_touch_8cpp_source.html b/doc/API/_nex_touch_8cpp_source.html new file mode 100644 index 00000000..295c5e7 --- /dev/null +++ b/doc/API/_nex_touch_8cpp_source.html @@ -0,0 +1,191 @@ + + + + + + +API: NexTouch.cpp Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexTouch.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    +
    16 #include "NexTouch.h"
    +
    17 
    +
    18 
    +
    31 NexTouch::NexTouch(NexPid pid, NexCid cid, char *name,
    +
    32  NexTouchEventCb pop, void *pop_ptr,
    +
    33  NexTouchEventCb push, void *push_ptr)
    +
    34 {
    +
    35  this->pid = pid;
    +
    36  this->cid = cid;
    +
    37  this->name = name;
    +
    38  this->cbPush = push;
    +
    39  this->cbPop = pop;
    +
    40  this->__cbpop_ptr = pop_ptr;
    +
    41  this->__cbpush_ptr = push_ptr;
    +
    42 }
    +
    43 
    +
    49 NexPid NexTouch::getPid(void)
    +
    50 {
    +
    51  return pid;
    +
    52 }
    +
    53 
    +
    59 NexCid NexTouch::getCid(void)
    +
    60 {
    +
    61  return cid;
    +
    62 }
    +
    63 
    +
    69 const char* NexTouch::getObjName(void)
    +
    70 {
    +
    71  return name;
    +
    72 }
    +
    73 
    +
    79 void NexTouch::print(void)
    +
    80 {
    +
    81  dbSerialPrint("[");
    +
    82  dbSerialPrint((uint32_t)this);
    +
    83  dbSerialPrint(":");
    +
    84  dbSerialPrint(pid);
    +
    85  dbSerialPrint(",");
    +
    86  dbSerialPrint(cid);
    +
    87  dbSerialPrint(",");
    +
    88  if (name)
    +
    89  {
    +
    90  dbSerialPrint(name);
    +
    91  }
    +
    92  else
    +
    93  {
    +
    94  dbSerialPrint("(null)");
    +
    95  }
    +
    96  dbSerialPrint(",");
    +
    97  dbSerialPrint((uint32_t)cbPush);
    +
    98  dbSerialPrint(",");
    +
    99  dbSerialPrint((uint32_t)cbPop);
    +
    100  dbSerialPrintln("]");
    +
    101 }
    +
    102 
    +
    103 void NexTouch::attachPush(NexTouchEventCb push, void *ptr)
    +
    104 {
    +
    105  this->cbPush = push;
    +
    106  this->__cbpush_ptr = ptr;
    +
    107 }
    +
    108 
    +
    109 void NexTouch::detachPush(void)
    +
    110 {
    +
    111  this->cbPush = NULL;
    +
    112  this->__cbpush_ptr = NULL;
    +
    113 }
    +
    114 
    +
    115 void NexTouch::attachPop(NexTouchEventCb pop, void *ptr)
    +
    116 {
    +
    117  this->cbPop = pop;
    +
    118  this->__cbpop_ptr = ptr;
    +
    119 }
    +
    120 
    +
    121 void NexTouch::detachPop(void)
    +
    122 {
    +
    123  this->cbPop = NULL;
    +
    124  this->__cbpop_ptr = NULL;
    +
    125 }
    +
    126 
    +
    127 void NexTouch::push(void)
    +
    128 {
    +
    129  if (cbPush)
    +
    130  {
    +
    131  cbPush(__cbpush_ptr);
    +
    132  }
    +
    133 }
    +
    134 
    +
    135 void NexTouch::pop(void)
    +
    136 {
    +
    137  if (cbPop)
    +
    138  {
    +
    139  cbPop(__cbpop_ptr);
    +
    140  }
    +
    141 }
    +
    142 
    +
    143 void NexTouch::iterate(NexTouch **list, NexPid pid, NexCid cid, NexEventType event)
    +
    144 {
    +
    145  NexTouch *e = NULL;
    +
    146  uint16_t i = 0;
    +
    147 
    +
    148  if (NULL == list)
    +
    149  {
    +
    150  return;
    +
    151  }
    +
    152 
    +
    153  for(i = 0; (e = list[i]) != NULL; i++)
    +
    154  {
    +
    155  if (e->getPid() == pid && e->getCid() == cid)
    +
    156  {
    +
    157  e->print();
    +
    158  if (NEX_EVENT_PUSH == event)
    +
    159  {
    +
    160  e->push();
    +
    161  }
    +
    162  else if (NEX_EVENT_POP == event)
    +
    163  {
    +
    164  e->pop();
    +
    165  }
    +
    166 
    +
    167  break;
    +
    168  }
    +
    169  }
    +
    170 }
    +
    171 
    +
    NexPid getPid(void)
    Get page id.
    Definition: NexTouch.cpp:49
    +
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
    Constructor of Nextouch.
    Definition: NexTouch.cpp:31
    +
    const char * getObjName(void)
    Get component name.
    Definition: NexTouch.cpp:69
    +
    NexCid getCid(void)
    Get component id.
    Definition: NexTouch.cpp:59
    +
    API of Nextion.
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    + + + + diff --git a/doc/API/_nex_touch_8h.html b/doc/API/_nex_touch_8h.html new file mode 100644 index 00000000..0cbab0e --- /dev/null +++ b/doc/API/_nex_touch_8h.html @@ -0,0 +1,84 @@ + + + + + + +API: NexTouch.h File Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexTouch.h File Reference
    +
    +
    + +

    API of Nextion. +More...

    +
    #include <Arduino.h>
    +#include "NexSerialConfig.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  NexTouch
     Root Class of Nextion Components. More...
     
    +

    Detailed Description

    +

    API of Nextion.

    +
    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    +
    Date
    2015/7/10
    + + +

    Definition in file NexTouch.h.

    +
    + + + + diff --git a/doc/API/_nex_touch_8h_source.html b/doc/API/_nex_touch_8h_source.html new file mode 100644 index 00000000..ccbbeb1 --- /dev/null +++ b/doc/API/_nex_touch_8h_source.html @@ -0,0 +1,121 @@ + + + + + + +API: NexTouch.h Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexTouch.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    16 #ifndef __NEXTOUCH_H__
    +
    17 #define __NEXTOUCH_H__
    +
    18 #ifdef __cplusplus
    +
    19 #include <Arduino.h>
    +
    20 #include "NexSerialConfig.h"
    +
    21 
    +
    22 typedef uint8_t NexPid;
    +
    23 typedef uint8_t NexCid;
    +
    24 
    +
    25 typedef void (*NexTouchEventCb)(void *ptr);
    +
    26 
    +
    27 typedef enum {
    +
    28  NEX_EVENT_POP = 0x00,
    +
    29  NEX_EVENT_PUSH = 0x01,
    +
    30  NEX_EVENT_NULL
    +
    31 } NexEventType;
    +
    32 
    +
    37 class NexTouch
    +
    38 {
    +
    39 public: /* static methods */
    +
    40  static void iterate(NexTouch **list, NexPid pid, NexCid cid, NexEventType event);
    +
    41 
    +
    42 public: /* methods */
    +
    43  NexTouch(NexPid pid, NexCid cid, char *name,
    +
    44  NexTouchEventCb pop = NULL, void *pop_ptr = NULL,
    +
    45  NexTouchEventCb push = NULL, void *push_ptr = NULL);
    +
    46 
    +
    47  NexPid getPid(void);
    +
    48  NexCid getCid(void);
    +
    49  const char *getObjName(void);
    +
    50 
    +
    51 protected: /* methods */
    +
    52  void attachPush(NexTouchEventCb push, void *ptr = NULL);
    +
    53  void detachPush(void);
    +
    54  void attachPop(NexTouchEventCb pop, void *ptr = NULL);
    +
    55  void detachPop(void);
    +
    56 
    +
    57 private: /* methods */
    +
    58  void print(void);
    +
    59  void push(void);
    +
    60  void pop(void);
    +
    61 
    +
    62 private: /* data */
    +
    63  NexPid pid; /* Page ID */
    +
    64  NexCid cid; /* Component ID */
    +
    65  char *name; /* An unique name */
    +
    66  NexTouchEventCb cbPush;
    +
    67  void *__cbpush_ptr;
    +
    68  NexTouchEventCb cbPop;
    +
    69  void *__cbpop_ptr;
    +
    70 };
    +
    71 
    +
    72 #endif /* #ifdef __cplusplus */
    +
    73 #endif /* #ifndef __NEXTOUCH_H__ */
    +
    NexPid getPid(void)
    Get page id.
    Definition: NexTouch.cpp:49
    +
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
    Constructor of Nextouch.
    Definition: NexTouch.cpp:31
    +
    Serial configure.
    +
    const char * getObjName(void)
    Get component name.
    Definition: NexTouch.cpp:69
    +
    NexCid getCid(void)
    Get component id.
    Definition: NexTouch.cpp:59
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    + + + + diff --git a/doc/API/_nex_waveform_8cpp.html b/doc/API/_nex_waveform_8cpp.html new file mode 100644 index 00000000..e96a6b6 --- /dev/null +++ b/doc/API/_nex_waveform_8cpp.html @@ -0,0 +1,74 @@ + + + + + + +API: NexWaveform.cpp File Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexWaveform.cpp File Reference
    +
    +
    + +

    API of NexWaveform. +More...

    +
    #include "NexWaveform.h"
    +
    +

    Go to the source code of this file.

    +

    Detailed Description

    +

    API of NexWaveform.

    +
    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    +
    Date
    2015/8/11
    + + +

    Definition in file NexWaveform.cpp.

    +
    + + + + diff --git a/doc/API/_nex_waveform_8cpp_source.html b/doc/API/_nex_waveform_8cpp_source.html new file mode 100644 index 00000000..f31de14 --- /dev/null +++ b/doc/API/_nex_waveform_8cpp_source.html @@ -0,0 +1,90 @@ + + + + + + +API: NexWaveform.cpp Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexWaveform.cpp
    +
    +
    +Go to the documentation of this file.
    1 
    +
    16 #include "NexWaveform.h"
    +
    17 
    +
    22 NexWaveform::NexWaveform(NexPid pid, NexCid cid, char *name)
    +
    23  :NexTouch(pid, cid, name)
    +
    24 {
    +
    25 }
    +
    26 
    +
    27 
    +
    37 bool NexWaveform::addValue(uint8_t ch, uint8_t number)
    +
    38 {
    +
    39  char buf[15] = {0};
    +
    40 
    +
    41  if (ch > 3)
    +
    42  {
    +
    43  return false;
    +
    44  }
    +
    45 
    +
    46  sprintf(buf, "add %u,%u,%u", getCid(), ch, number);
    +
    47 
    +
    48  sendCommand(buf);
    +
    49  return true;
    +
    50 }
    +
    51 
    +
    API of NexWaveform.
    +
    NexCid getCid(void)
    Get component id.
    Definition: NexTouch.cpp:59
    +
    bool addValue(uint8_t ch, uint8_t number)
    Add value to show.
    Definition: NexWaveform.cpp:37
    +
    NexWaveform(NexPid pid, NexCid cid, char *name)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexWaveform.cpp:22
    +
    void sendCommand(const char *cmd)
    Send command to Nextion.
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    +
    + + + + diff --git a/doc/API/_nex_waveform_8h.html b/doc/API/_nex_waveform_8h.html new file mode 100644 index 00000000..91bd515 --- /dev/null +++ b/doc/API/_nex_waveform_8h.html @@ -0,0 +1,84 @@ + + + + + + +API: NexWaveform.h File Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexWaveform.h File Reference
    +
    +
    + +

    API of NexWaveform. +More...

    +
    #include "NexTouch.h"
    +#include "NexHardware.h"
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  NexWaveform
     NexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component. More...
     
    +

    Detailed Description

    +

    API of NexWaveform.

    +
    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    +
    Date
    2015/8/11
    + + +

    Definition in file NexWaveform.h.

    +
    + + + + diff --git a/doc/API-html/_nex_pointer_8h_source.html b/doc/API/_nex_waveform_8h_source.html similarity index 50% rename from doc/API-html/_nex_pointer_8h_source.html rename to doc/API/_nex_waveform_8h_source.html index 905cf71..386dc46 100644 --- a/doc/API-html/_nex_pointer_8h_source.html +++ b/doc/API/_nex_waveform_8h_source.html @@ -4,7 +4,7 @@ -API: NexPointer.h Source File +API: NexWaveform.h Source File @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_button.png b/doc/API/class_nex_button.png similarity index 100% rename from doc/API-html/class_nex_button.png rename to doc/API/class_nex_button.png diff --git a/doc/API-html/class_nex_crop-members.html b/doc/API/class_nex_crop-members.html similarity index 59% rename from doc/API-html/class_nex_crop-members.html rename to doc/API/class_nex_crop-members.html index 8300b4d..230d688 100644 --- a/doc/API-html/class_nex_crop-members.html +++ b/doc/API/class_nex_crop-members.html @@ -16,7 +16,7 @@
    API
    @@ -46,36 +46,35 @@
    -
    NexPointer.h
    +
    NexWaveform.h
    -Go to the documentation of this file.
    1 
    -
    16 #ifndef __NEXPOINTER_H__
    -
    17 #define __NEXPOINTER_H__
    -
    18 #ifdef __cplusplus
    -
    19 #include "NexTouch.h"
    +Go to the documentation of this file.
    1 
    +
    15 #ifndef __NEXWAVEFORM_H__
    +
    16 #define __NEXWAVEFORM_H__
    +
    17 #ifdef __cplusplus
    +
    18 #include "NexTouch.h"
    +
    19 #include "NexHardware.h"
    20 
    -
    25 class NexPointer: public NexTouch
    +
    25 class NexWaveform: public NexTouch
    26 {
    27 public: /* methods */
    -
    28  NexPointer(NexPid pid, NexCid cid, char *name);
    -
    29 
    -
    30  bool getValue(uint32_t *number);
    -
    31  bool setValue(uint32_t number);
    -
    32 };
    -
    33 
    -
    34 #endif /* #ifdef __cplusplus */
    -
    35 #endif /* #ifndef __NEXPOINTER_H__ */
    -
    bool getValue(uint32_t *number)
    Get the value of pointer.
    Definition: NexPointer.cpp:35
    -
    NexPointer,subclass of NexTouch,provides simple methods to control pointer component.
    Definition: NexPointer.h:25
    +
    28  NexWaveform(NexPid pid, NexCid cid, char *name);
    +
    29  bool addValue(uint8_t ch, uint8_t number);
    +
    30 };
    +
    31 
    +
    32 #endif /* #ifdef __cplusplus */
    +
    33 #endif /* #ifndef __NEXWAVEFORM_H__ */
    +
    bool addValue(uint8_t ch, uint8_t number)
    Add value to show.
    Definition: NexWaveform.cpp:37
    +
    NexWaveform(NexPid pid, NexCid cid, char *name)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexWaveform.cpp:22
    API of Nextion.
    -
    NexPointer(NexPid pid, NexCid cid, char *name)
    Constructor,inherited NexTouch's constructor function.
    Definition: NexPointer.cpp:22
    -
    bool setValue(uint32_t number)
    Set the value of pointer.
    Definition: NexPointer.cpp:52
    -
    Root Class of Nextion Components.
    Definition: NexTouch.h:57
    +
    Hardware Srial API.
    +
    NexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component.
    Definition: NexWaveform.h:25
    +
    Root Class of Nextion Components.
    Definition: NexTouch.h:37
    diff --git a/doc/API/_nextion_8h.html b/doc/API/_nextion_8h.html new file mode 100644 index 00000000..793d669 --- /dev/null +++ b/doc/API/_nextion_8h.html @@ -0,0 +1,88 @@ + + + + + + +API: Nextion.h File Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    Nextion.h File Reference
    +
    +
    + +

    Header file of Nextion Library. +More...

    +
    #include "Arduino.h"
    +#include "NexSerialConfig.h"
    +#include "NexTouch.h"
    +#include "NexHardware.h"
    +#include "NexButton.h"
    +#include "NexCrop.h"
    +#include "NexGauge.h"
    +#include "NexHotspot.h"
    +#include "NexPage.h"
    +#include "NexPicture.h"
    +#include "NexProgressBar.h"
    +#include "NexSlider.h"
    +#include "NexText.h"
    +#include "NexWaveform.h"
    +
    +

    Go to the source code of this file.

    +

    Detailed Description

    +

    Header file of Nextion Library.

    +

    All examples or sketches need to include this file.

    +
    Author
    Wu Pengfei (email:pengf.nosp@m.ei.w.nosp@m.u@ite.nosp@m.ad.c.nosp@m.c)
    +
    Date
    2015/8/12
    + + +

    Definition in file Nextion.h.

    +
    + + + + diff --git a/doc/API/_nextion_8h_source.html b/doc/API/_nextion_8h_source.html new file mode 100644 index 00000000..20b0b36 --- /dev/null +++ b/doc/API/_nextion_8h_source.html @@ -0,0 +1,94 @@ + + + + + + +API: Nextion.h Source File + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    Nextion.h
    +
    +
    +Go to the documentation of this file.
    1 
    +
    18 #ifndef __NEXTION_H__
    +
    19 #define __NEXTION_H__
    +
    20 
    +
    21 #include "Arduino.h"
    +
    22 #include "NexSerialConfig.h"
    +
    23 #include "NexTouch.h"
    +
    24 #include "NexHardware.h"
    +
    25 
    +
    26 #include "NexButton.h"
    +
    27 #include "NexCrop.h"
    +
    28 #include "NexGauge.h"
    +
    29 #include "NexHotspot.h"
    +
    30 #include "NexPage.h"
    +
    31 #include "NexPicture.h"
    +
    32 #include "NexProgressBar.h"
    +
    33 #include "NexSlider.h"
    +
    34 #include "NexText.h"
    +
    35 #include "NexWaveform.h"
    +
    36 
    +
    37 #endif /* #ifndef __NEXTION_H__ */
    +
    Serial configure.
    +
    API of NexWaveform.
    +
    API of NexText.
    +
    API of NexSlider.
    +
    API of NexButton.
    +
    API of NexPage.
    +
    API of NexCrop.
    +
    API of NexGauge.
    +
    API of Nextion.
    +
    Hardware Srial API.
    +
    API of NexHotspot.
    +
    API of NexProgressBar.
    +
    API of NexPicture.
    +
    + + + + diff --git a/doc/API-html/annotated.html b/doc/API/annotated.html similarity index 58% rename from doc/API-html/annotated.html rename to doc/API/annotated.html index 00b88d4..d020e7c 100644 --- a/doc/API-html/annotated.html +++ b/doc/API/annotated.html @@ -16,7 +16,7 @@ - +
    API
    @@ -55,19 +55,21 @@ - - - - + + + + - - + + + +
     CNexButtonNexButton,subclass of NexTouch,provides simple methods to control button component
     CNexCropNexCrop,subclass of NexTouch,provides simple methods to control crop component
     CNexHotspotNexHotspot,subclass of NexTouch,provides simple methods to control hotspot component
     CNexPageNexPage,subclass of NexTouch,provides simple methods to control page component
     CNexPictureNexPicture,subclass of NexTouch,provides simple methods to control picture component
     CNexPointerNexPointer,subclass of NexTouch,provides simple methods to control pointer component
     CNexGaugeNexGauge,subclass of NexTouch,provides simple methods to control gauge component
     CNexHotspotNexHotspot,subclass of NexTouch,provides simple methods to control hotspot component
     CNexPageNexPage,subclass of NexTouch,provides simple methods to control page component
     CNexPictureNexPicture,subclass of NexTouch,provides simple methods to control picture component
     CNexProgressBarNexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component
     CNexTextNexText,subclass of NexTouch,provides simple methods to control text component
     CNexTouchRoot Class of Nextion Components
     CNexSliderNexSlider,subclass of NexTouch,provides simple methods to control slider component
     CNexTextNexText,subclass of NexTouch,provides simple methods to control text component
     CNexTouchRoot Class of Nextion Components
     CNexWaveformNexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component
    diff --git a/doc/API-html/bc_s.png b/doc/API/bc_s.png similarity index 100% rename from doc/API-html/bc_s.png rename to doc/API/bc_s.png diff --git a/doc/API-html/bdwn.png b/doc/API/bdwn.png similarity index 100% rename from doc/API-html/bdwn.png rename to doc/API/bdwn.png diff --git a/doc/API-html/class_nex_button-members.html b/doc/API/class_nex_button-members.html similarity index 63% rename from doc/API-html/class_nex_button-members.html rename to doc/API/class_nex_button-members.html index 84a2aac..8098bfb 100644 --- a/doc/API-html/class_nex_button-members.html +++ b/doc/API/class_nex_button-members.html @@ -16,7 +16,7 @@ - + - - - - - - - - + +
    API
    @@ -60,19 +60,13 @@
    getObjName(void)NexTouch
    getPid(void)NexTouch
    getText(char *buffer, uint16_t len)NexButton
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexButton
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexButton(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexButton
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    setText(const char *buffer)NexButton
    diff --git a/doc/API-html/class_nex_button.html b/doc/API/class_nex_button.html similarity index 72% rename from doc/API-html/class_nex_button.html rename to doc/API/class_nex_button.html index 6648f05..714436e 100644 --- a/doc/API-html/class_nex_button.html +++ b/doc/API/class_nex_button.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -101,35 +101,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexButton,subclass of NexTouch,provides simple methods to control button component.

    -
    Examples:
    CompButton.ino, CompPointer.ino, CompProgressBar.ino, and CompText.ino.
    +
    Examples:
    CompButton.ino, CompGauge.ino, CompProgressBar.ino, and CompText.ino.
    -

    Definition at line 25 of file NexButton.h.

    +

    Definition at line 26 of file NexButton.h.

    Member Function Documentation

    @@ -163,7 +140,7 @@ Additional Inherited Members
    -
    Examples:
    CompButton.ino, CompPointer.ino, and CompProgressBar.ino.
    +
    Examples:
    CompButton.ino, CompGauge.ino, and CompProgressBar.ino.

    Definition at line 70 of file NexButton.cpp.

    @@ -249,7 +226,7 @@ Additional Inherited Members
    - + - - - - - - - - + +
    API
    @@ -59,18 +59,12 @@
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexCrop
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexCrop(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexCrop
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    diff --git a/doc/API-html/class_nex_crop.html b/doc/API/class_nex_crop.html similarity index 67% rename from doc/API-html/class_nex_crop.html rename to doc/API/class_nex_crop.html index d8c4d96..ffb2f63 100644 --- a/doc/API-html/class_nex_crop.html +++ b/doc/API/class_nex_crop.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -95,35 +95,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexCrop,subclass of NexTouch,provides simple methods to control crop component.

    Examples:
    CompCrop.ino.
    -

    Definition at line 25 of file NexCrop.h.

    +

    Definition at line 26 of file NexCrop.h.

    Member Function Documentation

    @@ -170,7 +147,7 @@ Additional Inherited Members
    + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    + + + + + + +
    +
    +
    NexGauge Member List
    +
    +
    + +

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

    + + + + + + + + +
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    getValue(uint32_t *number)NexGauge
    NexGauge(NexPid pid, NexCid cid, char *name)NexGauge
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    setValue(uint32_t number)NexGauge
    + + + + diff --git a/doc/API/class_nex_gauge.html b/doc/API/class_nex_gauge.html new file mode 100644 index 00000000..9d3e41f --- /dev/null +++ b/doc/API/class_nex_gauge.html @@ -0,0 +1,184 @@ + + + + + + +API: NexGauge Class Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexGauge Class Reference
    +
    +
    + +

    NexGauge,subclass of NexTouch,provides simple methods to control gauge component. + More...

    + +

    #include <NexGauge.h>

    +
    +Inheritance diagram for NexGauge:
    +
    +
    + + +NexTouch + +
    + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    NexGauge (NexPid pid, NexCid cid, char *name)
     Constructor,inherited NexTouch's constructor function.
     
    bool getValue (uint32_t *number)
     Get the value of gauge. More...
     
    bool setValue (uint32_t number)
     Set the value of gauge. More...
     
    - Public Member Functions inherited from NexTouch
     NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
     Constructor of Nextouch. More...
     
    NexPid getPid (void)
     Get page id. More...
     
    NexCid getCid (void)
     Get component id. More...
     
    const char * getObjName (void)
     Get component name. More...
     
    +

    Detailed Description

    +

    NexGauge,subclass of NexTouch,provides simple methods to control gauge component.

    +
    Examples:
    CompGauge.ino.
    +
    +

    Definition at line 26 of file NexGauge.h.

    +

    Member Function Documentation

    + +
    +
    + + + + + + + + +
    bool NexGauge::getValue (uint32_t * number)
    +
    + +

    Get the value of gauge.

    +
    Parameters
    + + +
    number- an output parameter to save gauge's value.
    +
    +
    +
    Return values
    + + + +
    true- success.
    false- failed.
    +
    +
    +
    Examples:
    CompGauge.ino.
    +
    +

    Definition at line 35 of file NexGauge.cpp.

    + +
    +
    + +
    +
    + + + + + + + + +
    bool NexGauge::setValue (uint32_t number)
    +
    + +

    Set the value of gauge.

    +
    Parameters
    + + +
    number- the value of gauge.
    +
    +
    +
    Return values
    + + + +
    true- success.
    false- failed.
    +
    +
    +
    Examples:
    CompGauge.ino.
    +
    +

    Definition at line 52 of file NexGauge.cpp.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/doc/API/class_nex_gauge.png b/doc/API/class_nex_gauge.png new file mode 100644 index 0000000000000000000000000000000000000000..41d747b17a760d32938b17e6733a0b90edf7766a GIT binary patch literal 437 zcmeAS@N?(olHy`uVBq!ia0vp^?m!&C!3-p8_Rin~QW60^A+G=b{|7RkefX8O_~8T~ z3ycpOIIzYxxdO=LC<*clW&kPzfvcxNj2IXgT|8YJLn;{G&b`>zqQK+Iuln)7ePwt+ z)S6P`LxrQyh& zP4QclrN4fN?0aeSt*dR84Tp41| zub<5>WRTlp!LU(`UE$gzh9glj4H5rmO%C!Bc43kL31rQYve|Nm=|SWv&5Kj-yl47i zRQFBa)%w$laHp+HEoVs;n9SL6IjBB3{QAF)mxW6{F4wf%VK?2i_B8MEi#G1<1&4S3 zs5VIYb^m;9zs>U!tK#0u7w6CJd3EZ@wytNaA140VRW9?{A-V2Of9l`=3`b_2@YGyd bSj*Tpng3Cg!HH+UFlO*{^>bP0l+XkK3`ogv literal 0 HcmV?d00001 diff --git a/doc/API-html/class_nex_touch-members.html b/doc/API/class_nex_hotspot-members.html similarity index 65% rename from doc/API-html/class_nex_touch-members.html rename to doc/API/class_nex_hotspot-members.html index 93441b5..2882293 100644 --- a/doc/API-html/class_nex_touch-members.html +++ b/doc/API/class_nex_hotspot-members.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/class_nex_hotspot.png b/doc/API/class_nex_hotspot.png similarity index 100% rename from doc/API-html/class_nex_hotspot.png rename to doc/API/class_nex_hotspot.png diff --git a/doc/API-html/class_nex_page-members.html b/doc/API/class_nex_page-members.html similarity index 61% rename from doc/API-html/class_nex_page-members.html rename to doc/API/class_nex_page-members.html index 72719a5..ffeecad 100644 --- a/doc/API-html/class_nex_page-members.html +++ b/doc/API/class_nex_page-members.html @@ -16,7 +16,7 @@
    API
    @@ -48,26 +48,25 @@
    -
    NexTouch Member List
    +
    NexHotspot Member List
    -

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

    +

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

    + + + + - + - - - - -
    attachPop(NexTouchEventCb pop, void *ptr=NULL)NexHotspot
    attachPush(NexTouchEventCb push, void *ptr=NULL)NexHotspot
    detachPop(void)NexHotspot
    detachPush(void)NexHotspot
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexHotspot(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexHotspot
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    diff --git a/doc/API-html/class_nex_hotspot.html b/doc/API/class_nex_hotspot.html similarity index 72% rename from doc/API-html/class_nex_hotspot.html rename to doc/API/class_nex_hotspot.html index b973a29..bfd8249 100644 --- a/doc/API-html/class_nex_hotspot.html +++ b/doc/API/class_nex_hotspot.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -102,35 +102,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexHotspot,subclass of NexTouch,provides simple methods to control hotspot component.

    Examples:
    CompHotspot.ino.
    -

    Definition at line 25 of file NexHotspot.h.

    +

    Definition at line 26 of file NexHotspot.h.

    Member Function Documentation

    @@ -215,7 +192,7 @@ Additional Inherited Members
    - + - - - - - - - - + +
    API
    @@ -59,19 +59,13 @@
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexPage
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexPage(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexPage
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    show(void)NexPage
    diff --git a/doc/API-html/class_nex_page.html b/doc/API/class_nex_page.html similarity index 70% rename from doc/API-html/class_nex_page.html rename to doc/API/class_nex_page.html index 97286a3..286794e 100644 --- a/doc/API-html/class_nex_page.html +++ b/doc/API/class_nex_page.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -98,35 +98,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexPage,subclass of NexTouch,provides simple methods to control page component.

    Examples:
    CompPage.ino.
    -

    Definition at line 25 of file NexPage.h.

    +

    Definition at line 26 of file NexPage.h.

    Member Function Documentation

    @@ -201,7 +178,7 @@ Additional Inherited Members
    - + - - - - - - - - + +
    API
    @@ -60,19 +60,13 @@
    getObjName(void)NexTouch
    getPic(uint32_t *number)NexPicture
    getPid(void)NexTouch
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexPicture
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexPicture(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexPicture
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    setPic(uint32_t number)NexPicture
    diff --git a/doc/API-html/class_nex_picture.html b/doc/API/class_nex_picture.html similarity index 73% rename from doc/API-html/class_nex_picture.html rename to doc/API/class_nex_picture.html index ea82115..c8554a4 100644 --- a/doc/API-html/class_nex_picture.html +++ b/doc/API/class_nex_picture.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -101,35 +101,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexPicture,subclass of NexTouch,provides simple methods to control picture component.

    Examples:
    CompPicture.ino.
    -

    Definition at line 25 of file NexPicture.h.

    +

    Definition at line 26 of file NexPicture.h.

    Member Function Documentation

    @@ -244,7 +221,7 @@ Additional Inherited Members
    - + - - - - - - - - + +
    API
    @@ -58,19 +58,13 @@
    getObjName(void)NexTouch
    getPid(void)NexTouch
    getValue(uint32_t *number)NexProgressBar
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexProgressBar(NexPid pid, NexCid cid, char *name)NexProgressBar
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexProgressBar(NexPid pid, NexCid cid, char *name)NexProgressBar
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    setValue(uint32_t number)NexProgressBar
    diff --git a/doc/API-html/class_nex_progress_bar.html b/doc/API/class_nex_progress_bar.html similarity index 69% rename from doc/API-html/class_nex_progress_bar.html rename to doc/API/class_nex_progress_bar.html index 7224dc5..0099007 100644 --- a/doc/API-html/class_nex_progress_bar.html +++ b/doc/API/class_nex_progress_bar.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -94,35 +94,12 @@ Public Member Functions
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component.

    Examples:
    CompProgressBar.ino.
    -

    Definition at line 25 of file NexProgressBar.h.

    +

    Definition at line 26 of file NexProgressBar.h.

    Member Function Documentation

    @@ -199,7 +176,7 @@ Additional Inherited Members
    - + - + - - - - - - - - + +
    API
    @@ -48,29 +48,25 @@
    -
    NexSlice Member List
    +
    NexSlider Member List
    -

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

    +

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

    - - + + - - + + - - - - - +
    attachPop(NexTouchEventCb pop, void *ptr=NULL)NexSlice
    detachPop(void)NexSlice
    attachPop(NexTouchEventCb pop, void *ptr=NULL)NexSlider
    detachPop(void)NexSlider
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexSlice(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexSlice
    getValue(uint32_t *number)NexSlider
    NexSlider(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexSlider
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    setValue(uint32_t number)NexSlider
    diff --git a/doc/API/class_nex_slider.html b/doc/API/class_nex_slider.html new file mode 100644 index 00000000..7717f6a --- /dev/null +++ b/doc/API/class_nex_slider.html @@ -0,0 +1,228 @@ + + + + + + +API: NexSlider Class Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexSlider Class Reference
    +
    +
    + +

    NexSlider,subclass of NexTouch,provides simple methods to control slider component. + More...

    + +

    #include <NexSlider.h>

    +
    +Inheritance diagram for NexSlider:
    +
    +
    + + +NexTouch + +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    NexSlider (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)
     Constructor,inherited NexTouch's constructor function.
     
    void attachPop (NexTouchEventCb pop, void *ptr=NULL)
     Register slider pop callback function. More...
     
    +void detachPop (void)
     Unload slider pop callback function.
     
    bool getValue (uint32_t *number)
     Get the value of slider. More...
     
    bool setValue (uint32_t number)
     Set the value of slider. More...
     
    - Public Member Functions inherited from NexTouch
     NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
     Constructor of Nextouch. More...
     
    NexPid getPid (void)
     Get page id. More...
     
    NexCid getCid (void)
     Get component id. More...
     
    const char * getObjName (void)
     Get component name. More...
     
    +

    Detailed Description

    +

    NexSlider,subclass of NexTouch,provides simple methods to control slider component.

    +
    Examples:
    CompSlider.ino.
    +
    +

    Definition at line 26 of file NexSlider.h.

    +

    Member Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    void NexSlider::attachPop (NexTouchEventCb pop,
    void * ptr = NULL 
    )
    +
    + +

    Register slider pop callback function.

    +
    Parameters
    + + + +
    pop- the pointer to picture pop callback function.
    ptr- the parameter to be transmitted to picture pop callback function.
    +
    +
    +
    Examples:
    CompSlider.ino.
    +
    +

    Definition at line 73 of file NexSlider.cpp.

    + +
    +
    + +
    +
    + + + + + + + + +
    bool NexSlider::getValue (uint32_t * number)
    +
    + +

    Get the value of slider.

    +
    Parameters
    + + +
    number- an output parameter to save the value of slider.
    +
    +
    +
    Return values
    + + + +
    true- success.
    false- failed.
    +
    +
    +
    Examples:
    CompSlider.ino.
    +
    +

    Definition at line 36 of file NexSlider.cpp.

    + +
    +
    + +
    +
    + + + + + + + + +
    bool NexSlider::setValue (uint32_t number)
    +
    + +

    Set the value of slider.

    +
    Parameters
    + + +
    number- the value of slider.
    +
    +
    +
    Return values
    + + + +
    true- success.
    false- failed.
    +
    +
    + +

    Definition at line 53 of file NexSlider.cpp.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/doc/API/class_nex_slider.png b/doc/API/class_nex_slider.png new file mode 100644 index 0000000000000000000000000000000000000000..c62a2866d6bed46a3542e8b6a1e860f8e50554d7 GIT binary patch literal 422 zcmeAS@N?(olHy`uVBq!ia0vp^u0R~X!3-oTJUonnlth3}i0l9V|AEYBAAY4RemDWh z0^_Ft^jg5N`m}?8GwpF;OeOmBL)UWQ%@JikP61Pb1(KCQQ&appYi3teWiO2 z_cW`?J+(L9+^RUv_lWV}zF;rS%Zpa5^2-Vg3Ek}1)pGyy#BVEBrLk@fJ~P9dM?kqN z(pR*?=(~)r$Me8)nFT%{Pj2@1Hj~w>jjhS&eo>k3H9a#v_Vn`=&s9{PedB#0Eu`A<=D3OLWQ0l*@px{g~CWDngev#K~;mcMD-)dj#Wi7aI`s#CoU4NO6-t!UN zk
    API
    @@ -60,19 +60,13 @@
    getObjName(void)NexTouch
    getPid(void)NexTouch
    getText(char *buffer, uint16_t len)NexText
    mainEventLoop(NexTouch **list)NexTouchstatic
    NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexText
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    print(void)NexTouch
    recvRetCommandFinished(uint32_t timeout=100)NexTouchstatic
    recvRetNumber(uint32_t *number, uint32_t timeout=500)NexTouchstatic
    recvRetString(char *buffer, uint16_t len, uint32_t timeout=500)NexTouchstatic
    sendCommand(const char *cmd)NexTouchstatic
    NexText(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL)NexText
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    setText(const char *buffer)NexText
    diff --git a/doc/API-html/class_nex_text.html b/doc/API/class_nex_text.html similarity index 72% rename from doc/API-html/class_nex_text.html rename to doc/API/class_nex_text.html index d2c5a38..437c376 100644 --- a/doc/API-html/class_nex_text.html +++ b/doc/API/class_nex_text.html @@ -16,7 +16,7 @@ - + - - - -
    API
    @@ -101,35 +101,12 @@ void 
    const char * getObjName (void)
     Get component name. More...
     
    -void print (void)
     Print current object address,page id,component id, component name,pop event function address,push event function address.
     
    - - - - - - - - - - - - - - - - -

    -Additional Inherited Members

    - Static Public Member Functions inherited from NexTouch
    static uint8_t mainEventLoop (NexTouch **list)
     Watting for Nextion's touch event. More...
     
    static void sendCommand (const char *cmd)
     Send command to Nextion. More...
     
    static bool recvRetCommandFinished (uint32_t timeout=100)
     Command is executed successfully. More...
     
    static uint16_t recvRetString (char *buffer, uint16_t len, uint32_t timeout=500)
     Receive string data. More...
     
    static bool recvRetNumber (uint32_t *number, uint32_t timeout=500)
     Receive uint32_t data. More...
     

    Detailed Description

    NexText,subclass of NexTouch,provides simple methods to control text component.

    -
    Examples:
    CompText.ino.
    +
    Examples:
    CompSlider.ino, and CompText.ino.
    -

    Definition at line 25 of file NexText.h.

    +

    Definition at line 26 of file NexText.h.

    Member Function Documentation

    @@ -235,7 +212,7 @@ Additional Inherited Members
    -
    Examples:
    CompText.ino.
    +
    Examples:
    CompSlider.ino, and CompText.ino.

    Definition at line 53 of file NexText.cpp.

    @@ -248,7 +225,7 @@ Additional Inherited Members
    + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    + + + + + + +
    +
    +
    NexTouch Member List
    +
    +
    + +

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

    + + + + + +
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    + + + + diff --git a/doc/API/class_nex_touch.html b/doc/API/class_nex_touch.html new file mode 100644 index 00000000..4ebebfe --- /dev/null +++ b/doc/API/class_nex_touch.html @@ -0,0 +1,250 @@ + + + + + + +API: NexTouch Class Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexTouch Class Reference
    +
    +
    + +

    Root Class of Nextion Components. + More...

    + +

    #include <NexTouch.h>

    +
    +Inheritance diagram for NexTouch:
    +
    +
    + + +NexButton +NexCrop +NexGauge +NexHotspot +NexPage +NexPicture +NexProgressBar +NexSlider +NexText +NexWaveform + +
    + + + + + + + + + + + + + + +

    +Public Member Functions

     NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
     Constructor of Nextouch. More...
     
    NexPid getPid (void)
     Get page id. More...
     
    NexCid getCid (void)
     Get component id. More...
     
    const char * getObjName (void)
     Get component name. More...
     
    +

    Detailed Description

    +

    Root Class of Nextion Components.

    +
    Examples:
    CompButton.ino, CompCrop.ino, CompGauge.ino, CompHotspot.ino, CompPage.ino, CompPicture.ino, CompProgressBar.ino, CompSlider.ino, and CompText.ino.
    +
    +

    Definition at line 37 of file NexTouch.h.

    +

    Constructor & Destructor Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
    NexTouch::NexTouch (NexPid pid,
    NexCid cid,
    char * name,
    NexTouchEventCb pop = NULL,
    void * pop_ptr = NULL,
    NexTouchEventCb push = NULL,
    void * push_ptr = NULL 
    )
    +
    + +

    Constructor of Nextouch.

    +
    Parameters
    + + + + + + + + +
    pid- page id.
    cid- component id.
    name- component name.
    pop- pop event function pointer.
    pop_ptr- the parameter was transmitted to pop event function pointer.
    push- push event function pointer.
    push_ptr- the parameter was transmitted to push event function pointer.
    +
    +
    + +

    Definition at line 31 of file NexTouch.cpp.

    + +
    +
    +

    Member Function Documentation

    + +
    +
    + + + + + + + + +
    NexCid NexTouch::getCid (void )
    +
    + +

    Get component id.

    +
    Returns
    the id of component.
    + +

    Definition at line 59 of file NexTouch.cpp.

    + +
    +
    + +
    +
    + + + + + + + + +
    const char * NexTouch::getObjName (void )
    +
    + +

    Get component name.

    +
    Returns
    the name of component.
    + +

    Definition at line 69 of file NexTouch.cpp.

    + +
    +
    + +
    +
    + + + + + + + + +
    NexPid NexTouch::getPid (void )
    +
    + +

    Get page id.

    +
    Returns
    the id of page.
    + +

    Definition at line 49 of file NexTouch.cpp.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/doc/API/class_nex_touch.png b/doc/API/class_nex_touch.png new file mode 100644 index 0000000000000000000000000000000000000000..79e6bc9de2d7a26faec33b98b4b59e19c199856e GIT binary patch literal 2814 zcmcguX;c&E8Xlw;tCH3Q+3OaHpae@A5`h$3L>QGt1W^eDi>%f_2oMNM&{7b^q6vb? z>J_bu5(O$r5W*UbA)<)kLc*3vG$28CCB)nTPp`LEy~jVjIcLuI&17cIJnyr-Z@Rmy zllEeR#Q*?kgU;JLpj8Y23!E2eLObjWN-MPJx$p9HRIAm{R`zlx=wknAXg7b<)zw|c z2E;@hNcI51z3a!`&jBEO$$6ZccfH0J-@MAv z4m@8Iz2vnkZVMfsQf+xLPD94G6!sJ38ZU+>;}xTXEp7L^t(L<2e$m%@$;;5h@PA>z@Tpm$KSSG>jCRTxp1Vm}GM)(4}t*nhq@?Z}dC)Xmoc$CDwsv z5S^M=MoBBxYLr~&7aA0t3~LtLy&Pv`??O!noQYRax9*pJS`>c_1X0Se0Aywx(|9LHaC39dOPMlPQ<2+09 z3-)LEq}GFNT1Z&&eN1u;7i@#jU$KG}caxr1x5pni~#~ zc}l{5$+|KYmypYOwkn~e+k=+W$!B1tz_kp`km=h&~@X?AJn0*rWnKHT>-5%7YpAYEy$LLJ54JA0+}UxGFV@XYj^q)I0fxnqGq z?0n9kV2OE!?2DFXPxqLF;)|HGw+%XYrC-Y2XqBZ^s2nW+=}Kg-TPFu>D^plQ#Bz;G z8oJZt#q@5Oi+JRHPQU?+x99G=>zGgp$_rKI$o#nxXCpQ)}gKZ1- zwcG=Zw%SVJ@`}GvlUK2`JOUL5S6_+~%2%KPqZDEw9bs+^$VvzZrl_HCrA``FHqzGD6u@*j-Hum@}%ZUq2K?Wr1KPCR=^Bj*I-k(J< z>6qlCPc`p*g&2kmLW2yl$`sT+WVH1x5g5*(m(Zirs&yF6&tIJ`ahOcYTWX6t>`p5b z_P3l$z50lCMZpYQK=nK6Mr*%@$0hN(k(;Tsk|1mu>qTyGaD~h~03)`GFAYvIBWGvC z-xAzOpLcO@zcq5dkwq_DzB@5V=V_-II%~0Rv;f;>kt2${;3&2*k$bBoK9=7oo~ZQV zWq#t!{_ve3<;*)BPNA6)L+c=hnlvWz{u)c~A^T{cg+O)7f$CO)0oiNbx+ypxUT}TA z_(rV7_Pb7~S}4D|CR66}OQg+ha>>D>Y;>QT;7jc-r&s*GejM*evz|Q85AS3e;wxVV zgI(<%=S6r5OSbCAxb0`)M+Sd(*gsOy?1h^S5J%pIAEB&3FKv98#E8htO*l#~iK$7{ zdFtg!*l^u(`WSj z>Z;MTAZO$eW7dqoE;cShZ2&XlCpJ=TNz#QbrydL}AMv(PF?aD=4+n%K3OMC&YJx&_ znX}oa#-nwe3>-vw9<>x9#MLsDj@`Ns6Fu3X-YkDUid@8lS!YdduXfwzXPX%@z*CCG zH0Q-Hf|T&u$a`eHKvbT?ICdxFT8)2NwHq&7i1Y3xRd<))?5GYzRpKv?$6@>6@@eDQ zpE7?b?KlrtU0Z|9siJ^0M~H--pbgZS{*0)g~Q>f%ct(^4@b}p#JMEk@gquHi2F>P~tc6n4`I^`!d0{+i!%pAIuRo`$#Btr*T(* zs+FLJ`D^=ld30~<>5`amN$Nqpo)I+jlrvkWHIkf;A~l~dCuihk6&(!cs|c*ug(5{Z z)G3hp@I=Hry+Vz8uJtCO5tp*c7WGA#5&_kRJN747qw6C*eHql#$NOead)lE_L!pEq zK1PjL&Z5`T#wuEK4J|2eM;O_y?p-^~i+tzDm#|GwTXZ_Uck{3PqV(1|DEWjIB@Jf- z)LQc<;Be0(_t!SnT0F~TZ9J)c$>8J(rGUWdVL(~p1ObHqp8*08z@bMduq!$~wq&C? z>Z}uy5n9k9Hny_S4NK4CqJsqvL#u<{ROw8o@WZQ%2I~b!LlsnmBB%nHsH&swk9X%! zEb>-autn~&ys(7Ih@n>$?=tcTwL!aa^PS%HI20IX%j>|u*o+4AzE9D_?3R|UapQ6; zRQ>ASY`~NT0W;2|%X literal 0 HcmV?d00001 diff --git a/doc/API/class_nex_waveform-members.html b/doc/API/class_nex_waveform-members.html new file mode 100644 index 00000000..839920a --- /dev/null +++ b/doc/API/class_nex_waveform-members.html @@ -0,0 +1,71 @@ + + + + + + +API: Member List + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    +
    +
    NexWaveform Member List
    +
    +
    + +

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

    + + + + + + + +
    addValue(uint8_t ch, uint8_t number)NexWaveform
    getCid(void)NexTouch
    getObjName(void)NexTouch
    getPid(void)NexTouch
    NexTouch(NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)NexTouch
    NexWaveform(NexPid pid, NexCid cid, char *name)NexWaveform
    + + + + diff --git a/doc/API/class_nex_waveform.html b/doc/API/class_nex_waveform.html new file mode 100644 index 00000000..432fd49 --- /dev/null +++ b/doc/API/class_nex_waveform.html @@ -0,0 +1,158 @@ + + + + + + +API: NexWaveform Class Reference + + + + + + +
    +
    + + + + + + + +
    +
    API +
    +
    For Arduino developers
    +
    +
    + + + + +
    +
    + +
    +
    NexWaveform Class Reference
    +
    +
    + +

    NexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component. + More...

    + +

    #include <NexWaveform.h>

    +
    +Inheritance diagram for NexWaveform:
    +
    +
    + + +NexTouch + +
    + + + + + + + + + + + + + + + + + + + + + +

    +Public Member Functions

    NexWaveform (NexPid pid, NexCid cid, char *name)
     Constructor,inherited NexTouch's constructor function.
     
    bool addValue (uint8_t ch, uint8_t number)
     Add value to show. More...
     
    - Public Member Functions inherited from NexTouch
     NexTouch (NexPid pid, NexCid cid, char *name, NexTouchEventCb pop=NULL, void *pop_ptr=NULL, NexTouchEventCb push=NULL, void *push_ptr=NULL)
     Constructor of Nextouch. More...
     
    NexPid getPid (void)
     Get page id. More...
     
    NexCid getCid (void)
     Get component id. More...
     
    const char * getObjName (void)
     Get component name. More...
     
    +

    Detailed Description

    +

    NexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component.

    +
    Examples:
    CompWaveform.ino.
    +
    +

    Definition at line 25 of file NexWaveform.h.

    +

    Member Function Documentation

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    bool NexWaveform::addValue (uint8_t ch,
    uint8_t number 
    )
    +
    + +

    Add value to show.

    +
    Parameters
    + + + +
    ch- channel of waveform(0-3).
    number- the value of waveform.
    +
    +
    +
    Return values
    + + + +
    true- success.
    false- failed.
    +
    +
    +
    Examples:
    CompWaveform.ino.
    +
    +

    Definition at line 37 of file NexWaveform.cpp.

    + +
    +
    +
    The documentation for this class was generated from the following files: +
    + + + + diff --git a/doc/API/class_nex_waveform.png b/doc/API/class_nex_waveform.png new file mode 100644 index 0000000000000000000000000000000000000000..ef01d4484464a5e81c4a35f2bef7f1ba1a936efc GIT binary patch literal 472 zcmeAS@N?(olHy`uVBq!ia0vp^(Lfx)!3-oF^?zmnDTx4|5ZC|z{{xxNKKx2s{BQ!0 z1;z&s99UzUTmj^Almz(&GXNEVz|~VBMhpy$>7Fi*Ar*{o=hm-pR^V~vpPq96zw&-g z=co&=lS@y2y0OPO+xD;H-TP1G6i+xYNo3K{X)5dUH&6cg_Smn9OCpayb1o~K``7=# z_ZvsIXK-(JueuuSWZnO^llf0{S$vi1<+Ynk#6AC7yewD0_N3~m@$JykRDJJvx!;{` zZ0kF}@w?cyXWy5fmGjA+p3?vQbFH1a^v!c8L$|5aI(6%M#)0s`H*<>n1P_$jGBk;t zsIz(Wpz)2m6_4D>e>W{7a~d4Gc^_=O!4QW^{co8YrP8#?9OAF z@kNHM!MU_7^8Kd!V!5C0Sw_zYS2?Zs?cnNJQE^{)v(LF%JM-M0!X1HH_wP+-%v8K~ zRV8`Oxf^;@3-z;IpXS;om{(_eX5W?F=DqQKO8uRjJSMie8?sODy6W3$z4QL$O20QO z+w8a1ZA~|6k-o_we=Ui*Lf5Pz+`xM2l%y~0UyVgXpO}Bv1x5pdr>mdKI;Vst0D)H9 Ad;kCd literal 0 HcmV?d00001 diff --git a/doc/API-html/classes.html b/doc/API/classes.html similarity index 74% rename from doc/API-html/classes.html rename to doc/API/classes.html index 39201c5..a5e6c92 100644 --- a/doc/API-html/classes.html +++ b/doc/API/classes.html @@ -16,7 +16,7 @@ - +
    API
    @@ -54,16 +54,16 @@ - - - + + + +
      N  
    -
    NexCrop   NexPicture   NexText   
    NexHotspot   NexPointer   NexTouch   
    NexButton   NexPage   NexProgressBar   
    NexCrop   NexPage   NexSlider   NexWaveform   
    NexGauge   NexPicture   NexText   
    NexButton   NexHotspot   NexProgressBar   NexTouch   
    diff --git a/doc/API-html/closed.png b/doc/API/closed.png similarity index 100% rename from doc/API-html/closed.png rename to doc/API/closed.png diff --git a/doc/API-html/dir_376a8598cfd3d58455c161124a3e8051.html b/doc/API/dir_472f54fb1d9b74971d8e15d62f212bd3.html similarity index 78% rename from doc/API-html/dir_376a8598cfd3d58455c161124a3e8051.html rename to doc/API/dir_472f54fb1d9b74971d8e15d62f212bd3.html index 00ece6e..87c2513 100644 --- a/doc/API-html/dir_376a8598cfd3d58455c161124a3e8051.html +++ b/doc/API/dir_472f54fb1d9b74971d8e15d62f212bd3.html @@ -4,7 +4,7 @@ -API: examples/CompPointer Directory Reference +API: examples/CompSlider Directory Reference @@ -16,7 +16,7 @@ - +
    API
    @@ -39,24 +39,24 @@
    -
    CompPointer Directory Reference
    +
    CompSlider Directory Reference
    - +

    Files

    file  CompPointer.ino [code]
    file  CompSlider.ino [code]
     
    diff --git a/doc/API-html/dir_b88c8d0e6f18ad1bf0485502083131b8.html b/doc/API/dir_4b43661efaa18af91f213d2681ebd37e.html similarity index 70% rename from doc/API-html/dir_b88c8d0e6f18ad1bf0485502083131b8.html rename to doc/API/dir_4b43661efaa18af91f213d2681ebd37e.html index 939a24a..f81bb2b 100644 --- a/doc/API-html/dir_b88c8d0e6f18ad1bf0485502083131b8.html +++ b/doc/API/dir_4b43661efaa18af91f213d2681ebd37e.html @@ -4,7 +4,7 @@ -API: API-html Directory Reference +API: examples/CompWaveform Directory Reference @@ -16,7 +16,7 @@ - +
    API
    @@ -39,26 +39,24 @@
    -
    API-html Directory Reference
    +
    CompWaveform Directory Reference
    - - - +

    Files

    file  dynsections.js [code]
     
    file  jquery.js [code]
    file  CompWaveform.ino [code]
     
    diff --git a/doc/API-html/dir_7962cac16a99e8bbaaea18abede03fcb.html b/doc/API/dir_7962cac16a99e8bbaaea18abede03fcb.html similarity index 95% rename from doc/API-html/dir_7962cac16a99e8bbaaea18abede03fcb.html rename to doc/API/dir_7962cac16a99e8bbaaea18abede03fcb.html index 4776abe..88ee4c1 100644 --- a/doc/API-html/dir_7962cac16a99e8bbaaea18abede03fcb.html +++ b/doc/API/dir_7962cac16a99e8bbaaea18abede03fcb.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/dir_8dcbebf38b229bfa7bb34d68bf824093.html b/doc/API/dir_8dcbebf38b229bfa7bb34d68bf824093.html similarity index 95% rename from doc/API-html/dir_8dcbebf38b229bfa7bb34d68bf824093.html rename to doc/API/dir_8dcbebf38b229bfa7bb34d68bf824093.html index 53b8fbf..f5f5548 100644 --- a/doc/API-html/dir_8dcbebf38b229bfa7bb34d68bf824093.html +++ b/doc/API/dir_8dcbebf38b229bfa7bb34d68bf824093.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - + diff --git a/doc/API-html/dir_9bbf8342b0f9a157b7af08fe1412fc17.html b/doc/API/dir_9bbf8342b0f9a157b7af08fe1412fc17.html similarity index 95% rename from doc/API-html/dir_9bbf8342b0f9a157b7af08fe1412fc17.html rename to doc/API/dir_9bbf8342b0f9a157b7af08fe1412fc17.html index 17f83a2..c47146c 100644 --- a/doc/API-html/dir_9bbf8342b0f9a157b7af08fe1412fc17.html +++ b/doc/API/dir_9bbf8342b0f9a157b7af08fe1412fc17.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - + diff --git a/doc/API-html/dir_0726b97e666c2e7f518aadd1fe5118dc.html b/doc/API/dir_a48692e2802a027399b146b680655303.html similarity index 83% rename from doc/API-html/dir_0726b97e666c2e7f518aadd1fe5118dc.html rename to doc/API/dir_a48692e2802a027399b146b680655303.html index 54d1266..0c19256 100644 --- a/doc/API-html/dir_0726b97e666c2e7f518aadd1fe5118dc.html +++ b/doc/API/dir_a48692e2802a027399b146b680655303.html @@ -4,7 +4,7 @@ -API: examples/CompSlice Directory Reference +API: examples/CompGauge Directory Reference @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - +
    API
    @@ -39,24 +39,24 @@
    -
    CompSlice Directory Reference
    +
    CompGauge Directory Reference
    - +

    Files

    file  CompSlice.ino [code]
    file  CompGauge.ino [code]
     
    diff --git a/doc/API-html/dir_c918e8bf3fc71f849978cdb0d900e61c.html b/doc/API/dir_c918e8bf3fc71f849978cdb0d900e61c.html similarity index 95% rename from doc/API-html/dir_c918e8bf3fc71f849978cdb0d900e61c.html rename to doc/API/dir_c918e8bf3fc71f849978cdb0d900e61c.html index 6f0168e..8eb8925 100644 --- a/doc/API-html/dir_c918e8bf3fc71f849978cdb0d900e61c.html +++ b/doc/API/dir_c918e8bf3fc71f849978cdb0d900e61c.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html b/doc/API/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html similarity index 95% rename from doc/API-html/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html rename to doc/API/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html index d2e0e99..23b3849 100644 --- a/doc/API-html/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html +++ b/doc/API/dir_ce36ac18ad3deaf5eae0bd2e09775a7d.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - + diff --git a/doc/API-html/dir_d28a4824dc47e487b107a5db32ef43c4.html b/doc/API/dir_d28a4824dc47e487b107a5db32ef43c4.html similarity index 83% rename from doc/API-html/dir_d28a4824dc47e487b107a5db32ef43c4.html rename to doc/API/dir_d28a4824dc47e487b107a5db32ef43c4.html index 505c688..bc60e28 100644 --- a/doc/API-html/dir_d28a4824dc47e487b107a5db32ef43c4.html +++ b/doc/API/dir_d28a4824dc47e487b107a5db32ef43c4.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - + + + - - + + + +
    API
    @@ -54,23 +54,27 @@ Directories
     
    directory  CompCrop
     
    directory  CompGauge
     
    directory  CompHotspot
     
    directory  CompPage
     
    directory  CompPicture
     
    directory  CompPointer
     
    directory  CompProgressBar
     
    directory  CompSlider
     
    directory  CompText
     
    directory  CompWaveform
     
    diff --git a/doc/API-html/dir_f3d39c87bc262720c50d5e3885667b8a.html b/doc/API/dir_f3d39c87bc262720c50d5e3885667b8a.html similarity index 95% rename from doc/API-html/dir_f3d39c87bc262720c50d5e3885667b8a.html rename to doc/API/dir_f3d39c87bc262720c50d5e3885667b8a.html index 7e6f99f..9cd7003 100644 --- a/doc/API-html/dir_f3d39c87bc262720c50d5e3885667b8a.html +++ b/doc/API/dir_f3d39c87bc262720c50d5e3885667b8a.html @@ -16,7 +16,7 @@ - + diff --git a/doc/API-html/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html b/doc/API/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html similarity index 95% rename from doc/API-html/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html rename to doc/API/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html index d9878d0..917435a 100644 --- a/doc/API-html/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html +++ b/doc/API/dir_f76977d9ffe8ddf3ad01f3d689aa5df4.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - + diff --git a/doc/API-html/doxygen.css b/doc/API/doxygen.css similarity index 100% rename from doc/API-html/doxygen.css rename to doc/API/doxygen.css diff --git a/doc/API-html/doxygen.png b/doc/API/doxygen.png similarity index 100% rename from doc/API-html/doxygen.png rename to doc/API/doxygen.png diff --git a/doc/API-html/dynsections.js b/doc/API/dynsections.js similarity index 100% rename from doc/API-html/dynsections.js rename to doc/API/dynsections.js diff --git a/doc/API-html/examples.html b/doc/API/examples.html similarity index 87% rename from doc/API-html/examples.html rename to doc/API/examples.html index 0d22d8c..6240295 100644 --- a/doc/API-html/examples.html +++ b/doc/API/examples.html @@ -16,7 +16,7 @@
    API
    @@ -56,7 +56,7 @@ Files
    - +
    API
    @@ -48,23 +48,27 @@
  • CompCrop.ino
  • +
  • CompGauge.ino
  • +
  • CompHotspot.ino
  • CompPage.ino
  • CompPicture.ino
  • -
  • CompPointer.ino
  • -
  • CompProgressBar.ino
  • +
  • CompSlider.ino
  • +
  • CompText.ino
  • +
  • CompWaveform.ino
  • + diff --git a/doc/API-html/files.html b/doc/API/files.html similarity index 65% rename from doc/API-html/files.html rename to doc/API/files.html index 2aa37c9..82c9abe 100644 --- a/doc/API-html/files.html +++ b/doc/API/files.html @@ -16,7 +16,7 @@ - + - - - - - - - - + + + + + + + + - - + + + + + + - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +
    API
    @@ -56,43 +56,54 @@
     CompButton.ino
      CompCrop
     CompCrop.ino
      CompHotspot
     CompHotspot.ino
      CompPage
     CompPage.ino
      CompPicture
     CompPicture.ino
      CompPointer
     CompPointer.ino
      CompGauge
     CompGauge.ino
      CompHotspot
     CompHotspot.ino
      CompPage
     CompPage.ino
      CompPicture
     CompPicture.ino
      CompProgressBar
     CompProgressBar.ino
      CompText
     CompText.ino
      CompSlider
     CompSlider.ino
      CompText
     CompText.ino
      CompWaveform
     CompWaveform.ino
     NexButton.cppAPI of NexButton
     NexButton.hAPI of NexButton
     NexCrop.cppAPI of NexCrop
     NexCrop.hAPI of NexCrop
     NexHotspot.cppAPI of NexHotspot
     NexHotspot.hAPI of NexHotspot
     NexPage.cppAPI of NexPage
     NexPage.hAPI of NexPage
     NexPicture.cppAPI of NexPicture
     NexPicture.hAPI of NexPicture
     NexPointer.cppAPI of Nexpointer
     NexPointer.hAPI of NexPointer
     NexProgressBar.cppAPI of NexProgressBar
     NexProgressBar.hAPI of NexProgressBar
     NexSerialConfig.hSerial configure
     NexText.cppAPI of NexText
     NexText.hAPI of NexText
     NexTouch.cppAPI of Nextion
     NexTouch.hAPI of Nextion
     NexGauge.cppAPI of NexGauge
     NexGauge.hAPI of NexGauge
     NexHardware.cppHardware Srial API
     NexHardware.hHardware Srial API
     NexHotspot.cppAPI of NexHotspot
     NexHotspot.hAPI of NexHotspot
     NexPage.cppAPI of NexPage
     NexPage.hAPI of NexPage
     NexPicture.cppAPI of NexPicture
     NexPicture.hAPI of NexPicture
     NexProgressBar.cppAPI of NexProgressBar
     NexProgressBar.hAPI of NexProgressBar
     NexSerialConfig.hSerial configure
     NexSlider.cppAPI of NexSlider
     NexSlider.hAPI of NexSlider
     NexText.cppAPI of NexText
     NexText.hAPI of NexText
     Nextion.hHeader file of Nextion Library
     NexTouch.cppAPI of Nextion
     NexTouch.hAPI of Nextion
     NexWaveform.cppAPI of NexWaveform
     NexWaveform.hAPI of NexWaveform
    diff --git a/doc/API-html/ftv2blank.png b/doc/API/ftv2blank.png similarity index 100% rename from doc/API-html/ftv2blank.png rename to doc/API/ftv2blank.png diff --git a/doc/API-html/ftv2doc.png b/doc/API/ftv2doc.png similarity index 100% rename from doc/API-html/ftv2doc.png rename to doc/API/ftv2doc.png diff --git a/doc/API-html/ftv2folderclosed.png b/doc/API/ftv2folderclosed.png similarity index 100% rename from doc/API-html/ftv2folderclosed.png rename to doc/API/ftv2folderclosed.png diff --git a/doc/API-html/ftv2folderopen.png b/doc/API/ftv2folderopen.png similarity index 100% rename from doc/API-html/ftv2folderopen.png rename to doc/API/ftv2folderopen.png diff --git a/doc/API-html/ftv2lastnode.png b/doc/API/ftv2lastnode.png similarity index 100% rename from doc/API-html/ftv2lastnode.png rename to doc/API/ftv2lastnode.png diff --git a/doc/API-html/ftv2link.png b/doc/API/ftv2link.png similarity index 100% rename from doc/API-html/ftv2link.png rename to doc/API/ftv2link.png diff --git a/doc/API-html/ftv2mlastnode.png b/doc/API/ftv2mlastnode.png similarity index 100% rename from doc/API-html/ftv2mlastnode.png rename to doc/API/ftv2mlastnode.png diff --git a/doc/API-html/ftv2mnode.png b/doc/API/ftv2mnode.png similarity index 100% rename from doc/API-html/ftv2mnode.png rename to doc/API/ftv2mnode.png diff --git a/doc/API-html/ftv2node.png b/doc/API/ftv2node.png similarity index 100% rename from doc/API-html/ftv2node.png rename to doc/API/ftv2node.png diff --git a/doc/API-html/ftv2plastnode.png b/doc/API/ftv2plastnode.png similarity index 100% rename from doc/API-html/ftv2plastnode.png rename to doc/API/ftv2plastnode.png diff --git a/doc/API-html/ftv2pnode.png b/doc/API/ftv2pnode.png similarity index 100% rename from doc/API-html/ftv2pnode.png rename to doc/API/ftv2pnode.png diff --git a/doc/API-html/ftv2splitbar.png b/doc/API/ftv2splitbar.png similarity index 100% rename from doc/API-html/ftv2splitbar.png rename to doc/API/ftv2splitbar.png diff --git a/doc/API-html/ftv2vertline.png b/doc/API/ftv2vertline.png similarity index 100% rename from doc/API-html/ftv2vertline.png rename to doc/API/ftv2vertline.png diff --git a/doc/API-html/functions.html b/doc/API/functions.html similarity index 82% rename from doc/API-html/functions.html rename to doc/API/functions.html index 81e13ad..aacb9d2 100644 --- a/doc/API-html/functions.html +++ b/doc/API/functions.html @@ -16,7 +16,7 @@ - +
    API
    @@ -56,10 +56,7 @@
  • a
  • d
  • g
  • -
  • m
  • n
  • -
  • p
  • -
  • r
  • s
  • @@ -68,12 +65,16 @@
    Here is a list of all documented class members with links to the class documentation for each member:

    - a -

    - - -

    - m -

    @@ -135,6 +131,9 @@
  • NexCrop() : NexCrop
  • +
  • NexGauge() +: NexGauge +
  • NexHotspot() : NexHotspot
  • @@ -144,45 +143,25 @@
  • NexPicture() : NexPicture
  • -
  • NexPointer() -: NexPointer -
  • NexProgressBar() : NexProgressBar
  • +
  • NexSlider() +: NexSlider +
  • NexText() : NexText
  • NexTouch() : NexTouch
  • - - - -

    - p -

    - - -

    - r -

    - s -

      -
    • sendCommand() -: NexTouch -
    • setPic() : NexPicture
    • @@ -191,8 +170,9 @@ , NexText
    • setValue() -: NexPointer +: NexGauge , NexProgressBar +, NexSlider
    • show() : NexPage @@ -201,7 +181,7 @@ diff --git a/doc/API-html/functions_func.html b/doc/API/functions_func.html similarity index 82% rename from doc/API-html/functions_func.html rename to doc/API/functions_func.html index d4fa92e..ebaf7ed 100644 --- a/doc/API-html/functions_func.html +++ b/doc/API/functions_func.html @@ -16,7 +16,7 @@ - +
      API
      @@ -56,10 +56,7 @@
    • a
    • d
    • g
    • -
    • m
    • n
    • -
    • p
    • -
    • r
    • s
    • @@ -68,12 +65,16 @@  

      - a -

      - - -

      - m -

      @@ -135,6 +131,9 @@
    • NexCrop() : NexCrop
    • +
    • NexGauge() +: NexGauge +
    • NexHotspot() : NexHotspot
    • @@ -144,45 +143,25 @@
    • NexPicture() : NexPicture
    • -
    • NexPointer() -: NexPointer -
    • NexProgressBar() : NexProgressBar
    • +
    • NexSlider() +: NexSlider +
    • NexText() : NexText
    • NexTouch() : NexTouch
    • - - - -

      - p -

      - - -

      - r -

      - s -

        -
      • sendCommand() -: NexTouch -
      • setPic() : NexPicture
      • @@ -191,8 +170,9 @@ , NexText
      • setValue() -: NexPointer +: NexGauge , NexProgressBar +, NexSlider
      • show() : NexPage @@ -201,7 +181,7 @@ diff --git a/doc/API-html/globals.html b/doc/API/globals.html similarity index 62% rename from doc/API-html/globals.html rename to doc/API/globals.html index 96565df..518d727 100644 --- a/doc/API-html/globals.html +++ b/doc/API/globals.html @@ -16,7 +16,7 @@ - +
        API
        @@ -53,18 +53,34 @@
        Here is a list of all documented file members with links to the documentation:
        diff --git a/doc/API-html/globals_func.html b/doc/API/globals_func.html similarity index 61% rename from doc/API-html/globals_func.html rename to doc/API/globals_func.html index 01f53a1..4617b65 100644 --- a/doc/API-html/globals_func.html +++ b/doc/API/globals_func.html @@ -16,7 +16,7 @@ - +
        API
        @@ -53,18 +53,34 @@
         
        diff --git a/doc/API-html/hierarchy.html b/doc/API/hierarchy.html similarity index 62% rename from doc/API-html/hierarchy.html rename to doc/API/hierarchy.html index 40df6d8..88a52b8 100644 --- a/doc/API-html/hierarchy.html +++ b/doc/API/hierarchy.html @@ -16,7 +16,7 @@ - + - - - - + + + + - + + +
        API
        @@ -56,18 +56,20 @@
         CNexTouchRoot Class of Nextion Components
         CNexButtonNexButton,subclass of NexTouch,provides simple methods to control button component
         CNexCropNexCrop,subclass of NexTouch,provides simple methods to control crop component
         CNexHotspotNexHotspot,subclass of NexTouch,provides simple methods to control hotspot component
         CNexPageNexPage,subclass of NexTouch,provides simple methods to control page component
         CNexPictureNexPicture,subclass of NexTouch,provides simple methods to control picture component
         CNexPointerNexPointer,subclass of NexTouch,provides simple methods to control pointer component
         CNexGaugeNexGauge,subclass of NexTouch,provides simple methods to control gauge component
         CNexHotspotNexHotspot,subclass of NexTouch,provides simple methods to control hotspot component
         CNexPageNexPage,subclass of NexTouch,provides simple methods to control page component
         CNexPictureNexPicture,subclass of NexTouch,provides simple methods to control picture component
         CNexProgressBarNexProgressBar,subclass of NexTouch,provides simple methods to control progress bar component
         CNexTextNexText,subclass of NexTouch,provides simple methods to control text component
         CNexSliderNexSlider,subclass of NexTouch,provides simple methods to control slider component
         CNexTextNexText,subclass of NexTouch,provides simple methods to control text component
         CNexWaveformNexWaveform,subclass of NexTouch,provides simple methods to control NexWaveform component
        diff --git a/doc/API-html/index.html b/doc/API/index.html similarity index 90% rename from doc/API-html/index.html rename to doc/API/index.html index 87a49c4..2227e59 100644 --- a/doc/API-html/index.html +++ b/doc/API/index.html @@ -16,7 +16,7 @@ - +
        API
        @@ -52,8 +52,8 @@

        Latest source code can be download at https://github.com/itead/ITEADLIB_Arduino_Nextion.

        You can clone it by:

        git clone https://github.com/itead/ITEADLIB_Arduino_Nextion
         

        Documentation

        -

        Online API documentation can be reached at http://docs.iteadstudio.com/ITEADLIB_Arduino_Nextion/.

        -

        Offline API documentation can be found under directory doc.

        +

        Online API documentation can be reached at http://docs.iteadstudio.com/ITEADLIB_Arduino_Nextion/index.html.

        +

        Offline API documentation can be open by clicking doc/API/index.html.

        Suppported Mainboards:

        All boards, which has one or more hardware serial, can be supported.

        For example:

        @@ -77,7 +77,8 @@

        If you want to disable the debug information,you need to modify the line in file NexSerialConfig.h:

        #define DEBUG_SERIAL_ENABLE ---> //#define DEBUG_SERIAL_ENABLE
         

        UNO

        If your board has only one hardware serial, such as UNO, you should disable dbSerial and redirect nexSerial to Serial(Refer to section:Serial configuration).

        -
        +

        Useful Links

        +

        http://blog.iteadstudio.com/nextion-tutorial-based-on-nextion-arduino-library/


        DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE Version 2, December 2004

        Copyright (C) 2014 ITEAD Studio

        Everyone is permitted to copy and distribute verbatim or modified copies of this license document, and changing it is allowed as long as the name is changed.

           DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 
        @@ -87,7 +88,7 @@
          
         
         
        diff --git a/doc/API-html/jquery.js b/doc/API/jquery.js
        similarity index 100%
        rename from doc/API-html/jquery.js
        rename to doc/API/jquery.js
        diff --git a/doc/API-html/md_readme.html b/doc/API/md_readme.html
        similarity index 93%
        rename from doc/API-html/md_readme.html
        rename to doc/API/md_readme.html
        index b11ab5d..0f60e0c 100644
        --- a/doc/API-html/md_readme.html
        +++ b/doc/API/md_readme.html
        @@ -16,7 +16,7 @@
         
        -  
        +  
        API
        @@ -46,7 +46,7 @@
        diff --git a/doc/API-html/nav_f.png b/doc/API/nav_f.png similarity index 100% rename from doc/API-html/nav_f.png rename to doc/API/nav_f.png diff --git a/doc/API-html/nav_g.png b/doc/API/nav_g.png similarity index 100% rename from doc/API-html/nav_g.png rename to doc/API/nav_g.png diff --git a/doc/API-html/nav_h.png b/doc/API/nav_h.png similarity index 100% rename from doc/API-html/nav_h.png rename to doc/API/nav_h.png diff --git a/doc/API-html/open.png b/doc/API/open.png similarity index 100% rename from doc/API-html/open.png rename to doc/API/open.png diff --git a/doc/API-html/pages.html b/doc/API/pages.html similarity index 94% rename from doc/API-html/pages.html rename to doc/API/pages.html index 48f134d..177f1eb 100644 --- a/doc/API-html/pages.html +++ b/doc/API/pages.html @@ -16,7 +16,7 @@ - +
        API
        @@ -51,7 +51,7 @@ diff --git a/doc/API-html/readme_8md_source.html b/doc/API/readme_8md_source.html similarity index 78% rename from doc/API-html/readme_8md_source.html rename to doc/API/readme_8md_source.html index 382601c..85a9185 100644 --- a/doc/API-html/readme_8md_source.html +++ b/doc/API/readme_8md_source.html @@ -16,7 +16,7 @@ - +
        API
        @@ -73,77 +73,81 @@
        22  git clone https://github.com/itead/ITEADLIB_Arduino_Nextion
        23 
        24 # Documentation
        -
        25 Online API documentation can be reached at <http://docs.iteadstudio.com/ITEADLIB_Arduino_Nextion/>.
        -
        26 
        -
        27 Offline API documentation can be found under directory
        -
        28 [doc](https://github.com/itead/ITEADLIB_Arduino_Nextion/tree/master/doc).
        +
        25 
        +
        26 Online API documentation can be reached at <http://docs.iteadstudio.com/ITEADLIB_Arduino_Nextion/index.html>.
        +
        27 
        +
        28 Offline API documentation can be open by clicking `doc/API/index.html`.
        29 
        -
        30 # Suppported Mainboards:
        -
        31 
        -
        32 **All boards, which has one or more hardware serial, can be supported.**
        -
        33 
        -
        34 For example:
        -
        35 
        -
        36  - Iteaduino MEGA2560
        -
        37  - Iteaduino UNO
        -
        38  - Arduino MEGA2560
        -
        39  - Arduino UNO
        -
        40 
        -
        41 # Serial configuration
        -
        42 
        -
        43 In configuration file `NexSerialConfig.h`, you can find two macros below:
        -
        44 
        -
        45  - dbSerial: Debug Serial (baudrate:9600), needed by beginners for debug your nextion applications or sketches. If
        -
        46  your complete your work, it will be a wise choice to disable Debug Serial.
        -
        47  - nexSerial: Nextion Serial, the bridge of Nextion and your mainboard.
        -
        48 
        -
        49 **Note:** the default configuration is for MEGA2560.
        -
        50 
        -
        51 ## Redirect dbSerial and nexSerial
        -
        52 
        -
        53 If you want to change the default serial to debug or communicate with Nextion ,
        -
        54 you need to modify the line in file `NexSerialConfig.h`:
        -
        55 
        -
        56  #define dbSerial Serial ---> #define dbSerial Serialxxx
        -
        57  #define nexSerial Serial2 ---> #define nexSeria Serialxxx
        -
        58 
        -
        59 ## Disable Debug Serial
        -
        60 
        -
        61 If you want to disable the debug information,you need to modify the line in file
        -
        62 `NexSerialConfig.h`:
        -
        63 
        -
        64  #define DEBUG_SERIAL_ENABLE ---> //#define DEBUG_SERIAL_ENABLE
        -
        65 
        -
        66 # UNO
        -
        67 
        -
        68 If your board has only one hardware serial, such as UNO, you should disable
        -
        69 dbSerial and redirect nexSerial to Serial(Refer to section:`Serial configuration`).
        -
        70 
        +
        30 
        +
        31 # Suppported Mainboards:
        +
        32 
        +
        33 **All boards, which has one or more hardware serial, can be supported.**
        +
        34 
        +
        35 For example:
        +
        36 
        +
        37  - Iteaduino MEGA2560
        +
        38  - Iteaduino UNO
        +
        39  - Arduino MEGA2560
        +
        40  - Arduino UNO
        +
        41 
        +
        42 # Serial configuration
        +
        43 
        +
        44 In configuration file `NexSerialConfig.h`, you can find two macros below:
        +
        45 
        +
        46  - dbSerial: Debug Serial (baudrate:9600), needed by beginners for debug your nextion applications or sketches. If
        +
        47  your complete your work, it will be a wise choice to disable Debug Serial.
        +
        48  - nexSerial: Nextion Serial, the bridge of Nextion and your mainboard.
        +
        49 
        +
        50 **Note:** the default configuration is for MEGA2560.
        +
        51 
        +
        52 ## Redirect dbSerial and nexSerial
        +
        53 
        +
        54 If you want to change the default serial to debug or communicate with Nextion ,
        +
        55 you need to modify the line in file `NexSerialConfig.h`:
        +
        56 
        +
        57  #define dbSerial Serial ---> #define dbSerial Serialxxx
        +
        58  #define nexSerial Serial2 ---> #define nexSeria Serialxxx
        +
        59 
        +
        60 ## Disable Debug Serial
        +
        61 
        +
        62 If you want to disable the debug information,you need to modify the line in file
        +
        63 `NexSerialConfig.h`:
        +
        64 
        +
        65  #define DEBUG_SERIAL_ENABLE ---> //#define DEBUG_SERIAL_ENABLE
        +
        66 
        +
        67 # UNO
        +
        68 
        +
        69 If your board has only one hardware serial, such as UNO, you should disable
        +
        70 dbSerial and redirect nexSerial to Serial(Refer to section:`Serial configuration`).
        71 
        -
        72 -------------------------------------------------------------------------------
        +
        72 # Useful Links
        73 
        -
        74 
        -
        75  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
        -
        76  Version 2, December 2004
        +
        74 <http://blog.iteadstudio.com/nextion-tutorial-based-on-nextion-arduino-library/>
        +
        75 
        +
        76 -------------------------------------------------------------------------------
        77 
        -
        78  Copyright (C) 2014 ITEAD Studio
        -
        79 
        -
        80  Everyone is permitted to copy and distribute verbatim or modified
        -
        81  copies of this license document, and changing it is allowed as long
        -
        82  as the name is changed.
        +
        78 
        +
        79  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
        +
        80  Version 2, December 2004
        +
        81 
        +
        82  Copyright (C) 2014 ITEAD Studio
        83 
        -
        84  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
        -
        85 
        -
        86  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
        +
        84  Everyone is permitted to copy and distribute verbatim or modified
        +
        85  copies of this license document, and changing it is allowed as long
        +
        86  as the name is changed.
        87 
        -
        88  0. You just DO WHAT THE FUCK YOU WANT TO.
        -
        89 
        -
        90 
        -
        91 -------------------------------------------------------------------------------
        +
        88  DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE
        +
        89 
        +
        90  TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
        +
        91 
        +
        92  0. You just DO WHAT THE FUCK YOU WANT TO.
        +
        93 
        +
        94 
        +
        95 -------------------------------------------------------------------------------
        diff --git a/doc/API-html/sync_off.png b/doc/API/sync_off.png similarity index 100% rename from doc/API-html/sync_off.png rename to doc/API/sync_off.png diff --git a/doc/API-html/sync_on.png b/doc/API/sync_on.png similarity index 100% rename from doc/API-html/sync_on.png rename to doc/API/sync_on.png diff --git a/doc/API-html/tab_a.png b/doc/API/tab_a.png similarity index 100% rename from doc/API-html/tab_a.png rename to doc/API/tab_a.png diff --git a/doc/API-html/tab_b.png b/doc/API/tab_b.png similarity index 100% rename from doc/API-html/tab_b.png rename to doc/API/tab_b.png diff --git a/doc/API-html/tab_h.png b/doc/API/tab_h.png similarity index 100% rename from doc/API-html/tab_h.png rename to doc/API/tab_h.png diff --git a/doc/API-html/tab_s.png b/doc/API/tab_s.png similarity index 100% rename from doc/API-html/tab_s.png rename to doc/API/tab_s.png diff --git a/doc/API-html/tabs.css b/doc/API/tabs.css similarity index 100% rename from doc/API-html/tabs.css rename to doc/API/tabs.css diff --git a/doc/Logo.png b/doc/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..ac038a617e16644325229c817588acc0a94a7ce9 GIT binary patch literal 1659 zcmbuAYgp0;6vqGj0RzknX{nHcmokSIUUQj-w}eb1FJY#p28xMcXkum0u+q>_K+DUt zV$QZ|mSxk>X|YOW=F*iVl_>%9l9vcAFQv^s?CZYlJiqt6&wHNt`zfG?1{t6*C;$Kq zDCB^!WsmO2Rd79*4VK|Yi9jq*4uZ~K&d7A~-V6XhX}=2MSLar-e8go2MrDSx zlQOvp90m}QaDc;3W6)C)@Y_>33@)3Knt}IhWIo9T0Jx44;2V)$J$WIR-M7b-w{0X6 zmFu>;SBs)x{HVV)Rqc3fI*naWaQj0DkylhS{D;k%{eh8JtFBd%qt3U~MeKlTo{@fn zRh))Bv7=XLvJT&HMe25L6-*wmpDiuc+eydi<_9xQOg4WMID5{FYQf>$q1;Q8BaZPb zmc{-}&8K*s1|~}lv|N{TBdPuXI0b}feM&O#NDj7ty%@AXg5D=vX`}wB2pMmv0ItdO zC2ymHryruJLU`@vfq>{oY4Mm8%6XzdNN_P=29iuy$FD-`%xoB7Hn`R3!I1>_k~LJ} zw@P+xV2Hu7}#%S&pii5RZmn?Cx@I(wmEi)&gTH)2OVyLCVaG7bO=HSvs8wTbofuTfG zJ$zPQ*Qii)gL64=;Mp=b*56BI*Ly~O)cZQ!Bxw!WC9m%srB?qqVym0a_+C3SO(yIZ znQrkydO}-^iu0M>n2k;M~@b1>Rx!XL^oL+QCjp8(-in z!ATL-zO^&9u~FzKzuNAX6}}rCzrc5Nj2tF-?Fu1jeg_S0?|t@FIuaAVSapo;5sJ~{ z@<6qt%>hhh;Kmn|m!<7K;SezrmKkP}UL0-q+-Rkur^&7O0x{nb6#3zr%8tue5wW{* z?TWGd6fBSpNh7Cvp3U61C?lp@q1}MBkGJ%DYegob1HrEzk-6?8@N=RT4$fi0s1F{H zkQ^NB(exe+r4lB77X76F8X+XB@h&75H=$?}{3>XVL0viX-oZAx@6sEOP09@}uqpri z2M_py1nlCAmwPDP8o@XZTCli`^f{uLN1qC0h-*F6 z7LVFDVU{*=Uw?G_!q|`GH}~l3Sf#CmP_Q<7jS`*-p^27`Tz|Ic?z@5`oX>xs8XMx> z$|J~)vo_F60X(dcZo2*~Pkk2IjmMolIH{k?G zQ8@z|=O!H0pU$!le>G%&$$68KCVAC?)?k!1MY}}ez5XS}@e{ub*WIj7N=Z6&&(doq zRqU@wOk)cVQOEChwDFwj+oeY0UXk6#_YZFSpW0#48TvMklc%RD+V#w^=)i@w6oi(= z?Cri)+T}du{7OAhhbWEtgs~@C{BJ62^qIp~TVtGd8;4~=jK7#wJ&J58Tw3Jy^Ty+3 zk)KA6v4D4s(y$EESdy2{sciRTK-~FOWE6PAx<}dnD9vELrky4)w?Tyr!s?*gNQ2|_7b+Cft?^njbN`zHg58_7++#smxalX~<@flpg?2952}P?#T$-R<2iI<;DI{lBK#%8Z2-m)cYDC?~YotxeuR<`^6LO-)L8GhK{&D6J$Lt zXa#C6m*1JRV}rv?Eq%stIF~J6DE&|}AE|L77l<}P_Bme^814^h5FPWd5Z%Fu?&O4x z$QI8`=bK1&4q%AT&nE?2o>b3Pk`E6xKXm={_PnlL{avNYg@=yB4@=9B0-ywj2HfzA GKlu+WN8Z~2 literal 0 HcmV?d00001 diff --git a/doxygen.doxy b/doxygen.doxy index 86fe9f4..a9d6bb7 100644 --- a/doxygen.doxy +++ b/doxygen.doxy @@ -51,14 +51,14 @@ PROJECT_BRIEF = "For Arduino developers" # and the maximum width should not exceed 200 pixels. Doxygen will copy the logo # to the output directory. -PROJECT_LOGO = C:/temp/HMI-project/doc/ITEAD-logo.JPG +PROJECT_LOGO = ./doc/Logo.png # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is # entered, it will be relative to the location where doxygen was started. If # left blank the current directory will be used. -OUTPUT_DIRECTORY = . +OUTPUT_DIRECTORY = ./doc # If the CREATE_SUBDIRS tag is set to YES, then doxygen will create 4096 sub- # directories (in 2 levels) under the output directory of each output format and @@ -1091,7 +1091,7 @@ GENERATE_HTML = YES # The default directory is: html. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_OUTPUT = API-html +HTML_OUTPUT = API # The HTML_FILE_EXTENSION tag can be used to specify the file extension for each # generated HTML page (for example: .htm, .php, .asp). @@ -1282,7 +1282,7 @@ DOCSET_PUBLISHER_NAME = Publisher # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. -GENERATE_HTMLHELP = YES +GENERATE_HTMLHELP = NO # The CHM_FILE tag can be used to specify the file name of the resulting .chm # file. You can add a path in front of the file if the result should not be diff --git a/readme.md b/readme.md index 8818e0e..2dd1f5b 100644 --- a/readme.md +++ b/readme.md @@ -22,10 +22,11 @@ You can clone it by: git clone https://github.com/itead/ITEADLIB_Arduino_Nextion # Documentation -Online API documentation can be reached at . -Offline API documentation can be found under directory -[doc](https://github.com/itead/ITEADLIB_Arduino_Nextion/tree/master/doc). +Online API documentation can be reached at . + +Offline API documentation can be open by clicking `doc/API/index.html`. + # Suppported Mainboards: