From a2ed1c15f22934861b80026e342f4071ab6eef25 Mon Sep 17 00:00:00 2001 From: zisi Date: Mon, 27 Aug 2018 16:03:09 +0300 Subject: [PATCH] Add html doxy files Signed-off-by: zisi --- .gitignore | 1 - doxygen_files/html/AccelStepper_8cpp_8d.html | 82 + .../html/AccelStepper_8cpp_8d_source.html | 80 + doxygen_files/html/CDC_8cpp_8d.html | 82 + doxygen_files/html/CDC_8cpp_8d_source.html | 80 + doxygen_files/html/CONTRIBUTING_8md.html | 78 + .../html/CONTRIBUTING_8md_source.html | 76 + .../html/HardwareSerial0_8cpp_8d.html | 82 + .../html/HardwareSerial0_8cpp_8d_source.html | 80 + .../html/HardwareSerial1_8cpp_8d.html | 82 + .../html/HardwareSerial1_8cpp_8d_source.html | 80 + .../html/HardwareSerial2_8cpp_8d.html | 82 + .../html/HardwareSerial2_8cpp_8d_source.html | 80 + .../html/HardwareSerial3_8cpp_8d.html | 82 + .../html/HardwareSerial3_8cpp_8d_source.html | 80 + .../html/HardwareSerial_8cpp_8d.html | 82 + .../html/HardwareSerial_8cpp_8d_source.html | 80 + doxygen_files/html/IPAddress_8cpp_8d.html | 82 + .../html/IPAddress_8cpp_8d_source.html | 80 + doxygen_files/html/PID__v1_8cpp_8d.html | 82 + .../html/PID__v1_8cpp_8d_source.html | 80 + doxygen_files/html/PluggableUSB_8cpp_8d.html | 82 + .../html/PluggableUSB_8cpp_8d_source.html | 80 + doxygen_files/html/Print_8cpp_8d.html | 82 + doxygen_files/html/Print_8cpp_8d_source.html | 80 + doxygen_files/html/README_8md.html | 78 + doxygen_files/html/README_8md_source.html | 76 + doxygen_files/html/Stream_8cpp_8d.html | 82 + doxygen_files/html/Stream_8cpp_8d_source.html | 80 + doxygen_files/html/Tone_8cpp_8d.html | 82 + doxygen_files/html/Tone_8cpp_8d_source.html | 80 + doxygen_files/html/USBCore_8cpp_8d.html | 82 + .../html/USBCore_8cpp_8d_source.html | 80 + doxygen_files/html/WInterrupts_8c_8d.html | 82 + .../html/WInterrupts_8c_8d_source.html | 80 + doxygen_files/html/WMath_8cpp_8d.html | 82 + doxygen_files/html/WMath_8cpp_8d_source.html | 80 + doxygen_files/html/WString_8cpp_8d.html | 82 + .../html/WString_8cpp_8d_source.html | 80 + doxygen_files/html/Wire_8cpp_8d.html | 82 + doxygen_files/html/Wire_8cpp_8d_source.html | 80 + doxygen_files/html/abi_8cpp_8d.html | 82 + doxygen_files/html/abi_8cpp_8d_source.html | 80 + doxygen_files/html/annotated.html | 90 + doxygen_files/html/as5601_8h.html | 309 ++++ doxygen_files/html/as5601_8h__dep__incl.map | 3 + doxygen_files/html/as5601_8h__dep__incl.md5 | 1 + doxygen_files/html/as5601_8h__dep__incl.png | Bin 0 -> 4291 bytes doxygen_files/html/as5601_8h__incl.map | 2 + doxygen_files/html/as5601_8h__incl.md5 | 1 + doxygen_files/html/as5601_8h__incl.png | Bin 0 -> 3113 bytes doxygen_files/html/as5601_8h_source.html | 102 ++ doxygen_files/html/bc_s.png | Bin 0 -> 676 bytes doxygen_files/html/bdwn.png | Bin 0 -> 147 bytes doxygen_files/html/classAS5601-members.html | 93 + doxygen_files/html/classAS5601.html | 655 +++++++ ...d48c32082d4bfa19bde77d614cc78dc_cgraph.map | 3 + ...d48c32082d4bfa19bde77d614cc78dc_cgraph.md5 | 1 + ...d48c32082d4bfa19bde77d614cc78dc_cgraph.png | Bin 0 -> 6012 bytes ...fd828b9871407420fb8a277d13e769c_cgraph.map | 4 + ...fd828b9871407420fb8a277d13e769c_cgraph.md5 | 1 + ...fd828b9871407420fb8a277d13e769c_cgraph.png | Bin 0 -> 6068 bytes ...cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.map | 4 + ...cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.md5 | 1 + ...cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.png | Bin 0 -> 9611 bytes ...fce6bb3f9888bca6c8527ea0d4fad88_cgraph.map | 4 + ...fce6bb3f9888bca6c8527ea0d4fad88_cgraph.md5 | 1 + ...fce6bb3f9888bca6c8527ea0d4fad88_cgraph.png | Bin 0 -> 5872 bytes ...8192e27c57aaef265e0649876ca6bf2_cgraph.map | 3 + ...8192e27c57aaef265e0649876ca6bf2_cgraph.md5 | 1 + ...8192e27c57aaef265e0649876ca6bf2_cgraph.png | Bin 0 -> 4827 bytes ...760a7dd400974baf9daebad22920bdb_cgraph.map | 5 + ...760a7dd400974baf9daebad22920bdb_cgraph.md5 | 1 + ...760a7dd400974baf9daebad22920bdb_cgraph.png | Bin 0 -> 10384 bytes doxygen_files/html/classeasycomm-members.html | 82 + doxygen_files/html/classeasycomm.html | 224 +++ ...8c229f5c44074fae9992ec9ea605046_cgraph.map | 7 + ...8c229f5c44074fae9992ec9ea605046_cgraph.md5 | 1 + ...8c229f5c44074fae9992ec9ea605046_cgraph.png | Bin 0 -> 15208 bytes ...db30a0f3a754dc281cbedab461d76f6_cgraph.map | 3 + ...db30a0f3a754dc281cbedab461d76f6_cgraph.md5 | 1 + ...db30a0f3a754dc281cbedab461d76f6_cgraph.png | Bin 0 -> 3341 bytes doxygen_files/html/classendstop-members.html | 84 + doxygen_files/html/classendstop.html | 280 +++ doxygen_files/html/classes.html | 96 + doxygen_files/html/classi2c__mux-members.html | 85 + doxygen_files/html/classi2c__mux.html | 321 ++++ doxygen_files/html/classmotor-members.html | 97 + doxygen_files/html/classmotor.html | 791 ++++++++ ...1f848ad7e9ff16b4cb61174d3a5a084_cgraph.map | 3 + ...1f848ad7e9ff16b4cb61174d3a5a084_cgraph.md5 | 1 + ...1f848ad7e9ff16b4cb61174d3a5a084_cgraph.png | Bin 0 -> 2527 bytes ...a035f9f051ce59d705654966dd95851_cgraph.map | 3 + ...a035f9f051ce59d705654966dd95851_cgraph.md5 | 1 + ...a035f9f051ce59d705654966dd95851_cgraph.png | Bin 0 -> 2036 bytes doxygen_files/html/classrs485-members.html | 88 + doxygen_files/html/classrs485.html | 430 +++++ doxygen_files/html/classtc74-members.html | 86 + doxygen_files/html/classtc74.html | 366 ++++ ...304cfec3e2fd0955db133ae0892c734_cgraph.map | 3 + ...304cfec3e2fd0955db133ae0892c734_cgraph.md5 | 1 + ...304cfec3e2fd0955db133ae0892c734_cgraph.png | Bin 0 -> 3229 bytes ...e10af3dbd52592f902f81885dc166d2_cgraph.map | 3 + ...e10af3dbd52592f902f81885dc166d2_cgraph.md5 | 1 + ...e10af3dbd52592f902f81885dc166d2_cgraph.png | Bin 0 -> 3294 bytes .../html/classwdt__timer-members.html | 81 + doxygen_files/html/classwdt__timer.html | 164 ++ doxygen_files/html/closed.png | Bin 0 -> 132 bytes ...ler_2build-satnogs_2core_2CDC_8cpp_8d.html | 82 + ...ild-satnogs_2core_2CDC_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial0_8cpp_8d.html | 82 + ...2core_2HardwareSerial0_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial1_8cpp_8d.html | 82 + ...2core_2HardwareSerial1_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial2_8cpp_8d.html | 82 + ...2core_2HardwareSerial2_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial3_8cpp_8d.html | 82 + ...2core_2HardwareSerial3_8cpp_8d_source.html | 80 + ...satnogs_2core_2HardwareSerial_8cpp_8d.html | 82 + ..._2core_2HardwareSerial_8cpp_8d_source.html | 80 + ...uild-satnogs_2core_2IPAddress_8cpp_8d.html | 82 + ...tnogs_2core_2IPAddress_8cpp_8d_source.html | 80 + ...d-satnogs_2core_2PluggableUSB_8cpp_8d.html | 82 + ...gs_2core_2PluggableUSB_8cpp_8d_source.html | 80 + ...r_2build-satnogs_2core_2Print_8cpp_8d.html | 82 + ...d-satnogs_2core_2Print_8cpp_8d_source.html | 80 + ..._2build-satnogs_2core_2Stream_8cpp_8d.html | 82 + ...-satnogs_2core_2Stream_8cpp_8d_source.html | 80 + ...er_2build-satnogs_2core_2Tone_8cpp_8d.html | 82 + ...ld-satnogs_2core_2Tone_8cpp_8d_source.html | 80 + ...2build-satnogs_2core_2USBCore_8cpp_8d.html | 82 + ...satnogs_2core_2USBCore_8cpp_8d_source.html | 80 + ...uild-satnogs_2core_2WInterrupts_8c_8d.html | 82 + ...tnogs_2core_2WInterrupts_8c_8d_source.html | 80 + ...r_2build-satnogs_2core_2WMath_8cpp_8d.html | 82 + ...d-satnogs_2core_2WMath_8cpp_8d_source.html | 80 + ...2build-satnogs_2core_2WString_8cpp_8d.html | 82 + ...satnogs_2core_2WString_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2abi_8cpp_8d.html | 82 + ...ild-satnogs_2core_2abi_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2hooks_8c_8d.html | 82 + ...ild-satnogs_2core_2hooks_8c_8d_source.html | 80 + ...er_2build-satnogs_2core_2main_8cpp_8d.html | 82 + ...ld-satnogs_2core_2main_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2new_8cpp_8d.html | 82 + ...ild-satnogs_2core_2new_8cpp_8d_source.html | 80 + ...er_2build-satnogs_2core_2wiring_8c_8d.html | 82 + ...ld-satnogs_2core_2wiring_8c_8d_source.html | 80 + ...d-satnogs_2core_2wiring__analog_8c_8d.html | 82 + ...gs_2core_2wiring__analog_8c_8d_source.html | 80 + ...-satnogs_2core_2wiring__digital_8c_8d.html | 82 + ...s_2core_2wiring__digital_8c_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__pulse_8S_8d.html | 82 + ...ogs_2core_2wiring__pulse_8S_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__pulse_8c_8d.html | 82 + ...ogs_2core_2wiring__pulse_8c_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__shift_8c_8d.html | 82 + ...ogs_2core_2wiring__shift_8c_8d_source.html | 80 + ...platformlibs_2Wire_2src_2Wire_8cpp_8d.html | 82 + ...mlibs_2Wire_2src_2Wire_8cpp_8d_source.html | 80 + ...rmlibs_2Wire_2src_2utility_2twi_8c_8d.html | 82 + ...2Wire_2src_2utility_2twi_8c_8d_source.html | 80 + .../html/dc__motor__controller_8ino.html | 900 ++++++++++ .../html/dc__motor__controller_8ino_8d.html | 82 + .../dc__motor__controller_8ino_8d_source.html | 86 + .../html/dc__motor__controller_8ino__incl.map | 12 + .../html/dc__motor__controller_8ino__incl.md5 | 1 + .../html/dc__motor__controller_8ino__incl.png | Bin 0 -> 67691 bytes ...fc01d736fe50cf5b977f755b675f11d_cgraph.map | 11 + ...fc01d736fe50cf5b977f755b675f11d_cgraph.md5 | 1 + ...fc01d736fe50cf5b977f755b675f11d_cgraph.png | Bin 0 -> 29897 bytes ...b27c796ddcae7f932e2898cba368c3b_cgraph.map | 12 + ...b27c796ddcae7f932e2898cba368c3b_cgraph.md5 | 1 + ...b27c796ddcae7f932e2898cba368c3b_cgraph.png | Bin 0 -> 43365 bytes ...e461d27b9c48d5921c00d521181f12f_cgraph.map | 25 + ...e461d27b9c48d5921c00d521181f12f_cgraph.md5 | 1 + ...e461d27b9c48d5921c00d521181f12f_cgraph.png | Bin 0 -> 127276 bytes .../dc__motor__controller_8ino_source.html | 171 ++ doxygen_files/html/dir_000000_000001.html | 76 + doxygen_files/html/dir_000000_000009.html | 76 + doxygen_files/html/dir_000002_000001.html | 76 + doxygen_files/html/dir_000010_000009.html | 76 + .../dir_04bd9f97a048e8e29eed1176e5586ecc.html | 86 + .../dir_38beefcdfcb3558d1106b46c26a5f20c.html | 96 + ...r_38beefcdfcb3558d1106b46c26a5f20c_dep.map | 5 + ...r_38beefcdfcb3558d1106b46c26a5f20c_dep.md5 | 1 + ...r_38beefcdfcb3558d1106b46c26a5f20c_dep.png | Bin 0 -> 3620 bytes .../dir_3c7b64a037e9ad6c0c39ea33f69661fe.html | 86 + .../dir_3da56ef71ef8702a491505702f15abe5.html | 86 + .../dir_4fd4009f6f22f863217bbc9f2b8a638b.html | 134 ++ .../dir_5a243316bc5cf426a65a8b5e8f471c95.html | 86 + .../dir_70afe42e74c20f2af2356f60920167ae.html | 86 + .../dir_7af253dfca86f7c40f8239e67accd169.html | 91 + .../dir_8b636201cf584fd9c928133d3359b00b.html | 95 + .../dir_921b7b18bfcf020558ee7dc94332d56d.html | 134 ++ .../dir_98ae3f12715e591266dc1e4c55181529.html | 91 + .../dir_9cc8f40ee5e9c5c95cd4df187957812a.html | 86 + .../dir_bae0fda3feaded62b2f7f632ec0a239b.html | 86 + .../dir_bc0718b08fb2015b8e59c47b2805f60c.html | 104 ++ .../dir_c6e73f16e5b17010deff06b8b4645774.html | 86 + .../dir_dde351e53af779b12eb54b1883e0572c.html | 86 + .../dir_de1abeedcbe370b22bcb1ae3c439cd31.html | 95 + .../dir_e9cb1e840313e16da47b61b12eadef1d.html | 86 + .../dir_ef2cc0c7252f5b7b7f405f3ca6708486.html | 102 ++ ...r_ef2cc0c7252f5b7b7f405f3ca6708486_dep.map | 6 + ...r_ef2cc0c7252f5b7b7f405f3ca6708486_dep.md5 | 1 + ...r_ef2cc0c7252f5b7b7f405f3ca6708486_dep.png | Bin 0 -> 4647 bytes doxygen_files/html/doc.png | Bin 0 -> 746 bytes doxygen_files/html/doxygen.css | 1596 +++++++++++++++++ doxygen_files/html/doxygen.png | Bin 0 -> 3779 bytes doxygen_files/html/dynsections.js | 127 ++ doxygen_files/html/easycomm_8h.html | 229 +++ doxygen_files/html/easycomm_8h__dep__incl.map | 5 + doxygen_files/html/easycomm_8h__dep__incl.md5 | 1 + doxygen_files/html/easycomm_8h__dep__incl.png | Bin 0 -> 14621 bytes doxygen_files/html/easycomm_8h__incl.map | 5 + doxygen_files/html/easycomm_8h__incl.md5 | 1 + doxygen_files/html/easycomm_8h__incl.png | Bin 0 -> 18733 bytes doxygen_files/html/easycomm_8h_source.html | 120 ++ doxygen_files/html/endstop_8h.html | 105 ++ doxygen_files/html/endstop_8h__dep__incl.map | 4 + doxygen_files/html/endstop_8h__dep__incl.md5 | 1 + doxygen_files/html/endstop_8h__dep__incl.png | Bin 0 -> 6677 bytes doxygen_files/html/endstop_8h_source.html | 86 + doxygen_files/html/files.html | 132 ++ doxygen_files/html/folderclosed.png | Bin 0 -> 616 bytes doxygen_files/html/folderopen.png | Bin 0 -> 597 bytes doxygen_files/html/functions.html | 393 ++++ doxygen_files/html/functions_func.html | 255 +++ doxygen_files/html/functions_vars.html | 234 +++ doxygen_files/html/globals.html | 449 +++++ doxygen_files/html/globals_8h.html | 277 +++ doxygen_files/html/globals_8h__dep__incl.map | 6 + doxygen_files/html/globals_8h__dep__incl.md5 | 1 + doxygen_files/html/globals_8h__dep__incl.png | Bin 0 -> 26562 bytes doxygen_files/html/globals_8h__incl.map | 2 + doxygen_files/html/globals_8h__incl.md5 | 1 + doxygen_files/html/globals_8h__incl.png | Bin 0 -> 3056 bytes doxygen_files/html/globals_8h_source.html | 121 ++ doxygen_files/html/globals_defs.html | 309 ++++ doxygen_files/html/globals_enum.html | 83 + doxygen_files/html/globals_eval.html | 110 ++ doxygen_files/html/globals_func.html | 104 ++ doxygen_files/html/globals_vars.html | 123 ++ doxygen_files/html/graph_legend.html | 105 ++ doxygen_files/html/graph_legend.md5 | 1 + doxygen_files/html/graph_legend.png | Bin 0 -> 19906 bytes doxygen_files/html/hooks_8c_8d.html | 82 + doxygen_files/html/hooks_8c_8d_source.html | 80 + doxygen_files/html/i2c__mux_8h.html | 135 ++ doxygen_files/html/i2c__mux_8h__dep__incl.map | 3 + doxygen_files/html/i2c__mux_8h__dep__incl.md5 | 1 + doxygen_files/html/i2c__mux_8h__dep__incl.png | Bin 0 -> 4362 bytes doxygen_files/html/i2c__mux_8h__incl.map | 2 + doxygen_files/html/i2c__mux_8h__incl.md5 | 1 + doxygen_files/html/i2c__mux_8h__incl.png | Bin 0 -> 3175 bytes doxygen_files/html/i2c__mux_8h_source.html | 88 + doxygen_files/html/index.html | 218 +++ doxygen_files/html/jquery.js | 115 ++ doxygen_files/html/main_8cpp_8d.html | 82 + doxygen_files/html/main_8cpp_8d_source.html | 80 + doxygen_files/html/md_CONTRIBUTING.html | 78 + doxygen_files/html/md_README.html | 214 +++ doxygen_files/html/menu.js | 50 + doxygen_files/html/menudata.js | 113 ++ doxygen_files/html/motor_8h.html | 104 ++ doxygen_files/html/motor_8h__dep__incl.map | 3 + doxygen_files/html/motor_8h__dep__incl.md5 | 1 + doxygen_files/html/motor_8h__dep__incl.png | Bin 0 -> 4031 bytes doxygen_files/html/motor_8h_source.html | 100 ++ doxygen_files/html/nav_f.png | Bin 0 -> 153 bytes doxygen_files/html/nav_g.png | Bin 0 -> 95 bytes doxygen_files/html/nav_h.png | Bin 0 -> 98 bytes doxygen_files/html/new_8cpp_8d.html | 82 + doxygen_files/html/new_8cpp_8d_source.html | 80 + doxygen_files/html/open.png | Bin 0 -> 123 bytes doxygen_files/html/pages.html | 82 + doxygen_files/html/rotator__pins_8h.html | 485 +++++ .../html/rotator__pins_8h__dep__incl.map | 6 + .../html/rotator__pins_8h__dep__incl.md5 | 1 + .../html/rotator__pins_8h__dep__incl.png | Bin 0 -> 26428 bytes .../html/rotator__pins_8h_source.html | 80 + doxygen_files/html/rs485_8h.html | 107 ++ doxygen_files/html/rs485_8h__dep__incl.map | 6 + doxygen_files/html/rs485_8h__dep__incl.md5 | 1 + doxygen_files/html/rs485_8h__dep__incl.png | Bin 0 -> 18103 bytes doxygen_files/html/rs485_8h_source.html | 90 + doxygen_files/html/search/all_0.html | 30 + doxygen_files/html/search/all_0.js | 26 + doxygen_files/html/search/all_1.html | 30 + doxygen_files/html/search/all_1.js | 11 + doxygen_files/html/search/all_10.html | 30 + doxygen_files/html/search/all_10.js | 30 + doxygen_files/html/search/all_11.html | 30 + doxygen_files/html/search/all_11.js | 15 + doxygen_files/html/search/all_12.html | 30 + doxygen_files/html/search/all_12.js | 5 + doxygen_files/html/search/all_13.html | 30 + doxygen_files/html/search/all_13.js | 20 + doxygen_files/html/search/all_2.html | 30 + doxygen_files/html/search/all_2.js | 6 + doxygen_files/html/search/all_3.html | 30 + doxygen_files/html/search/all_3.js | 10 + doxygen_files/html/search/all_4.html | 30 + doxygen_files/html/search/all_4.js | 9 + doxygen_files/html/search/all_5.html | 30 + doxygen_files/html/search/all_5.js | 15 + doxygen_files/html/search/all_6.html | 30 + doxygen_files/html/search/all_6.js | 6 + doxygen_files/html/search/all_7.html | 30 + doxygen_files/html/search/all_7.js | 13 + doxygen_files/html/search/all_8.html | 30 + doxygen_files/html/search/all_8.js | 14 + doxygen_files/html/search/all_9.html | 30 + doxygen_files/html/search/all_9.js | 20 + doxygen_files/html/search/all_a.html | 30 + doxygen_files/html/search/all_a.js | 5 + doxygen_files/html/search/all_b.html | 30 + doxygen_files/html/search/all_b.js | 32 + doxygen_files/html/search/all_c.html | 30 + doxygen_files/html/search/all_c.js | 5 + doxygen_files/html/search/all_d.html | 30 + doxygen_files/html/search/all_d.js | 5 + doxygen_files/html/search/all_e.html | 30 + doxygen_files/html/search/all_e.js | 19 + doxygen_files/html/search/all_f.html | 30 + doxygen_files/html/search/all_f.js | 16 + doxygen_files/html/search/classes_0.html | 30 + doxygen_files/html/search/classes_0.js | 5 + doxygen_files/html/search/classes_1.html | 30 + doxygen_files/html/search/classes_1.js | 4 + doxygen_files/html/search/classes_2.html | 30 + doxygen_files/html/search/classes_2.js | 5 + doxygen_files/html/search/classes_3.html | 30 + doxygen_files/html/search/classes_3.js | 4 + doxygen_files/html/search/classes_4.html | 30 + doxygen_files/html/search/classes_4.js | 4 + doxygen_files/html/search/classes_5.html | 30 + doxygen_files/html/search/classes_5.js | 4 + doxygen_files/html/search/classes_6.html | 30 + doxygen_files/html/search/classes_6.js | 4 + doxygen_files/html/search/classes_7.html | 30 + doxygen_files/html/search/classes_7.js | 4 + doxygen_files/html/search/close.png | Bin 0 -> 273 bytes doxygen_files/html/search/defines_0.html | 30 + doxygen_files/html/search/defines_0.js | 7 + doxygen_files/html/search/defines_1.html | 30 + doxygen_files/html/search/defines_1.js | 5 + doxygen_files/html/search/defines_2.html | 30 + doxygen_files/html/search/defines_2.js | 5 + doxygen_files/html/search/defines_3.html | 30 + doxygen_files/html/search/defines_3.js | 4 + doxygen_files/html/search/defines_4.html | 30 + doxygen_files/html/search/defines_4.js | 4 + doxygen_files/html/search/defines_5.html | 30 + doxygen_files/html/search/defines_5.js | 5 + doxygen_files/html/search/defines_6.html | 30 + doxygen_files/html/search/defines_6.js | 4 + doxygen_files/html/search/defines_7.html | 30 + doxygen_files/html/search/defines_7.js | 24 + doxygen_files/html/search/defines_8.html | 30 + doxygen_files/html/search/defines_8.js | 4 + doxygen_files/html/search/defines_9.html | 30 + doxygen_files/html/search/defines_9.js | 9 + doxygen_files/html/search/defines_a.html | 30 + doxygen_files/html/search/defines_a.js | 8 + doxygen_files/html/search/defines_b.html | 30 + doxygen_files/html/search/defines_b.js | 10 + doxygen_files/html/search/defines_c.html | 30 + doxygen_files/html/search/defines_c.js | 9 + doxygen_files/html/search/enums_0.html | 30 + doxygen_files/html/search/enums_0.js | 6 + doxygen_files/html/search/enumvalues_0.html | 30 + doxygen_files/html/search/enumvalues_0.js | 4 + doxygen_files/html/search/enumvalues_1.html | 30 + doxygen_files/html/search/enumvalues_1.js | 4 + doxygen_files/html/search/enumvalues_2.html | 30 + doxygen_files/html/search/enumvalues_2.js | 4 + doxygen_files/html/search/enumvalues_3.html | 30 + doxygen_files/html/search/enumvalues_3.js | 5 + doxygen_files/html/search/enumvalues_4.html | 30 + doxygen_files/html/search/enumvalues_4.js | 4 + doxygen_files/html/search/enumvalues_5.html | 30 + doxygen_files/html/search/enumvalues_5.js | 4 + doxygen_files/html/search/enumvalues_6.html | 30 + doxygen_files/html/search/enumvalues_6.js | 5 + doxygen_files/html/search/enumvalues_7.html | 30 + doxygen_files/html/search/enumvalues_7.js | 5 + doxygen_files/html/search/enumvalues_8.html | 30 + doxygen_files/html/search/enumvalues_8.js | 4 + doxygen_files/html/search/files_0.html | 30 + doxygen_files/html/search/files_0.js | 5 + doxygen_files/html/search/files_1.html | 30 + doxygen_files/html/search/files_1.js | 4 + doxygen_files/html/search/files_2.html | 30 + doxygen_files/html/search/files_2.js | 5 + doxygen_files/html/search/files_3.html | 30 + doxygen_files/html/search/files_3.js | 5 + doxygen_files/html/search/files_4.html | 30 + doxygen_files/html/search/files_4.js | 4 + doxygen_files/html/search/files_5.html | 30 + doxygen_files/html/search/files_5.js | 9 + doxygen_files/html/search/files_6.html | 30 + doxygen_files/html/search/files_6.js | 5 + doxygen_files/html/search/files_7.html | 30 + doxygen_files/html/search/files_7.js | 5 + doxygen_files/html/search/files_8.html | 30 + doxygen_files/html/search/files_8.js | 4 + doxygen_files/html/search/files_9.html | 30 + doxygen_files/html/search/files_9.js | 6 + doxygen_files/html/search/files_a.html | 30 + doxygen_files/html/search/files_a.js | 6 + doxygen_files/html/search/files_b.html | 30 + doxygen_files/html/search/files_b.js | 5 + doxygen_files/html/search/files_c.html | 30 + doxygen_files/html/search/files_c.js | 6 + doxygen_files/html/search/files_d.html | 30 + doxygen_files/html/search/files_d.js | 4 + doxygen_files/html/search/files_e.html | 30 + doxygen_files/html/search/files_e.js | 14 + doxygen_files/html/search/functions_0.html | 30 + doxygen_files/html/search/functions_0.js | 4 + doxygen_files/html/search/functions_1.html | 30 + doxygen_files/html/search/functions_1.js | 4 + doxygen_files/html/search/functions_2.html | 30 + doxygen_files/html/search/functions_2.js | 5 + doxygen_files/html/search/functions_3.html | 30 + doxygen_files/html/search/functions_3.js | 8 + doxygen_files/html/search/functions_4.html | 30 + doxygen_files/html/search/functions_4.js | 4 + doxygen_files/html/search/functions_5.html | 30 + doxygen_files/html/search/functions_5.js | 12 + doxygen_files/html/search/functions_6.html | 30 + doxygen_files/html/search/functions_6.js | 4 + doxygen_files/html/search/functions_7.html | 30 + doxygen_files/html/search/functions_7.js | 12 + doxygen_files/html/search/functions_8.html | 30 + doxygen_files/html/search/functions_8.js | 4 + doxygen_files/html/search/functions_9.html | 30 + doxygen_files/html/search/functions_9.js | 5 + doxygen_files/html/search/functions_a.html | 30 + doxygen_files/html/search/functions_a.js | 4 + doxygen_files/html/search/functions_b.html | 30 + doxygen_files/html/search/functions_b.js | 5 + doxygen_files/html/search/functions_c.html | 30 + doxygen_files/html/search/functions_c.js | 14 + doxygen_files/html/search/functions_d.html | 30 + doxygen_files/html/search/functions_d.js | 4 + doxygen_files/html/search/functions_e.html | 30 + doxygen_files/html/search/functions_e.js | 6 + doxygen_files/html/search/mag_sel.png | Bin 0 -> 563 bytes doxygen_files/html/search/nomatches.html | 12 + doxygen_files/html/search/pages_0.html | 30 + doxygen_files/html/search/pages_0.js | 4 + doxygen_files/html/search/pages_1.html | 30 + doxygen_files/html/search/pages_1.js | 4 + doxygen_files/html/search/search.css | 271 +++ doxygen_files/html/search/search.js | 814 +++++++++ doxygen_files/html/search/search_l.png | Bin 0 -> 604 bytes doxygen_files/html/search/search_m.png | Bin 0 -> 158 bytes doxygen_files/html/search/search_r.png | Bin 0 -> 612 bytes doxygen_files/html/search/searchdata.js | 39 + doxygen_files/html/search/variables_0.html | 30 + doxygen_files/html/search/variables_0.js | 21 + doxygen_files/html/search/variables_1.html | 30 + doxygen_files/html/search/variables_1.js | 7 + doxygen_files/html/search/variables_2.html | 30 + doxygen_files/html/search/variables_2.js | 4 + doxygen_files/html/search/variables_3.html | 30 + doxygen_files/html/search/variables_3.js | 5 + doxygen_files/html/search/variables_4.html | 30 + doxygen_files/html/search/variables_4.js | 5 + doxygen_files/html/search/variables_5.html | 30 + doxygen_files/html/search/variables_5.js | 4 + doxygen_files/html/search/variables_6.html | 30 + doxygen_files/html/search/variables_6.js | 7 + doxygen_files/html/search/variables_7.html | 30 + doxygen_files/html/search/variables_7.js | 4 + doxygen_files/html/search/variables_8.html | 30 + doxygen_files/html/search/variables_8.js | 5 + doxygen_files/html/search/variables_9.html | 30 + doxygen_files/html/search/variables_9.js | 7 + doxygen_files/html/search/variables_a.html | 30 + doxygen_files/html/search/variables_a.js | 6 + doxygen_files/html/search/variables_b.html | 30 + doxygen_files/html/search/variables_b.js | 8 + doxygen_files/html/search/variables_c.html | 30 + doxygen_files/html/search/variables_c.js | 5 + doxygen_files/html/search/variables_d.html | 30 + doxygen_files/html/search/variables_d.js | 4 + doxygen_files/html/search/variables_e.html | 30 + doxygen_files/html/search/variables_e.js | 4 + doxygen_files/html/splitbar.png | Bin 0 -> 314 bytes ...ler_2build-satnogs_2core_2CDC_8cpp_8d.html | 82 + ...ild-satnogs_2core_2CDC_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial0_8cpp_8d.html | 82 + ...2core_2HardwareSerial0_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial1_8cpp_8d.html | 82 + ...2core_2HardwareSerial1_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial2_8cpp_8d.html | 82 + ...2core_2HardwareSerial2_8cpp_8d_source.html | 80 + ...atnogs_2core_2HardwareSerial3_8cpp_8d.html | 82 + ...2core_2HardwareSerial3_8cpp_8d_source.html | 80 + ...satnogs_2core_2HardwareSerial_8cpp_8d.html | 82 + ..._2core_2HardwareSerial_8cpp_8d_source.html | 80 + ...uild-satnogs_2core_2IPAddress_8cpp_8d.html | 82 + ...tnogs_2core_2IPAddress_8cpp_8d_source.html | 80 + ...d-satnogs_2core_2PluggableUSB_8cpp_8d.html | 82 + ...gs_2core_2PluggableUSB_8cpp_8d_source.html | 80 + ...r_2build-satnogs_2core_2Print_8cpp_8d.html | 82 + ...d-satnogs_2core_2Print_8cpp_8d_source.html | 80 + ..._2build-satnogs_2core_2Stream_8cpp_8d.html | 82 + ...-satnogs_2core_2Stream_8cpp_8d_source.html | 80 + ...er_2build-satnogs_2core_2Tone_8cpp_8d.html | 82 + ...ld-satnogs_2core_2Tone_8cpp_8d_source.html | 80 + ...2build-satnogs_2core_2USBCore_8cpp_8d.html | 82 + ...satnogs_2core_2USBCore_8cpp_8d_source.html | 80 + ...uild-satnogs_2core_2WInterrupts_8c_8d.html | 82 + ...tnogs_2core_2WInterrupts_8c_8d_source.html | 80 + ...r_2build-satnogs_2core_2WMath_8cpp_8d.html | 82 + ...d-satnogs_2core_2WMath_8cpp_8d_source.html | 80 + ...2build-satnogs_2core_2WString_8cpp_8d.html | 82 + ...satnogs_2core_2WString_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2abi_8cpp_8d.html | 82 + ...ild-satnogs_2core_2abi_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2hooks_8c_8d.html | 82 + ...ild-satnogs_2core_2hooks_8c_8d_source.html | 80 + ...er_2build-satnogs_2core_2main_8cpp_8d.html | 82 + ...ld-satnogs_2core_2main_8cpp_8d_source.html | 80 + ...ler_2build-satnogs_2core_2new_8cpp_8d.html | 82 + ...ild-satnogs_2core_2new_8cpp_8d_source.html | 80 + ...er_2build-satnogs_2core_2wiring_8c_8d.html | 82 + ...ld-satnogs_2core_2wiring_8c_8d_source.html | 80 + ...d-satnogs_2core_2wiring__analog_8c_8d.html | 82 + ...gs_2core_2wiring__analog_8c_8d_source.html | 80 + ...-satnogs_2core_2wiring__digital_8c_8d.html | 82 + ...s_2core_2wiring__digital_8c_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__pulse_8S_8d.html | 82 + ...ogs_2core_2wiring__pulse_8S_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__pulse_8c_8d.html | 82 + ...ogs_2core_2wiring__pulse_8c_8d_source.html | 80 + ...ld-satnogs_2core_2wiring__shift_8c_8d.html | 82 + ...ogs_2core_2wiring__shift_8c_8d_source.html | 80 + ...platformlibs_2Wire_2src_2Wire_8cpp_8d.html | 82 + ...mlibs_2Wire_2src_2Wire_8cpp_8d_source.html | 80 + ...rmlibs_2Wire_2src_2utility_2twi_8c_8d.html | 82 + ...2Wire_2src_2utility_2twi_8c_8d_source.html | 80 + .../html/stepper__motor__controller_8ino.html | 798 +++++++++ .../stepper__motor__controller_8ino_8d.html | 82 + ...per__motor__controller_8ino_8d_source.html | 83 + .../stepper__motor__controller_8ino__incl.map | 8 + .../stepper__motor__controller_8ino__incl.md5 | 1 + .../stepper__motor__controller_8ino__incl.png | Bin 0 -> 51805 bytes ...fc01d736fe50cf5b977f755b675f11d_cgraph.map | 8 + ...fc01d736fe50cf5b977f755b675f11d_cgraph.md5 | 1 + ...fc01d736fe50cf5b977f755b675f11d_cgraph.png | Bin 0 -> 16496 bytes ...e461d27b9c48d5921c00d521181f12f_cgraph.map | 15 + ...e461d27b9c48d5921c00d521181f12f_cgraph.md5 | 1 + ...e461d27b9c48d5921c00d521181f12f_cgraph.png | Bin 0 -> 46832 bytes ...e48c9319f61788ed4622597bdaf17ab_cgraph.map | 6 + ...e48c9319f61788ed4622597bdaf17ab_cgraph.md5 | 1 + ...e48c9319f61788ed4622597bdaf17ab_cgraph.png | Bin 0 -> 11875 bytes ...tepper__motor__controller_8ino_source.html | 135 ++ .../html/struct__control-members.html | 89 + doxygen_files/html/struct__control.html | 312 ++++ .../html/struct__rotator-members.html | 90 + doxygen_files/html/struct__rotator.html | 336 ++++ doxygen_files/html/sync_off.png | Bin 0 -> 853 bytes doxygen_files/html/sync_on.png | Bin 0 -> 845 bytes doxygen_files/html/tab_a.png | Bin 0 -> 142 bytes doxygen_files/html/tab_b.png | Bin 0 -> 169 bytes doxygen_files/html/tab_h.png | Bin 0 -> 177 bytes doxygen_files/html/tab_s.png | Bin 0 -> 184 bytes doxygen_files/html/tabs.css | 1 + doxygen_files/html/tc74_8h.html | 213 +++ doxygen_files/html/tc74_8h__dep__incl.map | 3 + doxygen_files/html/tc74_8h__dep__incl.md5 | 1 + doxygen_files/html/tc74_8h__dep__incl.png | Bin 0 -> 4105 bytes doxygen_files/html/tc74_8h__incl.map | 2 + doxygen_files/html/tc74_8h__incl.md5 | 1 + doxygen_files/html/tc74_8h__incl.png | Bin 0 -> 2907 bytes doxygen_files/html/tc74_8h_source.html | 93 + doxygen_files/html/twi_8c_8d.html | 82 + doxygen_files/html/twi_8c_8d_source.html | 80 + doxygen_files/html/watchdog_8h.html | 163 ++ doxygen_files/html/watchdog_8h__dep__incl.map | 4 + doxygen_files/html/watchdog_8h__dep__incl.md5 | 1 + doxygen_files/html/watchdog_8h__dep__incl.png | Bin 0 -> 7151 bytes doxygen_files/html/watchdog_8h__incl.map | 6 + doxygen_files/html/watchdog_8h__incl.md5 | 1 + doxygen_files/html/watchdog_8h__incl.png | Bin 0 -> 23462 bytes ...3905d6fb5c4d433a49f527fa6ab811f_cgraph.map | 6 + ...3905d6fb5c4d433a49f527fa6ab811f_cgraph.md5 | 1 + ...3905d6fb5c4d433a49f527fa6ab811f_cgraph.png | Bin 0 -> 9604 bytes doxygen_files/html/watchdog_8h_source.html | 99 + doxygen_files/html/wiring_8c_8d.html | 82 + doxygen_files/html/wiring_8c_8d_source.html | 80 + doxygen_files/html/wiring__analog_8c_8d.html | 82 + .../html/wiring__analog_8c_8d_source.html | 80 + doxygen_files/html/wiring__digital_8c_8d.html | 82 + .../html/wiring__digital_8c_8d_source.html | 80 + doxygen_files/html/wiring__pulse_8S_8d.html | 82 + .../html/wiring__pulse_8S_8d_source.html | 80 + doxygen_files/html/wiring__pulse_8c_8d.html | 82 + .../html/wiring__pulse_8c_8d_source.html | 80 + doxygen_files/html/wiring__shift_8c_8d.html | 82 + .../html/wiring__shift_8c_8d_source.html | 80 + 607 files changed, 36216 insertions(+), 1 deletion(-) create mode 100644 doxygen_files/html/AccelStepper_8cpp_8d.html create mode 100644 doxygen_files/html/AccelStepper_8cpp_8d_source.html create mode 100644 doxygen_files/html/CDC_8cpp_8d.html create mode 100644 doxygen_files/html/CDC_8cpp_8d_source.html create mode 100644 doxygen_files/html/CONTRIBUTING_8md.html create mode 100644 doxygen_files/html/CONTRIBUTING_8md_source.html create mode 100644 doxygen_files/html/HardwareSerial0_8cpp_8d.html create mode 100644 doxygen_files/html/HardwareSerial0_8cpp_8d_source.html create mode 100644 doxygen_files/html/HardwareSerial1_8cpp_8d.html create mode 100644 doxygen_files/html/HardwareSerial1_8cpp_8d_source.html create mode 100644 doxygen_files/html/HardwareSerial2_8cpp_8d.html create mode 100644 doxygen_files/html/HardwareSerial2_8cpp_8d_source.html create mode 100644 doxygen_files/html/HardwareSerial3_8cpp_8d.html create mode 100644 doxygen_files/html/HardwareSerial3_8cpp_8d_source.html create mode 100644 doxygen_files/html/HardwareSerial_8cpp_8d.html create mode 100644 doxygen_files/html/HardwareSerial_8cpp_8d_source.html create mode 100644 doxygen_files/html/IPAddress_8cpp_8d.html create mode 100644 doxygen_files/html/IPAddress_8cpp_8d_source.html create mode 100644 doxygen_files/html/PID__v1_8cpp_8d.html create mode 100644 doxygen_files/html/PID__v1_8cpp_8d_source.html create mode 100644 doxygen_files/html/PluggableUSB_8cpp_8d.html create mode 100644 doxygen_files/html/PluggableUSB_8cpp_8d_source.html create mode 100644 doxygen_files/html/Print_8cpp_8d.html create mode 100644 doxygen_files/html/Print_8cpp_8d_source.html create mode 100644 doxygen_files/html/README_8md.html create mode 100644 doxygen_files/html/README_8md_source.html create mode 100644 doxygen_files/html/Stream_8cpp_8d.html create mode 100644 doxygen_files/html/Stream_8cpp_8d_source.html create mode 100644 doxygen_files/html/Tone_8cpp_8d.html create mode 100644 doxygen_files/html/Tone_8cpp_8d_source.html create mode 100644 doxygen_files/html/USBCore_8cpp_8d.html create mode 100644 doxygen_files/html/USBCore_8cpp_8d_source.html create mode 100644 doxygen_files/html/WInterrupts_8c_8d.html create mode 100644 doxygen_files/html/WInterrupts_8c_8d_source.html create mode 100644 doxygen_files/html/WMath_8cpp_8d.html create mode 100644 doxygen_files/html/WMath_8cpp_8d_source.html create mode 100644 doxygen_files/html/WString_8cpp_8d.html create mode 100644 doxygen_files/html/WString_8cpp_8d_source.html create mode 100644 doxygen_files/html/Wire_8cpp_8d.html create mode 100644 doxygen_files/html/Wire_8cpp_8d_source.html create mode 100644 doxygen_files/html/abi_8cpp_8d.html create mode 100644 doxygen_files/html/abi_8cpp_8d_source.html create mode 100644 doxygen_files/html/annotated.html create mode 100644 doxygen_files/html/as5601_8h.html create mode 100644 doxygen_files/html/as5601_8h__dep__incl.map create mode 100644 doxygen_files/html/as5601_8h__dep__incl.md5 create mode 100644 doxygen_files/html/as5601_8h__dep__incl.png create mode 100644 doxygen_files/html/as5601_8h__incl.map create mode 100644 doxygen_files/html/as5601_8h__incl.md5 create mode 100644 doxygen_files/html/as5601_8h__incl.png create mode 100644 doxygen_files/html/as5601_8h_source.html create mode 100644 doxygen_files/html/bc_s.png create mode 100644 doxygen_files/html/bdwn.png create mode 100644 doxygen_files/html/classAS5601-members.html create mode 100644 doxygen_files/html/classAS5601.html create mode 100644 doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.map create mode 100644 doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.png create mode 100644 doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.map create mode 100644 doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.png create mode 100644 doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.map create mode 100644 doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.png create mode 100644 doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.map create mode 100644 doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.png create mode 100644 doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.map create mode 100644 doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.png create mode 100644 doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.map create mode 100644 doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.md5 create mode 100644 doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.png create mode 100644 doxygen_files/html/classeasycomm-members.html create mode 100644 doxygen_files/html/classeasycomm.html create mode 100644 doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.map create mode 100644 doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.md5 create mode 100644 doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.png create mode 100644 doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.map create mode 100644 doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.md5 create mode 100644 doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.png create mode 100644 doxygen_files/html/classendstop-members.html create mode 100644 doxygen_files/html/classendstop.html create mode 100644 doxygen_files/html/classes.html create mode 100644 doxygen_files/html/classi2c__mux-members.html create mode 100644 doxygen_files/html/classi2c__mux.html create mode 100644 doxygen_files/html/classmotor-members.html create mode 100644 doxygen_files/html/classmotor.html create mode 100644 doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.map create mode 100644 doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.md5 create mode 100644 doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.png create mode 100644 doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.map create mode 100644 doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.md5 create mode 100644 doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.png create mode 100644 doxygen_files/html/classrs485-members.html create mode 100644 doxygen_files/html/classrs485.html create mode 100644 doxygen_files/html/classtc74-members.html create mode 100644 doxygen_files/html/classtc74.html create mode 100644 doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.map create mode 100644 doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.md5 create mode 100644 doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.png create mode 100644 doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.map create mode 100644 doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.md5 create mode 100644 doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.png create mode 100644 doxygen_files/html/classwdt__timer-members.html create mode 100644 doxygen_files/html/classwdt__timer.html create mode 100644 doxygen_files/html/closed.png create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_8ino.html create mode 100644 doxygen_files/html/dc__motor__controller_8ino_8d.html create mode 100644 doxygen_files/html/dc__motor__controller_8ino_8d_source.html create mode 100644 doxygen_files/html/dc__motor__controller_8ino__incl.map create mode 100644 doxygen_files/html/dc__motor__controller_8ino__incl.md5 create mode 100644 doxygen_files/html/dc__motor__controller_8ino__incl.png create mode 100644 doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.map create mode 100644 doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 create mode 100644 doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png create mode 100644 doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.map create mode 100644 doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.md5 create mode 100644 doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.png create mode 100644 doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.map create mode 100644 doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 create mode 100644 doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png create mode 100644 doxygen_files/html/dc__motor__controller_8ino_source.html create mode 100644 doxygen_files/html/dir_000000_000001.html create mode 100644 doxygen_files/html/dir_000000_000009.html create mode 100644 doxygen_files/html/dir_000002_000001.html create mode 100644 doxygen_files/html/dir_000010_000009.html create mode 100644 doxygen_files/html/dir_04bd9f97a048e8e29eed1176e5586ecc.html create mode 100644 doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c.html create mode 100644 doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.map create mode 100644 doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.md5 create mode 100644 doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.png create mode 100644 doxygen_files/html/dir_3c7b64a037e9ad6c0c39ea33f69661fe.html create mode 100644 doxygen_files/html/dir_3da56ef71ef8702a491505702f15abe5.html create mode 100644 doxygen_files/html/dir_4fd4009f6f22f863217bbc9f2b8a638b.html create mode 100644 doxygen_files/html/dir_5a243316bc5cf426a65a8b5e8f471c95.html create mode 100644 doxygen_files/html/dir_70afe42e74c20f2af2356f60920167ae.html create mode 100644 doxygen_files/html/dir_7af253dfca86f7c40f8239e67accd169.html create mode 100644 doxygen_files/html/dir_8b636201cf584fd9c928133d3359b00b.html create mode 100644 doxygen_files/html/dir_921b7b18bfcf020558ee7dc94332d56d.html create mode 100644 doxygen_files/html/dir_98ae3f12715e591266dc1e4c55181529.html create mode 100644 doxygen_files/html/dir_9cc8f40ee5e9c5c95cd4df187957812a.html create mode 100644 doxygen_files/html/dir_bae0fda3feaded62b2f7f632ec0a239b.html create mode 100644 doxygen_files/html/dir_bc0718b08fb2015b8e59c47b2805f60c.html create mode 100644 doxygen_files/html/dir_c6e73f16e5b17010deff06b8b4645774.html create mode 100644 doxygen_files/html/dir_dde351e53af779b12eb54b1883e0572c.html create mode 100644 doxygen_files/html/dir_de1abeedcbe370b22bcb1ae3c439cd31.html create mode 100644 doxygen_files/html/dir_e9cb1e840313e16da47b61b12eadef1d.html create mode 100644 doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486.html create mode 100644 doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.map create mode 100644 doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.md5 create mode 100644 doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.png create mode 100644 doxygen_files/html/doc.png create mode 100644 doxygen_files/html/doxygen.css create mode 100644 doxygen_files/html/doxygen.png create mode 100644 doxygen_files/html/dynsections.js create mode 100644 doxygen_files/html/easycomm_8h.html create mode 100644 doxygen_files/html/easycomm_8h__dep__incl.map create mode 100644 doxygen_files/html/easycomm_8h__dep__incl.md5 create mode 100644 doxygen_files/html/easycomm_8h__dep__incl.png create mode 100644 doxygen_files/html/easycomm_8h__incl.map create mode 100644 doxygen_files/html/easycomm_8h__incl.md5 create mode 100644 doxygen_files/html/easycomm_8h__incl.png create mode 100644 doxygen_files/html/easycomm_8h_source.html create mode 100644 doxygen_files/html/endstop_8h.html create mode 100644 doxygen_files/html/endstop_8h__dep__incl.map create mode 100644 doxygen_files/html/endstop_8h__dep__incl.md5 create mode 100644 doxygen_files/html/endstop_8h__dep__incl.png create mode 100644 doxygen_files/html/endstop_8h_source.html create mode 100644 doxygen_files/html/files.html create mode 100644 doxygen_files/html/folderclosed.png create mode 100644 doxygen_files/html/folderopen.png create mode 100644 doxygen_files/html/functions.html create mode 100644 doxygen_files/html/functions_func.html create mode 100644 doxygen_files/html/functions_vars.html create mode 100644 doxygen_files/html/globals.html create mode 100644 doxygen_files/html/globals_8h.html create mode 100644 doxygen_files/html/globals_8h__dep__incl.map create mode 100644 doxygen_files/html/globals_8h__dep__incl.md5 create mode 100644 doxygen_files/html/globals_8h__dep__incl.png create mode 100644 doxygen_files/html/globals_8h__incl.map create mode 100644 doxygen_files/html/globals_8h__incl.md5 create mode 100644 doxygen_files/html/globals_8h__incl.png create mode 100644 doxygen_files/html/globals_8h_source.html create mode 100644 doxygen_files/html/globals_defs.html create mode 100644 doxygen_files/html/globals_enum.html create mode 100644 doxygen_files/html/globals_eval.html create mode 100644 doxygen_files/html/globals_func.html create mode 100644 doxygen_files/html/globals_vars.html create mode 100644 doxygen_files/html/graph_legend.html create mode 100644 doxygen_files/html/graph_legend.md5 create mode 100644 doxygen_files/html/graph_legend.png create mode 100644 doxygen_files/html/hooks_8c_8d.html create mode 100644 doxygen_files/html/hooks_8c_8d_source.html create mode 100644 doxygen_files/html/i2c__mux_8h.html create mode 100644 doxygen_files/html/i2c__mux_8h__dep__incl.map create mode 100644 doxygen_files/html/i2c__mux_8h__dep__incl.md5 create mode 100644 doxygen_files/html/i2c__mux_8h__dep__incl.png create mode 100644 doxygen_files/html/i2c__mux_8h__incl.map create mode 100644 doxygen_files/html/i2c__mux_8h__incl.md5 create mode 100644 doxygen_files/html/i2c__mux_8h__incl.png create mode 100644 doxygen_files/html/i2c__mux_8h_source.html create mode 100644 doxygen_files/html/index.html create mode 100644 doxygen_files/html/jquery.js create mode 100644 doxygen_files/html/main_8cpp_8d.html create mode 100644 doxygen_files/html/main_8cpp_8d_source.html create mode 100644 doxygen_files/html/md_CONTRIBUTING.html create mode 100644 doxygen_files/html/md_README.html create mode 100644 doxygen_files/html/menu.js create mode 100644 doxygen_files/html/menudata.js create mode 100644 doxygen_files/html/motor_8h.html create mode 100644 doxygen_files/html/motor_8h__dep__incl.map create mode 100644 doxygen_files/html/motor_8h__dep__incl.md5 create mode 100644 doxygen_files/html/motor_8h__dep__incl.png create mode 100644 doxygen_files/html/motor_8h_source.html create mode 100644 doxygen_files/html/nav_f.png create mode 100644 doxygen_files/html/nav_g.png create mode 100644 doxygen_files/html/nav_h.png create mode 100644 doxygen_files/html/new_8cpp_8d.html create mode 100644 doxygen_files/html/new_8cpp_8d_source.html create mode 100644 doxygen_files/html/open.png create mode 100644 doxygen_files/html/pages.html create mode 100644 doxygen_files/html/rotator__pins_8h.html create mode 100644 doxygen_files/html/rotator__pins_8h__dep__incl.map create mode 100644 doxygen_files/html/rotator__pins_8h__dep__incl.md5 create mode 100644 doxygen_files/html/rotator__pins_8h__dep__incl.png create mode 100644 doxygen_files/html/rotator__pins_8h_source.html create mode 100644 doxygen_files/html/rs485_8h.html create mode 100644 doxygen_files/html/rs485_8h__dep__incl.map create mode 100644 doxygen_files/html/rs485_8h__dep__incl.md5 create mode 100644 doxygen_files/html/rs485_8h__dep__incl.png create mode 100644 doxygen_files/html/rs485_8h_source.html create mode 100644 doxygen_files/html/search/all_0.html create mode 100644 doxygen_files/html/search/all_0.js create mode 100644 doxygen_files/html/search/all_1.html create mode 100644 doxygen_files/html/search/all_1.js create mode 100644 doxygen_files/html/search/all_10.html create mode 100644 doxygen_files/html/search/all_10.js create mode 100644 doxygen_files/html/search/all_11.html create mode 100644 doxygen_files/html/search/all_11.js create mode 100644 doxygen_files/html/search/all_12.html create mode 100644 doxygen_files/html/search/all_12.js create mode 100644 doxygen_files/html/search/all_13.html create mode 100644 doxygen_files/html/search/all_13.js create mode 100644 doxygen_files/html/search/all_2.html create mode 100644 doxygen_files/html/search/all_2.js create mode 100644 doxygen_files/html/search/all_3.html create mode 100644 doxygen_files/html/search/all_3.js create mode 100644 doxygen_files/html/search/all_4.html create mode 100644 doxygen_files/html/search/all_4.js create mode 100644 doxygen_files/html/search/all_5.html create mode 100644 doxygen_files/html/search/all_5.js create mode 100644 doxygen_files/html/search/all_6.html create mode 100644 doxygen_files/html/search/all_6.js create mode 100644 doxygen_files/html/search/all_7.html create mode 100644 doxygen_files/html/search/all_7.js create mode 100644 doxygen_files/html/search/all_8.html create mode 100644 doxygen_files/html/search/all_8.js create mode 100644 doxygen_files/html/search/all_9.html create mode 100644 doxygen_files/html/search/all_9.js create mode 100644 doxygen_files/html/search/all_a.html create mode 100644 doxygen_files/html/search/all_a.js create mode 100644 doxygen_files/html/search/all_b.html create mode 100644 doxygen_files/html/search/all_b.js create mode 100644 doxygen_files/html/search/all_c.html create mode 100644 doxygen_files/html/search/all_c.js create mode 100644 doxygen_files/html/search/all_d.html create mode 100644 doxygen_files/html/search/all_d.js create mode 100644 doxygen_files/html/search/all_e.html create mode 100644 doxygen_files/html/search/all_e.js create mode 100644 doxygen_files/html/search/all_f.html create mode 100644 doxygen_files/html/search/all_f.js create mode 100644 doxygen_files/html/search/classes_0.html create mode 100644 doxygen_files/html/search/classes_0.js create mode 100644 doxygen_files/html/search/classes_1.html create mode 100644 doxygen_files/html/search/classes_1.js create mode 100644 doxygen_files/html/search/classes_2.html create mode 100644 doxygen_files/html/search/classes_2.js create mode 100644 doxygen_files/html/search/classes_3.html create mode 100644 doxygen_files/html/search/classes_3.js create mode 100644 doxygen_files/html/search/classes_4.html create mode 100644 doxygen_files/html/search/classes_4.js create mode 100644 doxygen_files/html/search/classes_5.html create mode 100644 doxygen_files/html/search/classes_5.js create mode 100644 doxygen_files/html/search/classes_6.html create mode 100644 doxygen_files/html/search/classes_6.js create mode 100644 doxygen_files/html/search/classes_7.html create mode 100644 doxygen_files/html/search/classes_7.js create mode 100644 doxygen_files/html/search/close.png create mode 100644 doxygen_files/html/search/defines_0.html create mode 100644 doxygen_files/html/search/defines_0.js create mode 100644 doxygen_files/html/search/defines_1.html create mode 100644 doxygen_files/html/search/defines_1.js create mode 100644 doxygen_files/html/search/defines_2.html create mode 100644 doxygen_files/html/search/defines_2.js create mode 100644 doxygen_files/html/search/defines_3.html create mode 100644 doxygen_files/html/search/defines_3.js create mode 100644 doxygen_files/html/search/defines_4.html create mode 100644 doxygen_files/html/search/defines_4.js create mode 100644 doxygen_files/html/search/defines_5.html create mode 100644 doxygen_files/html/search/defines_5.js create mode 100644 doxygen_files/html/search/defines_6.html create mode 100644 doxygen_files/html/search/defines_6.js create mode 100644 doxygen_files/html/search/defines_7.html create mode 100644 doxygen_files/html/search/defines_7.js create mode 100644 doxygen_files/html/search/defines_8.html create mode 100644 doxygen_files/html/search/defines_8.js create mode 100644 doxygen_files/html/search/defines_9.html create mode 100644 doxygen_files/html/search/defines_9.js create mode 100644 doxygen_files/html/search/defines_a.html create mode 100644 doxygen_files/html/search/defines_a.js create mode 100644 doxygen_files/html/search/defines_b.html create mode 100644 doxygen_files/html/search/defines_b.js create mode 100644 doxygen_files/html/search/defines_c.html create mode 100644 doxygen_files/html/search/defines_c.js create mode 100644 doxygen_files/html/search/enums_0.html create mode 100644 doxygen_files/html/search/enums_0.js create mode 100644 doxygen_files/html/search/enumvalues_0.html create mode 100644 doxygen_files/html/search/enumvalues_0.js create mode 100644 doxygen_files/html/search/enumvalues_1.html create mode 100644 doxygen_files/html/search/enumvalues_1.js create mode 100644 doxygen_files/html/search/enumvalues_2.html create mode 100644 doxygen_files/html/search/enumvalues_2.js create mode 100644 doxygen_files/html/search/enumvalues_3.html create mode 100644 doxygen_files/html/search/enumvalues_3.js create mode 100644 doxygen_files/html/search/enumvalues_4.html create mode 100644 doxygen_files/html/search/enumvalues_4.js create mode 100644 doxygen_files/html/search/enumvalues_5.html create mode 100644 doxygen_files/html/search/enumvalues_5.js create mode 100644 doxygen_files/html/search/enumvalues_6.html create mode 100644 doxygen_files/html/search/enumvalues_6.js create mode 100644 doxygen_files/html/search/enumvalues_7.html create mode 100644 doxygen_files/html/search/enumvalues_7.js create mode 100644 doxygen_files/html/search/enumvalues_8.html create mode 100644 doxygen_files/html/search/enumvalues_8.js create mode 100644 doxygen_files/html/search/files_0.html create mode 100644 doxygen_files/html/search/files_0.js create mode 100644 doxygen_files/html/search/files_1.html create mode 100644 doxygen_files/html/search/files_1.js create mode 100644 doxygen_files/html/search/files_2.html create mode 100644 doxygen_files/html/search/files_2.js create mode 100644 doxygen_files/html/search/files_3.html create mode 100644 doxygen_files/html/search/files_3.js create mode 100644 doxygen_files/html/search/files_4.html create mode 100644 doxygen_files/html/search/files_4.js create mode 100644 doxygen_files/html/search/files_5.html create mode 100644 doxygen_files/html/search/files_5.js create mode 100644 doxygen_files/html/search/files_6.html create mode 100644 doxygen_files/html/search/files_6.js create mode 100644 doxygen_files/html/search/files_7.html create mode 100644 doxygen_files/html/search/files_7.js create mode 100644 doxygen_files/html/search/files_8.html create mode 100644 doxygen_files/html/search/files_8.js create mode 100644 doxygen_files/html/search/files_9.html create mode 100644 doxygen_files/html/search/files_9.js create mode 100644 doxygen_files/html/search/files_a.html create mode 100644 doxygen_files/html/search/files_a.js create mode 100644 doxygen_files/html/search/files_b.html create mode 100644 doxygen_files/html/search/files_b.js create mode 100644 doxygen_files/html/search/files_c.html create mode 100644 doxygen_files/html/search/files_c.js create mode 100644 doxygen_files/html/search/files_d.html create mode 100644 doxygen_files/html/search/files_d.js create mode 100644 doxygen_files/html/search/files_e.html create mode 100644 doxygen_files/html/search/files_e.js create mode 100644 doxygen_files/html/search/functions_0.html create mode 100644 doxygen_files/html/search/functions_0.js create mode 100644 doxygen_files/html/search/functions_1.html create mode 100644 doxygen_files/html/search/functions_1.js create mode 100644 doxygen_files/html/search/functions_2.html create mode 100644 doxygen_files/html/search/functions_2.js create mode 100644 doxygen_files/html/search/functions_3.html create mode 100644 doxygen_files/html/search/functions_3.js create mode 100644 doxygen_files/html/search/functions_4.html create mode 100644 doxygen_files/html/search/functions_4.js create mode 100644 doxygen_files/html/search/functions_5.html create mode 100644 doxygen_files/html/search/functions_5.js create mode 100644 doxygen_files/html/search/functions_6.html create mode 100644 doxygen_files/html/search/functions_6.js create mode 100644 doxygen_files/html/search/functions_7.html create mode 100644 doxygen_files/html/search/functions_7.js create mode 100644 doxygen_files/html/search/functions_8.html create mode 100644 doxygen_files/html/search/functions_8.js create mode 100644 doxygen_files/html/search/functions_9.html create mode 100644 doxygen_files/html/search/functions_9.js create mode 100644 doxygen_files/html/search/functions_a.html create mode 100644 doxygen_files/html/search/functions_a.js create mode 100644 doxygen_files/html/search/functions_b.html create mode 100644 doxygen_files/html/search/functions_b.js create mode 100644 doxygen_files/html/search/functions_c.html create mode 100644 doxygen_files/html/search/functions_c.js create mode 100644 doxygen_files/html/search/functions_d.html create mode 100644 doxygen_files/html/search/functions_d.js create mode 100644 doxygen_files/html/search/functions_e.html create mode 100644 doxygen_files/html/search/functions_e.js create mode 100644 doxygen_files/html/search/mag_sel.png create mode 100644 doxygen_files/html/search/nomatches.html create mode 100644 doxygen_files/html/search/pages_0.html create mode 100644 doxygen_files/html/search/pages_0.js create mode 100644 doxygen_files/html/search/pages_1.html create mode 100644 doxygen_files/html/search/pages_1.js create mode 100644 doxygen_files/html/search/search.css create mode 100644 doxygen_files/html/search/search.js create mode 100644 doxygen_files/html/search/search_l.png create mode 100644 doxygen_files/html/search/search_m.png create mode 100644 doxygen_files/html/search/search_r.png create mode 100644 doxygen_files/html/search/searchdata.js create mode 100644 doxygen_files/html/search/variables_0.html create mode 100644 doxygen_files/html/search/variables_0.js create mode 100644 doxygen_files/html/search/variables_1.html create mode 100644 doxygen_files/html/search/variables_1.js create mode 100644 doxygen_files/html/search/variables_2.html create mode 100644 doxygen_files/html/search/variables_2.js create mode 100644 doxygen_files/html/search/variables_3.html create mode 100644 doxygen_files/html/search/variables_3.js create mode 100644 doxygen_files/html/search/variables_4.html create mode 100644 doxygen_files/html/search/variables_4.js create mode 100644 doxygen_files/html/search/variables_5.html create mode 100644 doxygen_files/html/search/variables_5.js create mode 100644 doxygen_files/html/search/variables_6.html create mode 100644 doxygen_files/html/search/variables_6.js create mode 100644 doxygen_files/html/search/variables_7.html create mode 100644 doxygen_files/html/search/variables_7.js create mode 100644 doxygen_files/html/search/variables_8.html create mode 100644 doxygen_files/html/search/variables_8.js create mode 100644 doxygen_files/html/search/variables_9.html create mode 100644 doxygen_files/html/search/variables_9.js create mode 100644 doxygen_files/html/search/variables_a.html create mode 100644 doxygen_files/html/search/variables_a.js create mode 100644 doxygen_files/html/search/variables_b.html create mode 100644 doxygen_files/html/search/variables_b.js create mode 100644 doxygen_files/html/search/variables_c.html create mode 100644 doxygen_files/html/search/variables_c.js create mode 100644 doxygen_files/html/search/variables_d.html create mode 100644 doxygen_files/html/search/variables_d.js create mode 100644 doxygen_files/html/search/variables_e.html create mode 100644 doxygen_files/html/search/variables_e.js create mode 100644 doxygen_files/html/splitbar.png create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_8ino.html create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_8d.html create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_8d_source.html create mode 100644 doxygen_files/html/stepper__motor__controller_8ino__incl.map create mode 100644 doxygen_files/html/stepper__motor__controller_8ino__incl.md5 create mode 100644 doxygen_files/html/stepper__motor__controller_8ino__incl.png create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.map create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.map create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.map create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.md5 create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.png create mode 100644 doxygen_files/html/stepper__motor__controller_8ino_source.html create mode 100644 doxygen_files/html/struct__control-members.html create mode 100644 doxygen_files/html/struct__control.html create mode 100644 doxygen_files/html/struct__rotator-members.html create mode 100644 doxygen_files/html/struct__rotator.html create mode 100644 doxygen_files/html/sync_off.png create mode 100644 doxygen_files/html/sync_on.png create mode 100644 doxygen_files/html/tab_a.png create mode 100644 doxygen_files/html/tab_b.png create mode 100644 doxygen_files/html/tab_h.png create mode 100644 doxygen_files/html/tab_s.png create mode 100644 doxygen_files/html/tabs.css create mode 100644 doxygen_files/html/tc74_8h.html create mode 100644 doxygen_files/html/tc74_8h__dep__incl.map create mode 100644 doxygen_files/html/tc74_8h__dep__incl.md5 create mode 100644 doxygen_files/html/tc74_8h__dep__incl.png create mode 100644 doxygen_files/html/tc74_8h__incl.map create mode 100644 doxygen_files/html/tc74_8h__incl.md5 create mode 100644 doxygen_files/html/tc74_8h__incl.png create mode 100644 doxygen_files/html/tc74_8h_source.html create mode 100644 doxygen_files/html/twi_8c_8d.html create mode 100644 doxygen_files/html/twi_8c_8d_source.html create mode 100644 doxygen_files/html/watchdog_8h.html create mode 100644 doxygen_files/html/watchdog_8h__dep__incl.map create mode 100644 doxygen_files/html/watchdog_8h__dep__incl.md5 create mode 100644 doxygen_files/html/watchdog_8h__dep__incl.png create mode 100644 doxygen_files/html/watchdog_8h__incl.map create mode 100644 doxygen_files/html/watchdog_8h__incl.md5 create mode 100644 doxygen_files/html/watchdog_8h__incl.png create mode 100644 doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.map create mode 100644 doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.md5 create mode 100644 doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.png create mode 100644 doxygen_files/html/watchdog_8h_source.html create mode 100644 doxygen_files/html/wiring_8c_8d.html create mode 100644 doxygen_files/html/wiring_8c_8d_source.html create mode 100644 doxygen_files/html/wiring__analog_8c_8d.html create mode 100644 doxygen_files/html/wiring__analog_8c_8d_source.html create mode 100644 doxygen_files/html/wiring__digital_8c_8d.html create mode 100644 doxygen_files/html/wiring__digital_8c_8d_source.html create mode 100644 doxygen_files/html/wiring__pulse_8S_8d.html create mode 100644 doxygen_files/html/wiring__pulse_8S_8d_source.html create mode 100644 doxygen_files/html/wiring__pulse_8c_8d.html create mode 100644 doxygen_files/html/wiring__pulse_8c_8d_source.html create mode 100644 doxygen_files/html/wiring__shift_8c_8d.html create mode 100644 doxygen_files/html/wiring__shift_8c_8d_source.html diff --git a/.gitignore b/.gitignore index 01f23e0..1480edd 100644 --- a/.gitignore +++ b/.gitignore @@ -2,4 +2,3 @@ .cproject */build-satnogs .project -doxygen_files diff --git a/doxygen_files/html/AccelStepper_8cpp_8d.html b/doxygen_files/html/AccelStepper_8cpp_8d.html new file mode 100644 index 0000000..14c9e1b --- /dev/null +++ b/doxygen_files/html/AccelStepper_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/userlibs/AccelStepper/AccelStepper.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AccelStepper.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/AccelStepper_8cpp_8d_source.html b/doxygen_files/html/AccelStepper_8cpp_8d_source.html new file mode 100644 index 0000000..df0081d --- /dev/null +++ b/doxygen_files/html/AccelStepper_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/userlibs/AccelStepper/AccelStepper.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
AccelStepper.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/userlibs/AccelStepper/AccelStepper.cpp.o: \
2  /home/azisi/workspace/arduino/libraries/AccelStepper/AccelStepper.cpp \
3  /home/azisi/workspace/arduino/libraries/AccelStepper/AccelStepper.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/CDC_8cpp_8d.html b/doxygen_files/html/CDC_8cpp_8d.html new file mode 100644 index 0000000..46a42cb --- /dev/null +++ b/doxygen_files/html/CDC_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/CDC.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CDC.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/CDC_8cpp_8d_source.html b/doxygen_files/html/CDC_8cpp_8d_source.html new file mode 100644 index 0000000..b39f537 --- /dev/null +++ b/doxygen_files/html/CDC_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/CDC.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CDC.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/CDC.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/CDC.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/CONTRIBUTING_8md.html b/doxygen_files/html/CONTRIBUTING_8md.html new file mode 100644 index 0000000..b30df11 --- /dev/null +++ b/doxygen_files/html/CONTRIBUTING_8md.html @@ -0,0 +1,78 @@ + + + + + + + +satnogs-rotator-firmware: CONTRIBUTING.md File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
CONTRIBUTING.md File Reference
+
+ + + + + diff --git a/doxygen_files/html/CONTRIBUTING_8md_source.html b/doxygen_files/html/CONTRIBUTING_8md_source.html new file mode 100644 index 0000000..047be35 --- /dev/null +++ b/doxygen_files/html/CONTRIBUTING_8md_source.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: CONTRIBUTING.md Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
CONTRIBUTING.md
+
+
+Go to the documentation of this file.
1 # Contributing to SatNOGS rotator-firmware
2 
3 Thank you for your interest in contributing to SatNOGS!
4 
5 The main repository lives on [Gitlab](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware).
6 
+ + + + diff --git a/doxygen_files/html/HardwareSerial0_8cpp_8d.html b/doxygen_files/html/HardwareSerial0_8cpp_8d.html new file mode 100644 index 0000000..1a8f5b9 --- /dev/null +++ b/doxygen_files/html/HardwareSerial0_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial0.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/HardwareSerial0_8cpp_8d_source.html b/doxygen_files/html/HardwareSerial0_8cpp_8d_source.html new file mode 100644 index 0000000..fb69685 --- /dev/null +++ b/doxygen_files/html/HardwareSerial0_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial0.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial0.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/HardwareSerial1_8cpp_8d.html b/doxygen_files/html/HardwareSerial1_8cpp_8d.html new file mode 100644 index 0000000..fb935a0 --- /dev/null +++ b/doxygen_files/html/HardwareSerial1_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial1.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/HardwareSerial1_8cpp_8d_source.html b/doxygen_files/html/HardwareSerial1_8cpp_8d_source.html new file mode 100644 index 0000000..43f683d --- /dev/null +++ b/doxygen_files/html/HardwareSerial1_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial1.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial1.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial1.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/HardwareSerial2_8cpp_8d.html b/doxygen_files/html/HardwareSerial2_8cpp_8d.html new file mode 100644 index 0000000..1b68c6a --- /dev/null +++ b/doxygen_files/html/HardwareSerial2_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial2.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/HardwareSerial2_8cpp_8d_source.html b/doxygen_files/html/HardwareSerial2_8cpp_8d_source.html new file mode 100644 index 0000000..1e34a15 --- /dev/null +++ b/doxygen_files/html/HardwareSerial2_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial2.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial2.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial2.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/HardwareSerial3_8cpp_8d.html b/doxygen_files/html/HardwareSerial3_8cpp_8d.html new file mode 100644 index 0000000..1351a32 --- /dev/null +++ b/doxygen_files/html/HardwareSerial3_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial3.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/HardwareSerial3_8cpp_8d_source.html b/doxygen_files/html/HardwareSerial3_8cpp_8d_source.html new file mode 100644 index 0000000..2476980 --- /dev/null +++ b/doxygen_files/html/HardwareSerial3_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial3.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial3.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial3.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/HardwareSerial_8cpp_8d.html b/doxygen_files/html/HardwareSerial_8cpp_8d.html new file mode 100644 index 0000000..e0bc27a --- /dev/null +++ b/doxygen_files/html/HardwareSerial_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/HardwareSerial_8cpp_8d_source.html b/doxygen_files/html/HardwareSerial_8cpp_8d_source.html new file mode 100644 index 0000000..f4d8f78 --- /dev/null +++ b/doxygen_files/html/HardwareSerial_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/IPAddress_8cpp_8d.html b/doxygen_files/html/IPAddress_8cpp_8d.html new file mode 100644 index 0000000..b2bc4c5 --- /dev/null +++ b/doxygen_files/html/IPAddress_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/IPAddress.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IPAddress.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/IPAddress_8cpp_8d_source.html b/doxygen_files/html/IPAddress_8cpp_8d_source.html new file mode 100644 index 0000000..bd31b38 --- /dev/null +++ b/doxygen_files/html/IPAddress_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/IPAddress.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IPAddress.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/IPAddress.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.h
+ + + + diff --git a/doxygen_files/html/PID__v1_8cpp_8d.html b/doxygen_files/html/PID__v1_8cpp_8d.html new file mode 100644 index 0000000..8f0b842 --- /dev/null +++ b/doxygen_files/html/PID__v1_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/userlibs/PID_v1/PID_v1.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PID_v1.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/PID__v1_8cpp_8d_source.html b/doxygen_files/html/PID__v1_8cpp_8d_source.html new file mode 100644 index 0000000..07291ca --- /dev/null +++ b/doxygen_files/html/PID__v1_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/userlibs/PID_v1/PID_v1.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PID_v1.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/userlibs/PID_v1/PID_v1.cpp.o: \
2  /home/azisi/workspace/arduino/libraries/PID_v1/PID_v1.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
15  /home/azisi/workspace/arduino/libraries/PID_v1/../PID_v1/PID_v1.h
+ + + + diff --git a/doxygen_files/html/PluggableUSB_8cpp_8d.html b/doxygen_files/html/PluggableUSB_8cpp_8d.html new file mode 100644 index 0000000..3da6e16 --- /dev/null +++ b/doxygen_files/html/PluggableUSB_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/PluggableUSB.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PluggableUSB.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/PluggableUSB_8cpp_8d_source.html b/doxygen_files/html/PluggableUSB_8cpp_8d_source.html new file mode 100644 index 0000000..a22cbca --- /dev/null +++ b/doxygen_files/html/PluggableUSB_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/PluggableUSB.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PluggableUSB.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/PluggableUSB.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
+ + + + diff --git a/doxygen_files/html/Print_8cpp_8d.html b/doxygen_files/html/Print_8cpp_8d.html new file mode 100644 index 0000000..bcb7a1c --- /dev/null +++ b/doxygen_files/html/Print_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Print.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Print.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/Print_8cpp_8d_source.html b/doxygen_files/html/Print_8cpp_8d_source.html new file mode 100644 index 0000000..4e22eca --- /dev/null +++ b/doxygen_files/html/Print_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Print.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Print.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Print.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/README_8md.html b/doxygen_files/html/README_8md.html new file mode 100644 index 0000000..addef5a --- /dev/null +++ b/doxygen_files/html/README_8md.html @@ -0,0 +1,78 @@ + + + + + + + +satnogs-rotator-firmware: README.md File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
README.md File Reference
+
+ + + + + diff --git a/doxygen_files/html/README_8md_source.html b/doxygen_files/html/README_8md_source.html new file mode 100644 index 0000000..c55614f --- /dev/null +++ b/doxygen_files/html/README_8md_source.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: README.md Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
README.md
+
+
+Go to the documentation of this file.
1 # SatNOGS Rotator Firmware
2 
3 Firmware [SatNOGS Rotator Controller](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware).
4 
5 Repository includes all source files for the SatNOGS rotator controller Firmware.
6 
7 Electronics can be found on [satnogs-rotator-controller](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller)
8 
9 ## Instructions
10 
11 In order to use this code, you need to install
12  * [AccelStepper library](http://www.airspayce.com/mikem/arduino/AccelStepper/index.html)
13  * [PID_v1 library](https://github.com/br3ttb/Arduino-PID-Library)
14  * Wire library
15 
16 You need to choose the version of the Firmware you will be utilizing based on your controller and rotator setup. Namely we have two different versions (one for DC motors and one for Stepper motors).
17 
18 ##### Steps
19 
20 * Download arduino IDE (tested with 1.8.5)
21 * Add these lines in /arduino-1.8.5/hardware/arduino/avr/boards.txt
22 
23 ```
24 ##############################################################
25 satnogs.name=SatNOGS
26 satnogs.upload.tool=avrdude
27 satnogs.upload.protocol=buspirate
28 satnogs.upload.maximum_size=32256
29 satnogs.upload.maximum_data_size=2048
30 satnogs.upload.speed=115200
31 
32 satnogs.bootloader.tool=avrdude
33 satnogs.bootloader.low_fuses=0xFF
34 satnogs.bootloader.high_fuses=0xDE
35 satnogs.bootloader.extended_fuses=0xFD
36 satnogs.bootloader.unlock_bits=0x3F
37 satnogs.bootloader.lock_bits=0x0F
38 satnogs.bootloader.file=optiboot/optiboot_atmega328.hex
39 
40 satnogs.build.mcu=atmega328p
41 satnogs.build.f_cpu=16000000L
42 satnogs.build.board=AVR_SATNOGS
43 satnogs.build.core=arduino
44 satnogs.build.variant=eightanaloginputs
45 ##############################################################
46 ```
47 
48 * Install [Arduino-Makefile](https://github.com/sudar/Arduino-Makefile)
49 
50 ```
51 ARDUINO_DIR – Directory where Arduino is installed
52 ARDMK_DIR – Directory where you have copied the makefile
53 AVR_TOOLS_DIR – Directory where avr tools are installed
54 USER_LIB_PATH – Directory where arduino libraries are installed
55 AVRDUDE – Directory where avrdude are installed
56 AVRDUDE_ARD_BAUDRATE – Serial Baudrate (uncomment to use 57600 for FTDI)
57 include – Directory where Arduino.mk are installed
58 ```
59 
60 * Build the code
61 
62 ```
63 make
64 ```
65 
66 * Upload using ISP
67 
68  * Connect [arduino](https://www.arduino.cc/en/Tutorial/ArduinoISP) or buspirate for ISP programming
69 
70  1. Pin 13 (SCK) to Pin 13 of arduino pro mini, ISP connector
71  2. Pin 12 (MISO) to Pin 12 of arduino pro mini, ISP connector
72  3. Pin 11 (MOSI) to Pin 11 of arduino pro mini, ISP connector
73  4. Pin 10 (RESET) to Pin RST of arduino pro mini, ISP connector
74  5. 5+ (Vcc) to Pin VCC of arduino pro mini, ISP connector
75  6. Gnd (Gnd) to Pin GND of arduino pro mini, ISP connector
76 
77 * BusPirate
78 
79 ```
80 satnogs.upload.protocol=buspirate (in board.txt)
81 ISP_PROG = buspirate (in Makefile)
82 ```
83 ```
84 make ispload
85 ```
86 
87 * [Arduino](https://www.arduino.cc/en/Tutorial/ArduinoISP)
88 
89 ```
90 satnogs.upload.protocol=arduino (in board.txt)
91 ISP_PROG = arduino (in Makefile)
92 ```
93 
94 ```
95 make ispload
96 ```
97 
98 * Upload using FDTI, but is necessary to uninstall arduino pro-mini from board
99 
100 Connect [FTDI](https://learn.sparkfun.com/tutorials/using-the-arduino-pro-mini-33v)
101 
102 ```
103 satnogs.upload.protocol=arduino (in board.txt)
104 ```
105 ```
106 make upload
107 ```
108 * Burn optiboot
109 
110 Only with ISP programming
111 
112  * Arduino as ISP
113  * BusPirate as ISP
114 
115 ```
116 make burn_bootloader
117 ```
118 
119 ## Easycomm implemantation
120 
121 * AZ, Azimuth, number - 1 decimal place [deg]
122 * EL, Elevation, number - 1 decimal place [deg]
123 * SA, Stop azimuth moving
124 * SE, Stop elevation moving
125 * RESET, Move to home position
126 * PARK, Move to park position
127 * IP, Read an input, number
128  * Temperature = 0
129  * SW1 = 1
130  * SW2 = 2
131  * Encoder1 = 3
132  * Encoder2 = 4
133  * Load of M1/AZ = 5
134  * Load of M2/EL = 6
135  * Speed of M1/AZ (DPS) = 7
136  * Speed of M2/EL (DPS) = 8
137 * VE, Request Version
138 * GS, Get status register, number
139  * idle = 1
140  * moving = 2
141  * pointing = 4
142  * error = 8
143 * GE, Get error register, number
144  * no_error = 1
145  * sensor_error = 2
146  * homing_error = 4
147  * motor_error = 8
148  * over_temperature = 12
149  * wdt_error = 16
150 * VL, Velocity Left ,number [mdeg/s]
151 * VR, Velocity Right, number [mdeg/s]
152 * VU, Velocity Up, number [mdeg/s]
153 * VD, Velocity Down, number [mdeg/s]
154 * CR, Read config, register [0-x]
155  * Gain P for M1/AZ = 1
156  * Gain I for M1/AZ = 2
157  * Gain D for M1/AZ = 3
158  * Gain P for M2/EL = 4
159  * Gain I for M2/EL = 5
160  * Gain D for M2/EL = 6
161  * Azimuth park position = 7
162  * Elevation park position = 8
163  * Control mode (position = 0, speed = 1) = 9
164 * CW, Write config, register [0-x]
165  * Gain P for M1/AZ = 1
166  * Gain I for M1/AZ = 2
167  * Gain D for M1/AZ = 3
168  * Gain P for M2/EL = 4
169  * Gain I for M2/EL = 5
170  * Gain D for M2/EL = 6
171  * Azimuth park position = 7
172  * Elevation park position = 8
173  * This reg is set from Vx commands control mode (position = 0, speed = 1) = 9
174 * RB, custom command to reboot controller
175 
176 ## Controller Configurations
177 
178 * Stepper Motor
179  * Endstops
180  * Encoders, optional
181  * UART or R485 (For both options the firmware is the same)
182 * DC Motor
183  * Endstops
184  * Encoders
185  * UART or RS485 (For both options the firmware is the same)
186 
187 ## Pins Configuration
188 
189 ```
190 M1IN1 10, Step or PWM1
191 M1IN2 9, Direction or PWM2
192 M1SF 7, Status flag
193 M1FB A1, Load measurment
194 
195 M2IN1 11, Step or PWM1
196 M2IN2 3, Direction or PWM2
197 M2SF 6, Status flag
198 M2FB A0, Load measurment
199 
200 MOTOR_EN 8, Enable/Disable motors
201 
202 SW1 5, Endstop for axis 1
203 SW2 4, Endstop for axis 2
204 
205 RS485_DIR 2, RS485 Half Duplex direction pin
206 
207 SDA_PIN 3, Data I2C pin
208 SCL_PIN 4, Clock I2C pin
209 
210 PIN12 12, Digital output pin
211 PIN13 13, Digital output pin
212 A2 A2, Analog input pin
213 A3 A3, Analog input pin
214 ```
215 
216 ## Testing with hamlib - rotctl or with Serial Monitor
217 
218 Connect the PC with contreller via UART to USB or RS485 to USB by using the right converter (as described in [rotator controller BOM](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-controller/blob/master/satnogs-rotator-controller-bom.ods)).
219 For both options must be soldered the suitable components as descrided in [rotator controller wiki page](https://wiki.satnogs.org/SatNOGS_Rotator_Controller).
220 
221 Use commands of rotctl:
222 
223 ```
224 rotctl -m 204 -s 19200 -r /dev/ttyUSB1 -vvvvv
225 ```
226 
227 Replace the /dev/ttyUSB1 with the device which is connected to PC.
228 
229 Use commands of easycomm 3:
230 
231 Send directly commands of easycomm 3 as described in Easycomm implemantation section.
232 
233 ## Contribute
234 
235 The main repository lives on [Gitlab](https://gitlab.com/librespacefoundation/satnogs/satnogs-rotator-firmware) and all Merge Request should happen there.
236 
237 ## License
238 
239 [![Libre Space Foundation](https://img.shields.io/badge/%C2%A9%202014--2018-Libre%20Space%20Foundation-6672D8.svg)](https://librespacefoundation.org/)
240 
241 Licensed under the [GPLv3](LICENSE)
+ + + + diff --git a/doxygen_files/html/Stream_8cpp_8d.html b/doxygen_files/html/Stream_8cpp_8d.html new file mode 100644 index 0000000..663e100 --- /dev/null +++ b/doxygen_files/html/Stream_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Stream.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Stream.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/Stream_8cpp_8d_source.html b/doxygen_files/html/Stream_8cpp_8d_source.html new file mode 100644 index 0000000..e05b9d8 --- /dev/null +++ b/doxygen_files/html/Stream_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Stream.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Stream.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Stream.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/Tone_8cpp_8d.html b/doxygen_files/html/Tone_8cpp_8d.html new file mode 100644 index 0000000..e1eae82 --- /dev/null +++ b/doxygen_files/html/Tone_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Tone.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Tone.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/Tone_8cpp_8d_source.html b/doxygen_files/html/Tone_8cpp_8d_source.html new file mode 100644 index 0000000..c84c813 --- /dev/null +++ b/doxygen_files/html/Tone_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Tone.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Tone.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Tone.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Tone.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/USBCore_8cpp_8d.html b/doxygen_files/html/USBCore_8cpp_8d.html new file mode 100644 index 0000000..52a2a51 --- /dev/null +++ b/doxygen_files/html/USBCore_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/USBCore.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
USBCore.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/USBCore_8cpp_8d_source.html b/doxygen_files/html/USBCore_8cpp_8d_source.html new file mode 100644 index 0000000..7574b99 --- /dev/null +++ b/doxygen_files/html/USBCore_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/USBCore.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
USBCore.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/USBCore.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBCore.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
+ + + + diff --git a/doxygen_files/html/WInterrupts_8c_8d.html b/doxygen_files/html/WInterrupts_8c_8d.html new file mode 100644 index 0000000..cd6a42f --- /dev/null +++ b/doxygen_files/html/WInterrupts_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WInterrupts.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WInterrupts.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/WInterrupts_8c_8d_source.html b/doxygen_files/html/WInterrupts_8c_8d_source.html new file mode 100644 index 0000000..27ee917 --- /dev/null +++ b/doxygen_files/html/WInterrupts_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WInterrupts.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WInterrupts.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WInterrupts.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WInterrupts.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/WMath_8cpp_8d.html b/doxygen_files/html/WMath_8cpp_8d.html new file mode 100644 index 0000000..11efad2 --- /dev/null +++ b/doxygen_files/html/WMath_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WMath.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WMath.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/WMath_8cpp_8d_source.html b/doxygen_files/html/WMath_8cpp_8d_source.html new file mode 100644 index 0000000..31c6d3b --- /dev/null +++ b/doxygen_files/html/WMath_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WMath.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WMath.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WMath.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WMath.cpp
+ + + + diff --git a/doxygen_files/html/WString_8cpp_8d.html b/doxygen_files/html/WString_8cpp_8d.html new file mode 100644 index 0000000..0f9dd7d --- /dev/null +++ b/doxygen_files/html/WString_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WString.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WString.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/WString_8cpp_8d_source.html b/doxygen_files/html/WString_8cpp_8d_source.html new file mode 100644 index 0000000..7ab7826 --- /dev/null +++ b/doxygen_files/html/WString_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WString.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WString.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WString.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h
+ + + + diff --git a/doxygen_files/html/Wire_8cpp_8d.html b/doxygen_files/html/Wire_8cpp_8d.html new file mode 100644 index 0000000..12daed4 --- /dev/null +++ b/doxygen_files/html/Wire_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Wire.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/Wire_8cpp_8d_source.html b/doxygen_files/html/Wire_8cpp_8d_source.html new file mode 100644 index 0000000..54200ed --- /dev/null +++ b/doxygen_files/html/Wire_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Wire.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/platformlibs/Wire/src/Wire.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h
+ + + + diff --git a/doxygen_files/html/abi_8cpp_8d.html b/doxygen_files/html/abi_8cpp_8d.html new file mode 100644 index 0000000..05ae7e1 --- /dev/null +++ b/doxygen_files/html/abi_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/abi.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
abi.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/abi_8cpp_8d_source.html b/doxygen_files/html/abi_8cpp_8d_source.html new file mode 100644 index 0000000..9e7545f --- /dev/null +++ b/doxygen_files/html/abi_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/abi.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
abi.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/abi.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/abi.cpp
+ + + + diff --git a/doxygen_files/html/annotated.html b/doxygen_files/html/annotated.html new file mode 100644 index 0000000..3a4b608 --- /dev/null +++ b/doxygen_files/html/annotated.html @@ -0,0 +1,90 @@ + + + + + + + +satnogs-rotator-firmware: Class List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class List
+
+
+
Here are the classes, structs, unions and interfaces with brief descriptions:
+ + + + + + + + + + + +
 C_control
 C_rotator
 CAS5601Class that functions for interacting with AS5601 magnetic rotary position sensor
 CeasycommClass that functions for easycomm 3 implementation
 CendstopClass that functions for interacting with end-stop
 Ci2c_muxClass that functions for interacting with I2C 1-of-2 multiplexer
 CmotorClass that functions for interacting with a Motor Driver Carrier
 Crs485Class that functions for interacting with a RS485 transceiver
 Ctc74Class that functions for interacting with a TC74 Temperature sensor
 Cwdt_timerClass that functions for interacting with a watchdog timer
+
+
+ + + + diff --git a/doxygen_files/html/as5601_8h.html b/doxygen_files/html/as5601_8h.html new file mode 100644 index 0000000..9be95f9 --- /dev/null +++ b/doxygen_files/html/as5601_8h.html @@ -0,0 +1,309 @@ + + + + + + + +satnogs-rotator-firmware: libraries/as5601.h File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
as5601.h File Reference
+
+
+
#include <Wire.h>
+
+Include dependency graph for as5601.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+ + + +
+
+

Go to the source code of this file.

+ + + + + +

+Classes

class  AS5601
 Class that functions for interacting with AS5601 magnetic rotary position sensor. More...
 
+ + + + + + + + + + + + + + + + + + + + + +

+Macros

#define I2C_FREQ   100000
 
#define AS5601_ID   0x36
 
#define RAW_ANG_HIGH   0x0C
 
#define RAW_ANG_LOW   0x0D
 
#define STATUS_REG   0x0B
 
#define AGC   0x1A
 
#define MAGNITUDE_HIGH   0x1B
 
#define MAGNITUDE_LOW   0x1C
 
#define CONF_HIGH   0x07
 
#define CONF_LOW   0x08
 
+

Detailed Description

+

It is a driver for AS5601 a magnetic rotary position sensor. It uses I2C protocol. The resolution of encoder is 12-bit.

+

Licensed under the GPLv3

+ +

Definition in file as5601.h.

+

Macro Definition Documentation

+ +

◆ AGC

+ +
+
+ + + + +
#define AGC   0x1A
+
+ +

Definition at line 23 of file as5601.h.

+ +

Referenced by AS5601::get_agc().

+ +
+
+ +

◆ AS5601_ID

+ +
+
+ + + + +
#define AS5601_ID   0x36
+
+ +

Definition at line 19 of file as5601.h.

+ +

Referenced by AS5601::get_agc(), AS5601::get_conf(), AS5601::get_magnitude(), and AS5601::get_pos().

+ +
+
+ +

◆ CONF_HIGH

+ +
+
+ + + + +
#define CONF_HIGH   0x07
+
+ +

Definition at line 26 of file as5601.h.

+ +

Referenced by AS5601::get_conf().

+ +
+
+ +

◆ CONF_LOW

+ +
+
+ + + + +
#define CONF_LOW   0x08
+
+ +

Definition at line 27 of file as5601.h.

+ +
+
+ +

◆ I2C_FREQ

+ +
+
+ + + + +
#define I2C_FREQ   100000
+
+ +

Definition at line 17 of file as5601.h.

+ +

Referenced by AS5601::Begin(), and tc74::init().

+ +
+
+ +

◆ MAGNITUDE_HIGH

+ +
+
+ + + + +
#define MAGNITUDE_HIGH   0x1B
+
+ +

Definition at line 24 of file as5601.h.

+ +

Referenced by AS5601::get_magnitude().

+ +
+
+ +

◆ MAGNITUDE_LOW

+ +
+
+ + + + +
#define MAGNITUDE_LOW   0x1C
+
+ +

Definition at line 25 of file as5601.h.

+ +
+
+ +

◆ RAW_ANG_HIGH

+ +
+
+ + + + +
#define RAW_ANG_HIGH   0x0C
+
+ +

Definition at line 20 of file as5601.h.

+ +

Referenced by AS5601::get_pos().

+ +
+
+ +

◆ RAW_ANG_LOW

+ +
+
+ + + + +
#define RAW_ANG_LOW   0x0D
+
+ +

Definition at line 21 of file as5601.h.

+ +
+
+ +

◆ STATUS_REG

+ +
+
+ + + + +
#define STATUS_REG   0x0B
+
+ +

Definition at line 22 of file as5601.h.

+ +

Referenced by AS5601::get_pos().

+ +
+
+
+ + + + diff --git a/doxygen_files/html/as5601_8h__dep__incl.map b/doxygen_files/html/as5601_8h__dep__incl.map new file mode 100644 index 0000000..916681c --- /dev/null +++ b/doxygen_files/html/as5601_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/as5601_8h__dep__incl.md5 b/doxygen_files/html/as5601_8h__dep__incl.md5 new file mode 100644 index 0000000..da7904c --- /dev/null +++ b/doxygen_files/html/as5601_8h__dep__incl.md5 @@ -0,0 +1 @@ +6652d3c33be1f3065ceeeb6e1d2fd642 \ No newline at end of file diff --git a/doxygen_files/html/as5601_8h__dep__incl.png b/doxygen_files/html/as5601_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..bfc1aac8f40fc822aeac6eaacfd419c32441cdf2 GIT binary patch literal 4291 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/as5601_8h__incl.map b/doxygen_files/html/as5601_8h__incl.map new file mode 100644 index 0000000..e112ef2 --- /dev/null +++ b/doxygen_files/html/as5601_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/doxygen_files/html/as5601_8h__incl.md5 b/doxygen_files/html/as5601_8h__incl.md5 new file mode 100644 index 0000000..05915b4 --- /dev/null +++ b/doxygen_files/html/as5601_8h__incl.md5 @@ -0,0 +1 @@ +0ce59a71cedfdd24fe59dbdb8aa40a51 \ No newline at end of file diff --git a/doxygen_files/html/as5601_8h__incl.png b/doxygen_files/html/as5601_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..7e4bb191c3106d69842ae547b3665d3eb394aeb4 GIT binary patch literal 3113 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/as5601_8h_source.html b/doxygen_files/html/as5601_8h_source.html new file mode 100644 index 0000000..f6fd7a1 --- /dev/null +++ b/doxygen_files/html/as5601_8h_source.html @@ -0,0 +1,102 @@ + + + + + + + +satnogs-rotator-firmware: libraries/as5601.h Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
as5601.h
+
+
+Go to the documentation of this file.
1 
12 #ifndef AS5601_H_
13 #define AS5601_H_
14 
15 #include <Wire.h>
16 
17 #define I2C_FREQ 100000
18 
19 #define AS5601_ID 0x36
20 #define RAW_ANG_HIGH 0x0C
21 #define RAW_ANG_LOW 0x0D
22 #define STATUS_REG 0x0B
23 #define AGC 0x1A
24 #define MAGNITUDE_HIGH 0x1B
25 #define MAGNITUDE_LOW 0x1C
26 #define CONF_HIGH 0x07
27 #define CONF_LOW 0x08
28 
29 /**************************************************************************/
34 /**************************************************************************/
35 class AS5601 {
36 public:
37 
38  /**************************************************************************/
42  /**************************************************************************/
43  void Begin() {
44  Wire.begin();
45  Wire.setClock(I2C_FREQ);
46  }
47 
48  /**************************************************************************/
58  /**************************************************************************/
59  uint8_t get_pos(double *new_pos) {
60  uint16_t raw_angle;
61  uint8_t status_val;
62  float raw_pos = 0;
63  float delta_raw_pos = 0;
64  float real_pos = 0;
65 
67  // Read Status Bits
69  // Check the status register
70  if ((status_val & 0x20) && !(status_val & 0x10)
71  && !(status_val & 0x08)) {
72  // Convert raw value to angle in deg
73  raw_pos = (float) raw_angle * 0.0879;
74  // Unwrap the angle
75  delta_raw_pos = _raw_prev_pos - raw_pos;
76  if (delta_raw_pos > 180)
77  _n++;
78  else if (delta_raw_pos < -180)
79  _n--;
80  // Calculate the real angle
81  real_pos = - ((raw_pos + 360 * _n) / _enc_ratio) - _angle_offset;
82  _raw_prev_pos = raw_pos;
83  }
84  *new_pos = (double)real_pos;
85  return status_val;
86  }
87 
88  /**************************************************************************/
95  /**************************************************************************/
96  uint8_t get_agc() {
98  }
99 
100  /**************************************************************************/
105  /**************************************************************************/
106  uint16_t get_magnitude() {
108  }
109 
110  /**************************************************************************/
115  /**************************************************************************/
116  uint16_t get_conf() {
118  }
119 
120  /**************************************************************************/
128  /**************************************************************************/
129  uint8_t set_zero() {
130  double current_pos;
131  uint8_t status_val = get_pos(&current_pos);
132  _angle_offset = current_pos;
133  return status_val;
134  }
135 
136  /**************************************************************************/
140  /**************************************************************************/
141  void init_zero() {
142  _angle_offset = 0.0;
143  }
144 
145  /**************************************************************************/
151  /**************************************************************************/
152  void set_gear_ratio(uint8_t enc_ratio) {
153  _enc_ratio = enc_ratio;
154  }
155 
156 private:
157  double _angle_offset = 0;
158  int32_t _n = 0;
159  float _raw_prev_pos = 0;
160  uint8_t _enc_ratio = 0;
161 
162  uint8_t i2c_byte_transaction(uint8_t i2c_address, uint8_t i2c_register) {
163  Wire.beginTransmission(i2c_address);
164  Wire.write(i2c_register);
165  Wire.endTransmission();
166  Wire.requestFrom(i2c_address, (uint8_t) 1);
167  while (Wire.available() == 0)
168  ;
169  return Wire.read();
170  }
171 
172  uint16_t i2c_word_transaction(uint8_t i2c_address,uint8_t i2c_register) {
173  uint8_t word_high = i2c_byte_transaction(i2c_address, i2c_register);
174  uint8_t word_low = i2c_byte_transaction(i2c_address, i2c_register + 1);
175  return ((word_high << 8) | word_low);
176  }
177 };
178 
179 #endif /* AS5601_H_ */
180 
uint16_t get_conf()
Get the configuration register.
Definition: as5601.h:116
+
int32_t _n
Definition: as5601.h:158
+
void set_gear_ratio(uint8_t enc_ratio)
Set the gear ratio between encoder and measure axis.
Definition: as5601.h:152
+
#define AS5601_ID
Definition: as5601.h:19
+
uint8_t i2c_byte_transaction(uint8_t i2c_address, uint8_t i2c_register)
Definition: as5601.h:162
+
#define MAGNITUDE_HIGH
Definition: as5601.h:24
+
float _raw_prev_pos
Definition: as5601.h:159
+
uint8_t set_zero()
Set zero by setting offset angle.
Definition: as5601.h:129
+
#define I2C_FREQ
Definition: as5601.h:17
+
uint16_t get_magnitude()
Get the magnitude value of the internal CORDIC output.
Definition: as5601.h:106
+
Class that functions for interacting with AS5601 magnetic rotary position sensor. ...
Definition: as5601.h:35
+
double _angle_offset
Definition: as5601.h:157
+
#define CONF_HIGH
Definition: as5601.h:26
+
uint8_t get_agc()
Calculate the automatic gain control (AGC)
Definition: as5601.h:96
+
#define AGC
Definition: as5601.h:23
+
uint8_t _enc_ratio
Definition: as5601.h:160
+
uint8_t get_pos(double *new_pos)
Calculate an unwrap the position.
Definition: as5601.h:59
+
#define RAW_ANG_HIGH
Definition: as5601.h:20
+
void Begin()
Initialize the I2C bus.
Definition: as5601.h:43
+
#define STATUS_REG
Definition: as5601.h:22
+
void init_zero()
Reset zero position set the offset to zero.
Definition: as5601.h:141
+
uint16_t i2c_word_transaction(uint8_t i2c_address, uint8_t i2c_register)
Definition: as5601.h:172
+
+ + + + diff --git a/doxygen_files/html/bc_s.png b/doxygen_files/html/bc_s.png new file mode 100644 index 0000000000000000000000000000000000000000..224b29aa9847d5a4b3902efd602b7ddf7d33e6c2 GIT binary patch literal 676 zcmV;V0$crwP)y__>=_9%My z{n931IS})GlGUF8K#6VIbs%684A^L3@%PlP2>_sk`UWPq@f;rU*V%rPy_ekbhXT&s z(GN{DxFv}*vZp`F>S!r||M`I*nOwwKX+BC~3P5N3-)Y{65c;ywYiAh-1*hZcToLHK ztpl1xomJ+Yb}K(cfbJr2=GNOnT!UFA7Vy~fBz8?J>XHsbZoDad^8PxfSa0GDgENZS zuLCEqzb*xWX2CG*b&5IiO#NzrW*;`VC9455M`o1NBh+(k8~`XCEEoC1Ybwf;vr4K3 zg|EB<07?SOqHp9DhLpS&bzgo70I+ghB_#)K7H%AMU3v}xuyQq9&Bm~++VYhF09a+U zl7>n7Jjm$K#b*FONz~fj;I->Bf;ule1prFN9FovcDGBkpg>)O*-}eLnC{6oZHZ$o% zXKW$;0_{8hxHQ>l;_*HATI(`7t#^{$(zLe}h*mqwOc*nRY9=?Sx4OOeVIfI|0V(V2 zBrW#G7Ss9wvzr@>H*`r>zE z+e8bOBgqIgldUJlG(YUDviMB`9+DH8n-s9SXRLyJHO1!=wY^79WYZMTa(wiZ!zP66 zA~!21vmF3H2{ngD;+`6j#~6j;$*f*G_2ZD1E;9(yaw7d-QnSCpK(cR1zU3qU0000< KMNUMnLSTYoA~SLT literal 0 HcmV?d00001 diff --git a/doxygen_files/html/bdwn.png b/doxygen_files/html/bdwn.png new file mode 100644 index 0000000000000000000000000000000000000000..940a0b950443a0bb1b216ac03c45b8a16c955452 GIT binary patch literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
AS5601 Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + +
_angle_offsetAS5601private
_enc_ratioAS5601private
_nAS5601private
_raw_prev_posAS5601private
Begin()AS5601inline
get_agc()AS5601inline
get_conf()AS5601inline
get_magnitude()AS5601inline
get_pos(double *new_pos)AS5601inline
i2c_byte_transaction(uint8_t i2c_address, uint8_t i2c_register)AS5601inlineprivate
i2c_word_transaction(uint8_t i2c_address, uint8_t i2c_register)AS5601inlineprivate
init_zero()AS5601inline
set_gear_ratio(uint8_t enc_ratio)AS5601inline
set_zero()AS5601inline
+ + + + diff --git a/doxygen_files/html/classAS5601.html b/doxygen_files/html/classAS5601.html new file mode 100644 index 0000000..4b2eefa --- /dev/null +++ b/doxygen_files/html/classAS5601.html @@ -0,0 +1,655 @@ + + + + + + + +satnogs-rotator-firmware: AS5601 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class that functions for interacting with AS5601 magnetic rotary position sensor. + More...

+ +

#include <as5601.h>

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

+Public Member Functions

void Begin ()
 Initialize the I2C bus. More...
 
uint8_t get_pos (double *new_pos)
 Calculate an unwrap the position. More...
 
uint8_t get_agc ()
 Calculate the automatic gain control (AGC) More...
 
uint16_t get_magnitude ()
 Get the magnitude value of the internal CORDIC output. More...
 
uint16_t get_conf ()
 Get the configuration register. More...
 
uint8_t set_zero ()
 Set zero by setting offset angle. More...
 
void init_zero ()
 Reset zero position set the offset to zero. More...
 
void set_gear_ratio (uint8_t enc_ratio)
 Set the gear ratio between encoder and measure axis. More...
 
+ + + + + +

+Private Member Functions

uint8_t i2c_byte_transaction (uint8_t i2c_address, uint8_t i2c_register)
 
uint16_t i2c_word_transaction (uint8_t i2c_address, uint8_t i2c_register)
 
+ + + + + + + + + +

+Private Attributes

double _angle_offset = 0
 
int32_t _n = 0
 
float _raw_prev_pos = 0
 
uint8_t _enc_ratio = 0
 
+

Detailed Description

+

Class that functions for interacting with AS5601 magnetic rotary position sensor.

+ +

Definition at line 35 of file as5601.h.

+

Member Function Documentation

+ +

◆ Begin()

+ +
+
+ + + + + +
+ + + + + + + +
void AS5601::Begin ()
+
+inline
+
+ +

Initialize the I2C bus.

+ +

Definition at line 43 of file as5601.h.

+ +

References I2C_FREQ.

+ +
+
+ +

◆ get_agc()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t AS5601::get_agc ()
+
+inline
+
+ +

Calculate the automatic gain control (AGC)

+
Returns
The AGC range is 0-255 counts, the gain value should be in the center of its range
+ +

Definition at line 96 of file as5601.h.

+ +

References AGC, AS5601_ID, and i2c_byte_transaction().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ get_conf()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t AS5601::get_conf ()
+
+inline
+
+ +

Get the configuration register.

+
Returns
The Configuration register
+ +

Definition at line 116 of file as5601.h.

+ +

References AS5601_ID, CONF_HIGH, and i2c_word_transaction().

+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ get_magnitude()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t AS5601::get_magnitude ()
+
+inline
+
+ +

Get the magnitude value of the internal CORDIC output.

+
Returns
The magnitude value of the internal CORDIC output
+ +

Definition at line 106 of file as5601.h.

+ +

References AS5601_ID, i2c_word_transaction(), and MAGNITUDE_HIGH.

+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ get_pos()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t AS5601::get_pos (double * new_pos)
+
+inline
+
+ +

Calculate an unwrap the position.

+
Parameters
+ + +
new_posCalculate the current position of the sensor
+
+
+
Returns
The state of the AS5601: Magnet is too strong Magnet is too weak Magnet was detect
+ +

Definition at line 59 of file as5601.h.

+ +

References _angle_offset, _enc_ratio, _n, _raw_prev_pos, AS5601_ID, i2c_byte_transaction(), i2c_word_transaction(), RAW_ANG_HIGH, and STATUS_REG.

+ +

Referenced by homing(), loop(), and set_zero().

+
+Here is the call graph for this function:
+
+
+ + + + +
+ +
+
+ +

◆ i2c_byte_transaction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint8_t AS5601::i2c_byte_transaction (uint8_t i2c_address,
uint8_t i2c_register 
)
+
+inlineprivate
+
+ +

Definition at line 162 of file as5601.h.

+ +

Referenced by get_agc(), get_pos(), and i2c_word_transaction().

+ +
+
+ +

◆ i2c_word_transaction()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
uint16_t AS5601::i2c_word_transaction (uint8_t i2c_address,
uint8_t i2c_register 
)
+
+inlineprivate
+
+ +

Definition at line 172 of file as5601.h.

+ +

References i2c_byte_transaction().

+ +

Referenced by get_conf(), get_magnitude(), and get_pos().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ init_zero()

+ +
+
+ + + + + +
+ + + + + + + +
void AS5601::init_zero ()
+
+inline
+
+ +

Reset zero position set the offset to zero.

+ +

Definition at line 141 of file as5601.h.

+ +

References _angle_offset.

+ +

Referenced by homing().

+ +
+
+ +

◆ set_gear_ratio()

+ +
+
+ + + + + +
+ + + + + + + + +
void AS5601::set_gear_ratio (uint8_t enc_ratio)
+
+inline
+
+ +

Set the gear ratio between encoder and measure axis.

+
Parameters
+ + +
enc_ratioAn uitn8_t, that represents the gear ratio
+
+
+ +

Definition at line 152 of file as5601.h.

+ +

References _enc_ratio.

+ +

Referenced by setup().

+ +
+
+ +

◆ set_zero()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t AS5601::set_zero ()
+
+inline
+
+ +

Set zero by setting offset angle.

+
Returns
The state of the AS5601: Magnet is too strong Magnet is too weak Magnet was detect
+ +

Definition at line 129 of file as5601.h.

+ +

References _angle_offset, and get_pos().

+ +

Referenced by homing().

+
+Here is the call graph for this function:
+
+
+ + + + + +
+ +
+
+

Member Data Documentation

+ +

◆ _angle_offset

+ +
+
+ + + + + +
+ + + + +
double AS5601::_angle_offset = 0
+
+private
+
+ +

Definition at line 157 of file as5601.h.

+ +

Referenced by get_pos(), init_zero(), and set_zero().

+ +
+
+ +

◆ _enc_ratio

+ +
+
+ + + + + +
+ + + + +
uint8_t AS5601::_enc_ratio = 0
+
+private
+
+ +

Definition at line 160 of file as5601.h.

+ +

Referenced by get_pos(), and set_gear_ratio().

+ +
+
+ +

◆ _n

+ +
+
+ + + + + +
+ + + + +
int32_t AS5601::_n = 0
+
+private
+
+ +

Definition at line 158 of file as5601.h.

+ +

Referenced by get_pos().

+ +
+
+ +

◆ _raw_prev_pos

+ +
+
+ + + + + +
+ + + + +
float AS5601::_raw_prev_pos = 0
+
+private
+
+ +

Definition at line 159 of file as5601.h.

+ +

Referenced by get_pos().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.map b/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.map new file mode 100644 index 0000000..005016a --- /dev/null +++ b/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.md5 b/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.md5 new file mode 100644 index 0000000..6c220db --- /dev/null +++ b/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.md5 @@ -0,0 +1 @@ +cc6dd97a66771a6dc5f48e9b5f37c0a7 \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.png b/doxygen_files/html/classAS5601_a2d48c32082d4bfa19bde77d614cc78dc_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..24e3af3df351b9a471372dadc5417accd28d3b4e GIT binary patch literal 6012 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 UETc(#xK78Bl~Q_EEMXk@Uk>sAy#N3J literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.map b/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.map new file mode 100644 index 0000000..e15dcc2 --- /dev/null +++ b/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.md5 b/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.md5 new file mode 100644 index 0000000..5b1af5b --- /dev/null +++ b/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.md5 @@ -0,0 +1 @@ +d03ec35064b44b183e454b9f470a663f \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.png b/doxygen_files/html/classAS5601_a6fd828b9871407420fb8a277d13e769c_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..f91b7b6b956cad88b23e3fe3099045d66eca37da GIT binary patch literal 6068 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 ANdN!< literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.map b/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.map new file mode 100644 index 0000000..a08bb94 --- /dev/null +++ b/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.md5 b/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.md5 new file mode 100644 index 0000000..64912c5 --- /dev/null +++ b/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.md5 @@ -0,0 +1 @@ +c7982359215d56746c47b4b8aee7f1b3 \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.png b/doxygen_files/html/classAS5601_a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..71c5c2635c2427fab29e7d4a9a8ef56c3f34e44f GIT binary patch literal 9611 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 KB46z7r~d*sba=-A literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.map b/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.map new file mode 100644 index 0000000..cfe161d --- /dev/null +++ b/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.md5 b/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.md5 new file mode 100644 index 0000000..86373ca --- /dev/null +++ b/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.md5 @@ -0,0 +1 @@ +c699b60cbeabc17255af930a592bb1df \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.png b/doxygen_files/html/classAS5601_abfce6bb3f9888bca6c8527ea0d4fad88_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..231ae3f3c0dd04c7c8c0d6043cefff0cbac817c0 GIT binary patch literal 5872 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 + + diff --git a/doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.md5 b/doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.md5 new file mode 100644 index 0000000..3d696e3 --- /dev/null +++ b/doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.md5 @@ -0,0 +1 @@ +41b1ec67750616947b41d4ef471d1223 \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.png b/doxygen_files/html/classAS5601_ad8192e27c57aaef265e0649876ca6bf2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..b26f9cd46dc030f2de75ad9cec5a35f15a55b1e3 GIT binary patch literal 4827 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 + + + + diff --git a/doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.md5 b/doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.md5 new file mode 100644 index 0000000..d968af9 --- /dev/null +++ b/doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.md5 @@ -0,0 +1 @@ +1bf0100c0f3b6e75e0457c66e2475b0a \ No newline at end of file diff --git a/doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.png b/doxygen_files/html/classAS5601_af760a7dd400974baf9daebad22920bdb_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..0dd73b07904b69583a3bbff547ddf42edb0a8292 GIT binary patch literal 10384 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 ly+L#G3jFVjd7f8zG6{9dFJH?C!WBa_aS + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
easycomm Member List
+
+
+ +

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

+ + + + +
easycomm_init()easycomminline
easycomm_proc()easycomminline
isNumber(char *input)easycomminlineprivate
+ + + + diff --git a/doxygen_files/html/classeasycomm.html b/doxygen_files/html/classeasycomm.html new file mode 100644 index 0000000..7b6b1b0 --- /dev/null +++ b/doxygen_files/html/classeasycomm.html @@ -0,0 +1,224 @@ + + + + + + + +satnogs-rotator-firmware: easycomm Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class that functions for easycomm 3 implementation. + More...

+ +

#include <easycomm.h>

+ + + + + + + + +

+Public Member Functions

void easycomm_init ()
 Initialize the RS485 bus. More...
 
void easycomm_proc ()
 Get the commands from RS485 and response to the client. More...
 
+ + + +

+Private Member Functions

bool isNumber (char *input)
 
+

Detailed Description

+

Class that functions for easycomm 3 implementation.

+ +

Definition at line 31 of file easycomm.h.

+

Member Function Documentation

+ +

◆ easycomm_init()

+ +
+
+ + + + + +
+ + + + + + + +
void easycomm::easycomm_init ()
+
+inline
+
+ +

Initialize the RS485 bus.

+ +

Definition at line 39 of file easycomm.h.

+ +

References BAUDRATE, and rs485::begin().

+ +

Referenced by setup().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ easycomm_proc()

+ +
+
+ + + + + +
+ + + + + + + +
void easycomm::easycomm_proc ()
+
+inline
+
+
+ +

◆ isNumber()

+ +
+
+ + + + + +
+ + + + + + + + +
bool easycomm::isNumber (char * input)
+
+inlineprivate
+
+ +

Definition at line 378 of file easycomm.h.

+ +

Referenced by easycomm_proc().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.map b/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.map new file mode 100644 index 0000000..ee5b258 --- /dev/null +++ b/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.map @@ -0,0 +1,7 @@ + + + + + + + diff --git a/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.md5 b/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.md5 new file mode 100644 index 0000000..83afbc7 --- /dev/null +++ b/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.md5 @@ -0,0 +1 @@ +e618145bd6b91a7ba1e3effb75ff50fc \ No newline at end of file diff --git a/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.png b/doxygen_files/html/classeasycomm_a68c229f5c44074fae9992ec9ea605046_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..754a96fbb930751263a4e797245024efc45d8a2b GIT binary patch literal 15208 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.map b/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.map new file mode 100644 index 0000000..ef31320 --- /dev/null +++ b/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.md5 b/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.md5 new file mode 100644 index 0000000..e227498 --- /dev/null +++ b/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.md5 @@ -0,0 +1 @@ +dd6b61240a6225736fe006283b3d9bfe \ No newline at end of file diff --git a/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.png b/doxygen_files/html/classeasycomm_a7db30a0f3a754dc281cbedab461d76f6_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..645ed18fafd99812856036fde5c436fc7d8fe834 GIT binary patch literal 3341 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classendstop-members.html b/doxygen_files/html/classendstop-members.html new file mode 100644 index 0000000..1321d53 --- /dev/null +++ b/doxygen_files/html/classendstop-members.html @@ -0,0 +1,84 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
endstop Member List
+
+
+ +

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

+ + + + + + +
_default_stateendstopprivate
_pinendstopprivate
endstop(uint8_t pin, bool default_state)endstopinline
get_state()endstopinline
init()endstopinline
+ + + + diff --git a/doxygen_files/html/classendstop.html b/doxygen_files/html/classendstop.html new file mode 100644 index 0000000..5c20068 --- /dev/null +++ b/doxygen_files/html/classendstop.html @@ -0,0 +1,280 @@ + + + + + + + +satnogs-rotator-firmware: endstop Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
endstop Class Reference
+
+
+ +

Class that functions for interacting with end-stop. + More...

+ +

#include <endstop.h>

+ + + + + + + + + + +

+Public Member Functions

 endstop (uint8_t pin, bool default_state)
 
void init ()
 Initialize the Input pin for end-stop. More...
 
bool get_state ()
 Get the state of end-stop. More...
 
+ + + + + +

+Private Attributes

uint8_t _pin
 
bool _default_state
 
+

Detailed Description

+

Class that functions for interacting with end-stop.

+
Parameters
+ + + +
pinSet the arduino pin
default_stateSet the default state of end-stop HIGH or LOW
+
+
+ +

Definition at line 22 of file endstop.h.

+

Constructor & Destructor Documentation

+ +

◆ endstop()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
endstop::endstop (uint8_t pin,
bool default_state 
)
+
+inline
+
+ +

Definition at line 25 of file endstop.h.

+ +

References _default_state, and _pin.

+ +
+
+

Member Function Documentation

+ +

◆ get_state()

+ +
+
+ + + + + +
+ + + + + + + +
bool endstop::get_state ()
+
+inline
+
+ +

Get the state of end-stop.

+
Returns
True if end-stop is triggered
+ +

Definition at line 45 of file endstop.h.

+ +

References _default_state, and _pin.

+ +

Referenced by homing(), and loop().

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void endstop::init ()
+
+inline
+
+ +

Initialize the Input pin for end-stop.

+ +

Definition at line 35 of file endstop.h.

+ +

References _pin.

+ +

Referenced by setup().

+ +
+
+

Member Data Documentation

+ +

◆ _default_state

+ +
+
+ + + + + +
+ + + + +
bool endstop::_default_state
+
+private
+
+ +

Definition at line 54 of file endstop.h.

+ +

Referenced by endstop(), and get_state().

+ +
+
+ +

◆ _pin

+ +
+
+ + + + + +
+ + + + +
uint8_t endstop::_pin
+
+private
+
+ +

Definition at line 53 of file endstop.h.

+ +

Referenced by endstop(), get_state(), and init().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classes.html b/doxygen_files/html/classes.html new file mode 100644 index 0000000..575dabf --- /dev/null +++ b/doxygen_files/html/classes.html @@ -0,0 +1,96 @@ + + + + + + + +satnogs-rotator-firmware: Class Index + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + +
+ +
+
+ + +
+ +
+ +
+
+
Class Index
+
+
+
_ | a | e | i | m | r | t | w
+ + + + + + + + + +
  _  
+
  e  
+
  m  
+
  t  
+
_control   easycomm   motor   tc74   
_rotator   endstop   
  r  
+
  w  
+
  a  
+
  i  
+
rs485   wdt_timer   
AS5601   i2c_mux   
+
_ | a | e | i | m | r | t | w
+
+ + + + diff --git a/doxygen_files/html/classi2c__mux-members.html b/doxygen_files/html/classi2c__mux-members.html new file mode 100644 index 0000000..99e95bb --- /dev/null +++ b/doxygen_files/html/classi2c__mux-members.html @@ -0,0 +1,85 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
i2c_mux Member List
+
+
+ +

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

+ + + + + + + +
_ch0i2c_muxprivate
_ch1i2c_muxprivate
_idi2c_muxprivate
i2c_mux(uint8_t id, uint8_t ch0, uint8_t ch1)i2c_muxinline
init()i2c_muxinline
set_channel(uint8_t ch)i2c_muxinline
+ + + + diff --git a/doxygen_files/html/classi2c__mux.html b/doxygen_files/html/classi2c__mux.html new file mode 100644 index 0000000..e7838d2 --- /dev/null +++ b/doxygen_files/html/classi2c__mux.html @@ -0,0 +1,321 @@ + + + + + + + +satnogs-rotator-firmware: i2c_mux Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
i2c_mux Class Reference
+
+
+ +

Class that functions for interacting with I2C 1-of-2 multiplexer. + More...

+ +

#include <i2c_mux.h>

+ + + + + + + + + + +

+Public Member Functions

 i2c_mux (uint8_t id, uint8_t ch0, uint8_t ch1)
 
void init ()
 Initialize the I2C bus. More...
 
void set_channel (uint8_t ch)
 Change the channel. More...
 
+ + + + + + + +

+Private Attributes

uint8_t _id
 
uint8_t _ch0
 
uint8_t _ch1
 
+

Detailed Description

+

Class that functions for interacting with I2C 1-of-2 multiplexer.

+
Parameters
+ + + + +
idI2C ID in HEX
ch0Channel 0 in HEX
ch1Channel 1 in HEX
+
+
+ +

Definition at line 28 of file i2c_mux.h.

+

Constructor & Destructor Documentation

+ +

◆ i2c_mux()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + +
i2c_mux::i2c_mux (uint8_t id,
uint8_t ch0,
uint8_t ch1 
)
+
+inline
+
+ +

Definition at line 31 of file i2c_mux.h.

+ +

References _ch0, _ch1, and _id.

+ +
+
+

Member Function Documentation

+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void i2c_mux::init ()
+
+inline
+
+ +

Initialize the I2C bus.

+ +

Definition at line 42 of file i2c_mux.h.

+ +

References I2C_FREQ.

+ +

Referenced by setup().

+ +
+
+ +

◆ set_channel()

+ +
+
+ + + + + +
+ + + + + + + + +
void i2c_mux::set_channel (uint8_t ch)
+
+inline
+
+ +

Change the channel.

+
Parameters
+ + +
chSet the channel that is connected with Master, CH0 or CH1
+
+
+ +

Definition at line 54 of file i2c_mux.h.

+ +

References _ch0, _ch1, and _id.

+ +

Referenced by homing(), and loop().

+ +
+
+

Member Data Documentation

+ +

◆ _ch0

+ +
+
+ + + + + +
+ + + + +
uint8_t i2c_mux::_ch0
+
+private
+
+ +

Definition at line 67 of file i2c_mux.h.

+ +

Referenced by i2c_mux(), and set_channel().

+ +
+
+ +

◆ _ch1

+ +
+
+ + + + + +
+ + + + +
uint8_t i2c_mux::_ch1
+
+private
+
+ +

Definition at line 67 of file i2c_mux.h.

+ +

Referenced by i2c_mux(), and set_channel().

+ +
+
+ +

◆ _id

+ +
+
+ + + + + +
+ + + + +
uint8_t i2c_mux::_id
+
+private
+
+ +

Definition at line 67 of file i2c_mux.h.

+ +

Referenced by i2c_mux(), and set_channel().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classmotor-members.html b/doxygen_files/html/classmotor-members.html new file mode 100644 index 0000000..72e6307 --- /dev/null +++ b/doxygen_files/html/classmotor-members.html @@ -0,0 +1,97 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
motor Member List
+
+
+ +

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

+ + + + + + + + + + + + + + + + + + + +
_en_pinmotorprivate
_fb_pinmotorprivate
_maxSpeedmotorprivate
_minSpeedmotorprivate
_pwm_pin1motorprivate
_pwm_pin2motorprivate
_sf_pinmotorprivate
disenable()motorinline
enable()motorinline
get_fault()motorinline
get_load()motorinline
init_pin()motorinline
init_timer(uint8_t timer, uint16_t divisor)motorinline
motor(uint8_t pwm_pin1, uint8_t pwm_pin2, uint8_t fb_pin, uint8_t en_pin, uint8_t sf_pin, uint16_t maxSpeed, uint16_t minSpeed)motorinline
move(int16_t speed)motorinline
set_max(uint16_t max)motorinline
set_min(uint16_t min)motorinline
stop()motorinline
+ + + + diff --git a/doxygen_files/html/classmotor.html b/doxygen_files/html/classmotor.html new file mode 100644 index 0000000..59e1452 --- /dev/null +++ b/doxygen_files/html/classmotor.html @@ -0,0 +1,791 @@ + + + + + + + +satnogs-rotator-firmware: motor Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class that functions for interacting with a Motor Driver Carrier. + More...

+ +

#include <motor.h>

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

+Public Member Functions

 motor (uint8_t pwm_pin1, uint8_t pwm_pin2, uint8_t fb_pin, uint8_t en_pin, uint8_t sf_pin, uint16_t maxSpeed, uint16_t minSpeed)
 
void init_pin ()
 Initialize pins of DC motor driver. More...
 
void init_timer (uint8_t timer, uint16_t divisor)
 Set timer frequency, for timers 0, 1, 2. More...
 
void enable ()
 Enable motor driver. More...
 
void disenable ()
 Disable motor driver. More...
 
uint16_t get_load ()
 Calculate the load of DC motor. More...
 
uint8_t get_fault ()
 Get the status flag of motor driver. More...
 
void move (int16_t speed)
 Move the DC motor with constant voltage (~speed) More...
 
void stop ()
 Stop moving the DC motor. More...
 
void set_min (uint16_t min)
 Update the minimum speed of DC motor. More...
 
void set_max (uint16_t max)
 Update the maximum speed of DC motor. More...
 
+ + + + + + + + + + + + + + + +

+Private Attributes

uint8_t _pwm_pin1
 
uint8_t _pwm_pin2
 
uint8_t _fb_pin
 
uint8_t _en_pin
 
uint8_t _sf_pin
 
int16_t _maxSpeed
 
int16_t _minSpeed
 
+

Detailed Description

+

Class that functions for interacting with a Motor Driver Carrier.

+
Parameters
+ + + + + + + + +
pwm_pin1PWM pin, regulate the duty cycle
pwm_pin2PWM pin, regulate the duty cycle
fb_pinAnalog pin that measure the analog current-sense feedback
en_pinDigital pin that enable and disable the motor driver
sf_pinDigital pin that read if the motor driver works properly or not
maxSpeedSet the maximum PWM value that the DC motor can handle, e.g. max 255 (8 bit timer)
minSpeedSet the minimum PWM value that the DC motor can handle, e.g. min 5 (8-bit timer)
+
+
+ +

Definition at line 35 of file motor.h.

+

Constructor & Destructor Documentation

+ +

◆ motor()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
motor::motor (uint8_t pwm_pin1,
uint8_t pwm_pin2,
uint8_t fb_pin,
uint8_t en_pin,
uint8_t sf_pin,
uint16_t maxSpeed,
uint16_t minSpeed 
)
+
+inline
+
+ +

Definition at line 38 of file motor.h.

+ +

References _en_pin, _fb_pin, _maxSpeed, _minSpeed, _pwm_pin1, _pwm_pin2, _sf_pin, and stop().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+

Member Function Documentation

+ +

◆ disenable()

+ +
+
+ + + + + +
+ + + + + + + +
void motor::disenable ()
+
+inline
+
+ +

Disable motor driver.

+ +

Definition at line 155 of file motor.h.

+ +

References _en_pin.

+ +

Referenced by loop().

+ +
+
+ +

◆ enable()

+ +
+
+ + + + + +
+ + + + + + + +
void motor::enable ()
+
+inline
+
+ +

Enable motor driver.

+ +

Definition at line 146 of file motor.h.

+ +

References _en_pin.

+ +

Referenced by setup().

+ +
+
+ +

◆ get_fault()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t motor::get_fault ()
+
+inline
+
+ +

Get the status flag of motor driver.

+
Returns
HIGH the motor driver is working properly LOW an over-current (short circuit) or over-temperature event
+ +

Definition at line 176 of file motor.h.

+ +

References _sf_pin.

+ +

Referenced by loop().

+ +
+
+ +

◆ get_load()

+ +
+
+ + + + + +
+ + + + + + + +
uint16_t motor::get_load ()
+
+inline
+
+ +

Calculate the load of DC motor.

+
Returns
Return an analog read value 0-1023
+ +

Definition at line 165 of file motor.h.

+ +

References _fb_pin.

+ +
+
+ +

◆ init_pin()

+ +
+
+ + + + + +
+ + + + + + + +
void motor::init_pin ()
+
+inline
+
+ +

Initialize pins of DC motor driver.

+ +

Definition at line 55 of file motor.h.

+ +

References _en_pin, _fb_pin, _pwm_pin1, _pwm_pin2, and _sf_pin.

+ +

Referenced by setup().

+ +
+
+ +

◆ init_timer()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
void motor::init_timer (uint8_t timer,
uint16_t divisor 
)
+
+inline
+
+ +

Set timer frequency, for timers 0, 1, 2.

+
Parameters
+ + + +
timerPWM frequency for D5 & D6, set timer 0 PWM frequency for D9 & D10, set timer 1 PWM frequency for D3 & D11, set timer 2
divisorFor timer 0 divisor to 1 for PWM frequency of 62500.00 Hz divisor to 8 for PWM frequency of 7812.50 Hz divisor to 64 for PWM frequency of 976.56 Hz (The DEFAULT) divisor to 256 for PWM frequency of 244.14 Hz divisor to 1024 for PWM frequency of 61.04 Hz For timer 1 divisor to 1 for PWM frequency of 31372.55 Hz divisor to 8 for PWM frequency of 3921.16 Hz divisor to 64 for PWM frequency of 490.20 Hz (The DEFAULT) divisor to 256 for PWM frequency of 122.55 Hz divisor to 1024 for PWM frequency of 30.64 Hz For timer 2 divisor to 1 for PWM frequency of 31372.55 Hz divisor to 8 for PWM frequency of 3921.16 Hz divisor to 32 for PWM frequency of 980.39 Hz divisor to 64 for PWM frequency of 490.20 Hz (The DEFAULT) divisor to 128 for PWM frequency of 245.10 Hz divisor to 256 for PWM frequency of 122.55 Hz divisor to 1024 for PWM frequency of 30.64 Hz
+
+
+ +

Definition at line 95 of file motor.h.

+ +

Referenced by setup().

+ +
+
+ +

◆ move()

+ +
+
+ + + + + +
+ + + + + + + + +
void motor::move (int16_t speed)
+
+inline
+
+ +

Move the DC motor with constant voltage (~speed)

+
Parameters
+ + +
speedRange minSpeed - maxSpeed, -255 - +255
+
+
+ +

Definition at line 188 of file motor.h.

+ +

References _maxSpeed, _minSpeed, _pwm_pin1, _pwm_pin2, speed, and stop().

+ +

Referenced by homing(), and loop().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ set_max()

+ +
+
+ + + + + +
+ + + + + + + + +
void motor::set_max (uint16_t max)
+
+inline
+
+ +

Update the maximum speed of DC motor.

+
Parameters
+ + +
maxMaximum speed, e.g. a range of 170 - 255
+
+
+ +

Definition at line 237 of file motor.h.

+ +

References _maxSpeed.

+ +
+
+ +

◆ set_min()

+ +
+
+ + + + + +
+ + + + + + + + +
void motor::set_min (uint16_t min)
+
+inline
+
+ +

Update the minimum speed of DC motor.

+
Parameters
+ + +
minMinimum speed, e.g. a range of 0 - 40
+
+
+ +

Definition at line 226 of file motor.h.

+ +

References _minSpeed.

+ +
+
+ +

◆ stop()

+ +
+
+ + + + + +
+ + + + + + + +
void motor::stop ()
+
+inline
+
+ +

Stop moving the DC motor.

+ +

Definition at line 214 of file motor.h.

+ +

References _pwm_pin1, and _pwm_pin2.

+ +

Referenced by homing(), loop(), motor(), and move().

+ +
+
+

Member Data Documentation

+ +

◆ _en_pin

+ +
+
+ + + + + +
+ + + + +
uint8_t motor::_en_pin
+
+private
+
+ +

Definition at line 242 of file motor.h.

+ +

Referenced by disenable(), enable(), init_pin(), and motor().

+ +
+
+ +

◆ _fb_pin

+ +
+
+ + + + + +
+ + + + +
uint8_t motor::_fb_pin
+
+private
+
+ +

Definition at line 242 of file motor.h.

+ +

Referenced by get_load(), init_pin(), and motor().

+ +
+
+ +

◆ _maxSpeed

+ +
+
+ + + + + +
+ + + + +
int16_t motor::_maxSpeed
+
+private
+
+ +

Definition at line 243 of file motor.h.

+ +

Referenced by motor(), move(), and set_max().

+ +
+
+ +

◆ _minSpeed

+ +
+
+ + + + + +
+ + + + +
int16_t motor::_minSpeed
+
+private
+
+ +

Definition at line 243 of file motor.h.

+ +

Referenced by motor(), move(), and set_min().

+ +
+
+ +

◆ _pwm_pin1

+ +
+
+ + + + + +
+ + + + +
uint8_t motor::_pwm_pin1
+
+private
+
+ +

Definition at line 242 of file motor.h.

+ +

Referenced by init_pin(), motor(), move(), and stop().

+ +
+
+ +

◆ _pwm_pin2

+ +
+
+ + + + + +
+ + + + +
uint8_t motor::_pwm_pin2
+
+private
+
+ +

Definition at line 242 of file motor.h.

+ +

Referenced by init_pin(), motor(), move(), and stop().

+ +
+
+ +

◆ _sf_pin

+ +
+
+ + + + + +
+ + + + +
uint8_t motor::_sf_pin
+
+private
+
+ +

Definition at line 242 of file motor.h.

+ +

Referenced by get_fault(), init_pin(), and motor().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.map b/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.map new file mode 100644 index 0000000..f86e6d7 --- /dev/null +++ b/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.md5 b/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.md5 new file mode 100644 index 0000000..c941893 --- /dev/null +++ b/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.md5 @@ -0,0 +1 @@ +e36daa9362577d1ffcecabbc328198fc \ No newline at end of file diff --git a/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.png b/doxygen_files/html/classmotor_a01f848ad7e9ff16b4cb61174d3a5a084_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..8a94f53075abea51f8c32359922107bbb619448e GIT binary patch literal 2527 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 bamn-BCFHNWagjrSV*}}F8Ee)&hDQDa^KJH# literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.map b/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.map new file mode 100644 index 0000000..797d1c1 --- /dev/null +++ b/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.md5 b/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.md5 new file mode 100644 index 0000000..5c537ac --- /dev/null +++ b/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.md5 @@ -0,0 +1 @@ +c4bfaaa08ca93a15c991304611ff5e5c \ No newline at end of file diff --git a/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.png b/doxygen_files/html/classmotor_a2a035f9f051ce59d705654966dd95851_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..03a44bb2fc53f2b6c83361f9bc4e335156066925 GIT binary patch literal 2036 zcmV2P)|(m& zi1-#T6cMqCN+KYlC0vBm$fc%1!%BgIat-oGyb)O9qggb_6^&qOLThkaVKJhO+Ue{c zv)irgwA)r;fO~#_ojLP$&exfK^Xg%0YNxmVL%WL0tzENJ-wr&WBSL%HKUSoh)DETsr2{Z;ZdR! z0RVtit5#jRc5Su~VF?~FW~--9UrQuyQBlP|{dBRqx<{{nPjp6eiZg|A@ZiD9%F3*) zthl(iy?ggQfBsylR0@T{&6_uum6e&FV;>(MKX>k&Kp+qZ1Q#w`c>n%A0O0J|vx9?! zB_$>6)~(CP$gmcMjUt!Jv$M0~# zIhny=`1$$m*|TSCYzzR9l$7-7(W8C)_K`@W$jC@*Vb~~nd3iB0F`k~D_4V}wAX5PGc zGbAKLEEa1tn(FFmnM`*7{{8OmZY-vtpkQKRLN1rfWHP;8UtC-a0625zOmJ{;ZfdHe*Emv za+;f)D=I49ym=ED8M$%e#uqPM^!NAo_V%{4wA{FH1B*#WNO&rc`hz4US3{qZf=p0k)@@j|C_4qAr2in6cZEU<>i%|o6BOcnwy)Q zSeZDFgxJH|+Z$`RxVX5wy1Kc!nI}Je`UC*b>2wqdW%1(0SU-!!0s!dsdS72(%jMV( zV=x%AE*SuTtLqQ`{zvT$cAAHWtF>8Qz90aA&!3HLZBI}X`1u`_N`KGDSWl(es*pvC z7GVuHH#c{8cMlH_^Q6IG003w-8Y-2#bm>y8A3O8WXf#YF({ees!6{O#Mfp`oEijvNUK3!4;Udx)T*Aai6;P>@!uwLKy(Ckx~MVlWs8g6MQQ?DzEg z^=t5-Rd2b|wGjsJo?w|3$$a^um&x{gm&|P_Dr))g;ghwwR4N%kOf;Iyk3V{Mbo?q3 z{Ys&H>#>f_W*d#h;o)KI$Bpga*=#oWdNtYz1NN;(KA+F$^Gzm`LZOI`jvg5qad&sO ze~4GFUYR4+YW3EwTb=l_Q&kvDCNnfNw4$Qo*s)^>f?T?EY0a87*sj;d$49MJBM3sF zP;7)vqEIMWTU)U+D9bh>$=GHxedO~wj(*Bfzx;x8mzhE#n@lK`O5*YU!sm0gYzb>= z`R&#%&9_$t03awRC^|Y?BobY@a>ZygVmCanoivll?Cv)KrO7z_sN(%=3es;a7DV`Ia^!(}p=R;v{V1WtU}DLiA&&(EjP zXa^1)NKa2+xNzaAQ>U>09XocYRH{vzHeok{tcA_tWWGBRiA150$z)Pk7`voI`1EOU zO--s$xSB?D`Mv`+G&IoZ^w7}Ih=>Rli&axogY};{aiYDwokpW!w~VZX*@MU9d3$@u z#l2!yNNJ~r0%ggik_phz3ZEbBeAM+hTvV2R3QmIT#OziCJbYeje z27By$8s5Fa<4J~w{z0XZ5d>Yia*0s5n$PF>_;^eT!?x+4=Up%y4o55&r=+Af^eGaF z)X>n7kdR>RnW|GMXsS`El;GgS2??uz{&^*fwSee!<{DTSvz0=T=I1w`=q%N+r=L z%rZEIF#}(V1bw5##6+S~m}N+Rp8rH4$bRq|1A=hC!hj$gurMG92P_N-!tpP^M0W27 SK<_jF0000 + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
rs485 Member List
+
+
+ +

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

+ + + + + + + + + + +
_pin_dirrs485private
_tx_timers485private
available(void)rs485inline
begin(uint16_t baudrate)rs485inline
end()rs485inline
flush()rs485inline
print(String str)rs485inline
read()rs485inline
rs485(uint8_t pin_dir, uint16_t tx_time)rs485inline
+ + + + diff --git a/doxygen_files/html/classrs485.html b/doxygen_files/html/classrs485.html new file mode 100644 index 0000000..3b93a22 --- /dev/null +++ b/doxygen_files/html/classrs485.html @@ -0,0 +1,430 @@ + + + + + + + +satnogs-rotator-firmware: rs485 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class that functions for interacting with a RS485 transceiver. + More...

+ +

#include <rs485.h>

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

+Public Member Functions

 rs485 (uint8_t pin_dir, uint16_t tx_time)
 
void begin (uint16_t baudrate)
 Initialize the RS485 transceiver. More...
 
void print (String str)
 Print a string to RS485 bus. More...
 
uint8_t read ()
 Read a char/uint8_t from RS485 bus. More...
 
uint8_t available (void)
 The number of chars/uint8_t that are available in RS485 buffer. More...
 
void flush ()
 Waits for the transmission of outgoing serial data to complete. More...
 
void end ()
 Disables RS485 communication. More...
 
+ + + + + +

+Private Attributes

uint8_t _pin_dir
 
uint16_t _tx_time
 
+

Detailed Description

+

Class that functions for interacting with a RS485 transceiver.

+
Parameters
+ + + +
pin_dirDigital pin, to set read or write to RS485 bus
tx_timeTime delay in ms in order to transmit and change the status of direction pin
+
+
+ +

Definition at line 23 of file rs485.h.

+

Constructor & Destructor Documentation

+ +

◆ rs485()

+ +
+
+ + + + + +
+ + + + + + + + + + + + + + + + + + +
rs485::rs485 (uint8_t pin_dir,
uint16_t tx_time 
)
+
+inline
+
+ +

Definition at line 26 of file rs485.h.

+ +

References _pin_dir, and _tx_time.

+ +
+
+

Member Function Documentation

+ +

◆ available()

+ +
+
+ + + + + +
+ + + + + + + + +
uint8_t rs485::available (void )
+
+inline
+
+ +

The number of chars/uint8_t that are available in RS485 buffer.

+
Returns
A char/uint8_t
+ +

Definition at line 73 of file rs485.h.

+ +

Referenced by easycomm::easycomm_proc(), and ISR().

+ +
+
+ +

◆ begin()

+ +
+
+ + + + + +
+ + + + + + + + +
void rs485::begin (uint16_t baudrate)
+
+inline
+
+ +

Initialize the RS485 transceiver.

+
Parameters
+ + +
baudrateSet the baudrate of RS485 bus
+
+
+ +

Definition at line 38 of file rs485.h.

+ +

References _pin_dir.

+ +

Referenced by easycomm::easycomm_init().

+ +
+
+ +

◆ end()

+ +
+
+ + + + + +
+ + + + + + + +
void rs485::end ()
+
+inline
+
+ +

Disables RS485 communication.

+ +

Definition at line 91 of file rs485.h.

+ +
+
+ +

◆ flush()

+ +
+
+ + + + + +
+ + + + + + + +
void rs485::flush ()
+
+inline
+
+ +

Waits for the transmission of outgoing serial data to complete.

+ +

Definition at line 82 of file rs485.h.

+ +

Referenced by easycomm::easycomm_proc(), and ISR().

+ +
+
+ +

◆ print()

+ +
+
+ + + + + +
+ + + + + + + + +
void rs485::print (String str)
+
+inline
+
+ +

Print a string to RS485 bus.

+
Parameters
+ + +
strA String to transmit
+
+
+ +

Definition at line 50 of file rs485.h.

+ +

References _pin_dir, and _tx_time.

+ +

Referenced by easycomm::easycomm_proc(), and ISR().

+ +
+
+ +

◆ read()

+ +
+
+ + + + + +
+ + + + + + + +
uint8_t rs485::read ()
+
+inline
+
+ +

Read a char/uint8_t from RS485 bus.

+
Returns
A char/uint8_t
+ +

Definition at line 63 of file rs485.h.

+ +

Referenced by easycomm::easycomm_proc(), and ISR().

+ +
+
+

Member Data Documentation

+ +

◆ _pin_dir

+ +
+
+ + + + + +
+ + + + +
uint8_t rs485::_pin_dir
+
+private
+
+ +

Definition at line 96 of file rs485.h.

+ +

Referenced by begin(), print(), and rs485().

+ +
+
+ +

◆ _tx_time

+ +
+
+ + + + + +
+ + + + +
uint16_t rs485::_tx_time
+
+private
+
+ +

Definition at line 97 of file rs485.h.

+ +

Referenced by print(), and rs485().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classtc74-members.html b/doxygen_files/html/classtc74-members.html new file mode 100644 index 0000000..300f7b0 --- /dev/null +++ b/doxygen_files/html/classtc74-members.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
tc74 Member List
+
+
+ +

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

+ + + + + + + + +
_idtc74private
get_status()tc74inline
get_temp()tc74inline
init()tc74inline
sleep()tc74inline
tc74(uint8_t id)tc74inline
wake_up()tc74inline
+ + + + diff --git a/doxygen_files/html/classtc74.html b/doxygen_files/html/classtc74.html new file mode 100644 index 0000000..93f0930 --- /dev/null +++ b/doxygen_files/html/classtc74.html @@ -0,0 +1,366 @@ + + + + + + + +satnogs-rotator-firmware: tc74 Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+ +
+ +

Class that functions for interacting with a TC74 Temperature sensor. + More...

+ +

#include <tc74.h>

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

+Public Member Functions

 tc74 (uint8_t id)
 
void init ()
 Initialize the I2C bus. More...
 
int8_t get_temp ()
 Reads the int8_t in temperature measurement register. More...
 
int8_t get_status ()
 Reads the int8_t in status register. More...
 
int8_t wake_up ()
 Wake up request to the sensor on the specified address. More...
 
int8_t sleep ()
 Sleep device request to the sensor on the specified address. More...
 
+ + + +

+Private Attributes

int _id
 
+

Detailed Description

+

Class that functions for interacting with a TC74 Temperature sensor.

+
Parameters
+ + +
idSet the ID of temperature sensor, I2C address TC74_A0 0b10010000 TC74_A1 0b10010010 TC74_A2 0b10010100 TC74_A3 0b10010110 TC74_A4 0b10011000 TC74_A5 0b10011010 TC74_A6 0b10011100 TC74_A7 0b10011110
+
+
+ +

Definition at line 36 of file tc74.h.

+

Constructor & Destructor Documentation

+ +

◆ tc74()

+ +
+
+ + + + + +
+ + + + + + + + +
tc74::tc74 (uint8_t id)
+
+inline
+
+ +

Definition at line 39 of file tc74.h.

+ +

References _id.

+ +
+
+

Member Function Documentation

+ +

◆ get_status()

+ +
+
+ + + + + +
+ + + + + + + +
int8_t tc74::get_status ()
+
+inline
+
+ +

Reads the int8_t in status register.

+
Returns
The status register int8_t
+ +

Definition at line 75 of file tc74.h.

+ +

References _id, TC74_AWAKE_COMMAND, and TC74_CONFIGURATION_REGISTER.

+ +

Referenced by sleep(), and wake_up().

+ +
+
+ +

◆ get_temp()

+ +
+
+ + + + + +
+ + + + + + + +
int8_t tc74::get_temp ()
+
+inline
+
+ +

Reads the int8_t in temperature measurement register.

+
Returns
The temperature int8_t
+ +

Definition at line 59 of file tc74.h.

+ +

References _id, and TC74_TEMPERATURE_REGISTER.

+ +

Referenced by loop().

+ +
+
+ +

◆ init()

+ +
+
+ + + + + +
+ + + + + + + +
void tc74::init ()
+
+inline
+
+ +

Initialize the I2C bus.

+ +

Definition at line 48 of file tc74.h.

+ +

References I2C_FREQ.

+ +
+
+ +

◆ sleep()

+ +
+
+ + + + + +
+ + + + + + + +
int8_t tc74::sleep ()
+
+inline
+
+ +

Sleep device request to the sensor on the specified address.

+
Returns
The status register int8_t
+ +

Definition at line 110 of file tc74.h.

+ +

References _id, get_status(), TC74_CONFIGURATION_REGISTER, and TC74_STANDBY_COMMAND.

+ +

Referenced by loop().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+ +

◆ wake_up()

+ +
+
+ + + + + +
+ + + + + + + +
int8_t tc74::wake_up ()
+
+inline
+
+ +

Wake up request to the sensor on the specified address.

+
Returns
The status register int8_t
+ +

Definition at line 94 of file tc74.h.

+ +

References _id, get_status(), TC74_AWAKE_COMMAND, and TC74_CONFIGURATION_REGISTER.

+ +

Referenced by loop().

+
+Here is the call graph for this function:
+
+
+ + + +
+ +
+
+

Member Data Documentation

+ +

◆ _id

+ +
+
+ + + + + +
+ + + + +
int tc74::_id
+
+private
+
+ +

Definition at line 121 of file tc74.h.

+ +

Referenced by get_status(), get_temp(), sleep(), tc74(), and wake_up().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.map b/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.map new file mode 100644 index 0000000..d543bbb --- /dev/null +++ b/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.md5 b/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.md5 new file mode 100644 index 0000000..077baa1 --- /dev/null +++ b/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.md5 @@ -0,0 +1 @@ +0d981d56c2240cd49afeea9285f32660 \ No newline at end of file diff --git a/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.png b/doxygen_files/html/classtc74_a5304cfec3e2fd0955db133ae0892c734_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..4dfc14a26c571ea8515d128e44cfb6e4371e58f1 GIT binary patch literal 3229 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 z + + diff --git a/doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.md5 b/doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.md5 new file mode 100644 index 0000000..08729d2 --- /dev/null +++ b/doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.md5 @@ -0,0 +1 @@ +fd63f771cc2218fd339c52929eca3671 \ No newline at end of file diff --git a/doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.png b/doxygen_files/html/classtc74_a9e10af3dbd52592f902f81885dc166d2_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..9817685fd7243ba7a5a5978e6cfa6244f34f020a GIT binary patch literal 3294 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/classwdt__timer-members.html b/doxygen_files/html/classwdt__timer-members.html new file mode 100644 index 0000000..4a2c44b --- /dev/null +++ b/doxygen_files/html/classwdt__timer-members.html @@ -0,0 +1,81 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+
+
wdt_timer Member List
+
+
+ +

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

+ + + +
watchdog_init()wdt_timerinline
watchdog_reset()wdt_timerinline
+ + + + diff --git a/doxygen_files/html/classwdt__timer.html b/doxygen_files/html/classwdt__timer.html new file mode 100644 index 0000000..b11a98a --- /dev/null +++ b/doxygen_files/html/classwdt__timer.html @@ -0,0 +1,164 @@ + + + + + + + +satnogs-rotator-firmware: wdt_timer Class Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ +
+
+ +
+
wdt_timer Class Reference
+
+
+ +

Class that functions for interacting with a watchdog timer. + More...

+ +

#include <watchdog.h>

+ + + + + + + + +

+Public Member Functions

void watchdog_init ()
 Initialize watchdog timer to 2sec time out and to set up interrupt routine. More...
 
void watchdog_reset ()
 Reset the watchdog timer. More...
 
+

Detailed Description

+

Class that functions for interacting with a watchdog timer.

+ +

Definition at line 23 of file watchdog.h.

+

Member Function Documentation

+ +

◆ watchdog_init()

+ +
+
+ + + + + +
+ + + + + + + +
void wdt_timer::watchdog_init ()
+
+inline
+
+ +

Initialize watchdog timer to 2sec time out and to set up interrupt routine.

+ +

Definition at line 32 of file watchdog.h.

+ +

Referenced by setup().

+ +
+
+ +

◆ watchdog_reset()

+ +
+
+ + + + + +
+ + + + + + + +
void wdt_timer::watchdog_reset ()
+
+inline
+
+ +

Reset the watchdog timer.

+ +

Definition at line 45 of file watchdog.h.

+ +

Referenced by homing(), and loop().

+ +
+
+
The documentation for this class was generated from the following file: +
+ + + + diff --git a/doxygen_files/html/closed.png b/doxygen_files/html/closed.png new file mode 100644 index 0000000000000000000000000000000000000000..98cc2c909da37a6df914fbf67780eebd99c597f5 GIT binary patch literal 132 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{V-kvUwAr*{o@8{^CZMh(5KoB^r_<4^zF@3)Cp&&t3hdujKf f*?bjBoY!V+E))@{xMcbjXe@)LtDnm{r-UW|*e5JT literal 0 HcmV?d00001 diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html new file mode 100644 index 0000000..8bf1e34 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/CDC.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CDC.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html new file mode 100644 index 0000000..df33dc6 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/CDC.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
CDC.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/CDC.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/CDC.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html new file mode 100644 index 0000000..1f462a6 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial0.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html new file mode 100644 index 0000000..3a1cf45 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial0.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial0.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html new file mode 100644 index 0000000..3615a2e --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial1.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html new file mode 100644 index 0000000..63390e4 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial1.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial1.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial1.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html new file mode 100644 index 0000000..87d5d3b --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial2.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html new file mode 100644 index 0000000..34cf273 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial2.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial2.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial2.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html new file mode 100644 index 0000000..afe0dbf --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial3.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html new file mode 100644 index 0000000..0714d84 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial3.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial3.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial3.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html new file mode 100644 index 0000000..2ee35cb --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html new file mode 100644 index 0000000..202d00d --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/HardwareSerial.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
HardwareSerial.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/HardwareSerial.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html new file mode 100644 index 0000000..3afda97 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/IPAddress.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IPAddress.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html new file mode 100644 index 0000000..090f440 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/IPAddress.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
IPAddress.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/IPAddress.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html new file mode 100644 index 0000000..d87a6a3 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/PluggableUSB.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PluggableUSB.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html new file mode 100644 index 0000000..ee07fdb --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/PluggableUSB.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
PluggableUSB.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/PluggableUSB.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html new file mode 100644 index 0000000..2b12a62 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Print.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Print.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html new file mode 100644 index 0000000..17e9b0c --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Print.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Print.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Print.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html new file mode 100644 index 0000000..b47c7a4 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Stream.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Stream.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html new file mode 100644 index 0000000..1f45d7c --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Stream.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Stream.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Stream.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html new file mode 100644 index 0000000..b1a018d --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Tone.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Tone.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html new file mode 100644 index 0000000..0f78bf4 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/Tone.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Tone.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/Tone.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Tone.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html new file mode 100644 index 0000000..584e21e --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/USBCore.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
USBCore.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html new file mode 100644 index 0000000..bfdd5d5 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/USBCore.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
USBCore.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/USBCore.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBCore.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html new file mode 100644 index 0000000..2f71086 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WInterrupts.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WInterrupts.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html new file mode 100644 index 0000000..4ebf828 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WInterrupts.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WInterrupts.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WInterrupts.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WInterrupts.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html new file mode 100644 index 0000000..bc861a7 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WMath.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WMath.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html new file mode 100644 index 0000000..7e9a34a --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WMath.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WMath.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WMath.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WMath.cpp
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html new file mode 100644 index 0000000..810394f --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WString.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WString.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html new file mode 100644 index 0000000..03764ca --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/WString.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
WString.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/WString.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html new file mode 100644 index 0000000..5c4a9c5 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/abi.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
abi.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html new file mode 100644 index 0000000..18dd8ba --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/abi.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
abi.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/abi.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/abi.cpp
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html new file mode 100644 index 0000000..6bce21e --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/hooks.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hooks.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html new file mode 100644 index 0000000..6900eae --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/hooks.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
hooks.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/hooks.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/hooks.c
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html new file mode 100644 index 0000000..7125214 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/main.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
main.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html new file mode 100644 index 0000000..3cb2467 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/main.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
main.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/main.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/main.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html new file mode 100644 index 0000000..cb7ce19 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/new.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
new.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html new file mode 100644 index 0000000..6037127 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/new.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
new.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/new.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/new.cpp
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html new file mode 100644 index 0000000..734e3bb --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html new file mode 100644 index 0000000..a229d79 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html new file mode 100644 index 0000000..4fca9b8 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_analog.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_analog.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html new file mode 100644 index 0000000..b19cfaf --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_analog.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_analog.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring_analog.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_analog.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html new file mode 100644 index 0000000..e00c93d --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_digital.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_digital.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html new file mode 100644 index 0000000..d2b1a6d --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_digital.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_digital.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring_digital.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_digital.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html new file mode 100644 index 0000000..8ca3acd --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.S.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_pulse.S.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html new file mode 100644 index 0000000..21cfaf5 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.S.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_pulse.S.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring_pulse.S.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.S
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html new file mode 100644 index 0000000..45dacd2 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_pulse.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html new file mode 100644 index 0000000..93cf97b --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_pulse.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring_pulse.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html new file mode 100644 index 0000000..2da1278 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_shift.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_shift.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html new file mode 100644 index 0000000..2410399 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_shift.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
wiring_shift.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/core/wiring_shift.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_shift.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html new file mode 100644 index 0000000..960427f --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Wire.cpp.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html new file mode 100644 index 0000000..98f0591 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
Wire.cpp.d
+
+
+Go to the documentation of this file.
1 build-satnogs/platformlibs/Wire/src/Wire.cpp.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.cpp \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html new file mode 100644 index 0000000..fbca565 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
twi.c.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html new file mode 100644 index 0000000..07b6ca1 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
twi.c.d
+
+
+Go to the documentation of this file.
1 build-satnogs/platformlibs/Wire/src/utility/twi.c.o: \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.c \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino.html b/doxygen_files/html/dc__motor__controller_8ino.html new file mode 100644 index 0000000..fc14c36 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino.html @@ -0,0 +1,900 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/dc_motor_controller.ino File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+ +
+
dc_motor_controller.ino File Reference
+
+
+
#include <PID_v1.h>
+#include <Wire.h>
+#include "../libraries/globals.h"
+#include "../libraries/easycomm.h"
+#include "../libraries/rotator_pins.h"
+#include "../libraries/endstop.h"
+#include "../libraries/watchdog.h"
+#include "../libraries/i2c_mux.h"
+#include "../libraries/tc74.h"
+#include "../libraries/motor.h"
+#include "../libraries/as5601.h"
+
+Include dependency graph for dc_motor_controller.ino:
+
+
+ + + + + + + + + + + + +
+
+

Go to the source code of this file.

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

+Macros

#define SAMPLE_TIME   0.1
 Control loop in s. More...
 
#define RATIO   54
 Gear ratio of rotator gear box. More...
 
#define MAX_PWM   180
 Set max Speed. More...
 
#define MIN_PWM   5
 Set min Speed. More...
 
#define POSITION_DEADZONE   0.2
 Control dead zone. More...
 
#define PCA9540_ID   0x70
 I2C Multiplexer ID. More...
 
#define PCA9540_CH0   0x04
 I2C Multiplexer CHO. More...
 
#define PCA9540_CH1   0x05
 I2C Multiplexer CH1. More...
 
#define TC74_ID   0x48
 Temperature Sensor ID. More...
 
#define OVER_TEMP   60
 Over temperature limit. More...
 
#define ENC_RATIO   2
 Encoder AS5601 gear ratio. More...
 
#define MIN_M1_ANGLE   0
 Minimum angle of azimuth. More...
 
#define MAX_M1_ANGLE   360
 Maximum angle of azimuth. More...
 
#define MIN_M2_ANGLE   0
 Minimum angle of elevation. More...
 
#define MAX_M2_ANGLE   180
 Maximum angle of elevation. More...
 
#define DEFAULT_HOME_STATE   HIGH
 Change to LOW according to Home sensor. More...
 
#define HOME_SPEED   100
 Set speed to find home, duty cycle of 8-bit timer. More...
 
+ + + + + + + + +

+Functions

enum _rotator_error homing ()
 Move both axis with one direction in order to find home position, end-stop switches. More...
 
void setup ()
 
void loop ()
 
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +

+Variables

uint32_t t_run = 0
 
easycomm comm
 
motor motor_az (M1IN1, M1IN2, M1FB, MOTOR_EN, M1SF, MAX_PWM, MIN_PWM)
 
motor motor_el (M2IN1, M2IN2, M2FB, MOTOR_EN, M2SF, MAX_PWM, MIN_PWM)
 
PID pid_az & control_az
 
PID pid_el & control_el
 
endstop switch_az (SW1, DEFAULT_HOME_STATE)
 
endstop switch_el (SW2, DEFAULT_HOME_STATE)
 
i2c_mux pca9540 (PCA9540_ID, PCA9540_CH0, PCA9540_CH1)
 
tc74 temp_sensor (TC74_ID)
 
AS5601 encoder_az
 
AS5601 encoder_el
 
wdt_timer wdt
 
+

Detailed Description

+

This is the documentation for satnogs rotator controller firmware for dc motors configuration. The board (PCB) is placed in satnogs-rotator-controller and is for releases: v2.0 v2.1 v2.2 wiki page

+

+Dependencies

+

This firmware depends on Arduino-PID-Library being present on your system. Please make sure you have installed the latest version before using this firmware.

+

+License

+

Licensed under the GPLv3.

+ +

Definition in file dc_motor_controller.ino.

+

Macro Definition Documentation

+ +

◆ DEFAULT_HOME_STATE

+ +
+
+ + + + +
#define DEFAULT_HOME_STATE   HIGH
+
+ +

Change to LOW according to Home sensor.

+ +

Definition at line 40 of file dc_motor_controller.ino.

+ +
+
+ +

◆ ENC_RATIO

+ +
+
+ + + + +
#define ENC_RATIO   2
+
+ +

Encoder AS5601 gear ratio.

+ +

Definition at line 35 of file dc_motor_controller.ino.

+ +

Referenced by setup().

+ +
+
+ +

◆ HOME_SPEED

+ +
+
+ + + + +
#define HOME_SPEED   100
+
+ +

Set speed to find home, duty cycle of 8-bit timer.

+ +

Definition at line 41 of file dc_motor_controller.ino.

+ +

Referenced by homing().

+ +
+
+ +

◆ MAX_M1_ANGLE

+ +
+
+ + + + +
#define MAX_M1_ANGLE   360
+
+ +

Maximum angle of azimuth.

+ +

Definition at line 37 of file dc_motor_controller.ino.

+ +

Referenced by homing().

+ +
+
+ +

◆ MAX_M2_ANGLE

+ +
+
+ + + + +
#define MAX_M2_ANGLE   180
+
+ +

Maximum angle of elevation.

+ +

Definition at line 39 of file dc_motor_controller.ino.

+ +

Referenced by homing().

+ +
+
+ +

◆ MAX_PWM

+ +
+
+ + + + +
#define MAX_PWM   180
+
+ +

Set max Speed.

+ +

Definition at line 27 of file dc_motor_controller.ino.

+ +

Referenced by setup().

+ +
+
+ +

◆ MIN_M1_ANGLE

+ +
+
+ + + + +
#define MIN_M1_ANGLE   0
+
+ +

Minimum angle of azimuth.

+ +

Definition at line 36 of file dc_motor_controller.ino.

+ +
+
+ +

◆ MIN_M2_ANGLE

+ +
+
+ + + + +
#define MIN_M2_ANGLE   0
+
+ +

Minimum angle of elevation.

+ +

Definition at line 38 of file dc_motor_controller.ino.

+ +
+
+ +

◆ MIN_PWM

+ +
+
+ + + + +
#define MIN_PWM   5
+
+ +

Set min Speed.

+ +

Definition at line 28 of file dc_motor_controller.ino.

+ +
+
+ +

◆ OVER_TEMP

+ +
+
+ + + + +
#define OVER_TEMP   60
+
+ +

Over temperature limit.

+ +

Definition at line 34 of file dc_motor_controller.ino.

+ +

Referenced by loop().

+ +
+
+ +

◆ PCA9540_CH0

+ +
+
+ + + + +
#define PCA9540_CH0   0x04
+
+ +

I2C Multiplexer CHO.

+ +

Definition at line 31 of file dc_motor_controller.ino.

+ +

Referenced by homing(), and loop().

+ +
+
+ +

◆ PCA9540_CH1

+ +
+
+ + + + +
#define PCA9540_CH1   0x05
+
+ +

I2C Multiplexer CH1.

+ +

Definition at line 32 of file dc_motor_controller.ino.

+ +

Referenced by homing(), and loop().

+ +
+
+ +

◆ PCA9540_ID

+ +
+
+ + + + +
#define PCA9540_ID   0x70
+
+ +

I2C Multiplexer ID.

+ +

Definition at line 30 of file dc_motor_controller.ino.

+ +
+
+ +

◆ POSITION_DEADZONE

+ +
+
+ + + + +
#define POSITION_DEADZONE   0.2
+
+ +

Control dead zone.

+ +

Definition at line 29 of file dc_motor_controller.ino.

+ +

Referenced by loop().

+ +
+
+ +

◆ RATIO

+ +
+
+ + + + +
#define RATIO   54
+
+ +

Gear ratio of rotator gear box.

+ +

Definition at line 26 of file dc_motor_controller.ino.

+ +
+
+ +

◆ SAMPLE_TIME

+ +
+
+ + + + +
#define SAMPLE_TIME   0.1
+
+ +

Control loop in s.

+ +

Definition at line 25 of file dc_motor_controller.ino.

+ +

Referenced by loop(), and setup().

+ +
+
+ +

◆ TC74_ID

+ +
+
+ + + + +
#define TC74_ID   0x48
+
+ +

Temperature Sensor ID.

+ +

Definition at line 33 of file dc_motor_controller.ino.

+ +
+
+

Function Documentation

+ +

◆ homing()

+ +
+
+ + + + + + + +
enum _rotator_error homing ()
+
+ +

Move both axis with one direction in order to find home position, end-stop switches.

+
Returns
_rotator_error
+ +

Definition at line 214 of file dc_motor_controller.ino.

+ +

References control_az, control_el, encoder_az, encoder_el, AS5601::get_pos(), endstop::get_state(), HOME_SPEED, homing_error, AS5601::init_zero(), MAX_M1_ANGLE, MAX_M2_ANGLE, motor_az, motor_el, motor::move(), no_error, pca9540, PCA9540_CH0, PCA9540_CH1, i2c_mux::set_channel(), AS5601::set_zero(), motor::stop(), switch_az, switch_el, wdt_timer::watchdog_reset(), and wdt.

+ +

Referenced by loop().

+
+Here is the call graph for this function:
+
+
+ + + + + + + + + + + + +
+ +
+
+ +

◆ loop()

+ + + +

◆ setup()

+ +
+
+ + + + + + + +
void setup ()
+
+
+

Variable Documentation

+ +

◆ comm

+ +
+
+ + + + +
easycomm comm
+
+ +

Definition at line 56 of file dc_motor_controller.ino.

+ +

Referenced by loop(), and setup().

+ +
+
+ +

◆ control_az

+ +
+
+ + + + +
PID pid_az& control_az
+
+ +

Definition at line 59 of file dc_motor_controller.ino.

+ +

Referenced by homing(), and loop().

+ +
+
+ +

◆ control_el

+ +
+
+ + + + +
PID pid_el& control_el
+
+ +

Definition at line 61 of file dc_motor_controller.ino.

+ +

Referenced by homing(), and loop().

+ +
+
+ +

◆ encoder_az

+ +
+
+ + + + +
AS5601 encoder_az
+
+ +

Definition at line 66 of file dc_motor_controller.ino.

+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ encoder_el

+ +
+
+ + + + +
AS5601 encoder_el
+
+ +

Definition at line 66 of file dc_motor_controller.ino.

+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ motor_az

+ +
+
+ + + + +
motor motor_az(M1IN1, M1IN2, M1FB, MOTOR_EN, M1SF, MAX_PWM, MIN_PWM)
+
+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ motor_el

+ +
+
+ + + + +
motor motor_el(M2IN1, M2IN2, M2FB, MOTOR_EN, M2SF, MAX_PWM, MIN_PWM)
+
+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ pca9540

+ +
+
+ + + + +
i2c_mux pca9540(PCA9540_ID, PCA9540_CH0, PCA9540_CH1)
+
+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ switch_az

+ +
+
+ + + + +
endstop switch_az(SW1, DEFAULT_HOME_STATE)
+
+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ switch_el

+ +
+
+ + + + +
endstop switch_el(SW2, DEFAULT_HOME_STATE)
+
+ +

Referenced by homing(), loop(), and setup().

+ +
+
+ +

◆ t_run

+ +
+
+ + + + +
uint32_t t_run = 0
+
+ +

Definition at line 55 of file dc_motor_controller.ino.

+ +

Referenced by loop().

+ +
+
+ +

◆ temp_sensor

+ +
+
+ + + + +
tc74 temp_sensor(TC74_ID)
+
+ +

Referenced by loop().

+ +
+
+ +

◆ wdt

+ +
+
+ + + + +
wdt_timer wdt
+
+ +

Definition at line 67 of file dc_motor_controller.ino.

+ +

Referenced by homing(), loop(), and setup().

+ +
+
+
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino_8d.html b/doxygen_files/html/dc__motor__controller_8ino_8d.html new file mode 100644 index 0000000..bb89908 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/dc_motor_controller.ino.d File Reference + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
dc_motor_controller.ino.d File Reference
+
+ + + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino_8d_source.html b/doxygen_files/html/dc__motor__controller_8ino_8d_source.html new file mode 100644 index 0000000..4b1edbb --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_8d_source.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/dc_motor_controller.ino.d Source File + + + + + + + + + +
+
+ + + + + + +
+
satnogs-rotator-firmware +
+
+
+ + + + + + + + +
+
+ + +
+ +
+ + +
+
+
+
dc_motor_controller.ino.d
+
+
+Go to the documentation of this file.
1 build-satnogs/dc_motor_controller.ino.o: dc_motor_controller.ino \
2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
14  /home/azisi/workspace/arduino/libraries/PID_v1/PID_v1.h \
15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.h \
16  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
17  ../libraries/globals.h ../libraries/easycomm.h \
18  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
19  ../libraries/rs485.h ../libraries/rotator_pins.h ../libraries/globals.h \
20  ../libraries/rotator_pins.h ../libraries/endstop.h \
21  ../libraries/watchdog.h ../libraries/easycomm.h ../libraries/i2c_mux.h \
22  ../libraries/tc74.h ../libraries/motor.h ../libraries/as5601.h
Class that functions for interacting with I2C 1-of-2 multiplexer.
Definition: i2c_mux.h:28
+
Class that functions for interacting with end-stop.
Definition: endstop.h:22
+
Class that functions for interacting with a TC74 Temperature sensor.
Definition: tc74.h:36
+
Class that functions for interacting with a Motor Driver Carrier.
Definition: motor.h:35
+
Class that functions for easycomm 3 implementation.
Definition: easycomm.h:31
+
Class that functions for interacting with a RS485 transceiver.
Definition: rs485.h:23
+
+ + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino__incl.map b/doxygen_files/html/dc__motor__controller_8ino__incl.map new file mode 100644 index 0000000..cc0aebb --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino__incl.map @@ -0,0 +1,12 @@ + + + + + + + + + + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino__incl.md5 b/doxygen_files/html/dc__motor__controller_8ino__incl.md5 new file mode 100644 index 0000000..41d71a7 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino__incl.md5 @@ -0,0 +1 @@ +09ba6e257fcfb81e8838aceb0cb06acb \ No newline at end of file diff --git a/doxygen_files/html/dc__motor__controller_8ino__incl.png b/doxygen_files/html/dc__motor__controller_8ino__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6cc255470fd3761bd8a728107a68b9b18b0152b5 GIT binary patch literal 67691 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 + + + + + + + + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 b/doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 new file mode 100644 index 0000000..21ef210 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 @@ -0,0 +1 @@ +33ed74ff18caa00f7af0afc018c5158e \ No newline at end of file diff --git a/doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png b/doxygen_files/html/dc__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..fe8964f4c374bc42529f7eeaa5ddd1e3ecf4e604 GIT binary patch literal 29897 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 p{%Z^V&lZXQ=CO$R_cK;~-&8DH4$wbZ#Mz{z + + + + + + + + + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.md5 b/doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.md5 new file mode 100644 index 0000000..a35d27b --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.md5 @@ -0,0 +1 @@ +41a9e6a06db01c48c73487dd6bc79106 \ No newline at end of file diff --git a/doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.png b/doxygen_files/html/dc__motor__controller_8ino_acb27c796ddcae7f932e2898cba368c3b_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..5da86d438f54166adccb098af1fe97b43211fe76 GIT binary patch literal 43365 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�LIa!`3+?gn;Iw%;Q`Nwbf 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 + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 b/doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 new file mode 100644 index 0000000..964ff62 --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 @@ -0,0 +1 @@ +c096e4724cb472e940aaf383d294ba39 \ No newline at end of file diff --git a/doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png b/doxygen_files/html/dc__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..7f2e09b3ed77770dba856e81522c29cf9a4f2a85 GIT binary patch literal 127276 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�FMPyNxc$ju-s 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

  • y!8G@w`KJ>|$zfn7q%bQg> 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/dc__motor__controller_8ino_source.html b/doxygen_files/html/dc__motor__controller_8ino_source.html new file mode 100644 index 0000000..3b7452f --- /dev/null +++ b/doxygen_files/html/dc__motor__controller_8ino_source.html @@ -0,0 +1,171 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/dc_motor_controller.ino Source File + + + + + + + + + + +
    +
    +
    dc_motor_controller.ino
    +
    +
    +Go to the documentation of this file.
    1 
    25 #define SAMPLE_TIME 0.1
    26 #define RATIO 54
    27 #define MAX_PWM 180
    28 #define MIN_PWM 5
    29 #define POSITION_DEADZONE 0.2
    30 #define PCA9540_ID 0x70
    31 #define PCA9540_CH0 0x04
    32 #define PCA9540_CH1 0x05
    33 #define TC74_ID 0x48
    34 #define OVER_TEMP 60
    35 #define ENC_RATIO 2
    36 #define MIN_M1_ANGLE 0
    37 #define MAX_M1_ANGLE 360
    38 #define MIN_M2_ANGLE 0
    39 #define MAX_M2_ANGLE 180
    40 #define DEFAULT_HOME_STATE HIGH
    41 #define HOME_SPEED 100
    42 
    43 #include <PID_v1.h>
    44 #include <Wire.h>
    45 #include "../libraries/globals.h"
    46 #include "../libraries/easycomm.h"
    47 #include "../libraries/rotator_pins.h"
    48 #include "../libraries/endstop.h"
    49 #include "../libraries/watchdog.h"
    50 #include "../libraries/i2c_mux.h"
    51 #include "../libraries/tc74.h"
    52 #include "../libraries/motor.h"
    53 #include "../libraries/as5601.h"
    54 
    55 uint32_t t_run = 0; // run time of uC
    59 PID pid_az(&control_az.input, &control_az.u, &control_az.setpoint, control_az.p,
    60  control_az.i, control_az.d, P_ON_E, DIRECT);
    61 PID pid_el(&control_el.input, &control_el.u, &control_el.setpoint, control_el.p,
    62  control_el.i, control_el.d, P_ON_E, DIRECT);
    68 
    69 enum _rotator_error homing();
    70 
    71 void setup() {
    72  // Homing switch
    73  switch_az.init();
    74  switch_el.init();
    75 
    76  // Serial Communication
    78 
    79  // Initialize DC motors
    81  motor_az.init_timer(1, 8);
    82  motor_az.enable();
    84  motor_el.init_timer(2, 8);
    85  motor_el.enable();
    86 
    87  // Initialize I2C MUX
    88  pca9540.init();
    89  // Initialize rotary encoders
    92 
    93  // Initialize control parameters
    94  pid_az.SetSampleTime(SAMPLE_TIME);
    95  pid_az.SetOutputLimits(-MAX_PWM, MAX_PWM );
    96  pid_az.SetMode(AUTOMATIC);
    97  pid_el.SetSampleTime(SAMPLE_TIME);
    98  pid_el.SetOutputLimits(-MAX_PWM, MAX_PWM);
    99  pid_el.SetMode(AUTOMATIC);
    100 
    101  // Initialize WDT
    102  wdt.watchdog_init();
    103 }
    104 
    105 void loop() {
    106  // Update WDT
    108 
    109  // Get end stop status
    112 
    113  // Run easycomm implementation
    115 
    116  // Get Motor driver status
    119  if (rotator.fault_az == LOW || rotator.fault_el == LOW) {
    122  }
    123 
    124  // Get inside Temperature
    128  temp_sensor.sleep();
    132  }
    133  // Get position of both axis
    135  encoder_az.get_pos(&control_az.input);
    137  encoder_el.get_pos(&control_el.input);
    138 
    139  // Check rotator status
    140  if (rotator.rotator_status != error) {
    141  if (rotator.homing_flag == false) {
    142  // Check home flag
    144  // Homing
    146  if (rotator.rotator_error == no_error) {
    147  // No error
    149  rotator.homing_flag = true;
    150  } else {
    151  // Error
    154  }
    155  } else {
    156  // Control Loop
    157  if (millis() - t_run > SAMPLE_TIME * 1000) {
    158  // Update control gains
    159  pid_az.SetTunings(control_az.p, control_az.i, control_az.d);
    160  pid_el.SetTunings(control_el.p, control_el.i, control_el.d);
    161  if (rotator.control_mode == speed) {
    162  control_az.setpoint += control_az.setpoint_speed
    163  * SAMPLE_TIME;
    164  control_el.setpoint += control_el.setpoint_speed
    165  * SAMPLE_TIME;
    167  } else {
    169  }
    170  // Move azimuth and elevation motors
    171  pid_az.Compute();
    173  pid_el.Compute();
    175  // Calculate the speeds of both axis
    176  control_az.speed = (control_az.input - control_az.input_prv)
    177  / SAMPLE_TIME;
    178  control_az.input_prv = control_az.input;
    179  control_el.speed = (control_el.input - control_el.input_prv)
    180  / SAMPLE_TIME;
    181  control_el.input_prv = control_el.input;
    182  // Update the run time
    183  t_run = millis();
    184  // Idle rotator, dead-band
    185  if ((abs(control_az.setpoint - control_az.input) <=
    186  POSITION_DEADZONE || (control_az.speed == 0)) &&
    187  (abs(control_el.setpoint - control_el.input) <=
    188  POSITION_DEADZONE || (control_el.speed == 0))) {
    190  }
    191  }
    192  }
    193  } else {
    194  // Error handler, stop motors and disable the motor driver
    195  motor_az.stop();
    197  motor_el.stop();
    200  // Reset error according to error value
    203  }
    204  }
    205 }
    206 
    207 /**************************************************************************/
    213 /**************************************************************************/
    215  bool isHome_az = false;
    216  bool isHome_el = false;
    217 
    218  // Reses position
    223 
    224  // Move motors with ~constant speed
    227 
    228  // Homing loop
    229  while (isHome_az == false || isHome_el == false) {
    230  // Update WDT
    232  if (switch_az.get_state() == true && !isHome_az) {
    233  // Find azimuth home
    234  motor_az.stop();
    235  isHome_az = true;
    236  }
    237  if (switch_el.get_state() == true && !isHome_el) {
    238  // Find elevation home
    239  motor_el.stop();
    240  isHome_el = true;
    241  }
    242  // Get current position
    244  encoder_az.get_pos(&control_az.input);
    246  encoder_el.get_pos(&control_el.input);
    247  // Check if the rotator goes out of limits or something goes wrong (in
    248  // mechanical)
    249  if ((abs(control_az.input) > MAX_M1_ANGLE && !isHome_az)
    250  || (abs(control_el.input) > MAX_M2_ANGLE && !isHome_el)) {
    251  return homing_error;
    252  }
    253  }
    254 
    255  // Set the home position and reset all critical control variables
    259  control_az.setpoint = 0;
    263  control_el.setpoint = 0;
    264 
    265  return no_error;
    266 }
    #define ENC_RATIO
    Encoder AS5601 gear ratio.
    +
    #define SW1
    Digital input, to read the status of end-stop for motor 1.
    Definition: rotator_pins.h:25
    +
    AS5601 encoder_az
    +
    #define M1FB
    Motor 1 analog input, current/load feedback.
    Definition: rotator_pins.h:16
    +
    #define HOME_SPEED
    Set speed to find home, duty cycle of 8-bit timer.
    +
    #define M2IN1
    Motor 2 PWM pin.
    Definition: rotator_pins.h:18
    +
    #define M2IN2
    Motor 2 PWM pin.
    Definition: rotator_pins.h:19
    +
    void set_gear_ratio(uint8_t enc_ratio)
    Set the gear ratio between encoder and measure axis.
    Definition: as5601.h:152
    +
    Class that functions for interacting with a watchdog timer.
    Definition: watchdog.h:23
    +
    Definition: globals.h:17
    + +
    void enable()
    Enable motor driver.
    Definition: motor.h:146
    +
    int8_t sleep()
    Sleep device request to the sensor on the specified address.
    Definition: tc74.h:110
    + + +
    void set_channel(uint8_t ch)
    Change the channel.
    Definition: i2c_mux.h:54
    +
    motor motor_el(M2IN1, M2IN2, M2FB, MOTOR_EN, M2SF, MAX_PWM, MIN_PWM)
    +
    void easycomm_proc()
    Get the commands from RS485 and response to the client.
    Definition: easycomm.h:48
    +
    #define MOTOR_EN
    Digital output, to enable the motors.
    Definition: rotator_pins.h:23
    +
    #define PCA9540_CH0
    I2C Multiplexer CHO.
    +
    PID pid_el & control_el
    + +
    #define PCA9540_ID
    I2C Multiplexer ID.
    +
    Definition: globals.h:26
    +
    i2c_mux pca9540(PCA9540_ID, PCA9540_CH0, PCA9540_CH1)
    +
    Class that functions for interacting with I2C 1-of-2 multiplexer.
    Definition: i2c_mux.h:28
    +
    void init()
    Initialize the Input pin for end-stop.
    Definition: endstop.h:35
    +
    wdt_timer wdt
    +
    bool switch_az
    Definition: globals.h:48
    + +
    endstop switch_el(SW2, DEFAULT_HOME_STATE)
    +
    #define PCA9540_CH1
    I2C Multiplexer CH1.
    +
    tc74 temp_sensor(TC74_ID)
    +
    _rotator rotator
    Definition: globals.h:57
    +
    Class that functions for interacting with end-stop.
    Definition: endstop.h:22
    +
    enum _rotator_status rotator_status
    Rotator status.
    Definition: globals.h:41
    +
    enum _rotator_error rotator_error
    Rotator error.
    Definition: globals.h:42
    +
    uint32_t t_run
    +
    bool switch_el
    End-stop vales.
    Definition: globals.h:48
    +
    #define MAX_M1_ANGLE
    Maximum angle of azimuth.
    +
    uint8_t set_zero()
    Set zero by setting offset angle.
    Definition: as5601.h:129
    +
    Class that functions for interacting with a TC74 Temperature sensor.
    Definition: tc74.h:36
    +
    #define SAMPLE_TIME
    Control loop in s.
    +
    int8_t wake_up()
    Wake up request to the sensor on the specified address.
    Definition: tc74.h:94
    +
    #define OVER_TEMP
    Over temperature limit.
    +
    #define M2SF
    Motor 2 digital input, status flag.
    Definition: rotator_pins.h:20
    +
    AS5601 encoder_el
    +
    Class that functions for interacting with AS5601 magnetic rotary position sensor. ...
    Definition: as5601.h:35
    + +
    int8_t get_temp()
    Reads the int8_t in temperature measurement register.
    Definition: tc74.h:59
    +
    int8_t inside_temperature
    Inside Temperature.
    Definition: globals.h:45
    +
    #define M1IN1
    Motor 1 PWM pin.
    Definition: rotator_pins.h:13
    +
    #define M1SF
    Motor 1 digital input, status flag.
    Definition: rotator_pins.h:15
    +
    void watchdog_reset()
    Reset the watchdog timer.
    Definition: watchdog.h:45
    +
    easycomm comm
    +
    void stop()
    Stop moving the DC motor.
    Definition: motor.h:214
    +
    uint8_t fault_az
    Definition: globals.h:47
    +
    void init_timer(uint8_t timer, uint16_t divisor)
    Set timer frequency, for timers 0, 1, 2.
    Definition: motor.h:95
    +
    void easycomm_init()
    Initialize the RS485 bus.
    Definition: easycomm.h:39
    +
    void init_pin()
    Initialize pins of DC motor driver.
    Definition: motor.h:55
    +
    #define M1IN2
    Motor 1 PWM pin.
    Definition: rotator_pins.h:14
    +
    uint8_t get_pos(double *new_pos)
    Calculate an unwrap the position.
    Definition: as5601.h:59
    +
    enum _rotator_error homing()
    Move both axis with one direction in order to find home position, end-stop switches.
    +
    #define TC74_ID
    Temperature Sensor ID.
    +
    void init()
    Initialize the I2C bus.
    Definition: i2c_mux.h:42
    +
    PID pid_az & control_az
    +
    void disenable()
    Disable motor driver.
    Definition: motor.h:155
    +
    bool homing_flag
    Homing flag.
    Definition: globals.h:44
    +
    #define MAX_M2_ANGLE
    Maximum angle of elevation.
    +
    void loop()
    +
    uint8_t fault_el
    Motor drivers fault flag.
    Definition: globals.h:47
    +
    void setup()
    +
    Class that functions for interacting with a Motor Driver Carrier.
    Definition: motor.h:35
    +
    void watchdog_init()
    Initialize watchdog timer to 2sec time out and to set up interrupt routine.
    Definition: watchdog.h:32
    +
    #define M2FB
    Motor 2 analog input, current/load feedback.
    Definition: rotator_pins.h:21
    +
    enum _control_mode control_mode
    Control mode.
    Definition: globals.h:43
    +
    uint8_t get_fault()
    Get the status flag of motor driver.
    Definition: motor.h:176
    +
    #define MIN_PWM
    Set min Speed.
    +
    motor motor_az(M1IN1, M1IN2, M1FB, MOTOR_EN, M1SF, MAX_PWM, MIN_PWM)
    +
    #define SW2
    Digital input, to read the status of end-stop for motor 2.
    Definition: rotator_pins.h:26
    +
    Definition: globals.h:17
    +
    Class that functions for easycomm 3 implementation.
    Definition: easycomm.h:31
    +
    #define MAX_PWM
    Set max Speed.
    +
    void move(int16_t speed)
    Move the DC motor with constant voltage (~speed)
    Definition: motor.h:188
    +
    #define POSITION_DEADZONE
    Control dead zone.
    +
    Definition: globals.h:17
    +
    endstop switch_az(SW1, DEFAULT_HOME_STATE)
    +
    #define DEFAULT_HOME_STATE
    Change to LOW according to Home sensor.
    +
    _rotator_error
    Definition: globals.h:20
    +
    void init_zero()
    Reset zero position set the offset to zero.
    Definition: as5601.h:141
    +
    bool get_state()
    Get the state of end-stop.
    Definition: endstop.h:45
    +
    + + + + diff --git a/doxygen_files/html/dir_000000_000001.html b/doxygen_files/html/dir_000000_000001.html new file mode 100644 index 0000000..017982c --- /dev/null +++ b/doxygen_files/html/dir_000000_000001.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller -> libraries Relation + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + + + diff --git a/doxygen_files/html/dir_000000_000009.html b/doxygen_files/html/dir_000000_000009.html new file mode 100644 index 0000000..017982c --- /dev/null +++ b/doxygen_files/html/dir_000000_000009.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller -> libraries Relation + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + + + diff --git a/doxygen_files/html/dir_000002_000001.html b/doxygen_files/html/dir_000002_000001.html new file mode 100644 index 0000000..947963a --- /dev/null +++ b/doxygen_files/html/dir_000002_000001.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller -> libraries Relation + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + + + diff --git a/doxygen_files/html/dir_000010_000009.html b/doxygen_files/html/dir_000010_000009.html new file mode 100644 index 0000000..947963a --- /dev/null +++ b/doxygen_files/html/dir_000010_000009.html @@ -0,0 +1,76 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller -> libraries Relation + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    + + + + + diff --git a/doxygen_files/html/dir_04bd9f97a048e8e29eed1176e5586ecc.html b/doxygen_files/html/dir_04bd9f97a048e8e29eed1176e5586ecc.html new file mode 100644 index 0000000..7d6619e --- /dev/null +++ b/doxygen_files/html/dir_04bd9f97a048e8e29eed1176e5586ecc.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/userlibs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    userlibs Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  AccelStepper
     
    +
    + + + + diff --git a/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c.html b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c.html new file mode 100644 index 0000000..ecc0286 --- /dev/null +++ b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c.html @@ -0,0 +1,96 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stepper_motor_controller Directory Reference
    +
    +
    +
    +Directory dependency graph for stepper_motor_controller:
    +
    +
    stepper_motor_controller
    + + + + + +
    + + + + +

    +Files

    file  stepper_motor_controller.ino [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.map b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.map new file mode 100644 index 0000000..5d430ba --- /dev/null +++ b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.md5 b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.md5 new file mode 100644 index 0000000..f35c0d2 --- /dev/null +++ b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.md5 @@ -0,0 +1 @@ +70b7b9d2d6bd13ff629f3534c3f7ad81 \ No newline at end of file diff --git a/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.png b/doxygen_files/html/dir_38beefcdfcb3558d1106b46c26a5f20c_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..2b7ed58d44ea2a01033f0b1120104a234182d80d GIT binary patch literal 3620 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 SiJQRK2Qr0OK&uU0;{FMD5AM|f literal 0 HcmV?d00001 diff --git a/doxygen_files/html/dir_3c7b64a037e9ad6c0c39ea33f69661fe.html b/doxygen_files/html/dir_3c7b64a037e9ad6c0c39ea33f69661fe.html new file mode 100644 index 0000000..229ed95 --- /dev/null +++ b/doxygen_files/html/dir_3c7b64a037e9ad6c0c39ea33f69661fe.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/userlibs/AccelStepper Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    AccelStepper Directory Reference
    +
    +
    + + + + +

    +Files

    file  AccelStepper.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_3da56ef71ef8702a491505702f15abe5.html b/doxygen_files/html/dir_3da56ef71ef8702a491505702f15abe5.html new file mode 100644 index 0000000..7bc0516 --- /dev/null +++ b/doxygen_files/html/dir_3da56ef71ef8702a491505702f15abe5.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/userlibs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    userlibs Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  PID_v1
     
    +
    + + + + diff --git a/doxygen_files/html/dir_4fd4009f6f22f863217bbc9f2b8a638b.html b/doxygen_files/html/dir_4fd4009f6f22f863217bbc9f2b8a638b.html new file mode 100644 index 0000000..361d08d --- /dev/null +++ b/doxygen_files/html/dir_4fd4009f6f22f863217bbc9f2b8a638b.html @@ -0,0 +1,134 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    core Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  abi.cpp.d [code]
     
    file  CDC.cpp.d [code]
     
    file  HardwareSerial.cpp.d [code]
     
    file  HardwareSerial0.cpp.d [code]
     
    file  HardwareSerial1.cpp.d [code]
     
    file  HardwareSerial2.cpp.d [code]
     
    file  HardwareSerial3.cpp.d [code]
     
    file  hooks.c.d [code]
     
    file  IPAddress.cpp.d [code]
     
    file  main.cpp.d [code]
     
    file  new.cpp.d [code]
     
    file  PluggableUSB.cpp.d [code]
     
    file  Print.cpp.d [code]
     
    file  Stream.cpp.d [code]
     
    file  Tone.cpp.d [code]
     
    file  USBCore.cpp.d [code]
     
    file  WInterrupts.c.d [code]
     
    file  wiring.c.d [code]
     
    file  wiring_analog.c.d [code]
     
    file  wiring_digital.c.d [code]
     
    file  wiring_pulse.c.d [code]
     
    file  wiring_pulse.S.d [code]
     
    file  wiring_shift.c.d [code]
     
    file  WMath.cpp.d [code]
     
    file  WString.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_5a243316bc5cf426a65a8b5e8f471c95.html b/doxygen_files/html/dir_5a243316bc5cf426a65a8b5e8f471c95.html new file mode 100644 index 0000000..69a4ec0 --- /dev/null +++ b/doxygen_files/html/dir_5a243316bc5cf426a65a8b5e8f471c95.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/utility Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    utility Directory Reference
    +
    +
    + + + + +

    +Files

    file  twi.c.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_70afe42e74c20f2af2356f60920167ae.html b/doxygen_files/html/dir_70afe42e74c20f2af2356f60920167ae.html new file mode 100644 index 0000000..0aa7e1a --- /dev/null +++ b/doxygen_files/html/dir_70afe42e74c20f2af2356f60920167ae.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/userlibs/PID_v1 Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    PID_v1 Directory Reference
    +
    +
    + + + + +

    +Files

    file  PID_v1.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_7af253dfca86f7c40f8239e67accd169.html b/doxygen_files/html/dir_7af253dfca86f7c40f8239e67accd169.html new file mode 100644 index 0000000..fda13bb --- /dev/null +++ b/doxygen_files/html/dir_7af253dfca86f7c40f8239e67accd169.html @@ -0,0 +1,91 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    src Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  utility
     
    + + + +

    +Files

    file  Wire.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_8b636201cf584fd9c928133d3359b00b.html b/doxygen_files/html/dir_8b636201cf584fd9c928133d3359b00b.html new file mode 100644 index 0000000..50a02f8 --- /dev/null +++ b/doxygen_files/html/dir_8b636201cf584fd9c928133d3359b00b.html @@ -0,0 +1,95 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    build-satnogs Directory Reference
    +
    +
    + + + + + + + + +

    +Directories

    directory  core
     
    directory  platformlibs
     
    directory  userlibs
     
    + + + +

    +Files

    file  stepper_motor_controller.ino.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_921b7b18bfcf020558ee7dc94332d56d.html b/doxygen_files/html/dir_921b7b18bfcf020558ee7dc94332d56d.html new file mode 100644 index 0000000..0947aea --- /dev/null +++ b/doxygen_files/html/dir_921b7b18bfcf020558ee7dc94332d56d.html @@ -0,0 +1,134 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    core Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  abi.cpp.d [code]
     
    file  CDC.cpp.d [code]
     
    file  HardwareSerial.cpp.d [code]
     
    file  HardwareSerial0.cpp.d [code]
     
    file  HardwareSerial1.cpp.d [code]
     
    file  HardwareSerial2.cpp.d [code]
     
    file  HardwareSerial3.cpp.d [code]
     
    file  hooks.c.d [code]
     
    file  IPAddress.cpp.d [code]
     
    file  main.cpp.d [code]
     
    file  new.cpp.d [code]
     
    file  PluggableUSB.cpp.d [code]
     
    file  Print.cpp.d [code]
     
    file  Stream.cpp.d [code]
     
    file  Tone.cpp.d [code]
     
    file  USBCore.cpp.d [code]
     
    file  WInterrupts.c.d [code]
     
    file  wiring.c.d [code]
     
    file  wiring_analog.c.d [code]
     
    file  wiring_digital.c.d [code]
     
    file  wiring_pulse.c.d [code]
     
    file  wiring_pulse.S.d [code]
     
    file  wiring_shift.c.d [code]
     
    file  WMath.cpp.d [code]
     
    file  WString.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_98ae3f12715e591266dc1e4c55181529.html b/doxygen_files/html/dir_98ae3f12715e591266dc1e4c55181529.html new file mode 100644 index 0000000..28b92e2 --- /dev/null +++ b/doxygen_files/html/dir_98ae3f12715e591266dc1e4c55181529.html @@ -0,0 +1,91 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    src Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  utility
     
    + + + +

    +Files

    file  Wire.cpp.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_9cc8f40ee5e9c5c95cd4df187957812a.html b/doxygen_files/html/dir_9cc8f40ee5e9c5c95cd4df187957812a.html new file mode 100644 index 0000000..7d3b8db --- /dev/null +++ b/doxygen_files/html/dir_9cc8f40ee5e9c5c95cd4df187957812a.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src/utility Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    utility Directory Reference
    +
    +
    + + + + +

    +Files

    file  twi.c.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_bae0fda3feaded62b2f7f632ec0a239b.html b/doxygen_files/html/dir_bae0fda3feaded62b2f7f632ec0a239b.html new file mode 100644 index 0000000..e7d1955 --- /dev/null +++ b/doxygen_files/html/dir_bae0fda3feaded62b2f7f632ec0a239b.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    platformlibs Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  Wire
     
    +
    + + + + diff --git a/doxygen_files/html/dir_bc0718b08fb2015b8e59c47b2805f60c.html b/doxygen_files/html/dir_bc0718b08fb2015b8e59c47b2805f60c.html new file mode 100644 index 0000000..1ae3e39 --- /dev/null +++ b/doxygen_files/html/dir_bc0718b08fb2015b8e59c47b2805f60c.html @@ -0,0 +1,104 @@ + + + + + + + +satnogs-rotator-firmware: libraries Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    libraries Directory Reference
    +
    +
    + + + + + + + + + + + + + + + + + + + + + + +

    +Files

    file  as5601.h [code]
     
    file  easycomm.h [code]
     
    file  endstop.h [code]
     
    file  globals.h [code]
     
    file  i2c_mux.h [code]
     
    file  motor.h [code]
     
    file  rotator_pins.h [code]
     
    file  rs485.h [code]
     
    file  tc74.h [code]
     
    file  watchdog.h [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_c6e73f16e5b17010deff06b8b4645774.html b/doxygen_files/html/dir_c6e73f16e5b17010deff06b8b4645774.html new file mode 100644 index 0000000..909ee96 --- /dev/null +++ b/doxygen_files/html/dir_c6e73f16e5b17010deff06b8b4645774.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Wire Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  src
     
    +
    + + + + diff --git a/doxygen_files/html/dir_dde351e53af779b12eb54b1883e0572c.html b/doxygen_files/html/dir_dde351e53af779b12eb54b1883e0572c.html new file mode 100644 index 0000000..dda8962 --- /dev/null +++ b/doxygen_files/html/dir_dde351e53af779b12eb54b1883e0572c.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    platformlibs Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  Wire
     
    +
    + + + + diff --git a/doxygen_files/html/dir_de1abeedcbe370b22bcb1ae3c439cd31.html b/doxygen_files/html/dir_de1abeedcbe370b22bcb1ae3c439cd31.html new file mode 100644 index 0000000..cfcab02 --- /dev/null +++ b/doxygen_files/html/dir_de1abeedcbe370b22bcb1ae3c439cd31.html @@ -0,0 +1,95 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    build-satnogs Directory Reference
    +
    +
    + + + + + + + + +

    +Directories

    directory  core
     
    directory  platformlibs
     
    directory  userlibs
     
    + + + +

    +Files

    file  dc_motor_controller.ino.d [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_e9cb1e840313e16da47b61b12eadef1d.html b/doxygen_files/html/dir_e9cb1e840313e16da47b61b12eadef1d.html new file mode 100644 index 0000000..ac2c842 --- /dev/null +++ b/doxygen_files/html/dir_e9cb1e840313e16da47b61b12eadef1d.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Wire Directory Reference
    +
    +
    + + + + +

    +Directories

    directory  src
     
    +
    + + + + diff --git a/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486.html b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486.html new file mode 100644 index 0000000..f876bf9 --- /dev/null +++ b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486.html @@ -0,0 +1,102 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller Directory Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    dc_motor_controller Directory Reference
    +
    +
    +
    +Directory dependency graph for dc_motor_controller:
    +
    +
    dc_motor_controller
    + + + + + + +
    + + + + +

    +Directories

    directory  build-satnogs
     
    + + + +

    +Files

    file  dc_motor_controller.ino [code]
     
    +
    + + + + diff --git a/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.map b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.map new file mode 100644 index 0000000..78d064a --- /dev/null +++ b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.md5 b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.md5 new file mode 100644 index 0000000..fda3ef0 --- /dev/null +++ b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.md5 @@ -0,0 +1 @@ +3e26d0baa32439e234990961f22f51d5 \ No newline at end of file diff --git a/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.png b/doxygen_files/html/dir_ef2cc0c7252f5b7b7f405f3ca6708486_dep.png new file mode 100644 index 0000000000000000000000000000000000000000..77936f57eb317a989bc7ca1b3fd8c58861e94f20 GIT binary patch literal 4647 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/doxygen.css b/doxygen_files/html/doxygen.css new file mode 100644 index 0000000..266c8b3 --- /dev/null +++ b/doxygen_files/html/doxygen.css @@ -0,0 +1,1596 @@ +/* The standard CSS for doxygen 1.8.14 */ + +body, table, div, p, dl { + font: 400 14px/22px Roboto,sans-serif; +} + +p.reference, p.definition { + font: 400 14px/22px Roboto,sans-serif; +} + +/* @group Heading Levels */ + +h1.groupheader { + font-size: 150%; +} + +.title { + font: 400 14px/28px Roboto,sans-serif; + font-size: 150%; + font-weight: bold; + margin: 10px 2px; +} + +h2.groupheader { + border-bottom: 1px solid #879ECB; + color: #354C7B; + font-size: 150%; + font-weight: normal; + margin-top: 1.75em; + padding-top: 8px; + padding-bottom: 4px; + width: 100%; +} + +h3.groupheader { + font-size: 100%; +} + +h1, h2, h3, h4, h5, h6 { + -webkit-transition: text-shadow 0.5s linear; + -moz-transition: text-shadow 0.5s linear; + -ms-transition: text-shadow 0.5s linear; + -o-transition: text-shadow 0.5s linear; + transition: text-shadow 0.5s linear; + margin-right: 15px; +} + +h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { + text-shadow: 0 0 15px cyan; +} + +dt { + font-weight: bold; +} + +div.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; +} + +p.startli, p.startdd { + margin-top: 2px; +} + +p.starttd { + margin-top: 0px; +} + +p.endli { + margin-bottom: 0px; +} + +p.enddd { + margin-bottom: 4px; +} + +p.endtd { + margin-bottom: 2px; +} + +/* @end */ + +caption { + font-weight: bold; +} + +span.legend { + font-size: 70%; + text-align: center; +} + +h3.version { + font-size: 90%; + text-align: center; +} + +div.qindex, div.navtab{ + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; +} + +div.qindex, div.navpath { + width: 100%; + line-height: 140%; +} + +div.navtab { + margin-right: 15px; +} + +/* @group Link Styling */ + +a { + color: #3D578C; + font-weight: normal; + text-decoration: none; +} + +.contents a:visited { + color: #4665A2; +} + +a:hover { + text-decoration: underline; +} + +a.qindex { + font-weight: bold; +} + +a.qindexHL { + font-weight: bold; + background-color: #9CAFD4; + color: #ffffff; + border: 1px double #869DCA; +} + +.contents a.qindexHL:visited { + color: #ffffff; +} + +a.el { + font-weight: bold; +} + +a.elRef { +} + +a.code, a.code:visited, a.line, a.line:visited { + color: #4665A2; +} + +a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { + color: #4665A2; +} + +/* @end */ + +dl.el { + margin-left: -1cm; +} + +pre.fragment { + border: 1px solid #C4CFE5; + background-color: #FBFCFD; + padding: 4px 6px; + margin: 4px 8px 4px 2px; + overflow: auto; + word-wrap: break-word; + font-size: 9pt; + line-height: 125%; + font-family: monospace, fixed; + font-size: 105%; +} + +div.fragment { + padding: 0px; + margin: 4px 8px 4px 2px; + background-color: #FBFCFD; + border: 1px solid #C4CFE5; +} + +div.line { + font-family: monospace, fixed; + font-size: 13px; + min-height: 13px; + line-height: 1.0; + text-wrap: unrestricted; + white-space: -moz-pre-wrap; /* Moz */ + white-space: -pre-wrap; /* Opera 4-6 */ + white-space: -o-pre-wrap; /* Opera 7 */ + white-space: pre-wrap; /* CSS3 */ + word-wrap: break-word; /* IE 5.5+ */ + text-indent: -53px; + padding-left: 53px; + padding-bottom: 0px; + margin: 0px; + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +div.line:after { + content:"\000A"; + white-space: pre; +} + +div.line.glow { + background-color: cyan; + box-shadow: 0 0 10px cyan; +} + + +span.lineno { + padding-right: 4px; + text-align: right; + border-right: 2px solid #0F0; + background-color: #E8E8E8; + white-space: pre; +} +span.lineno a { + background-color: #D8D8D8; +} + +span.lineno a:hover { + background-color: #C8C8C8; +} + +.lineno { + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +div.ah, span.ah { + background-color: black; + font-weight: bold; + color: #ffffff; + margin-bottom: 3px; + margin-top: 3px; + padding: 0.2em; + border: solid thin #333; + border-radius: 0.5em; + -webkit-border-radius: .5em; + -moz-border-radius: .5em; + box-shadow: 2px 2px 3px #999; + -webkit-box-shadow: 2px 2px 3px #999; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + background-image: -webkit-gradient(linear, left top, left bottom, from(#eee), to(#000),color-stop(0.3, #444)); + background-image: -moz-linear-gradient(center top, #eee 0%, #444 40%, #000 110%); +} + +div.classindex ul { + list-style: none; + padding-left: 0; +} + +div.classindex span.ai { + display: inline-block; +} + +div.groupHeader { + margin-left: 16px; + margin-top: 12px; + font-weight: bold; +} + +div.groupText { + margin-left: 16px; + font-style: italic; +} + +body { + background-color: white; + color: black; + margin: 0; +} + +div.contents { + margin-top: 10px; + margin-left: 12px; + margin-right: 8px; +} + +td.indexkey { + background-color: #EBEFF6; + font-weight: bold; + border: 1px solid #C4CFE5; + margin: 2px 0px 2px 0; + padding: 2px 10px; + white-space: nowrap; + vertical-align: top; +} + +td.indexvalue { + background-color: #EBEFF6; + border: 1px solid #C4CFE5; + padding: 2px 10px; + margin: 2px 0px; +} + +tr.memlist { + background-color: #EEF1F7; +} + +p.formulaDsp { + text-align: center; +} + +img.formulaDsp { + +} + +img.formulaInl { + vertical-align: middle; +} + +div.center { + text-align: center; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; +} + +div.center img { + border: 0px; +} + +address.footer { + text-align: right; + padding-right: 12px; +} + +img.footer { + border: 0px; + vertical-align: middle; +} + +/* @group Code Colorization */ + +span.keyword { + color: #008000 +} + +span.keywordtype { + color: #604020 +} + +span.keywordflow { + color: #e08000 +} + +span.comment { + color: #800000 +} + +span.preprocessor { + color: #806020 +} + +span.stringliteral { + color: #002080 +} + +span.charliteral { + color: #008080 +} + +span.vhdldigit { + color: #ff00ff +} + +span.vhdlchar { + color: #000000 +} + +span.vhdlkeyword { + color: #700070 +} + +span.vhdllogic { + color: #ff0000 +} + +blockquote { + background-color: #F7F8FB; + border-left: 2px solid #9CAFD4; + margin: 0 24px 0 4px; + padding: 0 12px 0 16px; +} + +/* @end */ + +/* +.search { + color: #003399; + font-weight: bold; +} + +form.search { + margin-bottom: 0px; + margin-top: 0px; +} + +input.search { + font-size: 75%; + color: #000080; + font-weight: normal; + background-color: #e8eef2; +} +*/ + +td.tiny { + font-size: 75%; +} + +.dirtab { + padding: 4px; + border-collapse: collapse; + border: 1px solid #A3B4D7; +} + +th.dirtab { + background: #EBEFF6; + font-weight: bold; +} + +hr { + height: 0px; + border: none; + border-top: 1px solid #4A6AAA; +} + +hr.footer { + height: 1px; +} + +/* @group Member Descriptions */ + +table.memberdecls { + border-spacing: 0px; + padding: 0px; +} + +.memberdecls td, .fieldtable tr { + -webkit-transition-property: background-color, box-shadow; + -webkit-transition-duration: 0.5s; + -moz-transition-property: background-color, box-shadow; + -moz-transition-duration: 0.5s; + -ms-transition-property: background-color, box-shadow; + -ms-transition-duration: 0.5s; + -o-transition-property: background-color, box-shadow; + -o-transition-duration: 0.5s; + transition-property: background-color, box-shadow; + transition-duration: 0.5s; +} + +.memberdecls td.glow, .fieldtable tr.glow { + background-color: cyan; + box-shadow: 0 0 15px cyan; +} + +.mdescLeft, .mdescRight, +.memItemLeft, .memItemRight, +.memTemplItemLeft, .memTemplItemRight, .memTemplParams { + background-color: #F9FAFC; + border: none; + margin: 4px; + padding: 1px 0 0 8px; +} + +.mdescLeft, .mdescRight { + padding: 0px 8px 4px 8px; + color: #555; +} + +.memSeparator { + border-bottom: 1px solid #DEE4F0; + line-height: 1px; + margin: 0px; + padding: 0px; +} + +.memItemLeft, .memTemplItemLeft { + white-space: nowrap; +} + +.memItemRight { + width: 100%; +} + +.memTemplParams { + color: #4665A2; + white-space: nowrap; + font-size: 80%; +} + +/* @end */ + +/* @group Member Details */ + +/* Styles for detailed member documentation */ + +.memtitle { + padding: 8px; + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + border-top-right-radius: 4px; + border-top-left-radius: 4px; + margin-bottom: -1px; + background-image: url('nav_f.png'); + background-repeat: repeat-x; + background-color: #E2E8F2; + line-height: 1.25; + font-weight: 300; + float:left; +} + +.permalink +{ + font-size: 65%; + display: inline-block; + vertical-align: middle; +} + +.memtemplate { + font-size: 80%; + color: #4665A2; + font-weight: normal; + margin-left: 9px; +} + +.memnav { + background-color: #EBEFF6; + border: 1px solid #A3B4D7; + text-align: center; + margin: 2px; + margin-right: 15px; + padding: 2px; +} + +.mempage { + width: 100%; +} + +.memitem { + padding: 0; + margin-bottom: 10px; + margin-right: 5px; + -webkit-transition: box-shadow 0.5s linear; + -moz-transition: box-shadow 0.5s linear; + -ms-transition: box-shadow 0.5s linear; + -o-transition: box-shadow 0.5s linear; + transition: box-shadow 0.5s linear; + display: table !important; + width: 100%; +} + +.memitem.glow { + box-shadow: 0 0 15px cyan; +} + +.memname { + font-weight: 400; + margin-left: 6px; +} + +.memname td { + vertical-align: bottom; +} + +.memproto, dl.reflist dt { + border-top: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 0px 6px 0px; + color: #253555; + font-weight: bold; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + background-color: #DFE5F1; + /* opera specific markup */ + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + border-top-right-radius: 4px; + /* firefox specific markup */ + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + -moz-border-radius-topright: 4px; + /* webkit specific markup */ + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + -webkit-border-top-right-radius: 4px; + +} + +.overload { + font-family: "courier new",courier,monospace; + font-size: 65%; +} + +.memdoc, dl.reflist dd { + border-bottom: 1px solid #A8B8D9; + border-left: 1px solid #A8B8D9; + border-right: 1px solid #A8B8D9; + padding: 6px 10px 2px 10px; + background-color: #FBFCFD; + border-top-width: 0; + background-image:url('nav_g.png'); + background-repeat:repeat-x; + background-color: #FFFFFF; + /* opera specific markup */ + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; + box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); + /* firefox specific markup */ + -moz-border-radius-bottomleft: 4px; + -moz-border-radius-bottomright: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 5px 5px 5px; + /* webkit specific markup */ + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +dl.reflist dt { + padding: 5px; +} + +dl.reflist dd { + margin: 0px 0px 10px 0px; + padding: 5px; +} + +.paramkey { + text-align: right; +} + +.paramtype { + white-space: nowrap; +} + +.paramname { + color: #602020; + white-space: nowrap; +} +.paramname em { + font-style: normal; +} +.paramname code { + line-height: 14px; +} + +.params, .retval, .exception, .tparams { + margin-left: 0px; + padding-left: 0px; +} + +.params .paramname, .retval .paramname { + font-weight: bold; + vertical-align: top; +} + +.params .paramtype { + font-style: italic; + vertical-align: top; +} + +.params .paramdir { + font-family: "courier new",courier,monospace; + vertical-align: top; +} + +table.mlabels { + border-spacing: 0px; +} + +td.mlabels-left { + width: 100%; + padding: 0px; +} + +td.mlabels-right { + vertical-align: bottom; + padding: 0px; + white-space: nowrap; +} + +span.mlabels { + margin-left: 8px; +} + +span.mlabel { + background-color: #728DC1; + border-top:1px solid #5373B4; + border-left:1px solid #5373B4; + border-right:1px solid #C4CFE5; + border-bottom:1px solid #C4CFE5; + text-shadow: none; + color: white; + margin-right: 4px; + padding: 2px 3px; + border-radius: 3px; + font-size: 7pt; + white-space: nowrap; + vertical-align: middle; +} + + + +/* @end */ + +/* these are for tree view inside a (index) page */ + +div.directory { + margin: 10px 0px; + border-top: 1px solid #9CAFD4; + border-bottom: 1px solid #9CAFD4; + width: 100%; +} + +.directory table { + border-collapse:collapse; +} + +.directory td { + margin: 0px; + padding: 0px; + vertical-align: top; +} + +.directory td.entry { + white-space: nowrap; + padding-right: 6px; + padding-top: 3px; +} + +.directory td.entry a { + outline:none; +} + +.directory td.entry a img { + border: none; +} + +.directory td.desc { + width: 100%; + padding-left: 6px; + padding-right: 6px; + padding-top: 3px; + border-left: 1px solid rgba(0,0,0,0.05); +} + +.directory tr.even { + padding-left: 6px; + background-color: #F7F8FB; +} + +.directory img { + vertical-align: -30%; +} + +.directory .levels { + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; +} + +.directory .levels span { + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: #3D578C; +} + +.arrow { + color: #9CAFD4; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; + cursor: pointer; + font-size: 80%; + display: inline-block; + width: 16px; + height: 22px; +} + +.icon { + font-family: Arial, Helvetica; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: #728DC1; + color: white; + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; +} + +.icona { + width: 24px; + height: 22px; + display: inline-block; +} + +.iconfopen { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderopen.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.iconfclosed { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('folderclosed.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +.icondoc { + width: 24px; + height: 18px; + margin-bottom: 4px; + background-image:url('doc.png'); + background-position: 0px -4px; + background-repeat: repeat-y; + vertical-align:top; + display: inline-block; +} + +table.directory { + font: 400 14px Roboto,sans-serif; +} + +/* @end */ + +div.dynheader { + margin-top: 8px; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +address { + font-style: normal; + color: #2A3D61; +} + +table.doxtable caption { + caption-side: top; +} + +table.doxtable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.doxtable td, table.doxtable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.doxtable th { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +table.fieldtable { + /*width: 100%;*/ + margin-bottom: 10px; + border: 1px solid #A8B8D9; + border-spacing: 0px; + -moz-border-radius: 4px; + -webkit-border-radius: 4px; + border-radius: 4px; + -moz-box-shadow: rgba(0, 0, 0, 0.15) 2px 2px 2px; + -webkit-box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); +} + +.fieldtable td, .fieldtable th { + padding: 3px 7px 2px; +} + +.fieldtable td.fieldtype, .fieldtable td.fieldname { + white-space: nowrap; + border-right: 1px solid #A8B8D9; + border-bottom: 1px solid #A8B8D9; + vertical-align: top; +} + +.fieldtable td.fieldname { + padding-top: 3px; +} + +.fieldtable td.fielddoc { + border-bottom: 1px solid #A8B8D9; + /*width: 100%;*/ +} + +.fieldtable td.fielddoc p:first-child { + margin-top: 0px; +} + +.fieldtable td.fielddoc p:last-child { + margin-bottom: 2px; +} + +.fieldtable tr:last-child td { + border-bottom: none; +} + +.fieldtable th { + background-image:url('nav_f.png'); + background-repeat:repeat-x; + background-color: #E2E8F2; + font-size: 90%; + color: #253555; + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + -moz-border-radius-topleft: 4px; + -moz-border-radius-topright: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid #A8B8D9; +} + + +.tabsearch { + top: 0px; + left: 10px; + height: 36px; + background-image: url('tab_b.png'); + z-index: 101; + overflow: hidden; + font-size: 13px; +} + +.navpath ul +{ + font-size: 11px; + background-image:url('tab_b.png'); + background-repeat:repeat-x; + background-position: 0 -5px; + height:30px; + line-height:30px; + color:#8AA0CC; + border:solid 1px #C2CDE4; + overflow:hidden; + margin:0px; + padding:0px; +} + +.navpath li +{ + list-style-type:none; + float:left; + padding-left:10px; + padding-right:15px; + background-image:url('bc_s.png'); + background-repeat:no-repeat; + background-position:right; + color:#364D7C; +} + +.navpath li.navelem a +{ + height:32px; + display:block; + text-decoration: none; + outline: none; + color: #283A5D; + font-family: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; + text-shadow: 0px 1px 1px rgba(255, 255, 255, 0.9); + text-decoration: none; +} + +.navpath li.navelem a:hover +{ + color:#6884BD; +} + +.navpath li.footer +{ + list-style-type:none; + float:right; + padding-left:10px; + padding-right:15px; + background-image:none; + background-repeat:no-repeat; + background-position:right; + color:#364D7C; + font-size: 8pt; +} + + +div.summary +{ + float: right; + font-size: 8pt; + padding-right: 5px; + width: 50%; + text-align: right; +} + +div.summary a +{ + white-space: nowrap; +} + +table.classindex +{ + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; +} + +div.ingroups +{ + font-size: 8pt; + width: 50%; + text-align: left; +} + +div.ingroups a +{ + white-space: nowrap; +} + +div.header +{ + background-image:url('nav_h.png'); + background-repeat:repeat-x; + background-color: #F9FAFC; + margin: 0px; + border-bottom: 1px solid #C4CFE5; +} + +div.headertitle +{ + padding: 5px 5px 5px 10px; +} + +dl +{ + padding: 0 0 0 10px; +} + +/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug */ +dl.section +{ + margin-left: 0px; + padding-left: 0px; +} + +dl.note +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #D0C000; +} + +dl.warning, dl.attention +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #FF0000; +} + +dl.pre, dl.post, dl.invariant +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00D000; +} + +dl.deprecated +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #505050; +} + +dl.todo +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #00C0E0; +} + +dl.test +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #3030E0; +} + +dl.bug +{ + margin-left:-7px; + padding-left: 3px; + border-left:4px solid; + border-color: #C08050; +} + +dl.section dd { + margin-bottom: 6px; +} + + +#projectlogo +{ + text-align: center; + vertical-align: bottom; + border-collapse: separate; +} + +#projectlogo img +{ + border: 0px none; +} + +#projectalign +{ + vertical-align: middle; +} + +#projectname +{ + font: 300% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 2px 0px; +} + +#projectbrief +{ + font: 120% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#projectnumber +{ + font: 50% Tahoma, Arial,sans-serif; + margin: 0px; + padding: 0px; +} + +#titlearea +{ + padding: 0px; + margin: 0px; + width: 100%; + border-bottom: 1px solid #5373B4; +} + +.image +{ + text-align: center; +} + +.dotgraph +{ + text-align: center; +} + +.mscgraph +{ + text-align: center; +} + +.plantumlgraph +{ + text-align: center; +} + +.diagraph +{ + text-align: center; +} + +.caption +{ + font-weight: bold; +} + +div.zoom +{ + border: 1px solid #90A5CE; +} + +dl.citelist { + margin-bottom:50px; +} + +dl.citelist dt { + color:#334975; + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; +} + +dl.citelist dd { + margin:2px 0; + padding:5px 0; +} + +div.toc { + padding: 14px 25px; + background-color: #F4F6FA; + border: 1px solid #D8DFEE; + border-radius: 7px 7px 7px 7px; + float: right; + height: auto; + margin: 0 8px 10px 10px; + width: 200px; +} + +div.toc li { + background: url("bdwn.png") no-repeat scroll 0 5px transparent; + font: 10px/1.2 Verdana,DejaVu Sans,Geneva,sans-serif; + margin-top: 5px; + padding-left: 10px; + padding-top: 2px; +} + +div.toc h3 { + font: bold 12px/1.2 Arial,FreeSans,sans-serif; + color: #4665A2; + border-bottom: 0 none; + margin: 0; +} + +div.toc ul { + list-style: none outside none; + border: medium none; + padding: 0px; +} + +div.toc li.level1 { + margin-left: 0px; +} + +div.toc li.level2 { + margin-left: 15px; +} + +div.toc li.level3 { + margin-left: 30px; +} + +div.toc li.level4 { + margin-left: 45px; +} + +.inherit_header { + font-weight: bold; + color: gray; + cursor: pointer; + -webkit-touch-callout: none; + -webkit-user-select: none; + -khtml-user-select: none; + -moz-user-select: none; + -ms-user-select: none; + user-select: none; +} + +.inherit_header td { + padding: 6px 0px 2px 5px; +} + +.inherit { + display: none; +} + +tr.heading h2 { + margin-top: 12px; + margin-bottom: 4px; +} + +/* tooltip related style info */ + +.ttc { + position: absolute; + display: none; +} + +#powerTip { + cursor: default; + white-space: nowrap; + background-color: white; + border: 1px solid gray; + border-radius: 4px 4px 4px 4px; + box-shadow: 1px 1px 7px gray; + display: none; + font-size: smaller; + max-width: 80%; + opacity: 0.9; + padding: 1ex 1em 1em; + position: absolute; + z-index: 2147483647; +} + +#powerTip div.ttdoc { + color: grey; + font-style: italic; +} + +#powerTip div.ttname a { + font-weight: bold; +} + +#powerTip div.ttname { + font-weight: bold; +} + +#powerTip div.ttdeci { + color: #006318; +} + +#powerTip div { + margin: 0px; + padding: 0px; + font: 12px/16px Roboto,sans-serif; +} + +#powerTip:before, #powerTip:after { + content: ""; + position: absolute; + margin: 0px; +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.s:after, #powerTip.s:before, +#powerTip.w:after, #powerTip.w:before, +#powerTip.e:after, #powerTip.e:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.nw:after, #powerTip.nw:before, +#powerTip.sw:after, #powerTip.sw:before { + border: solid transparent; + content: " "; + height: 0; + width: 0; + position: absolute; +} + +#powerTip.n:after, #powerTip.s:after, +#powerTip.w:after, #powerTip.e:after, +#powerTip.nw:after, #powerTip.ne:after, +#powerTip.sw:after, #powerTip.se:after { + border-color: rgba(255, 255, 255, 0); +} + +#powerTip.n:before, #powerTip.s:before, +#powerTip.w:before, #powerTip.e:before, +#powerTip.nw:before, #powerTip.ne:before, +#powerTip.sw:before, #powerTip.se:before { + border-color: rgba(128, 128, 128, 0); +} + +#powerTip.n:after, #powerTip.n:before, +#powerTip.ne:after, #powerTip.ne:before, +#powerTip.nw:after, #powerTip.nw:before { + top: 100%; +} + +#powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { + border-top-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} +#powerTip.n:before { + border-top-color: #808080; + border-width: 11px; + margin: 0px -11px; +} +#powerTip.n:after, #powerTip.n:before { + left: 50%; +} + +#powerTip.nw:after, #powerTip.nw:before { + right: 14px; +} + +#powerTip.ne:after, #powerTip.ne:before { + left: 14px; +} + +#powerTip.s:after, #powerTip.s:before, +#powerTip.se:after, #powerTip.se:before, +#powerTip.sw:after, #powerTip.sw:before { + bottom: 100%; +} + +#powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { + border-bottom-color: #ffffff; + border-width: 10px; + margin: 0px -10px; +} + +#powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { + border-bottom-color: #808080; + border-width: 11px; + margin: 0px -11px; +} + +#powerTip.s:after, #powerTip.s:before { + left: 50%; +} + +#powerTip.sw:after, #powerTip.sw:before { + right: 14px; +} + +#powerTip.se:after, #powerTip.se:before { + left: 14px; +} + +#powerTip.e:after, #powerTip.e:before { + left: 100%; +} +#powerTip.e:after { + border-left-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.e:before { + border-left-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +#powerTip.w:after, #powerTip.w:before { + right: 100%; +} +#powerTip.w:after { + border-right-color: #ffffff; + border-width: 10px; + top: 50%; + margin-top: -10px; +} +#powerTip.w:before { + border-right-color: #808080; + border-width: 11px; + top: 50%; + margin-top: -11px; +} + +@media print +{ + #top { display: none; } + #side-nav { display: none; } + #nav-path { display: none; } + body { overflow:visible; } + h1, h2, h3, h4, h5, h6 { page-break-after: avoid; } + .summary { display: none; } + .memitem { page-break-inside: avoid; } + #doc-content + { + margin-left:0 !important; + height:auto !important; + width:auto !important; + overflow:inherit; + display:inline; + } +} + +/* @group Markdown */ + +/* +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTableHead tr { +} + +table.markdownTableBodyLeft td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +th.markdownTableHeadLeft th.markdownTableHeadRight th.markdownTableHeadCenter th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft { + text-align: left +} + +th.markdownTableHeadRight { + text-align: right +} + +th.markdownTableHeadCenter { + text-align: center +} +*/ + +table.markdownTable { + border-collapse:collapse; + margin-top: 4px; + margin-bottom: 4px; +} + +table.markdownTable td, table.markdownTable th { + border: 1px solid #2D4068; + padding: 3px 7px 2px; +} + +table.markdownTable tr { +} + +th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { + background-color: #374F7F; + color: #FFFFFF; + font-size: 110%; + padding-bottom: 4px; + padding-top: 5px; +} + +th.markdownTableHeadLeft, td.markdownTableBodyLeft { + text-align: left +} + +th.markdownTableHeadRight, td.markdownTableBodyRight { + text-align: right +} + +th.markdownTableHeadCenter, td.markdownTableBodyCenter { + text-align: center +} + + +/* @end */ diff --git a/doxygen_files/html/doxygen.png b/doxygen_files/html/doxygen.png new file mode 100644 index 0000000000000000000000000000000000000000..3ff17d807fd8aa003bed8bb2a69e8f0909592fd1 GIT binary patch literal 3779 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/dynsections.js b/doxygen_files/html/dynsections.js new file mode 100644 index 0000000..537e3e4 --- /dev/null +++ b/doxygen_files/html/dynsections.js @@ -0,0 +1,127 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function toggleVisibility(linkObj) +{ + var base = $(linkObj).attr('id'); + var summary = $('#'+base+'-summary'); + var content = $('#'+base+'-content'); + var trigger = $('#'+base+'-trigger'); + var src=$(trigger).attr('src'); + if (content.is(':visible')===true) { + content.hide(); + summary.show(); + $(linkObj).addClass('closed').removeClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-8)+'closed.png'); + } else { + content.show(); + summary.hide(); + $(linkObj).removeClass('closed').addClass('opened'); + $(trigger).attr('src',src.substring(0,src.length-10)+'open.png'); + } + return false; +} + +function updateStripes() +{ + $('table.directory tr'). + removeClass('even').filter(':visible:even').addClass('even'); +} + +function toggleLevel(level) +{ + $('table.directory tr').each(function() { + var l = this.id.split('_').length-1; + var i = $('#img'+this.id.substring(3)); + var a = $('#arr'+this.id.substring(3)); + if (l + + + + + + +satnogs-rotator-firmware: libraries/easycomm.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    easycomm.h File Reference
    +
    +
    +
    #include <Arduino.h>
    +#include <WString.h>
    +#include <avr/wdt.h>
    +#include "rs485.h"
    +#include "rotator_pins.h"
    +#include "globals.h"
    +
    +Include dependency graph for easycomm.h:
    +
    +
    + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  easycomm
     Class that functions for easycomm 3 implementation. More...
     
    + + + + + + + + + + +

    +Macros

    #define RS485_TX_TIME   9
     Delay "t"ms to write in serial for RS485 implementation. More...
     
    #define BUFFER_SIZE   256
     Set the size of serial buffer. More...
     
    #define BAUDRATE   19200
     Set the Baudrate of easycomm 3 protocol. More...
     
    + + + +

    +Functions

    rs485 rs485 (RS485_DIR, RS485_TX_TIME)
     
    +

    Detailed Description

    +

    It is a driver for easycomm 3 protocol as referred, in Hamlib.

    +

    Licensed under the GPLv3

    + +

    Definition in file easycomm.h.

    +

    Macro Definition Documentation

    + +

    ◆ BAUDRATE

    + +
    +
    + + + + +
    #define BAUDRATE   19200
    +
    + +

    Set the Baudrate of easycomm 3 protocol.

    + +

    Definition at line 22 of file easycomm.h.

    + +

    Referenced by easycomm::easycomm_init().

    + +
    +
    + +

    ◆ BUFFER_SIZE

    + +
    +
    + + + + +
    #define BUFFER_SIZE   256
    +
    + +

    Set the size of serial buffer.

    + +

    Definition at line 21 of file easycomm.h.

    + +

    Referenced by easycomm::easycomm_proc(), and ISR().

    + +
    +
    + +

    ◆ RS485_TX_TIME

    + +
    +
    + + + + +
    #define RS485_TX_TIME   9
    +
    + +

    Delay "t"ms to write in serial for RS485 implementation.

    + +

    Definition at line 20 of file easycomm.h.

    + +
    +
    +

    Function Documentation

    + +

    ◆ rs485()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    rs485 rs485 (RS485_DIR ,
    RS485_TX_TIME  
    )
    +
    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/easycomm_8h__dep__incl.map b/doxygen_files/html/easycomm_8h__dep__incl.map new file mode 100644 index 0000000..21e50f7 --- /dev/null +++ b/doxygen_files/html/easycomm_8h__dep__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen_files/html/easycomm_8h__dep__incl.md5 b/doxygen_files/html/easycomm_8h__dep__incl.md5 new file mode 100644 index 0000000..8181888 --- /dev/null +++ b/doxygen_files/html/easycomm_8h__dep__incl.md5 @@ -0,0 +1 @@ +e14f3021def1d793843df287711ea7da \ No newline at end of file diff --git a/doxygen_files/html/easycomm_8h__dep__incl.png b/doxygen_files/html/easycomm_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..d28722054b21028b144c1e7de8ef91c551a10105 GIT binary patch literal 14621 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 PBjTaFnp~lb$-DmrXwF#+ literal 0 HcmV?d00001 diff --git a/doxygen_files/html/easycomm_8h__incl.map b/doxygen_files/html/easycomm_8h__incl.map new file mode 100644 index 0000000..02a21b3 --- /dev/null +++ b/doxygen_files/html/easycomm_8h__incl.map @@ -0,0 +1,5 @@ + + + + + diff --git a/doxygen_files/html/easycomm_8h__incl.md5 b/doxygen_files/html/easycomm_8h__incl.md5 new file mode 100644 index 0000000..0f12d9c --- /dev/null +++ b/doxygen_files/html/easycomm_8h__incl.md5 @@ -0,0 +1 @@ +73c42070ff7acd3aaa7a7dbedf33ae11 \ No newline at end of file diff --git a/doxygen_files/html/easycomm_8h__incl.png b/doxygen_files/html/easycomm_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..72a0218c0f2fd451a43e46023b7a78627eda619a GIT binary patch literal 18733 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 + + + + + + +satnogs-rotator-firmware: libraries/easycomm.h Source File + + + + + + + + + + +
    +
    +
    easycomm.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef LIBRARIES_EASYCOMM_H_
    11 #define LIBRARIES_EASYCOMM_H_
    12 
    13 #include <Arduino.h>
    14 #include <WString.h>
    15 #include <avr/wdt.h>
    16 #include "rs485.h"
    17 #include "rotator_pins.h"
    18 #include "globals.h"
    19 
    20 #define RS485_TX_TIME 9
    21 #define BUFFER_SIZE 256
    22 #define BAUDRATE 19200
    23 
    25 
    26 /**************************************************************************/
    30 /**************************************************************************/
    31 class easycomm {
    32 public:
    33 
    34  /**************************************************************************/
    38  /**************************************************************************/
    39  void easycomm_init() {
    41  }
    42 
    43  /**************************************************************************/
    47  /**************************************************************************/
    48  void easycomm_proc() {
    49  char buffer[BUFFER_SIZE];
    50  char incomingByte;
    51  char *Data = buffer;
    52  char *rawData;
    53  static uint16_t BufferCnt = 0;
    54  char data[100];
    55  String str1, str2, str3, str4, str5, str6;
    56 
    57  // Read from serial
    58  while (rs485.available() > 0) {
    59  incomingByte = rs485.read();
    60 
    61  // Read new data, '\n' means new pacakage
    62  if (incomingByte == '\n') {
    63  buffer[BufferCnt] = 0;
    64  if (buffer[0] == 'A' && buffer[1] == 'Z') {
    65  if (buffer[2] == ' ' && buffer[3] == 'E' &&
    66  buffer[4] == 'L') {
    67  // Send current absolute position in deg
    68  str1 = String("AZ");
    69  str2 = String(control_az.input, 1);
    70  str3 = String(" EL");
    71  str4 = String(control_el.input, 1);
    72  str5 = String("\n");
    73  rs485.print(str1 + str2 + str3 + str4 + str5);
    74  } else {
    75  // Get the absolute position in deg for azimuth
    77  rawData = strtok_r(Data, " ", &Data);
    78  strncpy(data, rawData + 2, 10);
    79  if (isNumber(data)) {
    80  control_az.setpoint = atof(data);
    81  }
    82  // Get the absolute position in deg for elevation
    83  rawData = strtok_r(Data, " ", &Data);
    84  if (rawData[0] == 'E' && rawData[1] == 'L') {
    85  strncpy(data, rawData + 2, 10);
    86  if (isNumber(data)) {
    87  control_el.setpoint = atof(data);
    88  }
    89  }
    90  }
    91  } else if (buffer[0] == 'V' && buffer[1] == 'U') {
    92  // Elevation increase speed in mdeg/s
    94  strncpy(data, Data + 2, 10);
    95  if (isNumber(data)) {
    96  // Convert to deg/s
    97  control_el.setpoint_speed = atof(data) / 1000;
    98  }
    99  } else if (buffer[0] == 'V' && buffer[1] == 'D') {
    100  // Elevation decrease speed in mdeg/s
    102  strncpy(data, Data + 2, 10);
    103  if (isNumber(data)) {
    104  // Convert to deg/s
    105  control_el.setpoint_speed = - atof(data) / 1000;
    106  }
    107  } else if (buffer[0] == 'V' && buffer[1] == 'L') {
    108  // Azimuth increase speed in mdeg/s
    110  strncpy(data, Data + 2, 10);
    111  if (isNumber(data)) {
    112  // Convert to deg/s
    113  control_az.setpoint_speed = atof(data) / 1000;
    114  }
    115  } else if (buffer[0] == 'V' && buffer[1] == 'R') {
    116  // Azimuth decrease speed in mdeg/s
    118  strncpy(data, Data + 2, 10);
    119  if (isNumber(data)) {
    120  // Convert to deg/s
    121  control_az.setpoint_speed = - atof(data) / 1000;
    122  }
    123  } else if (buffer[0] == 'S' && buffer[1] == 'A' &&
    124  buffer[2] == ' ' && buffer[3] == 'S' &&
    125  buffer[4] == 'E') {
    126  // Stop Moving
    128  str1 = String("AZ");
    129  str2 = String(control_az.input, 1);
    130  str3 = String(" EL");
    131  str4 = String(control_el.input, 1);
    132  str5 = String("\n");
    133  rs485.print(str1 + str2 + str3 + str4 + str5);
    136  } else if (buffer[0] == 'R' && buffer[1] == 'E' &&
    137  buffer[2] == 'S' && buffer[3] == 'E' &&
    138  buffer[4] == 'T') {
    139  // Reset the rotator, go to home position
    140  str1 = String("AZ");
    141  str2 = String(control_az.input, 1);
    142  str3 = String(" EL");
    143  str4 = String(control_el.input, 1);
    144  str5 = String("\n");
    145  rs485.print(str1 + str2 + str3 + str4 + str5);
    146  rotator.homing_flag = false;
    147  } else if (buffer[0] == 'P' && buffer[1] == 'A' &&
    148  buffer[2] == 'R' && buffer[3] == 'K' ) {
    149  // Park the rotator
    151  str1 = String("AZ");
    152  str2 = String(control_az.input, 1);
    153  str3 = String(" EL");
    154  str4 = String(control_el.input, 1);
    155  str5 = String("\n");
    156  rs485.print(str1 + str2 + str3 + str4 + str5);
    159  } else if (buffer[0] == 'V' && buffer[1] == 'E') {
    160  // Get the version if rotator controller
    161  str1 = String("VE");
    162  str2 = String("SatNOGS-v2.2");
    163  str3 = String("\n");
    164  rs485.print(str1 + str2 + str3);
    165  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    166  buffer[2] == '0') {
    167  // Get the inside temperature
    168  str1 = String("IP0,");
    169  str2 = String(rotator.inside_temperature, DEC);
    170  str3 = String("\n");
    171  rs485.print(str1 + str2 + str3);
    172  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    173  buffer[2] == '1') {
    174  // Get the status of end-stop, azimuth
    175  str1 = String("IP1,");
    176  str2 = String(rotator.switch_az, DEC);
    177  str3 = String("\n");
    178  rs485.print(str1 + str2 + str3);
    179  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    180  buffer[2] == '2') {
    181  // Get the status of end-stop, elevation
    182  str1 = String("IP2,");
    183  str2 = String(rotator.switch_el, DEC);
    184  str3 = String("\n");
    185  rs485.print(str1 + str2 + str3);
    186  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    187  buffer[2] == '3') {
    188  // Get the current position of azimuth in deg
    189  str1 = String("IP3,");
    190  str2 = String(control_az.input, 2);
    191  str3 = String("\n");
    192  rs485.print(str1 + str2 + str3);
    193  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    194  buffer[2] == '4') {
    195  // Get the current position of elevation in deg
    196  str1 = String("IP4,");
    197  str2 = String(control_el.input, 2);
    198  str3 = String("\n");
    199  rs485.print(str1 + str2 + str3);
    200  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    201  buffer[2] == '5') {
    202  // Get the load of azimuth, in range of 0-1023
    203  str1 = String("IP5,");
    204  str2 = String(control_az.load, DEC);
    205  str3 = String("\n");
    206  rs485.print(str1 + str2 + str3);
    207  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    208  buffer[2] == '6') {
    209  // Get the load of elevation, in range of 0-1023
    210  str1 = String("IP6,");
    211  str2 = String(control_el.load, DEC);
    212  str3 = String("\n");
    213  rs485.print(str1 + str2 + str3);
    214  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    215  buffer[2] == '7') {
    216  // Get the speed of azimuth in deg/s
    217  str1 = String("IP7,");
    218  str2 = String(control_az.speed, 2);
    219  str3 = String("\n");
    220  rs485.print(str1 + str2 + str3);
    221  } else if (buffer[0] == 'I' && buffer[1] == 'P' &&
    222  buffer[2] == '8') {
    223  // Get the speed of elevation in deg/s
    224  str1 = String("IP8,");
    225  str2 = String(control_el.speed, 2);
    226  str3 = String("\n");
    227  rs485.print(str1 + str2 + str3);
    228  } else if (buffer[0] == 'G' && buffer[1] == 'S') {
    229  // Get the status of rotator
    230  str1 = String("GS");
    231  str2 = String(rotator.rotator_status, DEC);
    232  str3 = String("\n");
    233  rs485.print(str1 + str2 + str3);
    234  } else if (buffer[0] == 'G' && buffer[1] == 'E') {
    235  // Get the error of rotator
    236  str1 = String("GE");
    237  str2 = String(rotator.rotator_error, DEC);
    238  str3 = String("\n");
    239  rs485.print(str1 + str2 + str3);
    240  } else if(buffer[0] == 'C' && buffer[1] == 'R') {
    241  // Get Configuration of rotator
    242  if (buffer[3] == '1') {
    243  // Get Kp Azimuth gain
    244  str1 = String("1,");
    245  str2 = String(control_az.p, 2);
    246  str3 = String("\n");
    247  rs485.print(str1 + str2 + str3);
    248  } else if (buffer[3] == '2') {
    249  // Get Ki Azimuth gain
    250  str1 = String("2,");
    251  str2 = String(control_az.i, 2);
    252  str3 = String("\n");
    253  rs485.print(str1 + str2 + str3);
    254  } else if (buffer[3] == '3') {
    255  // Get Kd Azimuth gain
    256  str1 = String("3,");
    257  str2 = String(control_az.d, 2);
    258  str3 = String("\n");
    259  rs485.print(str1 + str2 + str3);
    260  } else if (buffer[3] == '4') {
    261  // Get Kp Elevation gain
    262  str1 = String("4,");
    263  str2 = String(control_el.p, 2);
    264  str3 = String("\n");
    265  rs485.print(str1 + str2 + str3);
    266  } else if (buffer[3] == '5') {
    267  // Get Ki Elevation gain
    268  str1 = String("5,");
    269  str2 = String(control_el.i, 2);
    270  str3 = String("\n");
    271  rs485.print(str1 + str2 + str3);
    272  } else if (buffer[3] == '6') {
    273  // Get Kd Elevation gain
    274  str1 = String("6,");
    275  str2 = String(control_el.d, 2);
    276  str3 = String("\n");
    277  rs485.print(str1 + str2 + str3);
    278  } else if (buffer[3] == '7') {
    279  // Get Azimuth park position
    280  str1 = String("7,");
    281  str2 = String(rotator.park_az, 2);
    282  str3 = String("\n");
    283  rs485.print(str1 + str2 + str3);
    284  } else if (buffer[3] == '8') {
    285  // Get Elevation park position
    286  str1 = String("8,");
    287  str2 = String(rotator.park_el, 2);
    288  str3 = String("\n");
    289  rs485.print(str1 + str2 + str3);
    290  } else if (buffer[3] == '9') {
    291  // Get control mode
    292  str1 = String("9,");
    293  str2 = String(rotator.control_mode);
    294  str3 = String("\n");
    295  rs485.print(str1 + str2 + str3);
    296  }
    297  } else if (buffer[0] == 'C' && buffer[1] == 'W') {
    298  // Set Config
    299  if (buffer[2] == '1') {
    300  // Set Kp Azimuth gain
    301  rawData = strtok_r(Data, ",", &Data);
    302  strncpy(data, rawData + 4, 10);
    303  if (isNumber(data)) {
    304  control_az.p = atof(data);
    305  }
    306  } else if (buffer[2] == '2') {
    307  // Set Ki Azimuth gain
    308  rawData = strtok_r(Data, ",", &Data);
    309  strncpy(data, rawData + 4, 10);
    310  if (isNumber(data)) {
    311  control_az.i = atof(data);
    312  }
    313  } else if (buffer[2] == '3') {
    314  // Set Kd Azimuth gain
    315  rawData = strtok_r(Data, ",", &Data);
    316  strncpy(data, rawData + 4, 10);
    317  if (isNumber(data)) {
    318  control_az.d = atof(data);
    319  }
    320  } else if (buffer[2] == '4') {
    321  // Set Kp Elevation gain
    322  rawData = strtok_r(Data, ",", &Data);
    323  strncpy(data, rawData + 4, 10);
    324  if (isNumber(data)) {
    325  control_el.p = atof(data);
    326  }
    327  } else if (buffer[2] == '5') {
    328  // Set Ki Elevation gain
    329  rawData = strtok_r(Data, ",", &Data);
    330  strncpy(data, rawData + 4, 10);
    331  if (isNumber(data)) {
    332  control_el.i = atof(data);
    333  }
    334  } else if (buffer[2] == '6') {
    335  // Set Kd Elevation gain
    336  rawData = strtok_r(Data, ",", &Data);
    337  strncpy(data, rawData + 4, 10);
    338  if (isNumber(data)) {
    339  control_el.d = atof(data);
    340  }
    341  } else if (buffer[2] == '7') {
    342  // Set the Azimuth park position
    343  rawData = strtok_r(Data, ",", &Data);
    344  strncpy(data, rawData + 4, 10);
    345  if (isNumber(data)) {
    346  rotator.park_az = atof(data);
    347  }
    348  } else if (buffer[2] == '8') {
    349  // Set the Elevation park position
    350  rawData = strtok_r(Data, ",", &Data);
    351  strncpy(data, rawData + 4, 10);
    352  if (isNumber(data)) {
    353  rotator.park_el = atof(data);
    354  }
    355  }
    356  } else if (buffer[0] == 'R' && buffer[1] == 'S'
    357  && buffer[2] == 'T') {
    358  // Custom command to test the watchdog timer routine
    359  while(1)
    360  ;
    361  } else if (buffer[0] == 'R' && buffer[1] == 'B') {
    362  // Custom command to reboot the uC
    363  wdt_enable(WDTO_2S);
    364  while(1);
    365  }
    366  // Reset the buffer an clean the serial buffer
    367  BufferCnt = 0;
    368  rs485.flush();
    369  } else {
    370  // Fill the buffer with incoming data
    371  buffer[BufferCnt] = incomingByte;
    372  BufferCnt++;
    373  }
    374  }
    375  }
    376 
    377 private:
    378  bool isNumber(char *input) {
    379  for (uint16_t i = 0; input[i] != '\0'; i++) {
    380  if (isalpha(input[i]))
    381  return false;
    382  }
    383  return true;
    384  }
    385 };
    386 
    387 #endif /* LIBRARIES_EASYCOMM_H_ */
    +
    double input
    Motor Position feedback in deg.
    Definition: globals.h:30
    + +
    void easycomm_proc()
    Get the commands from RS485 and response to the client.
    Definition: easycomm.h:48
    +
    double setpoint
    Position set point in deg.
    Definition: globals.h:33
    +
    Definition: globals.h:26
    +
    void begin(uint16_t baudrate)
    Initialize the RS485 transceiver.
    Definition: rs485.h:38
    +
    bool switch_az
    Definition: globals.h:48
    +
    double p
    Definition: globals.h:37
    +
    #define BAUDRATE
    Set the Baudrate of easycomm 3 protocol.
    Definition: easycomm.h:22
    +
    _control control_az
    Definition: globals.h:51
    +
    #define RS485_DIR
    Digital output, to set the direction of RS485 communication.
    Definition: rotator_pins.h:28
    + +
    _rotator rotator
    Definition: globals.h:57
    +
    enum _rotator_status rotator_status
    Rotator status.
    Definition: globals.h:41
    +
    enum _rotator_error rotator_error
    Rotator error.
    Definition: globals.h:42
    +
    bool switch_el
    End-stop vales.
    Definition: globals.h:48
    +
    double park_el
    Park position for both axis.
    Definition: globals.h:46
    +
    double i
    Definition: globals.h:37
    +
    uint8_t available(void)
    The number of chars/uint8_t that are available in RS485 buffer.
    Definition: rs485.h:73
    +
    int8_t inside_temperature
    Inside Temperature.
    Definition: globals.h:45
    +
    double d
    Control gains.
    Definition: globals.h:37
    +
    double speed
    Motor Rotation speed in deg/s.
    Definition: globals.h:32
    +
    uint8_t read()
    Read a char/uint8_t from RS485 bus.
    Definition: rs485.h:63
    +
    void easycomm_init()
    Initialize the RS485 bus.
    Definition: easycomm.h:39
    +
    double setpoint_speed
    Speed set point in deg/s.
    Definition: globals.h:34
    +
    double park_az
    Definition: globals.h:46
    +
    bool homing_flag
    Homing flag.
    Definition: globals.h:44
    +
    enum _control_mode control_mode
    Control mode.
    Definition: globals.h:43
    + +
    Class that functions for easycomm 3 implementation.
    Definition: easycomm.h:31
    +
    void flush()
    Waits for the transmission of outgoing serial data to complete.
    Definition: rs485.h:82
    +
    void print(String str)
    Print a string to RS485 bus.
    Definition: rs485.h:50
    +
    #define RS485_TX_TIME
    Delay "t"ms to write in serial for RS485 implementation.
    Definition: easycomm.h:20
    +
    Class that functions for interacting with a RS485 transceiver.
    Definition: rs485.h:23
    +
    uint16_t load
    Motor Load in mA.
    Definition: globals.h:35
    +
    #define BUFFER_SIZE
    Set the size of serial buffer.
    Definition: easycomm.h:21
    +
    _control control_el
    Definition: globals.h:54
    +
    rs485 rs485(RS485_DIR, RS485_TX_TIME)
    +
    bool isNumber(char *input)
    Definition: easycomm.h:378
    +
    + + + + diff --git a/doxygen_files/html/endstop_8h.html b/doxygen_files/html/endstop_8h.html new file mode 100644 index 0000000..549a638 --- /dev/null +++ b/doxygen_files/html/endstop_8h.html @@ -0,0 +1,105 @@ + + + + + + + +satnogs-rotator-firmware: libraries/endstop.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    endstop.h File Reference
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  endstop
     Class that functions for interacting with end-stop. More...
     
    +

    Detailed Description

    +

    It is a driver for end-stops, mechanical, optical, magnetic etc.

    +

    Licensed under the GPLv3

    + +

    Definition in file endstop.h.

    +
    + + + + diff --git a/doxygen_files/html/endstop_8h__dep__incl.map b/doxygen_files/html/endstop_8h__dep__incl.map new file mode 100644 index 0000000..37bac04 --- /dev/null +++ b/doxygen_files/html/endstop_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen_files/html/endstop_8h__dep__incl.md5 b/doxygen_files/html/endstop_8h__dep__incl.md5 new file mode 100644 index 0000000..ed8444e --- /dev/null +++ b/doxygen_files/html/endstop_8h__dep__incl.md5 @@ -0,0 +1 @@ +b10a5a53f4235c14aa40441217a0be30 \ No newline at end of file diff --git a/doxygen_files/html/endstop_8h__dep__incl.png b/doxygen_files/html/endstop_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..d812f46e64e2d3df68888f834a9ee168e0860da9 GIT binary patch literal 6677 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/endstop_8h_source.html b/doxygen_files/html/endstop_8h_source.html new file mode 100644 index 0000000..4739700 --- /dev/null +++ b/doxygen_files/html/endstop_8h_source.html @@ -0,0 +1,86 @@ + + + + + + + +satnogs-rotator-firmware: libraries/endstop.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    endstop.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef ENDSTOP_H_
    11 #define ENDSTOP_H_
    12 
    13 /**************************************************************************/
    21 /**************************************************************************/
    22 class endstop {
    23 public:
    24 
    25  endstop(uint8_t pin, bool default_state) {
    26  _pin = pin;
    27  _default_state = default_state;
    28  }
    29 
    30  /**************************************************************************/
    34  /**************************************************************************/
    35  void init() {
    36  pinMode(_pin, INPUT_PULLUP);
    37  }
    38 
    39  /**************************************************************************/
    44  /**************************************************************************/
    45  bool get_state() {
    46  if (digitalRead(_pin) == _default_state)
    47  return true;
    48  else
    49  return false;
    50  }
    51 
    52 private:
    53  uint8_t _pin;
    55 };
    56 
    57 #endif /* ENDSTOP_H_ */
    uint8_t _pin
    Definition: endstop.h:53
    +
    void init()
    Initialize the Input pin for end-stop.
    Definition: endstop.h:35
    +
    Class that functions for interacting with end-stop.
    Definition: endstop.h:22
    +
    endstop(uint8_t pin, bool default_state)
    Definition: endstop.h:25
    +
    bool _default_state
    Definition: endstop.h:54
    +
    bool get_state()
    Get the state of end-stop.
    Definition: endstop.h:45
    +
    + + + + diff --git a/doxygen_files/html/files.html b/doxygen_files/html/files.html new file mode 100644 index 0000000..bf9f607 --- /dev/null +++ b/doxygen_files/html/files.html @@ -0,0 +1,132 @@ + + + + + + + +satnogs-rotator-firmware: File List + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    File List
    +
    + + + + + diff --git a/doxygen_files/html/folderclosed.png b/doxygen_files/html/folderclosed.png new file mode 100644 index 0000000000000000000000000000000000000000..bb8ab35edce8e97554e360005ee9fc5bffb36e66 GIT binary patch literal 616 zcmV-u0+;=XP)a9#ETzayK)T~Jw&MMH>OIr#&;dC}is*2Mqdf&akCc=O@`qC+4i z5Iu3w#1M@KqXCz8TIZd1wli&kkl2HVcAiZ8PUn5z_kG@-y;?yK06=cA0U%H0PH+kU zl6dp}OR(|r8-RG+YLu`zbI}5TlOU6ToR41{9=uz^?dGTNL;wIMf|V3`d1Wj3y!#6` zBLZ?xpKR~^2x}?~zA(_NUu3IaDB$tKma*XUdOZN~c=dLt_h_k!dbxm_*ibDM zlFX`g{k$X}yIe%$N)cn1LNu=q9_CS)*>A zsX_mM4L@`(cSNQKMFc$RtYbx{79#j-J7hk*>*+ZZhM4Hw?I?rsXCi#mRWJ=-0LGV5a-WR0Qgt<|Nqf)C-@80`5gIz45^_20000IqP)X=#(TiCT&PiIIVc55T}TU}EUh*{q$|`3@{d>{Tc9Bo>e= zfmF3!f>fbI9#GoEHh0f`i5)wkLpva0ztf%HpZneK?w-7AK@b4Itw{y|Zd3k!fH?q2 zlhckHd_V2M_X7+)U&_Xcfvtw60l;--DgZmLSw-Y?S>)zIqMyJ1#FwLU*%bl38ok+! zh78H87n`ZTS;uhzAR$M`zZ`bVhq=+%u9^$5jDplgxd44}9;IRqUH1YHH|@6oFe%z( zo4)_>E$F&^P-f(#)>(TrnbE>Pefs9~@iN=|)Rz|V`sGfHNrJ)0gJb8xx+SBmRf@1l zvuzt=vGfI)<-F9!o&3l?>9~0QbUDT(wFdnQPv%xdD)m*g%!20>Bc9iYmGAp<9YAa( z0QgYgTWqf1qN++Gqp z8@AYPTB3E|6s=WLG?xw0tm|U!o=&zd+H0oRYE;Dbx+Na9s^STqX|Gnq%H8s(nGDGJ j8vwW|`Ts`)fSK|Kx=IK@RG@g200000NkvXXu0mjfauFEA literal 0 HcmV?d00001 diff --git a/doxygen_files/html/functions.html b/doxygen_files/html/functions.html new file mode 100644 index 0000000..5e08658 --- /dev/null +++ b/doxygen_files/html/functions.html @@ -0,0 +1,393 @@ + + + + + + + +satnogs-rotator-firmware: Class Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all class members with links to the classes they belong to:
    + +

    - _ -

    + + +

    - a -

      +
    • available() +: rs485 +
    • +
    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

      +
    • tc74() +: tc74 +
    • +
    + + +

    - u -

    + + +

    - w -

    +
    + + + + diff --git a/doxygen_files/html/functions_func.html b/doxygen_files/html/functions_func.html new file mode 100644 index 0000000..4dad15b --- /dev/null +++ b/doxygen_files/html/functions_func.html @@ -0,0 +1,255 @@ + + + + + + + +satnogs-rotator-firmware: Class Members - Functions + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

      +
    • available() +: rs485 +
    • +
    + + +

    - b -

    + + +

    - d -

      +
    • disenable() +: motor +
    • +
    + + +

    - e -

    + + +

    - f -

    + + +

    - g -

    + + +

    - i -

    + + +

    - m -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

      +
    • tc74() +: tc74 +
    • +
    + + +

    - w -

    +
    + + + + diff --git a/doxygen_files/html/functions_vars.html b/doxygen_files/html/functions_vars.html new file mode 100644 index 0000000..400566a --- /dev/null +++ b/doxygen_files/html/functions_vars.html @@ -0,0 +1,234 @@ + + + + + + + +satnogs-rotator-firmware: Class Members - Variables + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - _ -

    + + +

    - c -

    + + +

    - d -

    + + +

    - f -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - u -

    +
    + + + + diff --git a/doxygen_files/html/globals.html b/doxygen_files/html/globals.html new file mode 100644 index 0000000..7c9b94c --- /dev/null +++ b/doxygen_files/html/globals.html @@ -0,0 +1,449 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    Here is a list of all file members with links to the files they belong to:
    + +

    - _ -

    + + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - l -

    + + +

    - m -

    + + +

    - n -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    + + +

    - w -

    +
    + + + + diff --git a/doxygen_files/html/globals_8h.html b/doxygen_files/html/globals_8h.html new file mode 100644 index 0000000..77b86ff --- /dev/null +++ b/doxygen_files/html/globals_8h.html @@ -0,0 +1,277 @@ + + + + + + + +satnogs-rotator-firmware: libraries/globals.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    globals.h File Reference
    +
    +
    +
    #include <Arduino.h>
    +
    +Include dependency graph for globals.h:
    +
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + + +

    +Classes

    struct  _control
     
    struct  _rotator
     
    + + + + + + + +

    +Enumerations

    enum  _rotator_status { idle = 1, +moving = 2, +pointing = 4, +error = 8 + }
     
    enum  _rotator_error {
    +  no_error = 1, +sensor_error = 2, +homing_error = 4, +motor_error = 8, +
    +  over_temperature = 12, +wdt_error = 16 +
    + }
     
    enum  _control_mode { position = 0, +speed = 1 + }
     
    + + + + + + + +

    +Variables

    _control control_az
     
    _control control_el
     
    _rotator rotator
     
    +

    Detailed Description

    +

    It is a file to define all global variables

    +

    Licensed under the GPLv3

    + +

    Definition in file globals.h.

    +

    Enumeration Type Documentation

    + +

    ◆ _control_mode

    + +
    +
    + + + + +
    enum _control_mode
    +
    +

    Rotator Control Modes

    + + + +
    Enumerator
    position 
    speed 
    + +

    Definition at line 25 of file globals.h.

    + +
    +
    + +

    ◆ _rotator_error

    + +
    +
    + + + + +
    enum _rotator_error
    +
    +

    Rotator Errors

    + + + + + + + +
    Enumerator
    no_error 
    sensor_error 
    homing_error 
    motor_error 
    over_temperature 
    wdt_error 
    + +

    Definition at line 20 of file globals.h.

    + +
    +
    + +

    ◆ _rotator_status

    + +
    +
    + + + + +
    enum _rotator_status
    +
    +

    Rotator status

    + + + + + +
    Enumerator
    idle 
    moving 
    pointing 
    error 
    + +

    Definition at line 16 of file globals.h.

    + +
    +
    +

    Variable Documentation

    + +

    ◆ control_az

    + +
    +
    + + + + +
    _control control_az
    +
    +Initial value:
    = { .input = 0, .input_prv = 0, .speed=0, .setpoint = 0,
    .setpoint_speed = 0, .load = 0, .u = 0, .p = 8.0,
    .i = 0.0, .d = 0.5 }
    +

    Definition at line 51 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), homing(), and loop().

    + +
    +
    + +

    ◆ control_el

    + +
    +
    + + + + +
    _control control_el
    +
    +Initial value:
    = { .input = 0, .input_prv = 0, .speed=0, .setpoint = 0,
    .setpoint_speed = 0, .load = 0, .u = 0, .p = 10.0,
    .i = 0.0, .d = 0.3 }
    +

    Definition at line 54 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), homing(), and loop().

    + +
    +
    + +

    ◆ rotator

    + +
    +
    + + + + +
    _rotator rotator
    +
    +Initial value:
    = { .rotator_status = idle, .rotator_error = no_error,
    .control_mode = position, .homing_flag = false,
    .inside_temperature = 0, .park_az = 0, .park_el = 0,
    .fault_az = LOW, .fault_el = LOW , .switch_az = false,
    .switch_el = false}
    Definition: globals.h:17
    + + +
    +

    Definition at line 57 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), ISR(), and loop().

    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/globals_8h__dep__incl.map b/doxygen_files/html/globals_8h__dep__incl.map new file mode 100644 index 0000000..9312742 --- /dev/null +++ b/doxygen_files/html/globals_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/globals_8h__dep__incl.md5 b/doxygen_files/html/globals_8h__dep__incl.md5 new file mode 100644 index 0000000..e9815aa --- /dev/null +++ b/doxygen_files/html/globals_8h__dep__incl.md5 @@ -0,0 +1 @@ +ae950df55e4899f92fcc805edd9522cb \ No newline at end of file diff --git a/doxygen_files/html/globals_8h__dep__incl.png b/doxygen_files/html/globals_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..1f80500dfbb944ae1350d2cbb259fad601b97089 GIT binary patch literal 26562 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 + diff --git a/doxygen_files/html/globals_8h__incl.md5 b/doxygen_files/html/globals_8h__incl.md5 new file mode 100644 index 0000000..381da49 --- /dev/null +++ b/doxygen_files/html/globals_8h__incl.md5 @@ -0,0 +1 @@ +ff84df85a7c8059d3d8019046bb5ee9c \ No newline at end of file diff --git a/doxygen_files/html/globals_8h__incl.png b/doxygen_files/html/globals_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..ff0eecb86d85f26829dd2ea2ab03e4bf3e41fb37 GIT binary patch literal 3056 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 + + + + + + +satnogs-rotator-firmware: libraries/globals.h Source File + + + + + + + + + + +
    +
    +
    globals.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef LIBRARIES_GLOBALS_H_
    11 #define LIBRARIES_GLOBALS_H_
    12 
    13 #include <Arduino.h>
    14 
    17  idle = 1, moving = 2, pointing = 4, error = 8
    18 };
    23 };
    26  position = 0, speed = 1
    27 };
    28 
    29 struct _control{
    30  double input;
    31  double input_prv;
    32  double speed;
    33  double setpoint;
    34  double setpoint_speed;
    35  uint16_t load;
    36  double u;
    37  double p, i, d;
    38 };
    39 
    40 struct _rotator{
    42  volatile enum _rotator_error rotator_error;
    44  bool homing_flag;
    46  double park_az, park_el;
    47  uint8_t fault_az, fault_el;
    49 };
    50 
    51 _control control_az = { .input = 0, .input_prv = 0, .speed=0, .setpoint = 0,
    52  .setpoint_speed = 0, .load = 0, .u = 0, .p = 8.0,
    53  .i = 0.0, .d = 0.5 };
    54 _control control_el = { .input = 0, .input_prv = 0, .speed=0, .setpoint = 0,
    55  .setpoint_speed = 0, .load = 0, .u = 0, .p = 10.0,
    56  .i = 0.0, .d = 0.3 };
    57 _rotator rotator = { .rotator_status = idle, .rotator_error = no_error,
    58  .control_mode = position, .homing_flag = false,
    59  .inside_temperature = 0, .park_az = 0, .park_el = 0,
    60  .fault_az = LOW, .fault_el = LOW , .switch_az = false,
    61  .switch_el = false};
    62 
    63 #endif /* LIBRARIES_GLOBALS_H_ */
    _control_mode
    Definition: globals.h:25
    +
    double input
    Motor Position feedback in deg.
    Definition: globals.h:30
    +
    _rotator_status
    Definition: globals.h:16
    +
    Definition: globals.h:17
    + + + +
    double setpoint
    Position set point in deg.
    Definition: globals.h:33
    + +
    Definition: globals.h:26
    + +
    bool switch_az
    Definition: globals.h:48
    + +
    double p
    Definition: globals.h:37
    +
    _control control_az
    Definition: globals.h:51
    +
    _rotator rotator
    Definition: globals.h:57
    +
    enum _rotator_status rotator_status
    Rotator status.
    Definition: globals.h:41
    +
    enum _rotator_error rotator_error
    Rotator error.
    Definition: globals.h:42
    +
    bool switch_el
    End-stop vales.
    Definition: globals.h:48
    +
    double park_el
    Park position for both axis.
    Definition: globals.h:46
    +
    double i
    Definition: globals.h:37
    + +
    int8_t inside_temperature
    Inside Temperature.
    Definition: globals.h:45
    +
    double input_prv
    T-1 Motor Position feedback in deg.
    Definition: globals.h:31
    +
    double d
    Control gains.
    Definition: globals.h:37
    +
    double speed
    Motor Rotation speed in deg/s.
    Definition: globals.h:32
    + +
    uint8_t fault_az
    Definition: globals.h:47
    +
    double setpoint_speed
    Speed set point in deg/s.
    Definition: globals.h:34
    +
    double park_az
    Definition: globals.h:46
    +
    bool homing_flag
    Homing flag.
    Definition: globals.h:44
    +
    uint8_t fault_el
    Motor drivers fault flag.
    Definition: globals.h:47
    +
    double u
    Control signal range 0-255.
    Definition: globals.h:36
    + +
    enum _control_mode control_mode
    Control mode.
    Definition: globals.h:43
    +
    Definition: globals.h:17
    +
    uint16_t load
    Motor Load in mA.
    Definition: globals.h:35
    +
    Definition: globals.h:17
    +
    _rotator_error
    Definition: globals.h:20
    +
    _control control_el
    Definition: globals.h:54
    + +
    + + + + diff --git a/doxygen_files/html/globals_defs.html b/doxygen_files/html/globals_defs.html new file mode 100644 index 0000000..8d52c2e --- /dev/null +++ b/doxygen_files/html/globals_defs.html @@ -0,0 +1,309 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +  + +

    - a -

    + + +

    - b -

    + + +

    - c -

    + + +

    - d -

    + + +

    - e -

    + + +

    - h -

    + + +

    - i -

    + + +

    - m -

    + + +

    - o -

    + + +

    - p -

    + + +

    - r -

    + + +

    - s -

    + + +

    - t -

    +
    + + + + diff --git a/doxygen_files/html/globals_enum.html b/doxygen_files/html/globals_enum.html new file mode 100644 index 0000000..2c1bc7b --- /dev/null +++ b/doxygen_files/html/globals_enum.html @@ -0,0 +1,83 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/doxygen_files/html/globals_eval.html b/doxygen_files/html/globals_eval.html new file mode 100644 index 0000000..013d068 --- /dev/null +++ b/doxygen_files/html/globals_eval.html @@ -0,0 +1,110 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    + + + + diff --git a/doxygen_files/html/globals_func.html b/doxygen_files/html/globals_func.html new file mode 100644 index 0000000..4e83b4d --- /dev/null +++ b/doxygen_files/html/globals_func.html @@ -0,0 +1,104 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + + + + + + diff --git a/doxygen_files/html/globals_vars.html b/doxygen_files/html/globals_vars.html new file mode 100644 index 0000000..d116c46 --- /dev/null +++ b/doxygen_files/html/globals_vars.html @@ -0,0 +1,123 @@ + + + + + + + +satnogs-rotator-firmware: File Members + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + + + + + + diff --git a/doxygen_files/html/graph_legend.html b/doxygen_files/html/graph_legend.html new file mode 100644 index 0000000..0169ca2 --- /dev/null +++ b/doxygen_files/html/graph_legend.html @@ -0,0 +1,105 @@ + + + + + + + +satnogs-rotator-firmware: Graph Legend + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Graph Legend
    +
    +
    +

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

    +

    Consider the following example:

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

    This will result in the following graph:

    +
    + +
    +

    The boxes in the above graph have the following meaning:

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

    The arrows have the following meaning:

    +
      +
    • +A dark blue arrow is used to visualize a public inheritance relation between two classes.
    • +
    • +A dark green arrow is used for protected inheritance.
    • +
    • +A dark red arrow is used for private inheritance.
    • +
    • +A purple dashed arrow is used if a class is contained or used by another class. The arrow is labelled with the variable(s) through which the pointed class or struct is accessible.
    • +
    • +A yellow dashed arrow denotes a relation between a template instance and the template class it was instantiated from. The arrow is labelled with the template parameters of the instance.
    • +
    +
    + + + + diff --git a/doxygen_files/html/graph_legend.md5 b/doxygen_files/html/graph_legend.md5 new file mode 100644 index 0000000..a06ed05 --- /dev/null +++ b/doxygen_files/html/graph_legend.md5 @@ -0,0 +1 @@ +387ff8eb65306fa251338d3c9bd7bfff \ No newline at end of file diff --git a/doxygen_files/html/graph_legend.png b/doxygen_files/html/graph_legend.png new file mode 100644 index 0000000000000000000000000000000000000000..93e2541d73de9e052b80ade28e9f2742fd791833 GIT binary patch literal 19906 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 z + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/hooks.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    hooks.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/hooks_8c_8d_source.html b/doxygen_files/html/hooks_8c_8d_source.html new file mode 100644 index 0000000..de32339 --- /dev/null +++ b/doxygen_files/html/hooks_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/hooks.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    hooks.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/hooks.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/hooks.c
    + + + + diff --git a/doxygen_files/html/i2c__mux_8h.html b/doxygen_files/html/i2c__mux_8h.html new file mode 100644 index 0000000..306ea74 --- /dev/null +++ b/doxygen_files/html/i2c__mux_8h.html @@ -0,0 +1,135 @@ + + + + + + + +satnogs-rotator-firmware: libraries/i2c_mux.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    i2c_mux.h File Reference
    +
    +
    +
    #include <Wire.h>
    +
    +Include dependency graph for i2c_mux.h:
    +
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  i2c_mux
     Class that functions for interacting with I2C 1-of-2 multiplexer. More...
     
    + + + +

    +Macros

    #define I2C_FREQ   100000
     
    +

    Detailed Description

    +

    It is a driver for I2C 1-of-2 multiplexer (like PCA9540B) with 2-Channels.

    +

    Licensed under the GPLv3

    + +

    Definition in file i2c_mux.h.

    +

    Macro Definition Documentation

    + +

    ◆ I2C_FREQ

    + +
    +
    + + + + +
    #define I2C_FREQ   100000
    +
    + +

    Definition at line 15 of file i2c_mux.h.

    + +

    Referenced by i2c_mux::init().

    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/i2c__mux_8h__dep__incl.map b/doxygen_files/html/i2c__mux_8h__dep__incl.map new file mode 100644 index 0000000..a720a08 --- /dev/null +++ b/doxygen_files/html/i2c__mux_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/i2c__mux_8h__dep__incl.md5 b/doxygen_files/html/i2c__mux_8h__dep__incl.md5 new file mode 100644 index 0000000..a5f2e07 --- /dev/null +++ b/doxygen_files/html/i2c__mux_8h__dep__incl.md5 @@ -0,0 +1 @@ +43bdb8c6f077fb2339044dbdbecd27dd \ No newline at end of file diff --git a/doxygen_files/html/i2c__mux_8h__dep__incl.png b/doxygen_files/html/i2c__mux_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..534b69b4f1ebad98a6c93ec335647058a0a5664e GIT binary patch literal 4362 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 + diff --git a/doxygen_files/html/i2c__mux_8h__incl.md5 b/doxygen_files/html/i2c__mux_8h__incl.md5 new file mode 100644 index 0000000..94c0f84 --- /dev/null +++ b/doxygen_files/html/i2c__mux_8h__incl.md5 @@ -0,0 +1 @@ +cbf1465052d9b84aa4f3ab2f73122c66 \ No newline at end of file diff --git a/doxygen_files/html/i2c__mux_8h__incl.png b/doxygen_files/html/i2c__mux_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..6363d1fe3020af5c1671800c2411b69a995be071 GIT binary patch literal 3175 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 FzW{(cQn~;D literal 0 HcmV?d00001 diff --git a/doxygen_files/html/i2c__mux_8h_source.html b/doxygen_files/html/i2c__mux_8h_source.html new file mode 100644 index 0000000..3ff403a --- /dev/null +++ b/doxygen_files/html/i2c__mux_8h_source.html @@ -0,0 +1,88 @@ + + + + + + + +satnogs-rotator-firmware: libraries/i2c_mux.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    i2c_mux.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef I2C_MUX_H_
    11 #define I2C_MUX_H_
    12 
    13 #include <Wire.h>
    14 
    15 #define I2C_FREQ 100000
    16 
    17 /**************************************************************************/
    27 /**************************************************************************/
    28 class i2c_mux {
    29 public:
    30 
    31  i2c_mux(uint8_t id, uint8_t ch0, uint8_t ch1) {
    32  _id = id;
    33  _ch0 = ch0;
    34  _ch1 = ch1;
    35  }
    36 
    37  /**************************************************************************/
    41  /**************************************************************************/
    42  void init() {
    43  Wire.begin();
    44  Wire.setClock(I2C_FREQ);
    45  }
    46 
    47  /**************************************************************************/
    53  /**************************************************************************/
    54  void set_channel(uint8_t ch) {
    55  if (ch == _ch0) {
    56  Wire.beginTransmission(_id);
    57  Wire.write(_ch0);
    58  Wire.endTransmission();
    59  } else if (ch == _ch1) {
    60  Wire.beginTransmission(_id);
    61  Wire.write(_ch1);
    62  Wire.endTransmission();
    63  }
    64  }
    65 
    66 private:
    67  uint8_t _id, _ch0, _ch1;
    68 };
    69 
    70 #endif /* I2C_MUX_H_ */
    #define I2C_FREQ
    Definition: i2c_mux.h:15
    +
    uint8_t _id
    Definition: i2c_mux.h:67
    +
    i2c_mux(uint8_t id, uint8_t ch0, uint8_t ch1)
    Definition: i2c_mux.h:31
    +
    void set_channel(uint8_t ch)
    Change the channel.
    Definition: i2c_mux.h:54
    +
    Class that functions for interacting with I2C 1-of-2 multiplexer.
    Definition: i2c_mux.h:28
    +
    uint8_t _ch1
    Definition: i2c_mux.h:67
    +
    uint8_t _ch0
    Definition: i2c_mux.h:67
    +
    void init()
    Initialize the I2C bus.
    Definition: i2c_mux.h:42
    +
    + + + + diff --git a/doxygen_files/html/index.html b/doxygen_files/html/index.html new file mode 100644 index 0000000..77f1209 --- /dev/null +++ b/doxygen_files/html/index.html @@ -0,0 +1,218 @@ + + + + + + + +satnogs-rotator-firmware: SatNOGS Rotator Firmware + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    SatNOGS Rotator Firmware
    +
    +
    +

    Firmware SatNOGS Rotator Controller.

    +

    Repository includes all source files for the SatNOGS rotator controller Firmware.

    +

    Electronics can be found on satnogs-rotator-controller

    +

    Instructions

    +

    In order to use this code, you need to install

    +

    You need to choose the version of the Firmware you will be utilizing based on your controller and rotator setup. Namely we have two different versions (one for DC motors and one for Stepper motors).

    +
    Steps
    +
      +
    • Download arduino IDE (tested with 1.8.5)
    • +
    • Add these lines in /arduino-1.8.5/hardware/arduino/avr/boards.txt
    • +
    +
    ##############################################################
    satnogs.name=SatNOGS
    satnogs.upload.tool=avrdude
    satnogs.upload.protocol=buspirate
    satnogs.upload.maximum_size=32256
    satnogs.upload.maximum_data_size=2048
    satnogs.upload.speed=115200
    satnogs.bootloader.tool=avrdude
    satnogs.bootloader.low_fuses=0xFF
    satnogs.bootloader.high_fuses=0xDE
    satnogs.bootloader.extended_fuses=0xFD
    satnogs.bootloader.unlock_bits=0x3F
    satnogs.bootloader.lock_bits=0x0F
    satnogs.bootloader.file=optiboot/optiboot_atmega328.hex
    satnogs.build.mcu=atmega328p
    satnogs.build.f_cpu=16000000L
    satnogs.build.board=AVR_SATNOGS
    satnogs.build.core=arduino
    satnogs.build.variant=eightanaloginputs
    ##############################################################
    +
    ARDUINO_DIR – Directory where Arduino is installed
    ARDMK_DIR – Directory where you have copied the makefile
    AVR_TOOLS_DIR – Directory where avr tools are installed
    USER_LIB_PATH – Directory where arduino libraries are installed
    AVRDUDE – Directory where avrdude are installed
    AVRDUDE_ARD_BAUDRATE – Serial Baudrate (uncomment to use 57600 for FTDI)
    include – Directory where Arduino.mk are installed
      +
    • Build the code
    • +
    +
    make
      +
    • Upload using ISP
        +
      • Connect arduino or buspirate for ISP programming
          +
        1. Pin 13 (SCK) to Pin 13 of arduino pro mini, ISP connector
        2. +
        3. Pin 12 (MISO) to Pin 12 of arduino pro mini, ISP connector
        4. +
        5. Pin 11 (MOSI) to Pin 11 of arduino pro mini, ISP connector
        6. +
        7. Pin 10 (RESET) to Pin RST of arduino pro mini, ISP connector
        8. +
        9. 5+ (Vcc) to Pin VCC of arduino pro mini, ISP connector
        10. +
        11. Gnd (Gnd) to Pin GND of arduino pro mini, ISP connector
        12. +
        +
      • +
      +
    • +
    • BusPirate
    • +
    +
    satnogs.upload.protocol=buspirate (in board.txt)
    ISP_PROG = buspirate (in Makefile)
    make ispload
    +
    satnogs.upload.protocol=arduino (in board.txt)
    ISP_PROG = arduino (in Makefile)
    make ispload
      +
    • Upload using FDTI, but is necessary to uninstall arduino pro-mini from board
    • +
    +

    Connect FTDI

    +
    satnogs.upload.protocol=arduino (in board.txt)
    make upload
      +
    • Burn optiboot
    • +
    +

    Only with ISP programming

    * Arduino as ISP
    +* BusPirate as ISP
    +
    make burn_bootloader

    Easycomm implemantation

    +
      +
    • AZ, Azimuth, number - 1 decimal place [deg]
    • +
    • EL, Elevation, number - 1 decimal place [deg]
    • +
    • SA, Stop azimuth moving
    • +
    • SE, Stop elevation moving
    • +
    • RESET, Move to home position
    • +
    • PARK, Move to park position
    • +
    • IP, Read an input, number
        +
      • Temperature = 0
      • +
      • SW1 = 1
      • +
      • SW2 = 2
      • +
      • Encoder1 = 3
      • +
      • Encoder2 = 4
      • +
      • Load of M1/AZ = 5
      • +
      • Load of M2/EL = 6
      • +
      • Speed of M1/AZ (DPS) = 7
      • +
      • Speed of M2/EL (DPS) = 8
      • +
      +
    • +
    • VE, Request Version
    • +
    • GS, Get status register, number
        +
      • idle = 1
      • +
      • moving = 2
      • +
      • pointing = 4
      • +
      • error = 8
      • +
      +
    • +
    • GE, Get error register, number
        +
      • no_error = 1
      • +
      • sensor_error = 2
      • +
      • homing_error = 4
      • +
      • motor_error = 8
      • +
      • over_temperature = 12
      • +
      • wdt_error = 16
      • +
      +
    • +
    • VL, Velocity Left ,number [mdeg/s]
    • +
    • VR, Velocity Right, number [mdeg/s]
    • +
    • VU, Velocity Up, number [mdeg/s]
    • +
    • VD, Velocity Down, number [mdeg/s]
    • +
    • CR, Read config, register [0-x]
        +
      • Gain P for M1/AZ = 1
      • +
      • Gain I for M1/AZ = 2
      • +
      • Gain D for M1/AZ = 3
      • +
      • Gain P for M2/EL = 4
      • +
      • Gain I for M2/EL = 5
      • +
      • Gain D for M2/EL = 6
      • +
      • Azimuth park position = 7
      • +
      • Elevation park position = 8
      • +
      • Control mode (position = 0, speed = 1) = 9
      • +
      +
    • +
    • CW, Write config, register [0-x]
        +
      • Gain P for M1/AZ = 1
      • +
      • Gain I for M1/AZ = 2
      • +
      • Gain D for M1/AZ = 3
      • +
      • Gain P for M2/EL = 4
      • +
      • Gain I for M2/EL = 5
      • +
      • Gain D for M2/EL = 6
      • +
      • Azimuth park position = 7
      • +
      • Elevation park position = 8
      • +
      • This reg is set from Vx commands control mode (position = 0, speed = 1) = 9
      • +
      +
    • +
    • RB, custom command to reboot controller
    • +
    +

    Controller Configurations

    +
      +
    • Stepper Motor
        +
      • Endstops
      • +
      • Encoders, optional
      • +
      • UART or R485 (For both options the firmware is the same)
      • +
      +
    • +
    • DC Motor
        +
      • Endstops
      • +
      • Encoders
      • +
      • UART or RS485 (For both options the firmware is the same)
      • +
      +
    • +
    +

    Pins Configuration

    +
    M1IN1 10, Step or PWM1
    M1IN2 9, Direction or PWM2
    M1SF 7, Status flag
    M1FB A1, Load measurment
    M2IN1 11, Step or PWM1
    M2IN2 3, Direction or PWM2
    M2SF 6, Status flag
    M2FB A0, Load measurment
    MOTOR_EN 8, Enable/Disable motors
    SW1 5, Endstop for axis 1
    SW2 4, Endstop for axis 2
    RS485_DIR 2, RS485 Half Duplex direction pin
    SDA_PIN 3, Data I2C pin
    SCL_PIN 4, Clock I2C pin
    PIN12 12, Digital output pin
    PIN13 13, Digital output pin
    A2 A2, Analog input pin
    A3 A3, Analog input pin

    Testing with hamlib - rotctl or with Serial Monitor

    +

    Connect the PC with contreller via UART to USB or RS485 to USB by using the right converter (as described in rotator controller BOM). For both options must be soldered the suitable components as descrided in rotator controller wiki page.

    +

    Use commands of rotctl:

    +
    rotctl -m 204 -s 19200 -r /dev/ttyUSB1 -vvvvv

    Replace the /dev/ttyUSB1 with the device which is connected to PC.

    +

    Use commands of easycomm 3:

    +

    Send directly commands of easycomm 3 as described in Easycomm implemantation section.

    +

    Contribute

    +

    The main repository lives on Gitlab and all Merge Request should happen there.

    +

    License

    +

    +

    Licensed under the [GPLv3](LICENSE)

    +
    + + + + diff --git a/doxygen_files/html/jquery.js b/doxygen_files/html/jquery.js new file mode 100644 index 0000000..2771c74 --- /dev/null +++ b/doxygen_files/html/jquery.js @@ -0,0 +1,115 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be included + in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. + IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY + CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, + TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE + SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +/*! + * jQuery JavaScript Library v1.7.1 + * http://jquery.com/ + * + * Copyright 2011, John Resig + * Dual licensed under the MIT or GPL Version 2 licenses. + * http://jquery.org/license + * + * Includes Sizzle.js + * http://sizzlejs.com/ + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * + * Date: Mon Nov 21 21:11:03 2011 -0500 + */ +(function(bb,L){var av=bb.document,bu=bb.navigator,bl=bb.location;var b=(function(){var bF=function(b0,b1){return new bF.fn.init(b0,b1,bD)},bU=bb.jQuery,bH=bb.$,bD,bY=/^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,bM=/\S/,bI=/^\s+/,bE=/\s+$/,bA=/^<(\w+)\s*\/?>(?:<\/\1>)?$/,bN=/^[\],:{}\s]*$/,bW=/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,bP=/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,bJ=/(?:^|:|,)(?:\s*\[)+/g,by=/(webkit)[ \/]([\w.]+)/,bR=/(opera)(?:.*version)?[ \/]([\w.]+)/,bQ=/(msie) ([\w.]+)/,bS=/(mozilla)(?:.*? rv:([\w.]+))?/,bB=/-([a-z]|[0-9])/ig,bZ=/^-ms-/,bT=function(b0,b1){return(b1+"").toUpperCase()},bX=bu.userAgent,bV,bC,e,bL=Object.prototype.toString,bG=Object.prototype.hasOwnProperty,bz=Array.prototype.push,bK=Array.prototype.slice,bO=String.prototype.trim,bv=Array.prototype.indexOf,bx={};bF.fn=bF.prototype={constructor:bF,init:function(b0,b4,b3){var b2,b5,b1,b6;if(!b0){return this}if(b0.nodeType){this.context=this[0]=b0;this.length=1;return this}if(b0==="body"&&!b4&&av.body){this.context=av;this[0]=av.body;this.selector=b0;this.length=1;return this}if(typeof b0==="string"){if(b0.charAt(0)==="<"&&b0.charAt(b0.length-1)===">"&&b0.length>=3){b2=[null,b0,null]}else{b2=bY.exec(b0)}if(b2&&(b2[1]||!b4)){if(b2[1]){b4=b4 instanceof bF?b4[0]:b4;b6=(b4?b4.ownerDocument||b4:av);b1=bA.exec(b0);if(b1){if(bF.isPlainObject(b4)){b0=[av.createElement(b1[1])];bF.fn.attr.call(b0,b4,true)}else{b0=[b6.createElement(b1[1])]}}else{b1=bF.buildFragment([b2[1]],[b6]);b0=(b1.cacheable?bF.clone(b1.fragment):b1.fragment).childNodes}return bF.merge(this,b0)}else{b5=av.getElementById(b2[2]);if(b5&&b5.parentNode){if(b5.id!==b2[2]){return b3.find(b0)}this.length=1;this[0]=b5}this.context=av;this.selector=b0;return this}}else{if(!b4||b4.jquery){return(b4||b3).find(b0)}else{return this.constructor(b4).find(b0)}}}else{if(bF.isFunction(b0)){return b3.ready(b0)}}if(b0.selector!==L){this.selector=b0.selector;this.context=b0.context}return bF.makeArray(b0,this)},selector:"",jquery:"1.7.1",length:0,size:function(){return this.length},toArray:function(){return bK.call(this,0)},get:function(b0){return b0==null?this.toArray():(b0<0?this[this.length+b0]:this[b0])},pushStack:function(b1,b3,b0){var b2=this.constructor();if(bF.isArray(b1)){bz.apply(b2,b1)}else{bF.merge(b2,b1)}b2.prevObject=this;b2.context=this.context;if(b3==="find"){b2.selector=this.selector+(this.selector?" ":"")+b0}else{if(b3){b2.selector=this.selector+"."+b3+"("+b0+")"}}return b2},each:function(b1,b0){return bF.each(this,b1,b0)},ready:function(b0){bF.bindReady();bC.add(b0);return this},eq:function(b0){b0=+b0;return b0===-1?this.slice(b0):this.slice(b0,b0+1)},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},slice:function(){return this.pushStack(bK.apply(this,arguments),"slice",bK.call(arguments).join(","))},map:function(b0){return this.pushStack(bF.map(this,function(b2,b1){return b0.call(b2,b1,b2)}))},end:function(){return this.prevObject||this.constructor(null)},push:bz,sort:[].sort,splice:[].splice};bF.fn.init.prototype=bF.fn;bF.extend=bF.fn.extend=function(){var b9,b2,b0,b1,b6,b7,b5=arguments[0]||{},b4=1,b3=arguments.length,b8=false;if(typeof b5==="boolean"){b8=b5;b5=arguments[1]||{};b4=2}if(typeof b5!=="object"&&!bF.isFunction(b5)){b5={}}if(b3===b4){b5=this;--b4}for(;b40){return}bC.fireWith(av,[bF]);if(bF.fn.trigger){bF(av).trigger("ready").off("ready")}}},bindReady:function(){if(bC){return}bC=bF.Callbacks("once memory");if(av.readyState==="complete"){return setTimeout(bF.ready,1)}if(av.addEventListener){av.addEventListener("DOMContentLoaded",e,false);bb.addEventListener("load",bF.ready,false)}else{if(av.attachEvent){av.attachEvent("onreadystatechange",e);bb.attachEvent("onload",bF.ready);var b0=false;try{b0=bb.frameElement==null}catch(b1){}if(av.documentElement.doScroll&&b0){bw()}}}},isFunction:function(b0){return bF.type(b0)==="function"},isArray:Array.isArray||function(b0){return bF.type(b0)==="array"},isWindow:function(b0){return b0&&typeof b0==="object"&&"setInterval" in b0},isNumeric:function(b0){return !isNaN(parseFloat(b0))&&isFinite(b0)},type:function(b0){return b0==null?String(b0):bx[bL.call(b0)]||"object"},isPlainObject:function(b2){if(!b2||bF.type(b2)!=="object"||b2.nodeType||bF.isWindow(b2)){return false}try{if(b2.constructor&&!bG.call(b2,"constructor")&&!bG.call(b2.constructor.prototype,"isPrototypeOf")){return false}}catch(b1){return false}var b0;for(b0 in b2){}return b0===L||bG.call(b2,b0)},isEmptyObject:function(b1){for(var b0 in b1){return false}return true},error:function(b0){throw new Error(b0)},parseJSON:function(b0){if(typeof b0!=="string"||!b0){return null}b0=bF.trim(b0);if(bb.JSON&&bb.JSON.parse){return bb.JSON.parse(b0)}if(bN.test(b0.replace(bW,"@").replace(bP,"]").replace(bJ,""))){return(new Function("return "+b0))()}bF.error("Invalid JSON: "+b0)},parseXML:function(b2){var b0,b1;try{if(bb.DOMParser){b1=new DOMParser();b0=b1.parseFromString(b2,"text/xml")}else{b0=new ActiveXObject("Microsoft.XMLDOM");b0.async="false";b0.loadXML(b2)}}catch(b3){b0=L}if(!b0||!b0.documentElement||b0.getElementsByTagName("parsererror").length){bF.error("Invalid XML: "+b2)}return b0},noop:function(){},globalEval:function(b0){if(b0&&bM.test(b0)){(bb.execScript||function(b1){bb["eval"].call(bb,b1)})(b0)}},camelCase:function(b0){return b0.replace(bZ,"ms-").replace(bB,bT)},nodeName:function(b1,b0){return b1.nodeName&&b1.nodeName.toUpperCase()===b0.toUpperCase()},each:function(b3,b6,b2){var b1,b4=0,b5=b3.length,b0=b5===L||bF.isFunction(b3);if(b2){if(b0){for(b1 in b3){if(b6.apply(b3[b1],b2)===false){break}}}else{for(;b40&&b0[0]&&b0[b1-1])||b1===0||bF.isArray(b0));if(b3){for(;b21?aJ.call(arguments,0):bG;if(!(--bw)){bC.resolveWith(bC,bx)}}}function bz(bF){return function(bG){bB[bF]=arguments.length>1?aJ.call(arguments,0):bG;bC.notifyWith(bE,bB)}}if(e>1){for(;bv
    a";bI=bv.getElementsByTagName("*");bF=bv.getElementsByTagName("a")[0];if(!bI||!bI.length||!bF){return{}}bG=av.createElement("select");bx=bG.appendChild(av.createElement("option"));bE=bv.getElementsByTagName("input")[0];bJ={leadingWhitespace:(bv.firstChild.nodeType===3),tbody:!bv.getElementsByTagName("tbody").length,htmlSerialize:!!bv.getElementsByTagName("link").length,style:/top/.test(bF.getAttribute("style")),hrefNormalized:(bF.getAttribute("href")==="/a"),opacity:/^0.55/.test(bF.style.opacity),cssFloat:!!bF.style.cssFloat,checkOn:(bE.value==="on"),optSelected:bx.selected,getSetAttribute:bv.className!=="t",enctype:!!av.createElement("form").enctype,html5Clone:av.createElement("nav").cloneNode(true).outerHTML!=="<:nav>",submitBubbles:true,changeBubbles:true,focusinBubbles:false,deleteExpando:true,noCloneEvent:true,inlineBlockNeedsLayout:false,shrinkWrapBlocks:false,reliableMarginRight:true};bE.checked=true;bJ.noCloneChecked=bE.cloneNode(true).checked;bG.disabled=true;bJ.optDisabled=!bx.disabled;try{delete bv.test}catch(bC){bJ.deleteExpando=false}if(!bv.addEventListener&&bv.attachEvent&&bv.fireEvent){bv.attachEvent("onclick",function(){bJ.noCloneEvent=false});bv.cloneNode(true).fireEvent("onclick")}bE=av.createElement("input");bE.value="t";bE.setAttribute("type","radio");bJ.radioValue=bE.value==="t";bE.setAttribute("checked","checked");bv.appendChild(bE);bD=av.createDocumentFragment();bD.appendChild(bv.lastChild);bJ.checkClone=bD.cloneNode(true).cloneNode(true).lastChild.checked;bJ.appendChecked=bE.checked;bD.removeChild(bE);bD.appendChild(bv);bv.innerHTML="";if(bb.getComputedStyle){bA=av.createElement("div");bA.style.width="0";bA.style.marginRight="0";bv.style.width="2px";bv.appendChild(bA);bJ.reliableMarginRight=(parseInt((bb.getComputedStyle(bA,null)||{marginRight:0}).marginRight,10)||0)===0}if(bv.attachEvent){for(by in {submit:1,change:1,focusin:1}){bB="on"+by;bw=(bB in bv);if(!bw){bv.setAttribute(bB,"return;");bw=(typeof bv[bB]==="function")}bJ[by+"Bubbles"]=bw}}bD.removeChild(bv);bD=bG=bx=bA=bv=bE=null;b(function(){var bM,bU,bV,bT,bN,bO,bL,bS,bR,e,bP,bQ=av.getElementsByTagName("body")[0];if(!bQ){return}bL=1;bS="position:absolute;top:0;left:0;width:1px;height:1px;margin:0;";bR="visibility:hidden;border:0;";e="style='"+bS+"border:5px solid #000;padding:0;'";bP="
    ";bM=av.createElement("div");bM.style.cssText=bR+"width:0;height:0;position:static;top:0;margin-top:"+bL+"px";bQ.insertBefore(bM,bQ.firstChild);bv=av.createElement("div");bM.appendChild(bv);bv.innerHTML="
    t
    ";bz=bv.getElementsByTagName("td");bw=(bz[0].offsetHeight===0);bz[0].style.display="";bz[1].style.display="none";bJ.reliableHiddenOffsets=bw&&(bz[0].offsetHeight===0);bv.innerHTML="";bv.style.width=bv.style.paddingLeft="1px";b.boxModel=bJ.boxModel=bv.offsetWidth===2;if(typeof bv.style.zoom!=="undefined"){bv.style.display="inline";bv.style.zoom=1;bJ.inlineBlockNeedsLayout=(bv.offsetWidth===2);bv.style.display="";bv.innerHTML="
    ";bJ.shrinkWrapBlocks=(bv.offsetWidth!==2)}bv.style.cssText=bS+bR;bv.innerHTML=bP;bU=bv.firstChild;bV=bU.firstChild;bN=bU.nextSibling.firstChild.firstChild;bO={doesNotAddBorder:(bV.offsetTop!==5),doesAddBorderForTableAndCells:(bN.offsetTop===5)};bV.style.position="fixed";bV.style.top="20px";bO.fixedPosition=(bV.offsetTop===20||bV.offsetTop===15);bV.style.position=bV.style.top="";bU.style.overflow="hidden";bU.style.position="relative";bO.subtractsBorderForOverflowNotVisible=(bV.offsetTop===-5);bO.doesNotIncludeMarginInBodyOffset=(bQ.offsetTop!==bL);bQ.removeChild(bM);bv=bM=null;b.extend(bJ,bO)});return bJ})();var aS=/^(?:\{.*\}|\[.*\])$/,aA=/([A-Z])/g;b.extend({cache:{},uuid:0,expando:"jQuery"+(b.fn.jquery+Math.random()).replace(/\D/g,""),noData:{embed:true,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",applet:true},hasData:function(e){e=e.nodeType?b.cache[e[b.expando]]:e[b.expando];return !!e&&!S(e)},data:function(bx,bv,bz,by){if(!b.acceptData(bx)){return}var bG,bA,bD,bE=b.expando,bC=typeof bv==="string",bF=bx.nodeType,e=bF?b.cache:bx,bw=bF?bx[bE]:bx[bE]&&bE,bB=bv==="events";if((!bw||!e[bw]||(!bB&&!by&&!e[bw].data))&&bC&&bz===L){return}if(!bw){if(bF){bx[bE]=bw=++b.uuid}else{bw=bE}}if(!e[bw]){e[bw]={};if(!bF){e[bw].toJSON=b.noop}}if(typeof bv==="object"||typeof bv==="function"){if(by){e[bw]=b.extend(e[bw],bv)}else{e[bw].data=b.extend(e[bw].data,bv)}}bG=bA=e[bw];if(!by){if(!bA.data){bA.data={}}bA=bA.data}if(bz!==L){bA[b.camelCase(bv)]=bz}if(bB&&!bA[bv]){return bG.events}if(bC){bD=bA[bv];if(bD==null){bD=bA[b.camelCase(bv)]}}else{bD=bA}return bD},removeData:function(bx,bv,by){if(!b.acceptData(bx)){return}var bB,bA,bz,bC=b.expando,bD=bx.nodeType,e=bD?b.cache:bx,bw=bD?bx[bC]:bC;if(!e[bw]){return}if(bv){bB=by?e[bw]:e[bw].data;if(bB){if(!b.isArray(bv)){if(bv in bB){bv=[bv]}else{bv=b.camelCase(bv);if(bv in bB){bv=[bv]}else{bv=bv.split(" ")}}}for(bA=0,bz=bv.length;bA-1){return true}}return false},val:function(bx){var e,bv,by,bw=this[0];if(!arguments.length){if(bw){e=b.valHooks[bw.nodeName.toLowerCase()]||b.valHooks[bw.type];if(e&&"get" in e&&(bv=e.get(bw,"value"))!==L){return bv}bv=bw.value;return typeof bv==="string"?bv.replace(aU,""):bv==null?"":bv}return}by=b.isFunction(bx);return this.each(function(bA){var bz=b(this),bB;if(this.nodeType!==1){return}if(by){bB=bx.call(this,bA,bz.val())}else{bB=bx}if(bB==null){bB=""}else{if(typeof bB==="number"){bB+=""}else{if(b.isArray(bB)){bB=b.map(bB,function(bC){return bC==null?"":bC+""})}}}e=b.valHooks[this.nodeName.toLowerCase()]||b.valHooks[this.type];if(!e||!("set" in e)||e.set(this,bB,"value")===L){this.value=bB}})}});b.extend({valHooks:{option:{get:function(e){var bv=e.attributes.value;return !bv||bv.specified?e.value:e.text}},select:{get:function(e){var bA,bv,bz,bx,by=e.selectedIndex,bB=[],bC=e.options,bw=e.type==="select-one";if(by<0){return null}bv=bw?by:0;bz=bw?by+1:bC.length;for(;bv=0});if(!e.length){bv.selectedIndex=-1}return e}}},attrFn:{val:true,css:true,html:true,text:true,data:true,width:true,height:true,offset:true},attr:function(bA,bx,bB,bz){var bw,e,by,bv=bA.nodeType;if(!bA||bv===3||bv===8||bv===2){return}if(bz&&bx in b.attrFn){return b(bA)[bx](bB)}if(typeof bA.getAttribute==="undefined"){return b.prop(bA,bx,bB)}by=bv!==1||!b.isXMLDoc(bA);if(by){bx=bx.toLowerCase();e=b.attrHooks[bx]||(ao.test(bx)?aY:be)}if(bB!==L){if(bB===null){b.removeAttr(bA,bx);return}else{if(e&&"set" in e&&by&&(bw=e.set(bA,bB,bx))!==L){return bw}else{bA.setAttribute(bx,""+bB);return bB}}}else{if(e&&"get" in e&&by&&(bw=e.get(bA,bx))!==null){return bw}else{bw=bA.getAttribute(bx);return bw===null?L:bw}}},removeAttr:function(bx,bz){var by,bA,bv,e,bw=0;if(bz&&bx.nodeType===1){bA=bz.toLowerCase().split(af);e=bA.length;for(;bw=0)}}})});var bd=/^(?:textarea|input|select)$/i,n=/^([^\.]*)?(?:\.(.+))?$/,J=/\bhover(\.\S+)?\b/,aO=/^key/,bf=/^(?:mouse|contextmenu)|click/,T=/^(?:focusinfocus|focusoutblur)$/,U=/^(\w*)(?:#([\w\-]+))?(?:\.([\w\-]+))?$/,Y=function(e){var bv=U.exec(e);if(bv){bv[1]=(bv[1]||"").toLowerCase();bv[3]=bv[3]&&new RegExp("(?:^|\\s)"+bv[3]+"(?:\\s|$)")}return bv},j=function(bw,e){var bv=bw.attributes||{};return((!e[1]||bw.nodeName.toLowerCase()===e[1])&&(!e[2]||(bv.id||{}).value===e[2])&&(!e[3]||e[3].test((bv["class"]||{}).value)))},bt=function(e){return b.event.special.hover?e:e.replace(J,"mouseenter$1 mouseleave$1")};b.event={add:function(bx,bC,bJ,bA,by){var bD,bB,bK,bI,bH,bF,e,bG,bv,bz,bw,bE;if(bx.nodeType===3||bx.nodeType===8||!bC||!bJ||!(bD=b._data(bx))){return}if(bJ.handler){bv=bJ;bJ=bv.handler}if(!bJ.guid){bJ.guid=b.guid++}bK=bD.events;if(!bK){bD.events=bK={}}bB=bD.handle;if(!bB){bD.handle=bB=function(bL){return typeof b!=="undefined"&&(!bL||b.event.triggered!==bL.type)?b.event.dispatch.apply(bB.elem,arguments):L};bB.elem=bx}bC=b.trim(bt(bC)).split(" ");for(bI=0;bI=0){bG=bG.slice(0,-1);bw=true}if(bG.indexOf(".")>=0){bx=bG.split(".");bG=bx.shift();bx.sort()}if((!bA||b.event.customEvent[bG])&&!b.event.global[bG]){return}bv=typeof bv==="object"?bv[b.expando]?bv:new b.Event(bG,bv):new b.Event(bG);bv.type=bG;bv.isTrigger=true;bv.exclusive=bw;bv.namespace=bx.join(".");bv.namespace_re=bv.namespace?new RegExp("(^|\\.)"+bx.join("\\.(?:.*\\.)?")+"(\\.|$)"):null;by=bG.indexOf(":")<0?"on"+bG:"";if(!bA){e=b.cache;for(bC in e){if(e[bC].events&&e[bC].events[bG]){b.event.trigger(bv,bD,e[bC].handle.elem,true)}}return}bv.result=L;if(!bv.target){bv.target=bA}bD=bD!=null?b.makeArray(bD):[];bD.unshift(bv);bF=b.event.special[bG]||{};if(bF.trigger&&bF.trigger.apply(bA,bD)===false){return}bB=[[bA,bF.bindType||bG]];if(!bJ&&!bF.noBubble&&!b.isWindow(bA)){bI=bF.delegateType||bG;bH=T.test(bI+bG)?bA:bA.parentNode;bz=null;for(;bH;bH=bH.parentNode){bB.push([bH,bI]);bz=bH}if(bz&&bz===bA.ownerDocument){bB.push([bz.defaultView||bz.parentWindow||bb,bI])}}for(bC=0;bCbA){bH.push({elem:this,matches:bz.slice(bA)})}for(bC=0;bC0?this.on(e,null,bx,bw):this.trigger(e)};if(b.attrFn){b.attrFn[e]=true}if(aO.test(e)){b.event.fixHooks[e]=b.event.keyHooks}if(bf.test(e)){b.event.fixHooks[e]=b.event.mouseHooks}}); +/*! + * Sizzle CSS Selector Engine + * Copyright 2011, The Dojo Foundation + * Released under the MIT, BSD, and GPL Licenses. + * More information: http://sizzlejs.com/ + */ +(function(){var bH=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,bC="sizcache"+(Math.random()+"").replace(".",""),bI=0,bL=Object.prototype.toString,bB=false,bA=true,bK=/\\/g,bO=/\r\n/g,bQ=/\W/;[0,0].sort(function(){bA=false;return 0});var by=function(bV,e,bY,bZ){bY=bY||[];e=e||av;var b1=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!bV||typeof bV!=="string"){return bY}var bS,b3,b6,bR,b2,b5,b4,bX,bU=true,bT=by.isXML(e),bW=[],b0=bV;do{bH.exec("");bS=bH.exec(b0);if(bS){b0=bS[3];bW.push(bS[1]);if(bS[2]){bR=bS[3];break}}}while(bS);if(bW.length>1&&bD.exec(bV)){if(bW.length===2&&bE.relative[bW[0]]){b3=bM(bW[0]+bW[1],e,bZ)}else{b3=bE.relative[bW[0]]?[e]:by(bW.shift(),e);while(bW.length){bV=bW.shift();if(bE.relative[bV]){bV+=bW.shift()}b3=bM(bV,b3,bZ)}}}else{if(!bZ&&bW.length>1&&e.nodeType===9&&!bT&&bE.match.ID.test(bW[0])&&!bE.match.ID.test(bW[bW.length-1])){b2=by.find(bW.shift(),e,bT);e=b2.expr?by.filter(b2.expr,b2.set)[0]:b2.set[0]}if(e){b2=bZ?{expr:bW.pop(),set:bF(bZ)}:by.find(bW.pop(),bW.length===1&&(bW[0]==="~"||bW[0]==="+")&&e.parentNode?e.parentNode:e,bT);b3=b2.expr?by.filter(b2.expr,b2.set):b2.set;if(bW.length>0){b6=bF(b3)}else{bU=false}while(bW.length){b5=bW.pop();b4=b5;if(!bE.relative[b5]){b5=""}else{b4=bW.pop()}if(b4==null){b4=e}bE.relative[b5](b6,b4,bT)}}else{b6=bW=[]}}if(!b6){b6=b3}if(!b6){by.error(b5||bV)}if(bL.call(b6)==="[object Array]"){if(!bU){bY.push.apply(bY,b6)}else{if(e&&e.nodeType===1){for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&(b6[bX]===true||b6[bX].nodeType===1&&by.contains(e,b6[bX]))){bY.push(b3[bX])}}}else{for(bX=0;b6[bX]!=null;bX++){if(b6[bX]&&b6[bX].nodeType===1){bY.push(b3[bX])}}}}}else{bF(b6,bY)}if(bR){by(bR,b1,bY,bZ);by.uniqueSort(bY)}return bY};by.uniqueSort=function(bR){if(bJ){bB=bA;bR.sort(bJ);if(bB){for(var e=1;e0};by.find=function(bX,e,bY){var bW,bS,bU,bT,bV,bR;if(!bX){return[]}for(bS=0,bU=bE.order.length;bS":function(bW,bR){var bV,bU=typeof bR==="string",bS=0,e=bW.length;if(bU&&!bQ.test(bR)){bR=bR.toLowerCase();for(;bS=0)){if(!bS){e.push(bV)}}else{if(bS){bR[bU]=false}}}}return false},ID:function(e){return e[1].replace(bK,"")},TAG:function(bR,e){return bR[1].replace(bK,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){by.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var bR=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(bR[1]+(bR[2]||1))-0;e[3]=bR[3]-0}else{if(e[2]){by.error(e[0])}}e[0]=bI++;return e},ATTR:function(bU,bR,bS,e,bV,bW){var bT=bU[1]=bU[1].replace(bK,"");if(!bW&&bE.attrMap[bT]){bU[1]=bE.attrMap[bT]}bU[4]=(bU[4]||bU[5]||"").replace(bK,"");if(bU[2]==="~="){bU[4]=" "+bU[4]+" "}return bU},PSEUDO:function(bU,bR,bS,e,bV){if(bU[1]==="not"){if((bH.exec(bU[3])||"").length>1||/^\w/.test(bU[3])){bU[3]=by(bU[3],null,null,bR)}else{var bT=by.filter(bU[3],bR,bS,true^bV);if(!bS){e.push.apply(e,bT)}return false}}else{if(bE.match.POS.test(bU[0])||bE.match.CHILD.test(bU[0])){return true}}return bU},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(bS,bR,e){return !!by(e[3],bS).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(bS){var e=bS.getAttribute("type"),bR=bS.type;return bS.nodeName.toLowerCase()==="input"&&"text"===bR&&(e===bR||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===bR.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(bR){var e=bR.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===bR.type},button:function(bR){var e=bR.nodeName.toLowerCase();return e==="input"&&"button"===bR.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(bR,e){return e===0},last:function(bS,bR,e,bT){return bR===bT.length-1},even:function(bR,e){return e%2===0},odd:function(bR,e){return e%2===1},lt:function(bS,bR,e){return bRe[3]-0},nth:function(bS,bR,e){return e[3]-0===bR},eq:function(bS,bR,e){return e[3]-0===bR}},filter:{PSEUDO:function(bS,bX,bW,bY){var e=bX[1],bR=bE.filters[e];if(bR){return bR(bS,bW,bX,bY)}else{if(e==="contains"){return(bS.textContent||bS.innerText||bw([bS])||"").indexOf(bX[3])>=0}else{if(e==="not"){var bT=bX[3];for(var bV=0,bU=bT.length;bV=0)}}},ID:function(bR,e){return bR.nodeType===1&&bR.getAttribute("id")===e},TAG:function(bR,e){return(e==="*"&&bR.nodeType===1)||!!bR.nodeName&&bR.nodeName.toLowerCase()===e},CLASS:function(bR,e){return(" "+(bR.className||bR.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(bV,bT){var bS=bT[1],e=by.attr?by.attr(bV,bS):bE.attrHandle[bS]?bE.attrHandle[bS](bV):bV[bS]!=null?bV[bS]:bV.getAttribute(bS),bW=e+"",bU=bT[2],bR=bT[4];return e==null?bU==="!=":!bU&&by.attr?e!=null:bU==="="?bW===bR:bU==="*="?bW.indexOf(bR)>=0:bU==="~="?(" "+bW+" ").indexOf(bR)>=0:!bR?bW&&e!==false:bU==="!="?bW!==bR:bU==="^="?bW.indexOf(bR)===0:bU==="$="?bW.substr(bW.length-bR.length)===bR:bU==="|="?bW===bR||bW.substr(0,bR.length+1)===bR+"-":false},POS:function(bU,bR,bS,bV){var e=bR[2],bT=bE.setFilters[e];if(bT){return bT(bU,bS,bR,bV)}}}};var bD=bE.match.POS,bx=function(bR,e){return"\\"+(e-0+1)};for(var bz in bE.match){bE.match[bz]=new RegExp(bE.match[bz].source+(/(?![^\[]*\])(?![^\(]*\))/.source));bE.leftMatch[bz]=new RegExp(/(^(?:.|\r|\n)*?)/.source+bE.match[bz].source.replace(/\\(\d+)/g,bx))}var bF=function(bR,e){bR=Array.prototype.slice.call(bR,0);if(e){e.push.apply(e,bR);return e}return bR};try{Array.prototype.slice.call(av.documentElement.childNodes,0)[0].nodeType}catch(bP){bF=function(bU,bT){var bS=0,bR=bT||[];if(bL.call(bU)==="[object Array]"){Array.prototype.push.apply(bR,bU)}else{if(typeof bU.length==="number"){for(var e=bU.length;bS";e.insertBefore(bR,e.firstChild);if(av.getElementById(bS)){bE.find.ID=function(bU,bV,bW){if(typeof bV.getElementById!=="undefined"&&!bW){var bT=bV.getElementById(bU[1]);return bT?bT.id===bU[1]||typeof bT.getAttributeNode!=="undefined"&&bT.getAttributeNode("id").nodeValue===bU[1]?[bT]:L:[]}};bE.filter.ID=function(bV,bT){var bU=typeof bV.getAttributeNode!=="undefined"&&bV.getAttributeNode("id");return bV.nodeType===1&&bU&&bU.nodeValue===bT}}e.removeChild(bR);e=bR=null})();(function(){var e=av.createElement("div");e.appendChild(av.createComment(""));if(e.getElementsByTagName("*").length>0){bE.find.TAG=function(bR,bV){var bU=bV.getElementsByTagName(bR[1]);if(bR[1]==="*"){var bT=[];for(var bS=0;bU[bS];bS++){if(bU[bS].nodeType===1){bT.push(bU[bS])}}bU=bT}return bU}}e.innerHTML="";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){bE.attrHandle.href=function(bR){return bR.getAttribute("href",2)}}e=null})();if(av.querySelectorAll){(function(){var e=by,bT=av.createElement("div"),bS="__sizzle__";bT.innerHTML="

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

    Thank you for your interest in contributing to SatNOGS!

    +

    The main repository lives on Gitlab.

    +
    + + + + diff --git a/doxygen_files/html/md_README.html b/doxygen_files/html/md_README.html new file mode 100644 index 0000000..4702696 --- /dev/null +++ b/doxygen_files/html/md_README.html @@ -0,0 +1,214 @@ + + + + + + + +satnogs-rotator-firmware: SatNOGS Rotator Firmware + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    SatNOGS Rotator Firmware
    +
    +
    +

    Firmware SatNOGS Rotator Controller.

    +

    Repository includes all source files for the SatNOGS rotator controller Firmware.

    +

    Electronics can be found on satnogs-rotator-controller

    +

    Instructions

    +

    In order to use this code, you need to install

    +

    You need to choose the version of the Firmware you will be utilizing based on your controller and rotator setup. Namely we have two different versions (one for DC motors and one for Stepper motors).

    +
    Steps
    +
      +
    • Download arduino IDE (tested with 1.8.5)
    • +
    • Add these lines in /arduino-1.8.5/hardware/arduino/avr/boards.txt
    • +
    +
    ##############################################################
    satnogs.name=SatNOGS
    satnogs.upload.tool=avrdude
    satnogs.upload.protocol=buspirate
    satnogs.upload.maximum_size=32256
    satnogs.upload.maximum_data_size=2048
    satnogs.upload.speed=115200
    satnogs.bootloader.tool=avrdude
    satnogs.bootloader.low_fuses=0xFF
    satnogs.bootloader.high_fuses=0xDE
    satnogs.bootloader.extended_fuses=0xFD
    satnogs.bootloader.unlock_bits=0x3F
    satnogs.bootloader.lock_bits=0x0F
    satnogs.bootloader.file=optiboot/optiboot_atmega328.hex
    satnogs.build.mcu=atmega328p
    satnogs.build.f_cpu=16000000L
    satnogs.build.board=AVR_SATNOGS
    satnogs.build.core=arduino
    satnogs.build.variant=eightanaloginputs
    ##############################################################
    +
    ARDUINO_DIR – Directory where Arduino is installed
    ARDMK_DIR – Directory where you have copied the makefile
    AVR_TOOLS_DIR – Directory where avr tools are installed
    USER_LIB_PATH – Directory where arduino libraries are installed
    AVRDUDE – Directory where avrdude are installed
    AVRDUDE_ARD_BAUDRATE – Serial Baudrate (uncomment to use 57600 for FTDI)
    include – Directory where Arduino.mk are installed
      +
    • Build the code
    • +
    +
    make
      +
    • Upload using ISP
        +
      • Connect arduino or buspirate for ISP programming
          +
        1. Pin 13 (SCK) to Pin 13 of arduino pro mini, ISP connector
        2. +
        3. Pin 12 (MISO) to Pin 12 of arduino pro mini, ISP connector
        4. +
        5. Pin 11 (MOSI) to Pin 11 of arduino pro mini, ISP connector
        6. +
        7. Pin 10 (RESET) to Pin RST of arduino pro mini, ISP connector
        8. +
        9. 5+ (Vcc) to Pin VCC of arduino pro mini, ISP connector
        10. +
        11. Gnd (Gnd) to Pin GND of arduino pro mini, ISP connector
        12. +
        +
      • +
      +
    • +
    • BusPirate
    • +
    +
    satnogs.upload.protocol=buspirate (in board.txt)
    ISP_PROG = buspirate (in Makefile)
    make ispload
      +
    • Arduino
    • +
    +
    satnogs.upload.protocol=arduino (in board.txt)
    ISP_PROG = arduino (in Makefile)
    make ispload
      +
    • Upload using FDTI, but is necessary to uninstall arduino pro-mini from board
    • +
    +

    Connect FTDI

    +
    satnogs.upload.protocol=arduino (in board.txt)
    make upload
      +
    • Burn optiboot
    • +
    +

    Only with ISP programming

    * Arduino as ISP
    +* BusPirate as ISP
    +
    make burn_bootloader

    Easycomm implemantation

    +
      +
    • AZ, Azimuth, number - 1 decimal place [deg]
    • +
    • EL, Elevation, number - 1 decimal place [deg]
    • +
    • SA, Stop azimuth moving
    • +
    • SE, Stop elevation moving
    • +
    • RESET, Move to home position
    • +
    • PARK, Move to park position
    • +
    • IP, Read an input, number
        +
      • Temperature = 0
      • +
      • SW1 = 1
      • +
      • SW2 = 2
      • +
      • Encoder1 = 3
      • +
      • Encoder2 = 4
      • +
      • Load of M1/AZ = 5
      • +
      • Load of M2/EL = 6
      • +
      • Speed of M1/AZ (DPS) = 7
      • +
      • Speed of M2/EL (DPS) = 8
      • +
      +
    • +
    • VE, Request Version
    • +
    • GS, Get status register, number
        +
      • idle = 1
      • +
      • moving = 2
      • +
      • pointing = 4
      • +
      • error = 8
      • +
      +
    • +
    • GE, Get error register, number
        +
      • no_error = 1
      • +
      • sensor_error = 2
      • +
      • homing_error = 4
      • +
      • motor_error = 8
      • +
      • over_temperature = 12
      • +
      • wdt_error = 16
      • +
      +
    • +
    • VL, Velocity Left ,number [mdeg/s]
    • +
    • VR, Velocity Right, number [mdeg/s]
    • +
    • VU, Velocity Up, number [mdeg/s]
    • +
    • VD, Velocity Down, number [mdeg/s]
    • +
    • CR, Read config, register [0-x]
        +
      • Gain P for M1/AZ = 1
      • +
      • Gain I for M1/AZ = 2
      • +
      • Gain D for M1/AZ = 3
      • +
      • Gain P for M2/EL = 4
      • +
      • Gain I for M2/EL = 5
      • +
      • Gain D for M2/EL = 6
      • +
      • Azimuth park position = 7
      • +
      • Elevation park position = 8
      • +
      • Control mode (position = 0, speed = 1) = 9
      • +
      +
    • +
    • CW, Write config, register [0-x]
        +
      • Gain P for M1/AZ = 1
      • +
      • Gain I for M1/AZ = 2
      • +
      • Gain D for M1/AZ = 3
      • +
      • Gain P for M2/EL = 4
      • +
      • Gain I for M2/EL = 5
      • +
      • Gain D for M2/EL = 6
      • +
      • Azimuth park position = 7
      • +
      • Elevation park position = 8
      • +
      • This reg is set from Vx commands control mode (position = 0, speed = 1) = 9
      • +
      +
    • +
    • RB, custom command to reboot controller
    • +
    +

    Controller Configurations

    +
      +
    • Stepper Motor
        +
      • Endstops
      • +
      • Encoders, optional
      • +
      • UART or R485
      • +
      +
    • +
    • DC Motor
        +
      • Endstops
      • +
      • Encoders
      • +
      • UART or RS485
      • +
      +
    • +
    +

    Pins Configuration

    +
    M1IN1 10, Step or PWM1
    M1IN2 9, Direction or PWM2
    M1SF 7, Status flag
    M1FB A1, Load measurment
    M2IN1 11, Step or PWM1
    M2IN2 3, Direction or PWM2
    M2SF 6, Status flag
    M2FB A0, Load measurment
    MOTOR_EN 8, Enable/Disable motors
    SW1 5, Endstop for axis 1
    SW2 4, Endstop for axis 2
    RS485_DIR 2, RS485 Half Duplex direction pin
    SDA_PIN 3, Data I2C pin
    SCL_PIN 4, Clock I2C pin
    PIN12 12, Digital output pin
    PIN13 13, Digital output pin
    A2 A2, Analog input pin
    A3 A3, Analog input pin

    Testing with hamlib - rotctl

    +

    Use commands of rotctl.

    +
    rotctl -m 204 -s 19200 -r /dev/ttyUSB1 -C timeout=200 -vvvvv

    Contribute

    +

    The main repository lives on Gitlab and all Merge Request should happen there.

    +

    License

    +

    © 2014-2017 Libre Space Foundation.

    +

    Licensed under the [GPLv3](LICENSE)

    +
    + + + + diff --git a/doxygen_files/html/menu.js b/doxygen_files/html/menu.js new file mode 100644 index 0000000..89aaf57 --- /dev/null +++ b/doxygen_files/html/menu.js @@ -0,0 +1,50 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { + function makeTree(data,relPath) { + var result=''; + if ('children' in data) { + result+=''; + } + return result; + } + + $('#main-nav').append(makeTree(menudata,relPath)); + $('#main-nav').children(':first').addClass('sm sm-dox').attr('id','main-menu'); + if (searchEnabled) { + if (serverSide) { + $('#main-menu').append('
  • '); + } else { + $('#main-menu').append('
  • '); + } + } + $('#main-menu').smartmenus(); +} +/* @license-end */ diff --git a/doxygen_files/html/menudata.js b/doxygen_files/html/menudata.js new file mode 100644 index 0000000..55593af --- /dev/null +++ b/doxygen_files/html/menudata.js @@ -0,0 +1,113 @@ +/* +@ @licstart The following is the entire license notice for the +JavaScript code in this file. + +Copyright (C) 1997-2017 by Dimitri van Heesch + +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. + +This program is distributed in the hope that it will be useful, +but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + +You should have received a copy of the GNU General Public License along +with this program; if not, write to the Free Software Foundation, Inc., +51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + +@licend The above is the entire license notice +for the JavaScript code in this file +*/ +var menudata={children:[ +{text:"Main Page",url:"index.html"}, +{text:"Classes",url:"annotated.html",children:[ +{text:"Class List",url:"annotated.html"}, +{text:"Class Index",url:"classes.html"}, +{text:"Class Members",url:"functions.html",children:[ +{text:"All",url:"functions.html",children:[ +{text:"_",url:"functions.html#index__"}, +{text:"a",url:"functions.html#index_a"}, +{text:"b",url:"functions.html#index_b"}, +{text:"c",url:"functions.html#index_c"}, +{text:"d",url:"functions.html#index_d"}, +{text:"e",url:"functions.html#index_e"}, +{text:"f",url:"functions.html#index_f"}, +{text:"g",url:"functions.html#index_g"}, +{text:"h",url:"functions.html#index_h"}, +{text:"i",url:"functions.html#index_i"}, +{text:"l",url:"functions.html#index_l"}, +{text:"m",url:"functions.html#index_m"}, +{text:"p",url:"functions.html#index_p"}, +{text:"r",url:"functions.html#index_r"}, +{text:"s",url:"functions.html#index_s"}, +{text:"t",url:"functions.html#index_t"}, +{text:"u",url:"functions.html#index_u"}, +{text:"w",url:"functions.html#index_w"}]}, +{text:"Functions",url:"functions_func.html",children:[ +{text:"a",url:"functions_func.html#index_a"}, +{text:"b",url:"functions_func.html#index_b"}, +{text:"d",url:"functions_func.html#index_d"}, +{text:"e",url:"functions_func.html#index_e"}, +{text:"f",url:"functions_func.html#index_f"}, +{text:"g",url:"functions_func.html#index_g"}, +{text:"i",url:"functions_func.html#index_i"}, +{text:"m",url:"functions_func.html#index_m"}, +{text:"p",url:"functions_func.html#index_p"}, +{text:"r",url:"functions_func.html#index_r"}, +{text:"s",url:"functions_func.html#index_s"}, +{text:"t",url:"functions_func.html#index_t"}, +{text:"w",url:"functions_func.html#index_w"}]}, +{text:"Variables",url:"functions_vars.html",children:[ +{text:"_",url:"functions_vars.html#index__"}, +{text:"c",url:"functions_vars.html#index_c"}, +{text:"d",url:"functions_vars.html#index_d"}, +{text:"f",url:"functions_vars.html#index_f"}, +{text:"h",url:"functions_vars.html#index_h"}, +{text:"i",url:"functions_vars.html#index_i"}, +{text:"l",url:"functions_vars.html#index_l"}, +{text:"p",url:"functions_vars.html#index_p"}, +{text:"r",url:"functions_vars.html#index_r"}, +{text:"s",url:"functions_vars.html#index_s"}, +{text:"u",url:"functions_vars.html#index_u"}]}]}]}, +{text:"Files",url:"files.html",children:[ +{text:"File List",url:"files.html"}, +{text:"File Members",url:"globals.html",children:[ +{text:"All",url:"globals.html",children:[ +{text:"_",url:"globals.html#index__"}, +{text:"a",url:"globals.html#index_a"}, +{text:"b",url:"globals.html#index_b"}, +{text:"c",url:"globals.html#index_c"}, +{text:"d",url:"globals.html#index_d"}, +{text:"e",url:"globals.html#index_e"}, +{text:"h",url:"globals.html#index_h"}, +{text:"i",url:"globals.html#index_i"}, +{text:"l",url:"globals.html#index_l"}, +{text:"m",url:"globals.html#index_m"}, +{text:"n",url:"globals.html#index_n"}, +{text:"o",url:"globals.html#index_o"}, +{text:"p",url:"globals.html#index_p"}, +{text:"r",url:"globals.html#index_r"}, +{text:"s",url:"globals.html#index_s"}, +{text:"t",url:"globals.html#index_t"}, +{text:"w",url:"globals.html#index_w"}]}, +{text:"Functions",url:"globals_func.html"}, +{text:"Variables",url:"globals_vars.html"}, +{text:"Enumerations",url:"globals_enum.html"}, +{text:"Enumerator",url:"globals_eval.html"}, +{text:"Macros",url:"globals_defs.html",children:[ +{text:"a",url:"globals_defs.html#index_a"}, +{text:"b",url:"globals_defs.html#index_b"}, +{text:"c",url:"globals_defs.html#index_c"}, +{text:"d",url:"globals_defs.html#index_d"}, +{text:"e",url:"globals_defs.html#index_e"}, +{text:"h",url:"globals_defs.html#index_h"}, +{text:"i",url:"globals_defs.html#index_i"}, +{text:"m",url:"globals_defs.html#index_m"}, +{text:"o",url:"globals_defs.html#index_o"}, +{text:"p",url:"globals_defs.html#index_p"}, +{text:"r",url:"globals_defs.html#index_r"}, +{text:"s",url:"globals_defs.html#index_s"}, +{text:"t",url:"globals_defs.html#index_t"}]}]}]}]} diff --git a/doxygen_files/html/motor_8h.html b/doxygen_files/html/motor_8h.html new file mode 100644 index 0000000..71f3ec4 --- /dev/null +++ b/doxygen_files/html/motor_8h.html @@ -0,0 +1,104 @@ + + + + + + + +satnogs-rotator-firmware: libraries/motor.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    motor.h File Reference
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  motor
     Class that functions for interacting with a Motor Driver Carrier. More...
     
    +

    Detailed Description

    +

    It is a driver for DC motor driver like Pololu Dual MC33926 Motor Driver Carrier.

    +

    Licensed under the GPLv3

    + +

    Definition in file motor.h.

    +
    + + + + diff --git a/doxygen_files/html/motor_8h__dep__incl.map b/doxygen_files/html/motor_8h__dep__incl.map new file mode 100644 index 0000000..ef3fe02 --- /dev/null +++ b/doxygen_files/html/motor_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/motor_8h__dep__incl.md5 b/doxygen_files/html/motor_8h__dep__incl.md5 new file mode 100644 index 0000000..244dbf8 --- /dev/null +++ b/doxygen_files/html/motor_8h__dep__incl.md5 @@ -0,0 +1 @@ +76cdb0db219379a881161f9144233881 \ No newline at end of file diff --git a/doxygen_files/html/motor_8h__dep__incl.png b/doxygen_files/html/motor_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..f28400bdd835df3344fb02d49f2b6d2929578f38 GIT binary patch literal 4031 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 + + + + + + +satnogs-rotator-firmware: libraries/motor.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    motor.h
    +
    +
    +Go to the documentation of this file.
    1 
    11 #ifndef MOTOR_H_
    12 #define MOTOR_H_
    13 
    14 /**************************************************************************/
    34 /**************************************************************************/
    35 class motor {
    36 
    37 public:
    38  motor(uint8_t pwm_pin1, uint8_t pwm_pin2, uint8_t fb_pin, uint8_t en_pin,
    39  uint8_t sf_pin, uint16_t maxSpeed, uint16_t minSpeed) {
    40  _pwm_pin1 = pwm_pin1;
    41  _pwm_pin2 = pwm_pin2;
    42  _maxSpeed = maxSpeed;
    43  _minSpeed = minSpeed;
    44  _fb_pin = fb_pin;
    45  _en_pin = en_pin;
    46  _sf_pin = sf_pin;
    47  stop();
    48  }
    49 
    50  /**************************************************************************/
    54  /**************************************************************************/
    55  void init_pin() {
    56  pinMode(_pwm_pin1, OUTPUT);
    57  pinMode(_pwm_pin2, OUTPUT);
    58  /* Feedback and sense */
    59  pinMode(_fb_pin, INPUT);
    60  pinMode(_sf_pin,INPUT);
    61  /* Enable Motors */
    62  pinMode(_en_pin, OUTPUT);
    63  }
    64 
    65  /**************************************************************************/
    94  /**************************************************************************/
    95  void init_timer(uint8_t timer, uint16_t divisor) {
    96  if (timer == 0) {
    97  if (divisor == 1) {
    98  TCCR0B = (TCCR0B & B11111000) | B00000001;
    99  } else if (divisor == 8) {
    100  TCCR0B = (TCCR0B & B11111000) | B00000010;
    101  } else if (divisor == 64) {
    102  TCCR0B = (TCCR0B & B11111000) | B00000011;
    103  } else if (divisor == 256) {
    104  TCCR0B = (TCCR0B & B11111000) | B00000100;
    105  } else if (divisor == 1024) {
    106  TCCR0B = (TCCR0B & B11111000) | B00000101;
    107  }
    108  }
    109  if (timer == 1) {
    110  if (divisor == 1) {
    111  TCCR1B = (TCCR1B & B11111000) | B00000001;
    112  } else if (divisor == 8) {
    113  TCCR1B = (TCCR1B & B11111000) | B00000010;
    114  } else if (divisor == 64) {
    115  TCCR1B = (TCCR1B & B11111000) | B00000011;
    116  } else if (divisor == 256) {
    117  TCCR1B = (TCCR1B & B11111000) | B00000100;
    118  } else if (divisor == 1024) {
    119  TCCR1B = (TCCR1B & B11111000) | B00000101;
    120  }
    121  }
    122  if (timer == 2) {
    123  if (divisor == 1) {
    124  TCCR2B = (TCCR2B & B11111000) | B00000001;
    125  } else if (divisor == 8) {
    126  TCCR2B = (TCCR2B & B11111000) | B00000010;
    127  } else if (divisor == 32){
    128  TCCR2B = (TCCR2B & B11111000) | B00000011;
    129  } else if (divisor == 64) {
    130  TCCR2B = (TCCR2B & B11111000) | B00000100;
    131  } else if (divisor == 128) {
    132  TCCR2B = (TCCR2B & B11111000) | B00000101;
    133  } else if (divisor == 256) {
    134  TCCR2B = (TCCR2B & B11111000) | B00000110;
    135  } else if (divisor == 1024) {
    136  TCCR2B = (TCCR2B & B11111000) | B00000111;
    137  }
    138  }
    139  }
    140 
    141  /**************************************************************************/
    145  /**************************************************************************/
    146  void enable() {
    147  digitalWrite(_en_pin, HIGH);
    148  }
    149 
    150  /**************************************************************************/
    154  /**************************************************************************/
    155  void disenable() {
    156  digitalWrite(_en_pin, LOW);
    157  }
    158 
    159  /**************************************************************************/
    164  /**************************************************************************/
    165  uint16_t get_load() {
    166  return analogRead(_fb_pin);
    167  }
    168 
    169  /**************************************************************************/
    175  /**************************************************************************/
    176  uint8_t get_fault()
    177  {
    178  return digitalRead(_sf_pin);
    179  }
    180 
    181  /**************************************************************************/
    187  /**************************************************************************/
    188  void move(int16_t speed) {
    189  if (speed == 0) {
    190  stop();
    191  return;
    192  }
    193  if (speed >= 0) {
    194  speed = speed + _minSpeed;
    195  if (speed > _maxSpeed)
    196  speed = _maxSpeed;
    197  analogWrite(_pwm_pin1, 0);
    198  analogWrite(_pwm_pin2, speed);
    199  } else {
    200  speed = -speed;
    201  speed = speed + _minSpeed;
    202  if (speed > _maxSpeed)
    203  speed = _maxSpeed;
    204  analogWrite(_pwm_pin1, speed);
    205  analogWrite(_pwm_pin2, 0);
    206  }
    207  }
    208 
    209  /**************************************************************************/
    213  /**************************************************************************/
    214  void stop() {
    215  analogWrite(_pwm_pin1, 0);
    216  analogWrite(_pwm_pin2, 0);
    217  }
    218 
    219  /**************************************************************************/
    225  /**************************************************************************/
    226  void set_min(uint16_t min) {
    227  _minSpeed = min;
    228  }
    229 
    230  /**************************************************************************/
    236  /**************************************************************************/
    237  void set_max(uint16_t max) {
    238  _maxSpeed = max;
    239  }
    240 
    241 private:
    244 };
    245 
    246 #endif /* MOTOR_H_ */
    motor(uint8_t pwm_pin1, uint8_t pwm_pin2, uint8_t fb_pin, uint8_t en_pin, uint8_t sf_pin, uint16_t maxSpeed, uint16_t minSpeed)
    Definition: motor.h:38
    +
    uint16_t get_load()
    Calculate the load of DC motor.
    Definition: motor.h:165
    +
    int16_t _maxSpeed
    Definition: motor.h:243
    +
    void enable()
    Enable motor driver.
    Definition: motor.h:146
    +
    Definition: globals.h:26
    +
    uint8_t _sf_pin
    Definition: motor.h:242
    +
    void set_max(uint16_t max)
    Update the maximum speed of DC motor.
    Definition: motor.h:237
    +
    uint8_t _pwm_pin2
    Definition: motor.h:242
    +
    uint8_t _pwm_pin1
    Definition: motor.h:242
    +
    uint8_t _fb_pin
    Definition: motor.h:242
    +
    int16_t _minSpeed
    Definition: motor.h:243
    +
    void stop()
    Stop moving the DC motor.
    Definition: motor.h:214
    +
    void init_timer(uint8_t timer, uint16_t divisor)
    Set timer frequency, for timers 0, 1, 2.
    Definition: motor.h:95
    +
    void init_pin()
    Initialize pins of DC motor driver.
    Definition: motor.h:55
    +
    uint8_t _en_pin
    Definition: motor.h:242
    +
    void disenable()
    Disable motor driver.
    Definition: motor.h:155
    +
    Class that functions for interacting with a Motor Driver Carrier.
    Definition: motor.h:35
    +
    uint8_t get_fault()
    Get the status flag of motor driver.
    Definition: motor.h:176
    +
    void move(int16_t speed)
    Move the DC motor with constant voltage (~speed)
    Definition: motor.h:188
    +
    void set_min(uint16_t min)
    Update the minimum speed of DC motor.
    Definition: motor.h:226
    +
    + + + + diff --git a/doxygen_files/html/nav_f.png b/doxygen_files/html/nav_f.png new file mode 100644 index 0000000000000000000000000000000000000000..72a58a529ed3a9ed6aa0c51a79cf207e026deee2 GIT binary patch literal 153 zcmeAS@N?(olHy`uVBq!ia0vp^j6iI`!2~2XGqLUlQVE_ejv*C{Z|{2ZH7M}7UYxc) zn!W8uqtnIQ>_z8U literal 0 HcmV?d00001 diff --git a/doxygen_files/html/nav_g.png b/doxygen_files/html/nav_g.png new file mode 100644 index 0000000000000000000000000000000000000000..2093a237a94f6c83e19ec6e5fd42f7ddabdafa81 GIT binary patch literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^j6lrB!3HFm1ilyoDK$?Q$B+ufw|5PB85lU25BhtE tr?otc=hd~V+ws&_A@j8Fiv!KF$B+ufw|5=67#uj90@pIL wZ=Q8~_Ju`#59=RjDrmm`tMD@M=!-l18IR?&vFVdQ&MBb@0HFXL + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/new.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    new.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/new_8cpp_8d_source.html b/doxygen_files/html/new_8cpp_8d_source.html new file mode 100644 index 0000000..398b03a --- /dev/null +++ b/doxygen_files/html/new_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/new.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    new.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/new.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/new.cpp
    + + + + diff --git a/doxygen_files/html/open.png b/doxygen_files/html/open.png new file mode 100644 index 0000000000000000000000000000000000000000..30f75c7efe2dd0c9e956e35b69777a02751f048b GIT binary patch literal 123 zcmeAS@N?(olHy`uVBq!ia0vp^oFL4>1|%O$WD@{VPM$7~Ar*{o?;hlAFyLXmaDC0y znK1_#cQqJWPES%4Uujug^TE?jMft$}Eq^WaR~)%f)vSNs&gek&x%A9X9sM + + + + + + +satnogs-rotator-firmware: Related Pages + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + +
    + +
    +
    + + +
    + +
    + +
    +
    +
    Related Pages
    +
    +
    +
    Here is a list of all related documentation pages:
    +
    + + + + diff --git a/doxygen_files/html/rotator__pins_8h.html b/doxygen_files/html/rotator__pins_8h.html new file mode 100644 index 0000000..31896be --- /dev/null +++ b/doxygen_files/html/rotator__pins_8h.html @@ -0,0 +1,485 @@ + + + + + + + +satnogs-rotator-firmware: libraries/rotator_pins.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    rotator_pins.h File Reference
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

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

    +Macros

    #define M1IN1   10
     Motor 1 PWM pin. More...
     
    #define M1IN2   9
     Motor 1 PWM pin. More...
     
    #define M1SF   7
     Motor 1 digital input, status flag. More...
     
    #define M1FB   A1
     Motor 1 analog input, current/load feedback. More...
     
    #define M2IN1   11
     Motor 2 PWM pin. More...
     
    #define M2IN2   3
     Motor 2 PWM pin. More...
     
    #define M2SF   6
     Motor 2 digital input, status flag. More...
     
    #define M2FB   A0
     Motor 2 analog input, current/load feedback. More...
     
    #define MOTOR_EN   8
     Digital output, to enable the motors. More...
     
    #define SW1   5
     Digital input, to read the status of end-stop for motor 1. More...
     
    #define SW2   4
     Digital input, to read the status of end-stop for motor 2. More...
     
    #define RS485_DIR   2
     Digital output, to set the direction of RS485 communication. More...
     
    #define SDA_PIN   3
     I2C data pin. More...
     
    #define SCL_PIN   4
     I2C clock pin. More...
     
    #define PIN12   12
     General purpose I/O pin. More...
     
    #define PIN13   13
     General purpose I/O pin. More...
     
    #define A2   A2
     General purpose I/O & analog pin. More...
     
    #define A3   A3
     General purpose I/O & analog pin. More...
     
    +

    Detailed Description

    +

    It is a header file for pin mapping.

    +

    Licensed under the GPLv3

    + +

    Definition in file rotator_pins.h.

    +

    Macro Definition Documentation

    + +

    ◆ A2

    + +
    +
    + + + + +
    #define A2   A2
    +
    + +

    General purpose I/O & analog pin.

    + +

    Definition at line 35 of file rotator_pins.h.

    + +
    +
    + +

    ◆ A3

    + +
    +
    + + + + +
    #define A3   A3
    +
    + +

    General purpose I/O & analog pin.

    + +

    Definition at line 36 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M1FB

    + +
    +
    + + + + +
    #define M1FB   A1
    +
    + +

    Motor 1 analog input, current/load feedback.

    + +

    Definition at line 16 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M1IN1

    + +
    +
    + + + + +
    #define M1IN1   10
    +
    + +

    Motor 1 PWM pin.

    + +

    Definition at line 13 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M1IN2

    + +
    +
    + + + + +
    #define M1IN2   9
    +
    + +

    Motor 1 PWM pin.

    + +

    Definition at line 14 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M1SF

    + +
    +
    + + + + +
    #define M1SF   7
    +
    + +

    Motor 1 digital input, status flag.

    + +

    Definition at line 15 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M2FB

    + +
    +
    + + + + +
    #define M2FB   A0
    +
    + +

    Motor 2 analog input, current/load feedback.

    + +

    Definition at line 21 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M2IN1

    + +
    +
    + + + + +
    #define M2IN1   11
    +
    + +

    Motor 2 PWM pin.

    + +

    Definition at line 18 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M2IN2

    + +
    +
    + + + + +
    #define M2IN2   3
    +
    + +

    Motor 2 PWM pin.

    + +

    Definition at line 19 of file rotator_pins.h.

    + +
    +
    + +

    ◆ M2SF

    + +
    +
    + + + + +
    #define M2SF   6
    +
    + +

    Motor 2 digital input, status flag.

    + +

    Definition at line 20 of file rotator_pins.h.

    + +
    +
    + +

    ◆ MOTOR_EN

    + +
    +
    + + + + +
    #define MOTOR_EN   8
    +
    + +

    Digital output, to enable the motors.

    + +

    Definition at line 23 of file rotator_pins.h.

    + +

    Referenced by ISR(), and setup().

    + +
    +
    + +

    ◆ PIN12

    + +
    +
    + + + + +
    #define PIN12   12
    +
    + +

    General purpose I/O pin.

    + +

    Definition at line 33 of file rotator_pins.h.

    + +
    +
    + +

    ◆ PIN13

    + +
    +
    + + + + +
    #define PIN13   13
    +
    + +

    General purpose I/O pin.

    + +

    Definition at line 34 of file rotator_pins.h.

    + +
    +
    + +

    ◆ RS485_DIR

    + +
    +
    + + + + +
    #define RS485_DIR   2
    +
    + +

    Digital output, to set the direction of RS485 communication.

    + +

    Definition at line 28 of file rotator_pins.h.

    + +
    +
    + +

    ◆ SCL_PIN

    + +
    +
    + + + + +
    #define SCL_PIN   4
    +
    + +

    I2C clock pin.

    + +

    Definition at line 31 of file rotator_pins.h.

    + +
    +
    + +

    ◆ SDA_PIN

    + +
    +
    + + + + +
    #define SDA_PIN   3
    +
    + +

    I2C data pin.

    + +

    Definition at line 30 of file rotator_pins.h.

    + +
    +
    + +

    ◆ SW1

    + +
    +
    + + + + +
    #define SW1   5
    +
    + +

    Digital input, to read the status of end-stop for motor 1.

    + +

    Definition at line 25 of file rotator_pins.h.

    + +
    +
    + +

    ◆ SW2

    + +
    +
    + + + + +
    #define SW2   4
    +
    + +

    Digital input, to read the status of end-stop for motor 2.

    + +

    Definition at line 26 of file rotator_pins.h.

    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/rotator__pins_8h__dep__incl.map b/doxygen_files/html/rotator__pins_8h__dep__incl.map new file mode 100644 index 0000000..da125ba --- /dev/null +++ b/doxygen_files/html/rotator__pins_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/rotator__pins_8h__dep__incl.md5 b/doxygen_files/html/rotator__pins_8h__dep__incl.md5 new file mode 100644 index 0000000..7600534 --- /dev/null +++ b/doxygen_files/html/rotator__pins_8h__dep__incl.md5 @@ -0,0 +1 @@ +492126fcb1634ded408b2a04e5f8dc22 \ No newline at end of file diff --git a/doxygen_files/html/rotator__pins_8h__dep__incl.png b/doxygen_files/html/rotator__pins_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..d4f5bd10c57f47f0e897aaff95a9a50a9997b26e GIT binary patch literal 26428 zcmZU51yoj9`|nE#DBTT82-1k4(kUg zfnlmBD~-5D{*~48DFK1FjgXg?(C|v%p7+#I*QUqZ-&3Nfl0nz4k|sGRLL-%xK_ToG zaat)rBayW)t=8iV*VC49&YrkGheqlt;XKLt)=oNqJ9V`=K*h@<=x)Q!$C+yfFYcWD z{Hv66_UnVs?qi%g!GSrf;WWbn$&tF@EfdQvJs^4ugnM5mH+u4KG4jf zlXaZk_ zg^%C6*LEGf5O7VKoSZz>@)ZB?)Fz`#eM+_p92n-Ws>$} zyHAF@yKiV|X?Y!Ol79K}Wh76YxW1twTmQ3zyEiR+ctk`{Q@2mfD1F*P#~yfd<;%a8B}Oe&H*el_a&dWG zT58|$bX=r-^H{gZ!@hP$BV|W_Att=cs3qKeYocRpj0CoLs@|FLS*EDrr^(8)UbagH zN!6;?9%u@;Wo2dEHpg!E_xHc!F+r`VttF(PF*vSINFbi6v)A7UO72|BvKUCFceeb9dLDqIgrd5^x*?tVp0;X=dJ-06Vq)rwp#{V@)8bbiuLBmL}Y#Zc!QRfmcyW)0H01+Tu)E0v|Ltc zcuUdU{!{*B4qI&tJ!ur32vw>6=a8Hnh7f%E=*UQ%ypJEp{|Qd4>5wqnuBRrUkN)^k zeCVp6pfEiwC@A=guFdaU;OgHNcUO0Jc2*Vw(cf5DG`pr478Zt35T#)Mcep`ZQc_Z3 zGtRa>`x!qqHP!li&JEb*H?Z3X1f8hw+vA;CDP7%${^R(BgpOY>*~P{B$3kdmXb9#v zYKn@*{RZwYjf{(Ih4@>@Gz)hw3)TntxMXBx5aK2#cW`iUY zehouFbDf_JaAm=VuS^;TbT_(hjeJxjXT5iCX{=Da9!|8uY;4RvuecaH#Kh@%TeqON zSi2!ADTx%8Dvs50v^BZ3xf%ZBld=?q5nO|yq$JJSosISNz~ME<$B!FIRNw#*;?wBu zq{A+of125L)l)odd^n5LX3tgW`CFn%WHe*o#Iydc4X>R2UHdvP5L8~yt)`|n@<}<9 z?K39_2l^d!Ha51{l$2fww8gzWO z=|$daNl8>MVLEhFl<@HI+XPtcYkv>+m!u9MAI_|7ZEQd$!JDcy!yFwQjZIIFG;H$7 zmW`pauo6;w|3JdroaxlpKOz8 ztfwkW;ALFYeswQ?OpFo1&tkI<3Bs zMFXyI)Ya9WzJGA@&!0c*V}-;F3=I1#F=7n-{G=fvAv)ETxQU60`;bE<_4S(!CiOKZ zN_2xne2$<09!z~sfwACsLi>9-)A;x__$G0M#Q+&HVUdxML8fsm9WE~Nv$0*X9b3CB zkXI^alu_k3!@3i^Loga?LQ$ey{lqc_YZ_7#2?@#K^70oCk~k-4=Z<>kmFH$=ogRth zbsjr<*0#2j=aFeSOmD?@F!EaaF3(SFw^8$0!-+6vaOM0G%zC3MX_t!q{vF;VzWcP` zPvsq{kmuduq^8fLRW;n94w)yHm2o-DH)^g3{QUXTR6$BrL&^H#?f<__(Q#@)6-(^O z?S>i_9`EHA_=doD=XKENv)c$YwNn-K6>;4L2X%^HzX+L_NOCO{-#FR`Jx+~zjfxT( zx!Shz2v^4Bj)V;x{hK#Qj%iQj76VNZotD0|@ox`HHF;oI&+C=X*t3Q!9p*1OGU+Sw z^Tei1!sWk1LK>Bo^*k^q$1CqsCZ@`{G2@LJBGxv7x7oMoSJ&Fk>zE>G-t(tLefgqe zZZVIVnR%|%Ym23!*(9Y@N*-8#E<{OELt;Nmh4qj`=4PmvNcF!bxGfW*p#hR|UwzOq zQ!e_3xB{Dn$-BFKt!;~!CQ28+=Y=Vh_8uJhy|oy)XkR%v*c>-}m-=F|QQ6+WQ2F+4 zaTKNZH68s)c<%&j@gLFX{`;dcU8=vwV>P4-hxDqKchcwDZ}tD|=_udngNxKcU_)v-rfnslRjSN`6Zs#roj-fR22&{Y#f zKzEg+uW;S-YfaAA2UgNKR5>eaxnKog36FXrmh0NuR6_%Hi^hdXUJH6A~H z^G@i5)nUOOQxb~;V|{K~&f4&k-@lsR{QUc(0YgFJ;`_(;3?VoNT{SQKDox*rXlPov zPUE7XDH$}^V-2L7-?_c$TxxX z+_UJ2t4n>e-MK4%IzB-`(z?12^*#@2P*KhtjUT)1Ik45t8E|1T%6bIBVIbO9Zr&y! zI6Xzr)h>^!_c~}8nTZz&4|h3Ti3vNsJmFn*d2C_TOUjFb#>ZzrSARf8N%_+BnY^ky zG%`0}FLd-awa;H^g%AA7k|(yMh{PNsvC2VS{#zm&Q{#{HoZ5lS`L&T%U z?h?+*|b!rp4zvM8wBIV{<5xbiOHV>EDrs_3T8} zC^?a+ao|Tq`-A1~^8I~^h=-1%rc)KP>ywUr%`JNj4?o9#93#=B^W2%KwVlS3s8rV1 z$Gvf*+w0;{e!ndZ#0nj zYoGH-T`9_4beeGpi}b=Vph*Vunl)<9l-X*VZBHTlfa`G0VjAZ?BXkVB!}k3pAwm+S zw1@5L+qvBeJ*4D+mo{GBSn0hEn<#a6ULP5BiE(Y9v3^nb{KR36tz5mk`(tO1B|Du+ zcv)pyRHwi;AN5PZq?U|1oEeGmpKy(tFZ=_Sb>u z{^;u0ui^7t7;{qX1F zq_M2&&I}=szy#`@_Ri3_+rfbYzuJc#>7G7)uk{kg{piWagqD=GHF|i&*|-PFEp+q< zGTe~t?0mToiV_mMuY)?-YlnZie6RW_FqG~L&2*LD^>~V#J3r40HRT5mB?en{IGycd z8q_O2?!Aj0JNv)C$$ELAFaP;P4jq+vv6lD!06qa`ml|pnGD1nGi&MX;S;x?v9GWsC zLsYA^Yi^~zO+l>RzXcJ2?pq;~k6y=^P(;#9lj75tb)-K=YyWjWHlg@pG8}fQwIzE$ zb1>jZbyH|uRQXS7LFQ593cZJ8-SF*zEfWU56fKKUsLGo+}TwWhfK65Mb=fC<*+y%=Z zF-%O5jeJ*?b=p6_ZbZMnwx6AArnDU1Wf}aW7F|@tASubPf3RZ3gM&$fSK%;^^}seC zPkFeQf+wr?DP9RdQohpobE`>|XU`1dl9Pj4d>og`+a$9~N?^pYX~TV;v$=tr;UFJk z&~}9pL7o}h*hqAB;d)=tt>Em#r+8hK&7Uod1O!vl_EOcBR28-Mp+{T8jNIi|!32@? z3uyXvk(U#nRC3#{{SlrgZQ0q`!9kc-?fv~U!XFUCcQ3-;y?cO;(I};;SbL17dX$`) z_{OlQY-Os_hlgjRtIEQILbRE0hb}L;JJbI%4n;;r*lx~?@JIejv-ZG=dJlW~(l@sX zt|R}jD2FWX%*N<6jG_>;9Cuxwv-5hpJtUAEX{dJED=+FF$)^2YTg;0*Om=ox1oKHO z?IRvqxLslwi|XZlhJ}r`6HjTW1tO)L_J`Mh&Xbgtu{<}cCiUD4sicjvxxJpMiFUFi zb>IKA1M~a$!l{}U51vF732W$5xVU0}|1|7a@p;vR) z-`4a`<8GKf!hf1-`UVnDgm7pHHvV;R6g4*k>pH)k-Hhpxjcko|cBco2g7)F;OlS+8G+;{CiL`TlrF2GisQ85h7!0 ziBLy?xc_UM;dHc&Jb8d#3DvvLj>NoHLxjFp>7j;Ace4YoCm0-Em%b2t9kSl?+$#%w z{o1@-uyYNY$Gzy`moK7sct&WI(ne9pm*bO?VmS577QeSR$tE(6uyD7YaLVn5TSxq{(#*4LYK63qi)BnukT^Bi9mbuQ=?)(s>LDS!ZQc0F} zpQL3C4R5wxZ3erp8N?;1BdF6#_Ya#D7SM{GAwOP4=W8c-TY8Uiz#G$^$X1<}8P&Xb ze`6|sn}=S)C_^6%S!-lSyO(xm<59?w$t(ny(RSe#5u2zn!f~%@e;+G2HC4c4JBwXd zoj=D)Yjn3W)Ev@8=dS^7r^5nl|I2ZCyEmKAUd**!qZDi5CKO5DKqM#sn`&?+!lTFQ z=}XAA>y3L1Vdwh$u=i+7F*_#*%jbM&s`2QS$Ush!%y3EGR4SixrEdeh-sg$VRzLOU z&u{;{_a+2)7DY*k^z?L)$hPUr;jAOM^I|(~x@e0E$H{BeBuH4x(ySAuLZM`wZWW$; z=Fpl|(?-N|91bc_9eAOZ82MpflhO3%$%{DuJ4CG{FS4C9TH5%bQ{SXbSHz{HRYDQo z>c`1r)+52hY*9rkdl%A{)tXVgvl->;uLg<-*4U7rs^Ez{@WlSSPiv;T2J}!O!xjSQ zBPz|>h~TUyd>Z`Z-iCjF$$O`!jfO;gvI7Y1$P*C~_s zj~=-NhxR@yD1K-vMAj|pZON=;)ciK6w3KCe<%jcGl@R-zTL>-#ujtQ?V&UfF#sb#X ztew49WM4YPOpZ4BU>9Hf`D0L`_v>xj)%ze!dzdE+>uV_?m3w^Suk^3O4VJf&Pdk>oaaT$< z6{SLIg3{7(waSFwz=Ecu8UNPQXgDu-(LDWNcLS1NrS}n~AYmm=?qms*PT!1rD9m#A zJ$76|qLlQt{*sXY{a(IcdAMl-+1a_ol92RO;PZcnL0(tFWZGpMugbU#(G-c&g-&pG zcLQ>*l=-%2AClVG9112!X2S!=tF0<4YUiW3w^0pRw}-s5Q4wNoq0q2J%0$>rMKj!o zwnxP0ZmzQ#>EL^J3P_}NjH-wb{JltQ@;L&s4_HF+1_D-`9UPYLWqd@3G5+(B$lv9`C=%2w8>aO+5SQ54R?3uIx`dmm$Cn=si_BH znVN<=dNr(+PR^TSW;7yHUp#0w#s2+^ay~9$7j)z4f{L)Q9DP5SjQwU@nm!hJO6OGV z7Dk;tH9me!Wo$x1`e&=_t69jx2zB-2;Xhp#`->hr&0bhq<)T67Ct?+}q5oo_7)H}L zzY3C)efq%{LC$qC;K8JT!xZq|j&lFN3?pAz>}_!H@S~S5T;4}E9UgfuuY(p=Ae|f3 zFLrs5RJwZ7NAB+{BZq@B1Lx2WMrN>utf~4=vvmg}BPw5-U-rgAK9f)IuB441y3=>I z$(4&7a27lCC9pciixrv5R8ZP81AYc4B|UER;I|YCpW?*{vY+kAl_w^Bnz0%6`n4%M z^4f#~!*(({5Mn8r`=qzh>|`ohI*fo*ivu7t%ATlmViE6mOWV5ImBV}5mydUN zQX8~1Nl8g%XapaiRaS23w5H?L$39R@nOROT4l(HtN9a{h@yy_UC4xkz({#*{ue=xG zzV#%qGj5Ps;CQzsOsmw5*C~s6R#nHsrU;k2yb#%$!8Bm@`>8D~${1M|zJBBE3MWNb zbfTDHoZ6wIPD z!jEW!Fh83KsYM;{G(|zH!ec5;UY9Eu`3AcUu#}tcM9#5L(a1Z$%0=wRjgcc0S#vW( zed7o5ANfTURXN72RJXjpDLjpjui|l8br24qiwF!nBQh?is>XKuW6o;%ZBsU7@D#O^ zXaA4}-_X!~F#RRP*_jM1kWJ^a19}MVR`A9T{N-kx?~eW==4a{eIyXn@jt&+jn0~e@btT@@ zvXhOo_B+>G{FE7D+8Kgf@4iKgT+@RGiO$OgZrk~9((Rl52SOzl#aG(`JF6;CUj@R{-5d5+g z1=fQccN`o7Ooq}?rds`8OMg4iP8%E)h8e1TweL_gsSyBB;mF7u9@pO{tG~XZkjLjc z8e^B}n8e^x4>2+^z212=rXBx5S@j;kb0N6o6_($0k*Pk3opvf(!_jJ36s?noLNM`X zu9|ifRbS_?@wW2t<{0D29>P|Z|?A!A`2|JH8Zs2r2-V&77DfoU1ap*X`hAS-&gK)>VI{~uTpX?<}MN5sNNv)slYYz;t ze;F&p+~1vNIsJD9&HLeW^r2EoiNKeit!U6N>15Q=^I77cqM}NtEBxb$qU2xv_f?gJJ1Nx&|V|aAFCmb#3}i_LYIq=R>HNxef@0hdGbbYqm+U& z7lZ*!sHELUYxd6wTwm9in)NK0^apgWYq>i@CQ)HV$x0}2km8|(LB{8#gq8Lmt~Aim zE}b5nANot)lZY7ChMu&yE6nI^jB;q(wXlxPdKEnF21aXeSs8|)XW4>=3ZRJY{{$3O zb2Ktd|IN-ww|S3~6Cje^Cu(YBLm%Aj36PD0p?7q) zl+fr$an{sINHb7}D{aOp>vC1x#UnID^771KL~em4$cnf7!USR=6t5yJ^YJ#vHu3iM zOf~JBoUVLT#+PDeRyi~6swD)B)(C%)rFCU4)$z0O>anz*l0o7-JP_Tt53 z3b89?L?E02Omagm3`+`62iqga4@%roCbXKV^qLY^UwoIu92#n=c=^|2b(N$F7JY)wpFouBMsAH7TT0_aS_ z#Do`*CX26Hkxj3pC@#Y=@L=WS4(#`*XWv4zv+vHvNiX*&rJP=!3%G6kb0i@n3jq@0 zaQ%DG4(piq$f#QP_Vi^XP)IPZBDVsSQ%m#fFgL{MPh@A(c728NH`5s2byWjyJY5%*5m}dcBIwsY{^4P8cJ`eI z4<7LN9NS@`zjmDY#Aae*Lh;Dy_SpFN_aaSpgC>vCo*kKv?vM0XcOJPg>1^ApyNegN z{P`R4b^Uvje3M68Y(<51-OAgs@nY_<)+^Ka`1niB^B6jj_mOlWjYj9lU8i~Elr@tn zdPmcG6|ix|N6<6~n9zN{Sd)28*V!~sD;QsCR;6{V)F!`uO<3s>Dsr%=!XR(B8JR_%%%Sb#(;``(L~>x3Wsu`0zd!FydwmDVF$b0`j1JGQz8yXtSJ40}#Wo1KQn{7@C zu@DDGN2Py{$ERyH7+(CaWbW&`clz5*Rq~f?#5j3)xL4QobVQBK5%J3dhUlF~44++o z-7__-{#ATJu2~6$XJ-G7*^3wQ&CSjIbPE+GQc?C7fESw2)jR)+)^*P0o{fr#U_{6P zfj7P4E1C(^QUW=*QS8^RaydCUl19y5sun&Q8ynKPx~b+C7UReeo0yomIQtt`UCjqy z4@_Rp$B#14G6ZF??l9fG8-lpKx6oEzvk;0;kA)y2CDlA`O5rvpLaeUz##og9sI#B# zr)zWHA~T@~SzTRCymT1NlQ#$2!a^+In<%OK_Eemgw|DYo`iBqC5V5DHr?3ZdI^Ap{ zBBAfnuH~SKI{Ma|6WkAc)m3OOaeMbK9)S2lG8gcz7k$T4`*4t4MTj~3v>fuf{T zzmhhWh>x#YL9Dm8H|5gKT*F_1H6S3sZDaICQBe_aISvjEzv{|uGP!}MLqPyb*Up0j z*D_^5MoWtb(cJ+?;8gPH}{4SSAWlza;;+woBO1k3Yj;gmR~3rVXOA`$Qoj*Vljc zexF>uG1d>pt^T&8Vkp_&x2$WyG92E z*>j+x(wPl^=v$u|58ioX>b&-hf`s%JlgmUnJbGy;L+IPvO@#*O3>OJ?28kSC;JOQDCQ+p&O z-~REAzPY6(w6bWxV=xR34nDWHj{@qH5eRH&XJ?Q@yn!5ac-Yls8W<6Qje$$WG$F9n z3HZ5yfW7nSzL=eCcI)lG-J9#*36Mi6z>M9ocebO#i9a`acJ9x6T3V0Eeb`}58vGza z4O<@!ssW_9Krw|YY0Ktcd|22`VPRn&lP~CSV>{>PX&GgsOFYwn+_au=Q z*LM>R9}NSCb*rD<{o>TQ#&Lm8Dg@_MYAWRi;g_#b&@d3Jx_k1PnxwRXZsL<=h9=LS zBk1Wfz1y^^VBi<^+P_W2ZQL{2%F9f4zvXm!ytsUE*#(Neb<7RyRx6?CDI~1*gA-gC_~ki0kLRxHBcYS{LV&CQNMU&VSf8O>TRsh&oGZ~C zB^>PzIy~%Ed^{1*`OI}57Py@}@9uZsS{o9PF)|{Yb!Po){cy3#GYn8`0t}prt`OX# zz5DSVp1Z+P>gqRkX811%V{*vo=enqo1X!T4vwo-G&B4Bf{j%Qs zh;&w!_3NTSM_3poasoxtdyWevP7PJsI}?$-8M&?Kae0NCjK*7fWPf}O}?%4epk^*ObDYCWZl%i$JXC5Q6~cZXom+$ zDhqM<=4zh`NL28JJf4bwdN!`y#E4BN7X1XKD>r$9oADn$=>OVVSssl`QzS<-pN+k< zb8z_L0Sq_O(F{MRE@aY1M(}ki8DNr`{_?$&Z`N7oWL=d6Fyvc1UVyDzoapz3U-)v} z=SxBmtZ!-=T5pCE+!i*#F4g;}`8}HE%a@wxFH&#G$OtOa>i;`&ydfj=68%QYmpu6v zz;mjp4pTLsKBY1+!0UuX&&>gD)Y({4;wvr9baTgBv)rf!DILnDQH($EqRGo=Tk6DA z680~N`J{YAK>jJ@u2QR?xzUplqS4VrxHM;(rnygqSJwuX&Rl6%e~+4M@>7a<*L?l` zNJC96u(tLF?U$h{3?IuRXe(d*Xg0B)LWf-`aAr`~J%EqGdNuM}%+1r2yx*Bg$>a`x z44uraWMFY|B9=6f{D02)}cP`f;<~-5YoIcwhdxA4xY~I=T{s z>DUd3F&4gKbZ4m5t&d7YS9bQZX5F^}R)3L7=<2@Od33)}f{Y#5#Fu}4W8>mt+S?mc z)N%qE5Q_l&yn8Po11LhRBZnE1t{xU!s`opmb(r^#xVSK7W&N66uzp>gO-_0MIu@RQ zEAecSsDc8L;9zNB1Ggp@G;~V@Jsy04E5XXj+S3(wzCY`j%loqG)Il;|0f)vqEQdjq zPWWwCAWA78nQv>>sM4nW%z6-k`0d-z zDHeO_FA3>B1Rrh5j{HRB9R)&dAo&{s4b8I%Qbnpc{$kg)4@)E20YK!U3ksiOqoQ=Q zUH9YwFAJasj#TGeEPQ22OG^|)7BHuqzuhe5^{Sa^y4Y%-qA>0ETZG_REJ$9$M z_U00L2F+*zb#+^fUrO7MFd$2Jem}tP>i&q$Nv_#q)H2w?gR?sy@mwhUsSQuJ4FpI_ZH!wSpH6ytz6m;t zUrjW|ZC7u{#?lpLJ=dS>{L1TuQ|;=>?-&{)9?sO>mCOrPG;AT{;5>rCiDXvQTrG%I z3uv$}!+W5Gdlv|;R0XXpLyIq^a`}?x(n>GR)AaQ>U%#3=HT=Q`ylc^g63{jE0(Lff z;Zyw8U&U9Sw8#15j(2d2IP%2%D77ptMV~}Yg=J+;N)E_rmfC6)3%?}l^uS4FI_los znU%iyGeBA2h!ygUj}E^3MKUT}EJD>^ze6NfU! z8i9m_YC?)r)b8%r3Ng+NG$2#RAKja+;T3mwJ_@>b>iZhN_TS(BN@!?=k5s88x$oLV zrf{#YN0EG#RxXOrba1%yd+_n=XBqF!`iS)FR^&ME&dwtIz9Uq6xusgMR}7Vq=P=-X>d-C@Zk})*^m71lJ;r6 z#K3tG?0Y2*7b#d+kS=yd{F%&*jC`;0p8u5z1rH9yqnq>bwj_;^K!nGu2#E-?836ry zs;z3+Rp#=JiLU@kfu=7^>^hy{hob)&8QaXJ+FEA3K?xMP+!HeCNNTHDtom(bc?a&+hjD3B=Cq!0u5I^jm-_t-8rGrc@R?5ayN^K-CUy4 zr=r}+a$+8f@a=Cb+A1nIz-^!Y9ZsVVtYH+er;56(q@goV?edEUFo@fXjQG>jHvq!w z9ms&QPgYhe;^?;4y6$ZEK+v}V%Z$;Wl2kIhL7*gKiofjfrE-Rzj3MI9t#yMhMsSvvDR)L=VDbJ zXKwDgLsN5 z|4jQ6e^%5amY%%hEY;saQtHmm8=#Lc6^b5=Epljwk6r``huGzV#H-Gd-2Htf0?B^E zzt&$NP5p14%L7Pg?9YzZtb}ih*yzP9#X%EgZ(pnTxpbHM;vMfowx5qwiLUFDse=NW z8i!JlNAB+$GC(Q`A0sJ-pa*4FmaCOneZ5XKt*lLOD2t@LJW5CiZb07D?B}qG&kJ|} zOCzapXqh;_SMRdiwG`LZUP)_=e?)_UWMM(w;;mlsuAqPw>KPinC{s19Oun2_#pHhz#;n1rE#-wA zNJAj1BD9@I|M;*t9E7K2P@AWs@2KZ3t6wj5%6a)LbeFe91K#3f*^*4Uw3JEZM*iH* zjqORy&!AHMa=02o=^{-8cke1qM{BY`mpSr-cqnyYbG$PS#0QMBlEE&*MV5E(&b*C& zW+4>vH15}f9 z(z%M{#Gro4*mXSyGrAhDY^oNF2$D zVf*^JlNTVTnS z!L~1Kj8;#=Ccl!ozG_>6!gzW<+*{rz2pIh4t`#@S{ri-VzOwNt{#~mapVa%e{BdDS zbOQNBP^SrCuHBHb@5FVpF*8$x0EN=^Hx5A`jeQlv{rfTn^G}zPlalbYCyCz)O=1EG z&>lrSFjB0IU1xSvMni+`sZybgLyz-T;Jyp;wmyz4J{bk6g^}3Jdq#@*{H-@H>s=7(Mw7Y}_4C zX2`~jW^d;JHu5YYi9+6>vN7NqZ7BU^I7mnY3h-H+iLtOCuJe9>$W@!3W>$Rp^nDHe zf}d6R>}PFc7|vD(m#vm)yLI=&4X?I53i`xC+t0-&C}`u>z6|L@iztH*J zToD@zqLwc}Y3bFB^nkj-#Bt%(jt&Dcby_rZa&f~PIYmXFAKhMDA(mt@Bn3r-g}LRZ zDKi(5dP#iz{Ysw`Tn@bl6c`w83LhOwX)|u|*FGT%2$(@q+m+L(^qB;J$Ybwm&HEgcu*pO%{d>d%}PffDM7O=JG zp*PHh^jcYKWnqEmbB>4PT>l-{#`aT+F~x<15LH!gq$btNb)}9sy03u(k`S22E{{Zv z+|@yaDlJ}8EG$r5n0_Tt{yO05blG^QB+8CcZp@NpD0D!|j?k&?Cj^%Fk;nE2omu;@ ziHRgCDk_7}n|1tqF&IVdNI-Kzw>HF?$ES&<>U&`o_TKWIfBd^%XcSt+F+Ro zjDgigb4Y)3@_l4msiX)BYTJ(PZYupcgI5Xa~gGcmY{uqdC zF0ljt_yonfnU`m4h^J{2nA+uB5=|b<*Rjb=+{Sm?r*yD4H>0|K)&Z@b%vIYN$Jl{| zea>`zO#S{z)G7*aeq1G_$k`6Eeme}y8Q02RiHH=!lX#M!Uh6R@3_CpWI%PpeA557+ z1_IO$w;h`=dgq`YlTH)Bn5sWOwWXvAA2m(NH12XCnr_#t6!iOd6YxbObFEKERRT3W ztE>#2pZ_4hM_F;;Rm6bFV8#|2W@t2EMUNXj9}@fE$!ow(giSAb)-$lggFH8AH#4$8zp&DL=+NAeC858+EJNe# z7Z4cQtHa73ab?8t;sEmHpFiQxEi8s?qJOr0GqIhevz`2KBZlQUf5d|oCk0W_o7vq8 zG&=XRKM{(gNVA*0~KuQ!8aN)Mk=&)~AsnTl06 zdhGE3Y&n-6E|Ok{S!I1I!eh!Cm{uVC-rgiW&W5@Vqdz032LIv#`n6$sd?b*95#;!< zVEPNVAOw9zp@z3{fw*{+TDQb@x6NeP7Bcz4c+@pt^YnJ`g?5SbB~g}q9m<84w&C6>C%2(^y>XH%gk%pfD%ns~f4Q>$I?$`T3H_+wTe=Hm5< zzG@D0ohh=5&@ON7nrpc19?yIF@01q}r&C;6`O%v^w|n^d`pRICS?r0jaB{B9|NCe{ z%EkuogK!vf+^x&iD1=a`sC*H@Z@aE?{Es!GK~gmiI&T8~NGUF#Mt63qD5^L||I06(d{Cr>);I2T z&bQFk)c$bV)Ci1KQ}|G6)*HS(1vLx^LH4j#iJ7jvd-+ORQJngyyr$At1;y-@wDQZO zWPfgR4<}8_r* zeewhausBH&vwk=~drcsDJ+^|MX^f!b{+kxVNI=5CvUU?|sro8i`mA?yQd>G;OA+Q@ z3_ubV0v4X+?O+9gxHg%i^3CTHL&3xryj$2WDv4O)$cyvxo+2-$S&uKvWDMVZsXFa zjIhG*pU(4?d9J?U`+`D<$>0$-Gd}7>HT|LPR@<> zpY~YNdL>|%h)YfF?T;j_B`pt`;9}NQQ>$`5KNgClWzU$j(XScl7%Oa9T5_h;)x7~Y zjvNr<)-xJWI~4b&^13${0?e`tSbO`cjsO+~bI=Qd9X%bL#Vfz1GNG|j{f9JFJFMM>o81aV>x}?*PF+0jW%Am3CrsG9!PkFg0o%S#d#u z#=G}bd?L!4^UjVxn~?-`c3D|8mto^=CZ@dYN?-s@e)T7 zsU3WV)B<*hJ9#~RY;|b~31|-=KBS>YRh+m?rh*C9H3K{lM4iTclrw4u0==hwUu5@ zxdA-|MU}@w!LcsaxB8yCcdiUJEy%p%c36p6I5|^3=!Ov!-hqr&KDutt}y3C{S`RCxi%pHG2Smk0WAdZn?k5!`#h`(Dj1y}u8Jh0`uRpvK0<{J2x{+=;$a6|$=k+8V)us@Y9dyaMV>%iFMM z;AgF^w#(`MlFKYuDC2?ejGZhuP5`$eF*i3ipk;5W)@;nprQtxt!Nl7KWZ~QBXgoqJ zba?8&;~hodTV#OjmjnOm2C%0n;$SR&>zzZc`!j#7F0%o zb2liG`e7MzKmS@Z0e^>%ke8EV^+_LILrMYuEO%oQQBul7Y<`U(=Pt7277@u{WoJ() zDdCXBx-$=D0TZ7NIVDOVg!~G<HH;M4}K2>WM0&2!&- zKo%jM1G^Vu0*rXQ0asO36#*?RE*K}%0ZRpwuheIUc~D*B2nSp>+g(Gy2bvU28yjZE zXrMfU;d54irdwbj^C z*B^+9(SxNFP`-O7rzyQ*|3#RCtrWP+?=>6OO_A)a+DCnz`F`gPQp(CwrYUG=dZ0aR zKR=P*Kk{R-7;66?EdaouVX?`{Xb89UMvAZ+9a0h!#j$VgAG>okz-o$vi#yo-UJLA>(;H;QBk;V?(W&;n?Jh~Vt=TlV+GSbqCB9_me2d1Z| zyG(v+oio-0!vePP0_Hm*Pw^mX4RdJE`VvY(HN`BLNXyKKf-+*OWy+-PI=csEX3yO@ z2@el}I*0l2(^IcUj~{C`*n2pv7p1l9ICH`*$#@C`oyFJpy~| z{`z-D_ygG$6$AiWoSv;^5)u-=T3$BYKf9>%cqvQ=dw`0G8Ctb+1ji3*Bd94l)4F3> z5<%dMO?I);bnh$s^eGgSC5fawNLK#Qqvt)5l%PcAyw8Vhk5CMnbi+&)5L@O#;e!M(D;bO< zKbXyKPghsE{8Cuo+JaVkBFa}!-%=)nIYr4o>kmv(of;}~Tpnw042>1!P3 zsXRP9M!tXV`0@su*M8;!D;rymaht#OTs<$6fG;cz0~JE&@Gw4zOtA3q!0TnwP{s!m z6XYEM55MI3G4uRW0RaKf@v)sq7^Q3vq;SiEUjlr`{ZG*7#QbUC0ll$zq@G(^hOj7q zc-|g};_m&SwYBwYUmqaqoFG*Qyr-V8;cf6=WV}m^mAQGAOavMHum@JyYBYq3N^Cmc z-}mO0znAuxo)5ma;QYR&<%bP5pTkI)!pP_|AuZ?oRQWs^5Ygk{0{0@7&m$c?o@YO6 zTw#|=o3B)SO<)vavbeRyJ}Ps-H2weR`Y0d{>V41dr)Ojg;5w4u5EB!Fbh?|?reQzh z28QdC{lyM$T<;}GI%P1la9RUJb-b6^<3TgQVc>{rjNK(Cb&lTUi)}1qgAV z!IIcRmq5{2AJBF+`H(uizTWMD_)&tazt7)pB7+2L9! z%bnu93It5Rl7UmJRBruqfTe?r1Ed>H*Z#q*X>l()I`$5>b)W7~ zt4R_Q5xoNN8o6uh>tBx*Dv|aWqn)>Z*REx(3+!+#V!{>P#Kn=#@|s7>Io`rRAffx( zEkUE^Q&O5|M}OBfHGZV~Xxt1@4Xmr=1Hp`#4BOG4aLO;1DIEd z08u0KJ{~Ld!z2uU`}ND!4w0Xy?A4V2EVG506!Cmm|!Yji{I$b1aBpG+w~ zAib(+{a%G?P+KYa>wDhho>PX|w>{R?DdqlEp7&(FKG$RFkGEF-sK0h1yW*detUvEF z{CIvCe!7C!`iI@K=HbUDt_vBiKiB@oEoYfD8w`n|oeBi>sVOPpNl0|w=KOZS-O%2? z!pdFV!`&wL`zsr#ZgmgkO0Q!_rP*g5`}a5Im)_#UXvg%%U@xuYDtWRJ$*%Sl8H?HD zP~}DZ`1E5Ysf5Y>9kYaCQ}QbiBRf5!p`h}Qe(__Ses#S27jwQczKndI(AdO8cIyX8 zKM_QY?*s#LcgI|V*+F@L5`lg?Eh*(oVqV_QPWxG(x{R-Eivj{@2h(3fEiURz&8CU# zHrV3rzfU{I_+M3BWmr^Qv>pKgi2HYA=TZrse;+gaB0trHb&sV15!3aMoow0w~k4VW&PEbm}rPg zAQgTUzt5^Ws>=t}bNAxH_tonqX5oL==L=%h?SAsyz32JRMSVM+;2zs^o7EqJ1iii6 zfN5|i|7>Z~uh0Z}Cf=86-B(pr{j<&KKBy06RaG%U_7v7LZ)99$g4kGDqvJ?5fOo}F zx-L;#SBLGr7GpU;EDgj4EkCiu$s&{>1>XftK|w}JzJhou0 zIQW#w{Z*#U0MHtW1qc#OP0=p?q==uHX+0BCkvKo>*qC`QeWj~QcV{&tWCMu;wp$E9 z3bF=On_Bs45~hOfL(9@MA3+fGClpDjBbzewQEGgq~7>a-^-M4 zl$7WTE3%34@tK0$98*V!E;OK}p@FPaof^r@OMY~c-18}?f|z6pr1!@DL8zW_FZw3e zgfd=|va&VHrEb}!4M$8rKW7uGhxLul9lb>=d>%hOxV9*eWZRE^FKlUfj=qUX%0+2u z*ZZcXsDXi;A1=@LVYV07C?|iM=YRVqp{K`xN(3qVBgi)XGI4TZB5^z(-9}|+vxL2a znGg{<_dI$-`F3sSg4{ zgbKu5v9_SYye*HYA2l6$3MMA;&#ERAD+g80&7r0|_vZafN#iOI$#@VR61jpp~@q4;GXDF(*x-7RyC3~t*FKR%-K6UQ{wJK3@AoPj}M(Gd}X(6LaM z)2P=8J_~svl{IDOWv@_&0a}P4I6>y~`+L-ggc-u~N=_~n^R^@Tv77-^IV#!9U^QK-@ARGsPIH~MBE1%eek4e3B9gUeP+YZMh1$1rbs z_hv0;#rJmE$czkL5%**jPXX^dBCEpGR6nB@VH!GQ*(dwwGpUt`JG%AfMY5Th|N4G@ zn($Z~F~Pbj&dR=etuJX7L$a0l!-rzu6ZQ7e7#yM}3qZOzRaEr%<5K>i>%Eq&Jes!& zgw>n#1wMF6+DE@?K#lRQRFW)CY4~59BlPn>;-}KoECr22bdp9Gu)#1KxL(^%WTo>5a}A)kwvKKj z_(3>8qoGy%ILO?5c6IyFqkW^dJGeSJd5h~~#~9{$Y~T97f5$3P-tTF7WRJx#pXWF} z@t290H#!{i(FRhDgPaeG)^J~#VAoh!O*^qiG;;% zch0els)oi%P!S;q2YEGMtfKjNCVZrV4&t z-8jFfXt5+&pODBD=)W=D=JC2?2-85<2Kx8{c<(Eb#%)9n_uK)aTH zQS$``CC8M`wTYW?Ci*Tm3A$-+3Rxe-1cY~-?Qu!EKKb6JLcxKe=Il@<2?uQ5F&0bBB111 zKHVk~49(;4T=c339Pc{yrV_$^!QkPyhI!~BP$20~7(zpRb03t&tM>RuQSxCk$%I}z zIh|0yrR1#P3$dzPM!igVZO%f44Ad%Og8IbuVhJ#tK)Ng9kD=oy_m( z?rtytAjaoM5edJh>-oKG7AQC^*l6b3PYFmlTzV2H*&*`?yuUcXFKD*38mE=?{rI8E zw4&ByNemqf`Vx<$Wf=;J!whDJXHR*6q+#{f?&o}2b#-;``RVZrb8yTq|o$8F&f z<8l$mC02VYx%|Rk?wHLzK|f^{*X%!&-eCq`RzPW|FqC6PO)l51tlR{upPf%tnYD$Dg29`>d;#%84@jT|3PH=w z3wDc(U5ZiB?Bn!E-mUK;@q2qt7n#0_*0*m<9i6Hy^)s?A{*lJk*2XufJR*&LGQ2=a zn$a^kNk>95h+hB4e~Hre{H}n##3QOt)21B7{W6??ko{q}~+|u>;sf zRxriqtfq6}qqaW)bMz9gOtWNZm@o1eT>+$;UTiH3QRIh|Mrq`%^V)L4kWl)tpIaWKDfl0m z0r8@9@{wT%!)nCvr)NhuI^pEy;W3j8G3()M)5c84LeX#{2OKI+w2n_zqoPBI5IYA* zRCKR|%Phr{W_KQk*w2xPiDV=Bhv>jIZy6T_H5PhjD=Hm7 z9yU)#m)xh@aa1zFyd7uesbZ2jUEST#+$?i|>eZJQQ&3Q+QYL6S-Y5&oL;Xft7M9@8 zt%vpi13}HwV$iLsIfAXEeO-L@Bob$IY4Hucq~C)NTC!i4{%t7n3qMO74^dFiKo@2s zxs700NCTNK3RXUF_@Xdzstf9L1Y;OYn@6rXI=&MN5;6bnYSDH?%&JT!XZ-F@_>*h9 zmacUeG$U`48TMn|zsH`N^YwczR0(+8M6LK&jGnVD~) zy9KXVdkevX2TeAgzuUbk_g&8DP*FO*W6^;F-4;vBT8geNPr%1ZB^3+C$Fw7#j2eNU z5bS#dYa0SK##z@l%dI;R^tBBtxYcTGJTEQ3JZ=wK>--u(B_)Lfi_++=rxJ<7pQ0Ls zaX_Z&gJKaRQ)1@eAQus#C1DI>oNd0ux3pYPFf~ou`b@RGyo;*~MY7)(x=5xqF!%*0 zB%m_lB+^*d2nC1qgZP)kwCM$@S`a0l3_$jgAI2%hWXw5?uMq0%n>K6q%)KjGTBD4E z6){GygYtN1%r7*7ijT*DhJ<2ZAfU3oiwl>@o$F(m9;-uw>bXvGenyqWRaJd_VMK(v zgovG;BM^SMeW*64)Yj9x=N*+>^pYvTc9?@%aF1hrLP^pK1Z?E!Qwf~<3&ivck4Y=z z=3Duou0p~b;^KK(O=<-4R1l&MogHCooJgD0A3s#1qF$&N8L=oQ@}tYu!KhT0ougf6 zMdi{Rd!fAlt&@#UKQh31=V0~{fdEA~E>cA}Ben?5EOI1ZkRbp^))#lbF-hDk9p>Oc z#3r<&loBqY8XE-;erNT>3#Ehp#K@$&XLniFC(CmX$_qM)54}@WYoJt;GN{bNGBor~ z3E3bfym7+`*b+2I`X4`_AmJC-AcOM$WJQS-+s>kmc-hsh;J%fV;3t{fVG{1PpE0D-0#Arz-iPTioQitY*AjDB#Z5| z$)agR>x|EXC;zVX;^M}}w4c{-@l?pGC-OmMl{YrwfA=~d0O)2%5^Z>F{9br+G7ZJe zqe$74Q>cf0P&0)wItKzX@6V+kbljrcY*}93?)j+B`0ZP{yg47U)b$i7^X>JL8FGoV zv}lixqF9-jXrvhGm77OC-UNy~HBXwprzd+v1EEYWP>*{`(s_N#kt*I#kLLTeP*OdAj9BG+0 zSB0N7;b2QVJlrw{>avL4==afAuls5&MkAm-MnGMt;>U$iQ6BgNx>nua0x|!yt#n5X zXJmAbjRDc{O%#mr?Cduz4yWJWrST^x8$G=7qmw?3LIZ(CRW)-$1tfQ1yC9v+ph026 z9pto03Unvy?kHw?V@770d@>_8c6Md}<*WTalorY(!!GABV`A7r{u;mKfk23hZ@zk+ z($^XOJL_Pj7vFYe^|hQ~GeJuW`P1iiQx?mhpEjzqiMu;RfBiaC25c#nId19cUjD~A z*WAAgtM^+unINuS-Ax*sevU&VTu^0xjWB71b37hToQ#aCdnWT;#vOKm4L@@7g?LfQ z^6?S%C(}n(R8;sE7RJ@>1!ZQnTYbr>NYTE=6>o0ODj|{n`AaZ>a(3oAS0Ase*rZg; za&un;G5wpmy6cXTKKFG3pS%xQ=;?e(rld4amHrB`n81e@-E_-#_3*wyC||=q34KO> z{(@D9Ywb#9)<yYGW&m%(I>lu-ZVx`b4u}ol)x7{Rg4^M)^6>D` z5LgXbQPI#81|4o?%7)3@;F-+>lj|>JYR_+m0|<+@qXxuht}TFcw#gN3Pz^6alSAsu z^yPN=7oas*15^f3PDE3a2-y5ag0VEB6W}`F?YIUX&ig@+@(d+z8Z?R$1BdV3Nka=c zC8et=DJfNb^WP5e#;3~lEBFEXd{tg<1z??6*hO%~t|+C2>7Ry@!a@un4?sGXK|_gv z+<|q0uYW!y`K|ulNY+ZeQ*p7~l2oss62s#uwk3lE=0?@<%U}lSsTRUEsjP~R9 z_wvc9%i|zFmuF>|+FDyHXk-aS-{9hUSyx}r4Q2><2z?`?yWkfuE-tQJq?}ZUre=^+ zQtHCAlz>OUtl9SG0tId`t=DJOqOXeqET=?TU+)<%N}f1HMNBDni_Y3i=RK7D{@I#mG1*3!hP4Cl9JL1JRJ1E z_(I>rL>2V!+IDt!dgkWlsDo?t0QYi(*?eE6EGugyctZE!F@Tm3|D zDwnJP-q)`IL)9%QDfv>Wk;4UV*#viN3|`6uPmcFRln>!U13sZYBOv7Yzpo<>?3apu z62{>7po@3~J_Z-gl();aK(AT>4(dA=IpW?N zjV@mW!83UijIPNLn}cbbXRBbhQHHqB_n_@1*X9IKGSfCSK(FXQhg-S123>V^hBbG# z3ivM>;)bkj$Je8r1g)pOCZ~&QtE<|GSKuh{Hv`(&+VH^j0s{kE53iYLKCc845El&d zLdKa!=3ARTtrm)n6pyCL%u-jeS7=&be*`5wXq+1w8jfnH zX)oO+pxtA3S4~Ycuu2*{HI6SqVFbR*EPyf7v>WJ8@)NrPV*woTf#%U^@g1mF7j-{z zPx64~gG=V_Jj>%?%D6oYF49*JVYH@up275Ai5P=`X@z(Rs5|Tj_y$&mvavBWkbiPq z(;RZZDFp4MJ)tGr1$#L!FApuBPw3!V_v9B8bowU)`2WhFMx!1h+36!5!h^l8}G^I9jOwCyahguSNE^=4quEh(`0Imph*4=6wAG^?szOsHTR9o142W;4e0r((RMA_4OH-oT!I%^z>jC@C2CV zU=u{q)YRmESZ%qoQ`&Fvd3k3kVH54iu)eX;`0m9u^ldFQ^h8;6JLPH`^!4?jE$%~) zmT=I%0i2vTu*BB*wkOJn=;-JcH#Xv+(^de-3s}f1W@cvgITuj?x4O8xF8%tI00bWJ z93cX*z8i=IWB(D;U=-lA0=y2+ouF?;jep3MO*NLc*FzngX@T0YxU>}h@uNDl@R8ua z0MtJ@4UMGE(+G!~%*fa*Yvm@adDcAvvLQm-`tR*|xy-ka z!~Q{&2ED~elZ7_wBeqdZP2pQG9{JbUiShCB5VR7LlF&iuYrVawN$AP|2?4br7Wjxi zhFf=Ac%KA&9Jgr0&RQGX`oU}fZLbd>>cA`|^`b+Hi3zbbl8dJP9Hoo9wwJY=%zhtf znlwB6wBaJTw6p|mjZrjr&cV?Ua1!_+h@Hp4D(n2kL_;ebC=AgL{i4tIclwTt6CRL| zfLANQ%VTSv0nbcPcLoToV5*-0<_x6vqj|1A+|`Y%>gYu-&-I6Y$tZrDGmS5lsxa4T z@!1sC7z1M|F3BVrL*auCCUp&srR{AZKfgmHFDEXCBm3otr>KZ)kdgX|c#T(o{@klD z$iDcyv-6UtQl$2_Tg3X!rqF}0G@@fh2|`yBvcto#@bKNPyX{u!+!A!?R`$FZ$5i&z zB`L>2{ieNv%@Fa=w0|2oxDl>wRimlUYB%!PPgW#0C!9E`yq~5IWG@h4v3=B!r<+A> z+pC>Hirv}UE0iSYBQCCavpN$`3wg}+hrLNYxk=s7zyR=6uPG-|F<0teSIkg^OxlqD zIaS}qT^X@&XeDV!4X0l0sw)e38 z^`XUCO5hlwF1xdF^6lF#xgX?Mq-m4===YC5M(;{lVt6|OY*xh+X>Q{|Zm=18$}#W{ zlh@g?Rf3i;Eo9Dc;2HB}P!jshvnJ)c(+mC|;M#$MgM)y7SjzV3ar7N*-oBCt}dW@rCJi$qs`5jc`gk`Sa#)JFn~=++Q*Yy{<6vka=-&>!`h~7TmQ!q$h_U4O8Sed8 zmi*t34-&3YFy=8c<2I>kYP#(gs9843q06NHerqF<{d;wrz;A?nrbI(57YmI%a&S{o zY6{h^&S7Fh`!6LNuceXPM3+$!mJ+fNSK&f(u{8hx690F_bJ@5@wz@{QG))okbx%oC Kv0DCN#Qy+(V + + + + + + +satnogs-rotator-firmware: libraries/rotator_pins.h Source File + + + + + + + + + + +
    +
    +
    rotator_pins.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef ROTATOR_PINS_H_
    11 #define ROTATOR_PINS_H_
    12 
    13 #define M1IN1 10
    14 #define M1IN2 9
    15 #define M1SF 7
    16 #define M1FB A1
    17 
    18 #define M2IN1 11
    19 #define M2IN2 3
    20 #define M2SF 6
    21 #define M2FB A0
    22 
    23 #define MOTOR_EN 8
    24 
    25 #define SW1 5
    26 #define SW2 4
    27 
    28 #define RS485_DIR 2
    29 
    30 #define SDA_PIN 3
    31 #define SCL_PIN 4
    32 
    33 #define PIN12 12
    34 #define PIN13 13
    35 #define A2 A2
    36 #define A3 A3
    37 
    38 #endif /* ROTATOR_PINS_H_ */
    + + + + diff --git a/doxygen_files/html/rs485_8h.html b/doxygen_files/html/rs485_8h.html new file mode 100644 index 0000000..09d0989 --- /dev/null +++ b/doxygen_files/html/rs485_8h.html @@ -0,0 +1,107 @@ + + + + + + + +satnogs-rotator-firmware: libraries/rs485.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    rs485.h File Reference
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  rs485
     Class that functions for interacting with a RS485 transceiver. More...
     
    +

    Detailed Description

    +

    It is a driver for half-duplex RS485 transceiver.

    +

    Licensed under the GPLv3

    + +

    Definition in file rs485.h.

    +
    + + + + diff --git a/doxygen_files/html/rs485_8h__dep__incl.map b/doxygen_files/html/rs485_8h__dep__incl.map new file mode 100644 index 0000000..cf94eec --- /dev/null +++ b/doxygen_files/html/rs485_8h__dep__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/rs485_8h__dep__incl.md5 b/doxygen_files/html/rs485_8h__dep__incl.md5 new file mode 100644 index 0000000..6293c76 --- /dev/null +++ b/doxygen_files/html/rs485_8h__dep__incl.md5 @@ -0,0 +1 @@ +868c651d69236391b4abf3d334a965fe \ No newline at end of file diff --git a/doxygen_files/html/rs485_8h__dep__incl.png b/doxygen_files/html/rs485_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..e1732505a5a0b3aa1d312dae5bb04bf4abe082c1 GIT binary patch literal 18103 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%0DMFc8hfL=V~(F+Z!~$J)wqWm9e%uA8h8JX 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/rs485_8h_source.html b/doxygen_files/html/rs485_8h_source.html new file mode 100644 index 0000000..c4d6569 --- /dev/null +++ b/doxygen_files/html/rs485_8h_source.html @@ -0,0 +1,90 @@ + + + + + + + +satnogs-rotator-firmware: libraries/rs485.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    rs485.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef RS485_H_
    11 #define RS485_H_
    12 
    13 /**************************************************************************/
    22 /**************************************************************************/
    23 class rs485 {
    24 public:
    25 
    26  rs485(uint8_t pin_dir, uint16_t tx_time) {
    27  _pin_dir = pin_dir;
    28  _tx_time = tx_time;
    29  }
    30 
    31  /**************************************************************************/
    37  /**************************************************************************/
    38  void begin(uint16_t baudrate) {
    39  pinMode(_pin_dir, OUTPUT);
    40  Serial.begin(baudrate);
    41  }
    42 
    43  /**************************************************************************/
    49  /**************************************************************************/
    50  void print(String str) {
    51  digitalWrite(_pin_dir, HIGH);
    52  Serial.print(str);
    53  delay(_tx_time);
    54  digitalWrite(_pin_dir, LOW);
    55  }
    56 
    57  /**************************************************************************/
    62  /**************************************************************************/
    63  uint8_t read() {
    64  return Serial.read();
    65  }
    66 
    67  /**************************************************************************/
    72  /**************************************************************************/
    73  uint8_t available(void) {
    74  return Serial.available();
    75  }
    76 
    77  /**************************************************************************/
    81  /**************************************************************************/
    82  void flush() {
    83  Serial.flush();
    84  }
    85 
    86  /**************************************************************************/
    90  /**************************************************************************/
    91  void end() {
    92  Serial.end();
    93  }
    94 
    95 private:
    96  uint8_t _pin_dir;
    97  uint16_t _tx_time;
    98 };
    99 
    100 #endif /* RS485_H_ */
    uint8_t _pin_dir
    Definition: rs485.h:96
    +
    void begin(uint16_t baudrate)
    Initialize the RS485 transceiver.
    Definition: rs485.h:38
    +
    uint16_t _tx_time
    Definition: rs485.h:97
    +
    uint8_t available(void)
    The number of chars/uint8_t that are available in RS485 buffer.
    Definition: rs485.h:73
    +
    void end()
    Disables RS485 communication.
    Definition: rs485.h:91
    +
    rs485(uint8_t pin_dir, uint16_t tx_time)
    Definition: rs485.h:26
    +
    uint8_t read()
    Read a char/uint8_t from RS485 bus.
    Definition: rs485.h:63
    +
    void flush()
    Waits for the transmission of outgoing serial data to complete.
    Definition: rs485.h:82
    +
    void print(String str)
    Print a string to RS485 bus.
    Definition: rs485.h:50
    +
    Class that functions for interacting with a RS485 transceiver.
    Definition: rs485.h:23
    +
    + + + + diff --git a/doxygen_files/html/search/all_0.html b/doxygen_files/html/search/all_0.html new file mode 100644 index 0000000..5125b94 --- /dev/null +++ b/doxygen_files/html/search/all_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_0.js b/doxygen_files/html/search/all_0.js new file mode 100644 index 0000000..1c4be2b --- /dev/null +++ b/doxygen_files/html/search/all_0.js @@ -0,0 +1,26 @@ +var searchData= +[ + ['_5fangle_5foffset',['_angle_offset',['../classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4',1,'AS5601']]], + ['_5fch0',['_ch0',['../classi2c__mux.html#acca9a43816973b7471017cbc1d6fd70a',1,'i2c_mux']]], + ['_5fch1',['_ch1',['../classi2c__mux.html#a3aa95a560e46d8a078ca2fd2eeb4dab4',1,'i2c_mux']]], + ['_5fcontrol',['_control',['../struct__control.html',1,'']]], + ['_5fcontrol_5fmode',['_control_mode',['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33',1,'globals.h']]], + ['_5fdefault_5fstate',['_default_state',['../classendstop.html#aaf8429fa28d2aa40a42884b469e8f626',1,'endstop']]], + ['_5fen_5fpin',['_en_pin',['../classmotor.html#aa8dc53ecf02031b944ef6658c2b14fde',1,'motor']]], + ['_5fenc_5fratio',['_enc_ratio',['../classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90',1,'AS5601']]], + ['_5ffb_5fpin',['_fb_pin',['../classmotor.html#a0a0c29d8c7332855eba796dc9d17d516',1,'motor']]], + ['_5fid',['_id',['../classi2c__mux.html#ad56c7d14d6638caa0bccce4d609256c6',1,'i2c_mux::_id()'],['../classtc74.html#a9aef242072cf2021850126f6931cd577',1,'tc74::_id()']]], + ['_5fmaxspeed',['_maxSpeed',['../classmotor.html#a7a8635dc94a8eb9a410b5dff9c658d09',1,'motor']]], + ['_5fminspeed',['_minSpeed',['../classmotor.html#a14521e2beea4039acb94a5a20f3282ca',1,'motor']]], + ['_5fn',['_n',['../classAS5601.html#a6524caff1a797ace0b48dfcad375f37a',1,'AS5601']]], + ['_5fpin',['_pin',['../classendstop.html#a17475e2676c5922399ea8b2bd6de0111',1,'endstop']]], + ['_5fpin_5fdir',['_pin_dir',['../classrs485.html#a8a09bf5dcd2b3274220eb95c6323e2bf',1,'rs485']]], + ['_5fpwm_5fpin1',['_pwm_pin1',['../classmotor.html#aad1f7bbc1a73c605947ce4a80a8019f8',1,'motor']]], + ['_5fpwm_5fpin2',['_pwm_pin2',['../classmotor.html#acc3ee3c3243453a974ca0e9f96e93bce',1,'motor']]], + ['_5fraw_5fprev_5fpos',['_raw_prev_pos',['../classAS5601.html#a104f193f38617cb45e2af426f10971af',1,'AS5601']]], + ['_5frotator',['_rotator',['../struct__rotator.html',1,'']]], + ['_5frotator_5ferror',['_rotator_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1',1,'globals.h']]], + ['_5frotator_5fstatus',['_rotator_status',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501',1,'globals.h']]], + ['_5fsf_5fpin',['_sf_pin',['../classmotor.html#ad3782417f957c2c0806bb37df3709b4a',1,'motor']]], + ['_5ftx_5ftime',['_tx_time',['../classrs485.html#a1b38109fc4d9cf9f98cebda6d6f2b033',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/all_1.html b/doxygen_files/html/search/all_1.html new file mode 100644 index 0000000..b8ff871 --- /dev/null +++ b/doxygen_files/html/search/all_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_1.js b/doxygen_files/html/search/all_1.js new file mode 100644 index 0000000..c9c340b --- /dev/null +++ b/doxygen_files/html/search/all_1.js @@ -0,0 +1,11 @@ +var searchData= +[ + ['a2',['A2',['../rotator__pins_8h.html#a2946bc30423c2a996eeafa49e995c30e',1,'rotator_pins.h']]], + ['a3',['A3',['../rotator__pins_8h.html#a48cdc6c9a75eb611d0a703c94bdac6b8',1,'rotator_pins.h']]], + ['abi_2ecpp_2ed',['abi.cpp.d',['../abi_8cpp_8d.html',1,'']]], + ['agc',['AGC',['../as5601_8h.html#a6b14c0a97e1a526bf898cd24de183afb',1,'as5601.h']]], + ['as5601',['AS5601',['../classAS5601.html',1,'']]], + ['as5601_2eh',['as5601.h',['../as5601_8h.html',1,'']]], + ['as5601_5fid',['AS5601_ID',['../as5601_8h.html#a25c5389b80876b6074ce88c6572b2296',1,'as5601.h']]], + ['available',['available',['../classrs485.html#a204229ca0c3ee5d24d4c5eac9a543ef7',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/all_10.html b/doxygen_files/html/search/all_10.html new file mode 100644 index 0000000..50bc449 --- /dev/null +++ b/doxygen_files/html/search/all_10.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_10.js b/doxygen_files/html/search/all_10.js new file mode 100644 index 0000000..6838498 --- /dev/null +++ b/doxygen_files/html/search/all_10.js @@ -0,0 +1,30 @@ +var searchData= +[ + ['satnogs_20rotator_20firmware',['SatNOGS Rotator Firmware',['../index.html',1,'']]], + ['sample_5ftime',['SAMPLE_TIME',['../dc__motor__controller_8ino.html#a6f6f49388c74bb24a8f63771bd997d97',1,'SAMPLE_TIME(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a6f6f49388c74bb24a8f63771bd997d97',1,'SAMPLE_TIME(): stepper_motor_controller.ino']]], + ['scl_5fpin',['SCL_PIN',['../rotator__pins_8h.html#a06c967e78bcedcee909a70764f879433',1,'rotator_pins.h']]], + ['sda_5fpin',['SDA_PIN',['../rotator__pins_8h.html#a526d580d324bce60a3e964066fae77e3',1,'rotator_pins.h']]], + ['sensor_5ferror',['sensor_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a13da766a5299f2f7015a5922277088b4',1,'globals.h']]], + ['set_5fchannel',['set_channel',['../classi2c__mux.html#af4a7327c09d2f0ea8ee5a5797871e876',1,'i2c_mux']]], + ['set_5fgear_5fratio',['set_gear_ratio',['../classAS5601.html#aeb9eb168d26d44261dc37d4ca54ae24f',1,'AS5601']]], + ['set_5fmax',['set_max',['../classmotor.html#a9881112348f2cf0d338fc47fefd66f15',1,'motor']]], + ['set_5fmin',['set_min',['../classmotor.html#afcebea9102569fa416a2872f0d33b32e',1,'motor']]], + ['set_5fzero',['set_zero',['../classAS5601.html#af760a7dd400974baf9daebad22920bdb',1,'AS5601']]], + ['setpoint',['setpoint',['../struct__control.html#a1d9d72c3f267607ad077052f215cbcd5',1,'_control']]], + ['setpoint_5fspeed',['setpoint_speed',['../struct__control.html#a08308f27e459947c9692735b18aa2f04',1,'_control']]], + ['setup',['setup',['../dc__motor__controller_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'setup(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'setup(): stepper_motor_controller.ino']]], + ['sleep',['sleep',['../classtc74.html#a5304cfec3e2fd0955db133ae0892c734',1,'tc74']]], + ['speed',['speed',['../struct__control.html#ac6968a0c314b5e6c1910fa2238b5e325',1,'_control::speed()'],['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33a3d18b3fd8daa40d26a07452c9de67a87',1,'speed(): globals.h']]], + ['spr',['SPR',['../stepper__motor__controller_8ino.html#abc0e9de1ad11261774993fbad495209e',1,'stepper_motor_controller.ino']]], + ['status_5freg',['STATUS_REG',['../as5601_8h.html#a1f7e79cfe81dc06414550fa52418941e',1,'as5601.h']]], + ['step2deg',['step2deg',['../stepper__motor__controller_8ino.html#a8d74466a27b92f353f6e74a079bb228d',1,'stepper_motor_controller.ino']]], + ['stepper_5faz',['stepper_az',['../stepper__motor__controller_8ino.html#ac9a4325f61d2c3b2f45582cc3234df41',1,'stepper_motor_controller.ino']]], + ['stepper_5fel',['stepper_el',['../stepper__motor__controller_8ino.html#ae50506f007819f8841a2ead6e8ddb509',1,'stepper_motor_controller.ino']]], + ['stepper_5fmotor_5fcontroller_2eino',['stepper_motor_controller.ino',['../stepper__motor__controller_8ino.html',1,'']]], + ['stop',['stop',['../classmotor.html#a9395e462f009a775c5fbe11f4c39150c',1,'motor']]], + ['stream_2ecpp_2ed',['Stream.cpp.d',['../Stream_8cpp_8d.html',1,'']]], + ['sw1',['SW1',['../rotator__pins_8h.html#ad98a4599f8bbf48bb5b425ce5edb5a42',1,'rotator_pins.h']]], + ['sw2',['SW2',['../rotator__pins_8h.html#a276a7c4ba0f813d53715e2ec2595d906',1,'rotator_pins.h']]], + ['switch_5faz',['switch_az',['../struct__rotator.html#a5626b9e27ffdef0f5f8851ebb5a27812',1,'_rotator::switch_az()'],['../dc__motor__controller_8ino.html#a0c0a9fc59fead4da5429a12a827f6e92',1,'switch_az(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a0c0a9fc59fead4da5429a12a827f6e92',1,'switch_az(): stepper_motor_controller.ino']]], + ['switch_5fel',['switch_el',['../struct__rotator.html#a88068d1cd476b7a52bbc400c77e81d9a',1,'_rotator::switch_el()'],['../dc__motor__controller_8ino.html#a0886ffe9fa915cc70ac3ed7e528145d9',1,'switch_el(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a0886ffe9fa915cc70ac3ed7e528145d9',1,'switch_el(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/all_11.html b/doxygen_files/html/search/all_11.html new file mode 100644 index 0000000..b35c8bf --- /dev/null +++ b/doxygen_files/html/search/all_11.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_11.js b/doxygen_files/html/search/all_11.js new file mode 100644 index 0000000..8e40b05 --- /dev/null +++ b/doxygen_files/html/search/all_11.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['t_5frun',['t_run',['../dc__motor__controller_8ino.html#ab758c64f84e0623e98a61e37b9bdd2b7',1,'t_run(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#ab758c64f84e0623e98a61e37b9bdd2b7',1,'t_run(): stepper_motor_controller.ino']]], + ['tc74',['tc74',['../classtc74.html',1,'tc74'],['../classtc74.html#a0adb7370c49b3f39787270357a07d12c',1,'tc74::tc74()']]], + ['tc74_2eh',['tc74.h',['../tc74_8h.html',1,'']]], + ['tc74_5fawake_5fcommand',['TC74_AWAKE_COMMAND',['../tc74_8h.html#ad08dad0d1a91b91db4885beeeb645771',1,'tc74.h']]], + ['tc74_5fconfiguration_5fregister',['TC74_CONFIGURATION_REGISTER',['../tc74_8h.html#a6ba5fdf8b49e61a58c97feb5bc35f9e3',1,'tc74.h']]], + ['tc74_5fdata_5fready_5fflag',['TC74_DATA_READY_FLAG',['../tc74_8h.html#ab77abc7de3ca9f3753905259d339069b',1,'tc74.h']]], + ['tc74_5fid',['TC74_ID',['../dc__motor__controller_8ino.html#adc66ef1790bc83e927ba7e4f3686e65c',1,'dc_motor_controller.ino']]], + ['tc74_5fstandby_5fcommand',['TC74_STANDBY_COMMAND',['../tc74_8h.html#a12e2bb5245f9bf9487853ad58c0b1011',1,'tc74.h']]], + ['tc74_5ftemperature_5fregister',['TC74_TEMPERATURE_REGISTER',['../tc74_8h.html#ae96d6b2a5131b4f3943d894c30fb42fb',1,'tc74.h']]], + ['temp_5fsensor',['temp_sensor',['../dc__motor__controller_8ino.html#a2499307ac3e6e8f80aa5c12b27668b4b',1,'dc_motor_controller.ino']]], + ['tone_2ecpp_2ed',['Tone.cpp.d',['../Tone_8cpp_8d.html',1,'']]], + ['twi_2ec_2ed',['twi.c.d',['../twi_8c_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_12.html b/doxygen_files/html/search/all_12.html new file mode 100644 index 0000000..fd26524 --- /dev/null +++ b/doxygen_files/html/search/all_12.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_12.js b/doxygen_files/html/search/all_12.js new file mode 100644 index 0000000..856e343 --- /dev/null +++ b/doxygen_files/html/search/all_12.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['u',['u',['../struct__control.html#a4ab9d7afcc7a10368b5045b228f0e0bd',1,'_control']]], + ['usbcore_2ecpp_2ed',['USBCore.cpp.d',['../USBCore_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_13.html b/doxygen_files/html/search/all_13.html new file mode 100644 index 0000000..04f66e2 --- /dev/null +++ b/doxygen_files/html/search/all_13.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_13.js b/doxygen_files/html/search/all_13.js new file mode 100644 index 0000000..bcfd0fd --- /dev/null +++ b/doxygen_files/html/search/all_13.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['wake_5fup',['wake_up',['../classtc74.html#a9e10af3dbd52592f902f81885dc166d2',1,'tc74']]], + ['watchdog_2eh',['watchdog.h',['../watchdog_8h.html',1,'']]], + ['watchdog_5finit',['watchdog_init',['../classwdt__timer.html#a4463b57c8af9b89797cb222c745c0355',1,'wdt_timer']]], + ['watchdog_5freset',['watchdog_reset',['../classwdt__timer.html#a1be743743ff4d19d726a45c2d49fbada',1,'wdt_timer']]], + ['wdt',['wdt',['../dc__motor__controller_8ino.html#aa21a88a61f63525bb1db8401772e7f70',1,'wdt(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#aa21a88a61f63525bb1db8401772e7f70',1,'wdt(): stepper_motor_controller.ino']]], + ['wdt_5ferror',['wdt_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a33b2cd89605d2c298f0f1b447eb794fb',1,'globals.h']]], + ['wdt_5ftimer',['wdt_timer',['../classwdt__timer.html',1,'']]], + ['winterrupts_2ec_2ed',['WInterrupts.c.d',['../WInterrupts_8c_8d.html',1,'']]], + ['wire_2ecpp_2ed',['Wire.cpp.d',['../Wire_8cpp_8d.html',1,'']]], + ['wiring_2ec_2ed',['wiring.c.d',['../wiring_8c_8d.html',1,'']]], + ['wiring_5fanalog_2ec_2ed',['wiring_analog.c.d',['../wiring__analog_8c_8d.html',1,'']]], + ['wiring_5fdigital_2ec_2ed',['wiring_digital.c.d',['../wiring__digital_8c_8d.html',1,'']]], + ['wiring_5fpulse_2ec_2ed',['wiring_pulse.c.d',['../wiring__pulse_8c_8d.html',1,'']]], + ['wiring_5fpulse_2es_2ed',['wiring_pulse.S.d',['../wiring__pulse_8S_8d.html',1,'']]], + ['wiring_5fshift_2ec_2ed',['wiring_shift.c.d',['../wiring__shift_8c_8d.html',1,'']]], + ['wmath_2ecpp_2ed',['WMath.cpp.d',['../WMath_8cpp_8d.html',1,'']]], + ['wstring_2ecpp_2ed',['WString.cpp.d',['../WString_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_2.html b/doxygen_files/html/search/all_2.html new file mode 100644 index 0000000..2f17735 --- /dev/null +++ b/doxygen_files/html/search/all_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_2.js b/doxygen_files/html/search/all_2.js new file mode 100644 index 0000000..d61eb32 --- /dev/null +++ b/doxygen_files/html/search/all_2.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['baudrate',['BAUDRATE',['../easycomm_8h.html#a734bbab06e1a9fd2e5522db0221ff6e3',1,'easycomm.h']]], + ['begin',['begin',['../classrs485.html#ab7cf3f6e3b6e6d79dc490145aa3c1b12',1,'rs485::begin()'],['../classAS5601.html#a51af9d44432ad5ccaa764a98d2450ec3',1,'AS5601::Begin()']]], + ['buffer_5fsize',['BUFFER_SIZE',['../easycomm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'easycomm.h']]] +]; diff --git a/doxygen_files/html/search/all_3.html b/doxygen_files/html/search/all_3.html new file mode 100644 index 0000000..a3e6f7d --- /dev/null +++ b/doxygen_files/html/search/all_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_3.js b/doxygen_files/html/search/all_3.js new file mode 100644 index 0000000..4a6e47a --- /dev/null +++ b/doxygen_files/html/search/all_3.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['cdc_2ecpp_2ed',['CDC.cpp.d',['../CDC_8cpp_8d.html',1,'']]], + ['comm',['comm',['../dc__motor__controller_8ino.html#a43731445552d0e8cea4cbc7c75ba56cb',1,'comm(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a43731445552d0e8cea4cbc7c75ba56cb',1,'comm(): stepper_motor_controller.ino']]], + ['conf_5fhigh',['CONF_HIGH',['../as5601_8h.html#a50a238669bcc55ea8d1e6cdc48cf0193',1,'as5601.h']]], + ['conf_5flow',['CONF_LOW',['../as5601_8h.html#a5a7b8dcb28f171791bc1d12c6fd88a7f',1,'as5601.h']]], + ['control_5faz',['control_az',['../globals_8h.html#a87c5a684fccc0f0ed68486d54ffbda77',1,'control_az(): globals.h'],['../dc__motor__controller_8ino.html#a7f4a4d4b871eb2a5ffbf72d413092114',1,'control_az(): dc_motor_controller.ino']]], + ['control_5fel',['control_el',['../globals_8h.html#ade92ac8f94e642ce7708250d1235ae85',1,'control_el(): globals.h'],['../dc__motor__controller_8ino.html#a961d3c110bf0dbe986c469b9b164f109',1,'control_el(): dc_motor_controller.ino']]], + ['control_5fmode',['control_mode',['../struct__rotator.html#a86308cdfcd35e4a153476bf09869a981',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/all_4.html b/doxygen_files/html/search/all_4.html new file mode 100644 index 0000000..6452295 --- /dev/null +++ b/doxygen_files/html/search/all_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_4.js b/doxygen_files/html/search/all_4.js new file mode 100644 index 0000000..f159e56 --- /dev/null +++ b/doxygen_files/html/search/all_4.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['d',['d',['../struct__control.html#aba0fe925711333cc0910d439b589d175',1,'_control']]], + ['dc_5fmotor_5fcontroller_2eino',['dc_motor_controller.ino',['../dc__motor__controller_8ino.html',1,'']]], + ['dc_5fmotor_5fcontroller_2eino_2ed',['dc_motor_controller.ino.d',['../dc__motor__controller_8ino_8d.html',1,'']]], + ['default_5fhome_5fstate',['DEFAULT_HOME_STATE',['../dc__motor__controller_8ino.html#aa9fdf484ccfc3264b1505135c801aadc',1,'DEFAULT_HOME_STATE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#aa9fdf484ccfc3264b1505135c801aadc',1,'DEFAULT_HOME_STATE(): stepper_motor_controller.ino']]], + ['deg2step',['deg2step',['../stepper__motor__controller_8ino.html#a989afa0bbcee20968a0c01cb53bf3159',1,'stepper_motor_controller.ino']]], + ['disenable',['disenable',['../classmotor.html#ae21d592f52c6aa57a641ca3e99cf52b9',1,'motor']]] +]; diff --git a/doxygen_files/html/search/all_5.html b/doxygen_files/html/search/all_5.html new file mode 100644 index 0000000..e59e1d5 --- /dev/null +++ b/doxygen_files/html/search/all_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_5.js b/doxygen_files/html/search/all_5.js new file mode 100644 index 0000000..a7962aa --- /dev/null +++ b/doxygen_files/html/search/all_5.js @@ -0,0 +1,15 @@ +var searchData= +[ + ['easycomm',['easycomm',['../classeasycomm.html',1,'']]], + ['easycomm_2eh',['easycomm.h',['../easycomm_8h.html',1,'']]], + ['easycomm_5finit',['easycomm_init',['../classeasycomm.html#a7db30a0f3a754dc281cbedab461d76f6',1,'easycomm']]], + ['easycomm_5fproc',['easycomm_proc',['../classeasycomm.html#a68c229f5c44074fae9992ec9ea605046',1,'easycomm']]], + ['enable',['enable',['../classmotor.html#abee35525f6340b3a8118e8711a6033b4',1,'motor']]], + ['enc_5fratio',['ENC_RATIO',['../dc__motor__controller_8ino.html#ac4f907593fd23cbef61e6c99a4f6a781',1,'dc_motor_controller.ino']]], + ['encoder_5faz',['encoder_az',['../dc__motor__controller_8ino.html#ad7b945823a2a9518064aa22ce612fcaf',1,'dc_motor_controller.ino']]], + ['encoder_5fel',['encoder_el',['../dc__motor__controller_8ino.html#a35ce9a059097bea4c32ee620078a659c',1,'dc_motor_controller.ino']]], + ['end',['end',['../classrs485.html#a1a7d6743372a514e371f761d357b3bd8',1,'rs485']]], + ['endstop',['endstop',['../classendstop.html',1,'endstop'],['../classendstop.html#accd7d557af506828fffb434809f422f1',1,'endstop::endstop()']]], + ['endstop_2eh',['endstop.h',['../endstop_8h.html',1,'']]], + ['error',['error',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ad606e435413ea0944dd00d49e901e4ed',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/all_6.html b/doxygen_files/html/search/all_6.html new file mode 100644 index 0000000..f75a754 --- /dev/null +++ b/doxygen_files/html/search/all_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_6.js b/doxygen_files/html/search/all_6.js new file mode 100644 index 0000000..9610884 --- /dev/null +++ b/doxygen_files/html/search/all_6.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['fault_5faz',['fault_az',['../struct__rotator.html#a5aee46515ac7930a9ae114b9c9c01d8c',1,'_rotator']]], + ['fault_5fel',['fault_el',['../struct__rotator.html#ac2e58e190516589323db0255129cfe96',1,'_rotator']]], + ['flush',['flush',['../classrs485.html#af02e2635ac5bb688bc9f05895a983704',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/all_7.html b/doxygen_files/html/search/all_7.html new file mode 100644 index 0000000..88acd94 --- /dev/null +++ b/doxygen_files/html/search/all_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_7.js b/doxygen_files/html/search/all_7.js new file mode 100644 index 0000000..7392f2e --- /dev/null +++ b/doxygen_files/html/search/all_7.js @@ -0,0 +1,13 @@ +var searchData= +[ + ['get_5fagc',['get_agc',['../classAS5601.html#ad8192e27c57aaef265e0649876ca6bf2',1,'AS5601']]], + ['get_5fconf',['get_conf',['../classAS5601.html#abfce6bb3f9888bca6c8527ea0d4fad88',1,'AS5601']]], + ['get_5ffault',['get_fault',['../classmotor.html#a3fb941091e69025a6ed7b66b2458b302',1,'motor']]], + ['get_5fload',['get_load',['../classmotor.html#ae106093068947e7b5453cfb70c06e83d',1,'motor']]], + ['get_5fmagnitude',['get_magnitude',['../classAS5601.html#a6fd828b9871407420fb8a277d13e769c',1,'AS5601']]], + ['get_5fpos',['get_pos',['../classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5',1,'AS5601']]], + ['get_5fstate',['get_state',['../classendstop.html#a530a60aaf81bd5022e56df71c194dfbc',1,'endstop']]], + ['get_5fstatus',['get_status',['../classtc74.html#a91d194f87d6153a0556ab5fd857e66ee',1,'tc74']]], + ['get_5ftemp',['get_temp',['../classtc74.html#a5e923d126027ab1e7102b4a203698eb3',1,'tc74']]], + ['globals_2eh',['globals.h',['../globals_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_8.html b/doxygen_files/html/search/all_8.html new file mode 100644 index 0000000..b74d5fd --- /dev/null +++ b/doxygen_files/html/search/all_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_8.js b/doxygen_files/html/search/all_8.js new file mode 100644 index 0000000..3d58224 --- /dev/null +++ b/doxygen_files/html/search/all_8.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['hardwareserial_2ecpp_2ed',['HardwareSerial.cpp.d',['../HardwareSerial_8cpp_8d.html',1,'']]], + ['hardwareserial0_2ecpp_2ed',['HardwareSerial0.cpp.d',['../HardwareSerial0_8cpp_8d.html',1,'']]], + ['hardwareserial1_2ecpp_2ed',['HardwareSerial1.cpp.d',['../HardwareSerial1_8cpp_8d.html',1,'']]], + ['hardwareserial2_2ecpp_2ed',['HardwareSerial2.cpp.d',['../HardwareSerial2_8cpp_8d.html',1,'']]], + ['hardwareserial3_2ecpp_2ed',['HardwareSerial3.cpp.d',['../HardwareSerial3_8cpp_8d.html',1,'']]], + ['home_5fdelay',['HOME_DELAY',['../stepper__motor__controller_8ino.html#acf4a8c328d7d16e349494adf938d575c',1,'stepper_motor_controller.ino']]], + ['home_5fspeed',['HOME_SPEED',['../dc__motor__controller_8ino.html#a7fb1602dc5cc8f75b91e38ea0e8ce5bd',1,'dc_motor_controller.ino']]], + ['homing',['homing',['../dc__motor__controller_8ino.html#acb27c796ddcae7f932e2898cba368c3b',1,'homing(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#afe48c9319f61788ed4622597bdaf17ab',1,'homing(int32_t seek_az, int32_t seek_el): stepper_motor_controller.ino']]], + ['homing_5ferror',['homing_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a83cf4d6b86174dccaf2a83810b4f83b6',1,'globals.h']]], + ['homing_5fflag',['homing_flag',['../struct__rotator.html#adf96afc711bf7075748f043b1b656311',1,'_rotator']]], + ['hooks_2ec_2ed',['hooks.c.d',['../hooks_8c_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_9.html b/doxygen_files/html/search/all_9.html new file mode 100644 index 0000000..95e88dd --- /dev/null +++ b/doxygen_files/html/search/all_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_9.js b/doxygen_files/html/search/all_9.js new file mode 100644 index 0000000..25dcc58 --- /dev/null +++ b/doxygen_files/html/search/all_9.js @@ -0,0 +1,20 @@ +var searchData= +[ + ['i',['i',['../struct__control.html#a97e0823512ecbf67560099811613002c',1,'_control']]], + ['i2c_5fbyte_5ftransaction',['i2c_byte_transaction',['../classAS5601.html#afcac1b1abeeea88e465694373136168a',1,'AS5601']]], + ['i2c_5ffreq',['I2C_FREQ',['../as5601_8h.html#a8b7500a141450a9df212017430c0df9e',1,'I2C_FREQ(): as5601.h'],['../i2c__mux_8h.html#a8b7500a141450a9df212017430c0df9e',1,'I2C_FREQ(): i2c_mux.h']]], + ['i2c_5fmux',['i2c_mux',['../classi2c__mux.html',1,'i2c_mux'],['../classi2c__mux.html#aacb992d29412ed15eb0b8b1983dcf976',1,'i2c_mux::i2c_mux()']]], + ['i2c_5fmux_2eh',['i2c_mux.h',['../i2c__mux_8h.html',1,'']]], + ['i2c_5fword_5ftransaction',['i2c_word_transaction',['../classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc',1,'AS5601']]], + ['idle',['idle',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501a0e9a37114c0e458d28d52f06ec0f2242',1,'globals.h']]], + ['init',['init',['../classendstop.html#a6d24d7ed95ded92431288da42a6aebf9',1,'endstop::init()'],['../classi2c__mux.html#a297c753f7c9fd03b7a6be09a7d3bd87a',1,'i2c_mux::init()'],['../classtc74.html#a9e9df64f45929efc9b56b4668269ffbe',1,'tc74::init()']]], + ['init_5fpin',['init_pin',['../classmotor.html#a7c7a40ef8985fae55eda9b9254d760a7',1,'motor']]], + ['init_5ftimer',['init_timer',['../classmotor.html#a1aa585ea14305952469f95cb26f3ad2f',1,'motor']]], + ['init_5fzero',['init_zero',['../classAS5601.html#a865a4971a787bbdb9ff64fd31e2eb348',1,'AS5601']]], + ['input',['input',['../struct__control.html#adc122b9fd1dc7cb0b859405b0bc6ad1a',1,'_control']]], + ['input_5fprv',['input_prv',['../struct__control.html#a42d481daff320ecacaa999a12e4b7412',1,'_control']]], + ['inside_5ftemperature',['inside_temperature',['../struct__rotator.html#a1bfde08392f85de45463f69b77c8120d',1,'_rotator']]], + ['ipaddress_2ecpp_2ed',['IPAddress.cpp.d',['../IPAddress_8cpp_8d.html',1,'']]], + ['isnumber',['isNumber',['../classeasycomm.html#a0da8917b93ae0d477791a86e1edeefb9',1,'easycomm']]], + ['isr',['ISR',['../watchdog_8h.html#a43905d6fb5c4d433a49f527fa6ab811f',1,'watchdog.h']]] +]; diff --git a/doxygen_files/html/search/all_a.html b/doxygen_files/html/search/all_a.html new file mode 100644 index 0000000..3148a8e --- /dev/null +++ b/doxygen_files/html/search/all_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_a.js b/doxygen_files/html/search/all_a.js new file mode 100644 index 0000000..3262b3f --- /dev/null +++ b/doxygen_files/html/search/all_a.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['load',['load',['../struct__control.html#aeb5b4a7fd5e9aa8ada410f568a0a87b4',1,'_control']]], + ['loop',['loop',['../dc__motor__controller_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'loop(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'loop(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/all_b.html b/doxygen_files/html/search/all_b.html new file mode 100644 index 0000000..f2a3c8d --- /dev/null +++ b/doxygen_files/html/search/all_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_b.js b/doxygen_files/html/search/all_b.js new file mode 100644 index 0000000..8caba91 --- /dev/null +++ b/doxygen_files/html/search/all_b.js @@ -0,0 +1,32 @@ +var searchData= +[ + ['m1fb',['M1FB',['../rotator__pins_8h.html#a4e12c241b5699b8487b50dbda38a2714',1,'rotator_pins.h']]], + ['m1in1',['M1IN1',['../rotator__pins_8h.html#a52eb32b92f0d0d1fdfc59a83e22d389d',1,'rotator_pins.h']]], + ['m1in2',['M1IN2',['../rotator__pins_8h.html#a157fe9dc9b50d6f912b57b3422848700',1,'rotator_pins.h']]], + ['m1sf',['M1SF',['../rotator__pins_8h.html#a1bef437ea4477b69d7417946685cc582',1,'rotator_pins.h']]], + ['m2fb',['M2FB',['../rotator__pins_8h.html#a756234870d4fec1dfb965e5a4ef4b5cd',1,'rotator_pins.h']]], + ['m2in1',['M2IN1',['../rotator__pins_8h.html#ad43a98121cb04032302978a3319ba24e',1,'rotator_pins.h']]], + ['m2in2',['M2IN2',['../rotator__pins_8h.html#a1f7e92e76bed5849fc1edc2e42c995dc',1,'rotator_pins.h']]], + ['m2sf',['M2SF',['../rotator__pins_8h.html#a84c33ece7372e98a2b47c81491a06474',1,'rotator_pins.h']]], + ['magnitude_5fhigh',['MAGNITUDE_HIGH',['../as5601_8h.html#a44cb76675b777aed3142556943702c80',1,'as5601.h']]], + ['magnitude_5flow',['MAGNITUDE_LOW',['../as5601_8h.html#a27977fa09cf94bdf6e6f0f3d78d29c2e',1,'as5601.h']]], + ['main_2ecpp_2ed',['main.cpp.d',['../main_8cpp_8d.html',1,'']]], + ['max_5facceleration',['MAX_ACCELERATION',['../stepper__motor__controller_8ino.html#a58daa60c7e280af9449f3cc46097652b',1,'stepper_motor_controller.ino']]], + ['max_5fm1_5fangle',['MAX_M1_ANGLE',['../dc__motor__controller_8ino.html#ac81f1607c784261cee0a9759a35f18ff',1,'MAX_M1_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#ac81f1607c784261cee0a9759a35f18ff',1,'MAX_M1_ANGLE(): stepper_motor_controller.ino']]], + ['max_5fm2_5fangle',['MAX_M2_ANGLE',['../dc__motor__controller_8ino.html#acaea33d85a46b9afdd404f6a45da8470',1,'MAX_M2_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#acaea33d85a46b9afdd404f6a45da8470',1,'MAX_M2_ANGLE(): stepper_motor_controller.ino']]], + ['max_5fpwm',['MAX_PWM',['../dc__motor__controller_8ino.html#a1df990f1a1fc97b95e8d53f719968026',1,'dc_motor_controller.ino']]], + ['max_5fspeed',['MAX_SPEED',['../stepper__motor__controller_8ino.html#ac2cd96d53dd3ba6407db6766c3d92b26',1,'stepper_motor_controller.ino']]], + ['microstep',['MICROSTEP',['../stepper__motor__controller_8ino.html#aca9cca604052ac7a6f173b58b7d6e126',1,'stepper_motor_controller.ino']]], + ['min_5fm1_5fangle',['MIN_M1_ANGLE',['../dc__motor__controller_8ino.html#af4acc4b3e38c809c8ca4d84d5c1083cf',1,'MIN_M1_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#af4acc4b3e38c809c8ca4d84d5c1083cf',1,'MIN_M1_ANGLE(): stepper_motor_controller.ino']]], + ['min_5fm2_5fangle',['MIN_M2_ANGLE',['../dc__motor__controller_8ino.html#a45dd8cb284dc0672f292e90909ecc530',1,'MIN_M2_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a45dd8cb284dc0672f292e90909ecc530',1,'MIN_M2_ANGLE(): stepper_motor_controller.ino']]], + ['min_5fpulse_5fwidth',['MIN_PULSE_WIDTH',['../stepper__motor__controller_8ino.html#ad95c8286fc30ece77d632ad00a94d80e',1,'stepper_motor_controller.ino']]], + ['min_5fpwm',['MIN_PWM',['../dc__motor__controller_8ino.html#a8507f3c11d3addead8ca0fbd55616c62',1,'dc_motor_controller.ino']]], + ['motor',['motor',['../classmotor.html',1,'motor'],['../classmotor.html#a2a035f9f051ce59d705654966dd95851',1,'motor::motor()']]], + ['motor_2eh',['motor.h',['../motor_8h.html',1,'']]], + ['motor_5faz',['motor_az',['../dc__motor__controller_8ino.html#a93ae915cd10983ab1234aa4a6b7910b3',1,'dc_motor_controller.ino']]], + ['motor_5fel',['motor_el',['../dc__motor__controller_8ino.html#a60cac79aef5df2246c291f606098d33b',1,'dc_motor_controller.ino']]], + ['motor_5fen',['MOTOR_EN',['../rotator__pins_8h.html#a30b8dc781a6fe8ee7745feac552cb858',1,'rotator_pins.h']]], + ['motor_5ferror',['motor_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1ab3e9a59dba488d350b0eabd4962a67af',1,'globals.h']]], + ['move',['move',['../classmotor.html#a01f848ad7e9ff16b4cb61174d3a5a084',1,'motor']]], + ['moving',['moving',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ab4be0aa0ed7631ee6c4a434c66cd86bf',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/all_c.html b/doxygen_files/html/search/all_c.html new file mode 100644 index 0000000..6376810 --- /dev/null +++ b/doxygen_files/html/search/all_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_c.js b/doxygen_files/html/search/all_c.js new file mode 100644 index 0000000..2d9ef54 --- /dev/null +++ b/doxygen_files/html/search/all_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['new_2ecpp_2ed',['new.cpp.d',['../new_8cpp_8d.html',1,'']]], + ['no_5ferror',['no_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a1f1efebf2c41e3bef0fef1862bf5f0c4',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/all_d.html b/doxygen_files/html/search/all_d.html new file mode 100644 index 0000000..cc52c79 --- /dev/null +++ b/doxygen_files/html/search/all_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_d.js b/doxygen_files/html/search/all_d.js new file mode 100644 index 0000000..b69fa29 --- /dev/null +++ b/doxygen_files/html/search/all_d.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['over_5ftemp',['OVER_TEMP',['../dc__motor__controller_8ino.html#adc250636bd54c7aa250dc02e87be44d3',1,'dc_motor_controller.ino']]], + ['over_5ftemperature',['over_temperature',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a717423059b8c506b73ed007b6a8c3bca',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/all_e.html b/doxygen_files/html/search/all_e.html new file mode 100644 index 0000000..85b39bd --- /dev/null +++ b/doxygen_files/html/search/all_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_e.js b/doxygen_files/html/search/all_e.js new file mode 100644 index 0000000..12dbfdf --- /dev/null +++ b/doxygen_files/html/search/all_e.js @@ -0,0 +1,19 @@ +var searchData= +[ + ['p',['p',['../struct__control.html#a08335ac31b691f2ed082a02d4a10961b',1,'_control']]], + ['park_5faz',['park_az',['../struct__rotator.html#ab6fce38c41558f84a92605b37c35837f',1,'_rotator']]], + ['park_5fel',['park_el',['../struct__rotator.html#a6ad10e10ad60c7cb8d4f30986cb1384f',1,'_rotator']]], + ['pca9540',['pca9540',['../dc__motor__controller_8ino.html#a7741af4fcf4d529c3183cff30f191c5d',1,'dc_motor_controller.ino']]], + ['pca9540_5fch0',['PCA9540_CH0',['../dc__motor__controller_8ino.html#a7d702f8ac756be3372676abde2bba4d1',1,'dc_motor_controller.ino']]], + ['pca9540_5fch1',['PCA9540_CH1',['../dc__motor__controller_8ino.html#a474aca7989d2890727807058edc26bab',1,'dc_motor_controller.ino']]], + ['pca9540_5fid',['PCA9540_ID',['../dc__motor__controller_8ino.html#a38d90dee2ed358ec8876fd872c901708',1,'dc_motor_controller.ino']]], + ['pid_5fv1_2ecpp_2ed',['PID_v1.cpp.d',['../PID__v1_8cpp_8d.html',1,'']]], + ['pin12',['PIN12',['../rotator__pins_8h.html#a0157ab3e88e2635fceafe002a02cec6e',1,'rotator_pins.h']]], + ['pin13',['PIN13',['../rotator__pins_8h.html#a5a4d13c57f4d208901b04a7044774293',1,'rotator_pins.h']]], + ['pluggableusb_2ecpp_2ed',['PluggableUSB.cpp.d',['../PluggableUSB_8cpp_8d.html',1,'']]], + ['pointing',['pointing',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ad975d8e65ab97856d5861bd3065e4f67',1,'globals.h']]], + ['position',['position',['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33a186286c1e4467cf7aeb7d01bca2ba162',1,'globals.h']]], + ['position_5fdeadzone',['POSITION_DEADZONE',['../dc__motor__controller_8ino.html#a962555911ea5b066ed756407100097eb',1,'dc_motor_controller.ino']]], + ['print',['print',['../classrs485.html#acffe305907c9de94dda20135bc6ad93a',1,'rs485']]], + ['print_2ecpp_2ed',['Print.cpp.d',['../Print_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/all_f.html b/doxygen_files/html/search/all_f.html new file mode 100644 index 0000000..89fa15a --- /dev/null +++ b/doxygen_files/html/search/all_f.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/all_f.js b/doxygen_files/html/search/all_f.js new file mode 100644 index 0000000..2d8c9fa --- /dev/null +++ b/doxygen_files/html/search/all_f.js @@ -0,0 +1,16 @@ +var searchData= +[ + ['ratio',['RATIO',['../dc__motor__controller_8ino.html#a7e8b3c8482e593df0ace933ad3de22ee',1,'RATIO(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a7e8b3c8482e593df0ace933ad3de22ee',1,'RATIO(): stepper_motor_controller.ino']]], + ['raw_5fang_5fhigh',['RAW_ANG_HIGH',['../as5601_8h.html#a0f32fbf0619653f8582cfbb9b5022868',1,'as5601.h']]], + ['raw_5fang_5flow',['RAW_ANG_LOW',['../as5601_8h.html#a60e1d311be398853144f59e1d2a37be1',1,'as5601.h']]], + ['read',['read',['../classrs485.html#ac549517006a6b2cff970e3390ccd2c45',1,'rs485']]], + ['readme_2emd',['README.md',['../README_8md.html',1,'']]], + ['rotator',['rotator',['../globals_8h.html#addd34cf12b8ad4e4eb65097b7c950dc4',1,'globals.h']]], + ['rotator_5ferror',['rotator_error',['../struct__rotator.html#a169bb52a1b00c2506bf7979aae6bab12',1,'_rotator']]], + ['rotator_5fpins_2eh',['rotator_pins.h',['../rotator__pins_8h.html',1,'']]], + ['rotator_5fstatus',['rotator_status',['../struct__rotator.html#ad7f5a96e0a6675c3471670c927bbae49',1,'_rotator']]], + ['rs485',['rs485',['../classrs485.html',1,'rs485'],['../classrs485.html#acd42457ff65a8979a5cdd62b64d1b905',1,'rs485::rs485()'],['../easycomm_8h.html#abdffa1ce6a347f355c4de274ec721357',1,'rs485(): easycomm.h']]], + ['rs485_2eh',['rs485.h',['../rs485_8h.html',1,'']]], + ['rs485_5fdir',['RS485_DIR',['../rotator__pins_8h.html#a63538aadae7384dfdeae19989b6d5692',1,'rotator_pins.h']]], + ['rs485_5ftx_5ftime',['RS485_TX_TIME',['../easycomm_8h.html#aa097ac5ab6b9f25ce18fedfb8ffe43ef',1,'easycomm.h']]] +]; diff --git a/doxygen_files/html/search/classes_0.html b/doxygen_files/html/search/classes_0.html new file mode 100644 index 0000000..e935fdf --- /dev/null +++ b/doxygen_files/html/search/classes_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_0.js b/doxygen_files/html/search/classes_0.js new file mode 100644 index 0000000..84541d6 --- /dev/null +++ b/doxygen_files/html/search/classes_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['_5fcontrol',['_control',['../struct__control.html',1,'']]], + ['_5frotator',['_rotator',['../struct__rotator.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_1.html b/doxygen_files/html/search/classes_1.html new file mode 100644 index 0000000..3df6e80 --- /dev/null +++ b/doxygen_files/html/search/classes_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_1.js b/doxygen_files/html/search/classes_1.js new file mode 100644 index 0000000..ef2d5ec --- /dev/null +++ b/doxygen_files/html/search/classes_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['as5601',['AS5601',['../classAS5601.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_2.html b/doxygen_files/html/search/classes_2.html new file mode 100644 index 0000000..028694f --- /dev/null +++ b/doxygen_files/html/search/classes_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_2.js b/doxygen_files/html/search/classes_2.js new file mode 100644 index 0000000..a194414 --- /dev/null +++ b/doxygen_files/html/search/classes_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['easycomm',['easycomm',['../classeasycomm.html',1,'']]], + ['endstop',['endstop',['../classendstop.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_3.html b/doxygen_files/html/search/classes_3.html new file mode 100644 index 0000000..2b1abe3 --- /dev/null +++ b/doxygen_files/html/search/classes_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_3.js b/doxygen_files/html/search/classes_3.js new file mode 100644 index 0000000..db6fa05 --- /dev/null +++ b/doxygen_files/html/search/classes_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2c_5fmux',['i2c_mux',['../classi2c__mux.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_4.html b/doxygen_files/html/search/classes_4.html new file mode 100644 index 0000000..8735214 --- /dev/null +++ b/doxygen_files/html/search/classes_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_4.js b/doxygen_files/html/search/classes_4.js new file mode 100644 index 0000000..5a8b376 --- /dev/null +++ b/doxygen_files/html/search/classes_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['motor',['motor',['../classmotor.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_5.html b/doxygen_files/html/search/classes_5.html new file mode 100644 index 0000000..ba8b1c6 --- /dev/null +++ b/doxygen_files/html/search/classes_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_5.js b/doxygen_files/html/search/classes_5.js new file mode 100644 index 0000000..bcf7f1e --- /dev/null +++ b/doxygen_files/html/search/classes_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['rs485',['rs485',['../classrs485.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_6.html b/doxygen_files/html/search/classes_6.html new file mode 100644 index 0000000..f585093 --- /dev/null +++ b/doxygen_files/html/search/classes_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_6.js b/doxygen_files/html/search/classes_6.js new file mode 100644 index 0000000..b238711 --- /dev/null +++ b/doxygen_files/html/search/classes_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tc74',['tc74',['../classtc74.html',1,'']]] +]; diff --git a/doxygen_files/html/search/classes_7.html b/doxygen_files/html/search/classes_7.html new file mode 100644 index 0000000..6418529 --- /dev/null +++ b/doxygen_files/html/search/classes_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/classes_7.js b/doxygen_files/html/search/classes_7.js new file mode 100644 index 0000000..71e6ef6 --- /dev/null +++ b/doxygen_files/html/search/classes_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wdt_5ftimer',['wdt_timer',['../classwdt__timer.html',1,'']]] +]; diff --git a/doxygen_files/html/search/close.png b/doxygen_files/html/search/close.png new file mode 100644 index 0000000000000000000000000000000000000000..9342d3dfeea7b7c4ee610987e717804b5a42ceb9 GIT binary patch literal 273 zcmV+s0q*{ZP)4(RlMby96)VwnbG{ zbe&}^BDn7x>$<{ck4zAK-=nT;=hHG)kmplIF${xqm8db3oX6wT3bvp`TE@m0cg;b) zBuSL}5?N7O(iZLdAlz@)b)Rd~DnSsSX&P5qC`XwuFwcAYLC+d2>+1(8on;wpt8QIC X2MT$R4iQDd00000NkvXXu0mjfia~GN literal 0 HcmV?d00001 diff --git a/doxygen_files/html/search/defines_0.html b/doxygen_files/html/search/defines_0.html new file mode 100644 index 0000000..3bffafa --- /dev/null +++ b/doxygen_files/html/search/defines_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_0.js b/doxygen_files/html/search/defines_0.js new file mode 100644 index 0000000..b82e5ab --- /dev/null +++ b/doxygen_files/html/search/defines_0.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['a2',['A2',['../rotator__pins_8h.html#a2946bc30423c2a996eeafa49e995c30e',1,'rotator_pins.h']]], + ['a3',['A3',['../rotator__pins_8h.html#a48cdc6c9a75eb611d0a703c94bdac6b8',1,'rotator_pins.h']]], + ['agc',['AGC',['../as5601_8h.html#a6b14c0a97e1a526bf898cd24de183afb',1,'as5601.h']]], + ['as5601_5fid',['AS5601_ID',['../as5601_8h.html#a25c5389b80876b6074ce88c6572b2296',1,'as5601.h']]] +]; diff --git a/doxygen_files/html/search/defines_1.html b/doxygen_files/html/search/defines_1.html new file mode 100644 index 0000000..ca5bb94 --- /dev/null +++ b/doxygen_files/html/search/defines_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_1.js b/doxygen_files/html/search/defines_1.js new file mode 100644 index 0000000..79fe119 --- /dev/null +++ b/doxygen_files/html/search/defines_1.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['baudrate',['BAUDRATE',['../easycomm_8h.html#a734bbab06e1a9fd2e5522db0221ff6e3',1,'easycomm.h']]], + ['buffer_5fsize',['BUFFER_SIZE',['../easycomm_8h.html#a6b20d41d6252e9871430c242cb1a56e7',1,'easycomm.h']]] +]; diff --git a/doxygen_files/html/search/defines_2.html b/doxygen_files/html/search/defines_2.html new file mode 100644 index 0000000..7cc1a74 --- /dev/null +++ b/doxygen_files/html/search/defines_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_2.js b/doxygen_files/html/search/defines_2.js new file mode 100644 index 0000000..da9a2c3 --- /dev/null +++ b/doxygen_files/html/search/defines_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['conf_5fhigh',['CONF_HIGH',['../as5601_8h.html#a50a238669bcc55ea8d1e6cdc48cf0193',1,'as5601.h']]], + ['conf_5flow',['CONF_LOW',['../as5601_8h.html#a5a7b8dcb28f171791bc1d12c6fd88a7f',1,'as5601.h']]] +]; diff --git a/doxygen_files/html/search/defines_3.html b/doxygen_files/html/search/defines_3.html new file mode 100644 index 0000000..3d0ac12 --- /dev/null +++ b/doxygen_files/html/search/defines_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_3.js b/doxygen_files/html/search/defines_3.js new file mode 100644 index 0000000..63885b3 --- /dev/null +++ b/doxygen_files/html/search/defines_3.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['default_5fhome_5fstate',['DEFAULT_HOME_STATE',['../dc__motor__controller_8ino.html#aa9fdf484ccfc3264b1505135c801aadc',1,'DEFAULT_HOME_STATE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#aa9fdf484ccfc3264b1505135c801aadc',1,'DEFAULT_HOME_STATE(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/defines_4.html b/doxygen_files/html/search/defines_4.html new file mode 100644 index 0000000..201f927 --- /dev/null +++ b/doxygen_files/html/search/defines_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_4.js b/doxygen_files/html/search/defines_4.js new file mode 100644 index 0000000..1a68ad7 --- /dev/null +++ b/doxygen_files/html/search/defines_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['enc_5fratio',['ENC_RATIO',['../dc__motor__controller_8ino.html#ac4f907593fd23cbef61e6c99a4f6a781',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/defines_5.html b/doxygen_files/html/search/defines_5.html new file mode 100644 index 0000000..92d51a5 --- /dev/null +++ b/doxygen_files/html/search/defines_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_5.js b/doxygen_files/html/search/defines_5.js new file mode 100644 index 0000000..d07e6e7 --- /dev/null +++ b/doxygen_files/html/search/defines_5.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['home_5fdelay',['HOME_DELAY',['../stepper__motor__controller_8ino.html#acf4a8c328d7d16e349494adf938d575c',1,'stepper_motor_controller.ino']]], + ['home_5fspeed',['HOME_SPEED',['../dc__motor__controller_8ino.html#a7fb1602dc5cc8f75b91e38ea0e8ce5bd',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/defines_6.html b/doxygen_files/html/search/defines_6.html new file mode 100644 index 0000000..fa5d74c --- /dev/null +++ b/doxygen_files/html/search/defines_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_6.js b/doxygen_files/html/search/defines_6.js new file mode 100644 index 0000000..853b156 --- /dev/null +++ b/doxygen_files/html/search/defines_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['i2c_5ffreq',['I2C_FREQ',['../as5601_8h.html#a8b7500a141450a9df212017430c0df9e',1,'I2C_FREQ(): as5601.h'],['../i2c__mux_8h.html#a8b7500a141450a9df212017430c0df9e',1,'I2C_FREQ(): i2c_mux.h']]] +]; diff --git a/doxygen_files/html/search/defines_7.html b/doxygen_files/html/search/defines_7.html new file mode 100644 index 0000000..9905408 --- /dev/null +++ b/doxygen_files/html/search/defines_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_7.js b/doxygen_files/html/search/defines_7.js new file mode 100644 index 0000000..1d8de1b --- /dev/null +++ b/doxygen_files/html/search/defines_7.js @@ -0,0 +1,24 @@ +var searchData= +[ + ['m1fb',['M1FB',['../rotator__pins_8h.html#a4e12c241b5699b8487b50dbda38a2714',1,'rotator_pins.h']]], + ['m1in1',['M1IN1',['../rotator__pins_8h.html#a52eb32b92f0d0d1fdfc59a83e22d389d',1,'rotator_pins.h']]], + ['m1in2',['M1IN2',['../rotator__pins_8h.html#a157fe9dc9b50d6f912b57b3422848700',1,'rotator_pins.h']]], + ['m1sf',['M1SF',['../rotator__pins_8h.html#a1bef437ea4477b69d7417946685cc582',1,'rotator_pins.h']]], + ['m2fb',['M2FB',['../rotator__pins_8h.html#a756234870d4fec1dfb965e5a4ef4b5cd',1,'rotator_pins.h']]], + ['m2in1',['M2IN1',['../rotator__pins_8h.html#ad43a98121cb04032302978a3319ba24e',1,'rotator_pins.h']]], + ['m2in2',['M2IN2',['../rotator__pins_8h.html#a1f7e92e76bed5849fc1edc2e42c995dc',1,'rotator_pins.h']]], + ['m2sf',['M2SF',['../rotator__pins_8h.html#a84c33ece7372e98a2b47c81491a06474',1,'rotator_pins.h']]], + ['magnitude_5fhigh',['MAGNITUDE_HIGH',['../as5601_8h.html#a44cb76675b777aed3142556943702c80',1,'as5601.h']]], + ['magnitude_5flow',['MAGNITUDE_LOW',['../as5601_8h.html#a27977fa09cf94bdf6e6f0f3d78d29c2e',1,'as5601.h']]], + ['max_5facceleration',['MAX_ACCELERATION',['../stepper__motor__controller_8ino.html#a58daa60c7e280af9449f3cc46097652b',1,'stepper_motor_controller.ino']]], + ['max_5fm1_5fangle',['MAX_M1_ANGLE',['../dc__motor__controller_8ino.html#ac81f1607c784261cee0a9759a35f18ff',1,'MAX_M1_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#ac81f1607c784261cee0a9759a35f18ff',1,'MAX_M1_ANGLE(): stepper_motor_controller.ino']]], + ['max_5fm2_5fangle',['MAX_M2_ANGLE',['../dc__motor__controller_8ino.html#acaea33d85a46b9afdd404f6a45da8470',1,'MAX_M2_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#acaea33d85a46b9afdd404f6a45da8470',1,'MAX_M2_ANGLE(): stepper_motor_controller.ino']]], + ['max_5fpwm',['MAX_PWM',['../dc__motor__controller_8ino.html#a1df990f1a1fc97b95e8d53f719968026',1,'dc_motor_controller.ino']]], + ['max_5fspeed',['MAX_SPEED',['../stepper__motor__controller_8ino.html#ac2cd96d53dd3ba6407db6766c3d92b26',1,'stepper_motor_controller.ino']]], + ['microstep',['MICROSTEP',['../stepper__motor__controller_8ino.html#aca9cca604052ac7a6f173b58b7d6e126',1,'stepper_motor_controller.ino']]], + ['min_5fm1_5fangle',['MIN_M1_ANGLE',['../dc__motor__controller_8ino.html#af4acc4b3e38c809c8ca4d84d5c1083cf',1,'MIN_M1_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#af4acc4b3e38c809c8ca4d84d5c1083cf',1,'MIN_M1_ANGLE(): stepper_motor_controller.ino']]], + ['min_5fm2_5fangle',['MIN_M2_ANGLE',['../dc__motor__controller_8ino.html#a45dd8cb284dc0672f292e90909ecc530',1,'MIN_M2_ANGLE(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a45dd8cb284dc0672f292e90909ecc530',1,'MIN_M2_ANGLE(): stepper_motor_controller.ino']]], + ['min_5fpulse_5fwidth',['MIN_PULSE_WIDTH',['../stepper__motor__controller_8ino.html#ad95c8286fc30ece77d632ad00a94d80e',1,'stepper_motor_controller.ino']]], + ['min_5fpwm',['MIN_PWM',['../dc__motor__controller_8ino.html#a8507f3c11d3addead8ca0fbd55616c62',1,'dc_motor_controller.ino']]], + ['motor_5fen',['MOTOR_EN',['../rotator__pins_8h.html#a30b8dc781a6fe8ee7745feac552cb858',1,'rotator_pins.h']]] +]; diff --git a/doxygen_files/html/search/defines_8.html b/doxygen_files/html/search/defines_8.html new file mode 100644 index 0000000..9098e18 --- /dev/null +++ b/doxygen_files/html/search/defines_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_8.js b/doxygen_files/html/search/defines_8.js new file mode 100644 index 0000000..4bb0a1d --- /dev/null +++ b/doxygen_files/html/search/defines_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['over_5ftemp',['OVER_TEMP',['../dc__motor__controller_8ino.html#adc250636bd54c7aa250dc02e87be44d3',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/defines_9.html b/doxygen_files/html/search/defines_9.html new file mode 100644 index 0000000..bdebe60 --- /dev/null +++ b/doxygen_files/html/search/defines_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_9.js b/doxygen_files/html/search/defines_9.js new file mode 100644 index 0000000..c5e5e7a --- /dev/null +++ b/doxygen_files/html/search/defines_9.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['pca9540_5fch0',['PCA9540_CH0',['../dc__motor__controller_8ino.html#a7d702f8ac756be3372676abde2bba4d1',1,'dc_motor_controller.ino']]], + ['pca9540_5fch1',['PCA9540_CH1',['../dc__motor__controller_8ino.html#a474aca7989d2890727807058edc26bab',1,'dc_motor_controller.ino']]], + ['pca9540_5fid',['PCA9540_ID',['../dc__motor__controller_8ino.html#a38d90dee2ed358ec8876fd872c901708',1,'dc_motor_controller.ino']]], + ['pin12',['PIN12',['../rotator__pins_8h.html#a0157ab3e88e2635fceafe002a02cec6e',1,'rotator_pins.h']]], + ['pin13',['PIN13',['../rotator__pins_8h.html#a5a4d13c57f4d208901b04a7044774293',1,'rotator_pins.h']]], + ['position_5fdeadzone',['POSITION_DEADZONE',['../dc__motor__controller_8ino.html#a962555911ea5b066ed756407100097eb',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/defines_a.html b/doxygen_files/html/search/defines_a.html new file mode 100644 index 0000000..d6b491a --- /dev/null +++ b/doxygen_files/html/search/defines_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_a.js b/doxygen_files/html/search/defines_a.js new file mode 100644 index 0000000..3b9e9f4 --- /dev/null +++ b/doxygen_files/html/search/defines_a.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['ratio',['RATIO',['../dc__motor__controller_8ino.html#a7e8b3c8482e593df0ace933ad3de22ee',1,'RATIO(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a7e8b3c8482e593df0ace933ad3de22ee',1,'RATIO(): stepper_motor_controller.ino']]], + ['raw_5fang_5fhigh',['RAW_ANG_HIGH',['../as5601_8h.html#a0f32fbf0619653f8582cfbb9b5022868',1,'as5601.h']]], + ['raw_5fang_5flow',['RAW_ANG_LOW',['../as5601_8h.html#a60e1d311be398853144f59e1d2a37be1',1,'as5601.h']]], + ['rs485_5fdir',['RS485_DIR',['../rotator__pins_8h.html#a63538aadae7384dfdeae19989b6d5692',1,'rotator_pins.h']]], + ['rs485_5ftx_5ftime',['RS485_TX_TIME',['../easycomm_8h.html#aa097ac5ab6b9f25ce18fedfb8ffe43ef',1,'easycomm.h']]] +]; diff --git a/doxygen_files/html/search/defines_b.html b/doxygen_files/html/search/defines_b.html new file mode 100644 index 0000000..48f6b2b --- /dev/null +++ b/doxygen_files/html/search/defines_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_b.js b/doxygen_files/html/search/defines_b.js new file mode 100644 index 0000000..e9ca31a --- /dev/null +++ b/doxygen_files/html/search/defines_b.js @@ -0,0 +1,10 @@ +var searchData= +[ + ['sample_5ftime',['SAMPLE_TIME',['../dc__motor__controller_8ino.html#a6f6f49388c74bb24a8f63771bd997d97',1,'SAMPLE_TIME(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a6f6f49388c74bb24a8f63771bd997d97',1,'SAMPLE_TIME(): stepper_motor_controller.ino']]], + ['scl_5fpin',['SCL_PIN',['../rotator__pins_8h.html#a06c967e78bcedcee909a70764f879433',1,'rotator_pins.h']]], + ['sda_5fpin',['SDA_PIN',['../rotator__pins_8h.html#a526d580d324bce60a3e964066fae77e3',1,'rotator_pins.h']]], + ['spr',['SPR',['../stepper__motor__controller_8ino.html#abc0e9de1ad11261774993fbad495209e',1,'stepper_motor_controller.ino']]], + ['status_5freg',['STATUS_REG',['../as5601_8h.html#a1f7e79cfe81dc06414550fa52418941e',1,'as5601.h']]], + ['sw1',['SW1',['../rotator__pins_8h.html#ad98a4599f8bbf48bb5b425ce5edb5a42',1,'rotator_pins.h']]], + ['sw2',['SW2',['../rotator__pins_8h.html#a276a7c4ba0f813d53715e2ec2595d906',1,'rotator_pins.h']]] +]; diff --git a/doxygen_files/html/search/defines_c.html b/doxygen_files/html/search/defines_c.html new file mode 100644 index 0000000..920a947 --- /dev/null +++ b/doxygen_files/html/search/defines_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/defines_c.js b/doxygen_files/html/search/defines_c.js new file mode 100644 index 0000000..c1c0e97 --- /dev/null +++ b/doxygen_files/html/search/defines_c.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['tc74_5fawake_5fcommand',['TC74_AWAKE_COMMAND',['../tc74_8h.html#ad08dad0d1a91b91db4885beeeb645771',1,'tc74.h']]], + ['tc74_5fconfiguration_5fregister',['TC74_CONFIGURATION_REGISTER',['../tc74_8h.html#a6ba5fdf8b49e61a58c97feb5bc35f9e3',1,'tc74.h']]], + ['tc74_5fdata_5fready_5fflag',['TC74_DATA_READY_FLAG',['../tc74_8h.html#ab77abc7de3ca9f3753905259d339069b',1,'tc74.h']]], + ['tc74_5fid',['TC74_ID',['../dc__motor__controller_8ino.html#adc66ef1790bc83e927ba7e4f3686e65c',1,'dc_motor_controller.ino']]], + ['tc74_5fstandby_5fcommand',['TC74_STANDBY_COMMAND',['../tc74_8h.html#a12e2bb5245f9bf9487853ad58c0b1011',1,'tc74.h']]], + ['tc74_5ftemperature_5fregister',['TC74_TEMPERATURE_REGISTER',['../tc74_8h.html#ae96d6b2a5131b4f3943d894c30fb42fb',1,'tc74.h']]] +]; diff --git a/doxygen_files/html/search/enums_0.html b/doxygen_files/html/search/enums_0.html new file mode 100644 index 0000000..9efcd1b --- /dev/null +++ b/doxygen_files/html/search/enums_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enums_0.js b/doxygen_files/html/search/enums_0.js new file mode 100644 index 0000000..2e50b7e --- /dev/null +++ b/doxygen_files/html/search/enums_0.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['_5fcontrol_5fmode',['_control_mode',['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33',1,'globals.h']]], + ['_5frotator_5ferror',['_rotator_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1',1,'globals.h']]], + ['_5frotator_5fstatus',['_rotator_status',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_0.html b/doxygen_files/html/search/enumvalues_0.html new file mode 100644 index 0000000..03fdfad --- /dev/null +++ b/doxygen_files/html/search/enumvalues_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_0.js b/doxygen_files/html/search/enumvalues_0.js new file mode 100644 index 0000000..e0862fa --- /dev/null +++ b/doxygen_files/html/search/enumvalues_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['error',['error',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ad606e435413ea0944dd00d49e901e4ed',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_1.html b/doxygen_files/html/search/enumvalues_1.html new file mode 100644 index 0000000..abeea56 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_1.js b/doxygen_files/html/search/enumvalues_1.js new file mode 100644 index 0000000..3966bb9 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['homing_5ferror',['homing_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a83cf4d6b86174dccaf2a83810b4f83b6',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_2.html b/doxygen_files/html/search/enumvalues_2.html new file mode 100644 index 0000000..9028998 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_2.js b/doxygen_files/html/search/enumvalues_2.js new file mode 100644 index 0000000..6399c42 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['idle',['idle',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501a0e9a37114c0e458d28d52f06ec0f2242',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_3.html b/doxygen_files/html/search/enumvalues_3.html new file mode 100644 index 0000000..b152efc --- /dev/null +++ b/doxygen_files/html/search/enumvalues_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_3.js b/doxygen_files/html/search/enumvalues_3.js new file mode 100644 index 0000000..3463586 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['motor_5ferror',['motor_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1ab3e9a59dba488d350b0eabd4962a67af',1,'globals.h']]], + ['moving',['moving',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ab4be0aa0ed7631ee6c4a434c66cd86bf',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_4.html b/doxygen_files/html/search/enumvalues_4.html new file mode 100644 index 0000000..3f50abb --- /dev/null +++ b/doxygen_files/html/search/enumvalues_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_4.js b/doxygen_files/html/search/enumvalues_4.js new file mode 100644 index 0000000..3df0484 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['no_5ferror',['no_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a1f1efebf2c41e3bef0fef1862bf5f0c4',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_5.html b/doxygen_files/html/search/enumvalues_5.html new file mode 100644 index 0000000..b6f20f2 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_5.js b/doxygen_files/html/search/enumvalues_5.js new file mode 100644 index 0000000..0364936 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['over_5ftemperature',['over_temperature',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a717423059b8c506b73ed007b6a8c3bca',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_6.html b/doxygen_files/html/search/enumvalues_6.html new file mode 100644 index 0000000..93be129 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_6.js b/doxygen_files/html/search/enumvalues_6.js new file mode 100644 index 0000000..6853566 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['pointing',['pointing',['../globals_8h.html#ae09bc16eee2b545dd6a98d700c3e3501ad975d8e65ab97856d5861bd3065e4f67',1,'globals.h']]], + ['position',['position',['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33a186286c1e4467cf7aeb7d01bca2ba162',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_7.html b/doxygen_files/html/search/enumvalues_7.html new file mode 100644 index 0000000..9fefbd6 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_7.js b/doxygen_files/html/search/enumvalues_7.js new file mode 100644 index 0000000..cf0efa3 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['sensor_5ferror',['sensor_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a13da766a5299f2f7015a5922277088b4',1,'globals.h']]], + ['speed',['speed',['../globals_8h.html#a011a2a3681d95bf0def772367ba6ad33a3d18b3fd8daa40d26a07452c9de67a87',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/enumvalues_8.html b/doxygen_files/html/search/enumvalues_8.html new file mode 100644 index 0000000..03f17f8 --- /dev/null +++ b/doxygen_files/html/search/enumvalues_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/enumvalues_8.js b/doxygen_files/html/search/enumvalues_8.js new file mode 100644 index 0000000..01029ff --- /dev/null +++ b/doxygen_files/html/search/enumvalues_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wdt_5ferror',['wdt_error',['../globals_8h.html#a455fc53a09c638322a14f309a295e7f1a33b2cd89605d2c298f0f1b447eb794fb',1,'globals.h']]] +]; diff --git a/doxygen_files/html/search/files_0.html b/doxygen_files/html/search/files_0.html new file mode 100644 index 0000000..49606c8 --- /dev/null +++ b/doxygen_files/html/search/files_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_0.js b/doxygen_files/html/search/files_0.js new file mode 100644 index 0000000..02a2599 --- /dev/null +++ b/doxygen_files/html/search/files_0.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['abi_2ecpp_2ed',['abi.cpp.d',['../abi_8cpp_8d.html',1,'']]], + ['as5601_2eh',['as5601.h',['../as5601_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_1.html b/doxygen_files/html/search/files_1.html new file mode 100644 index 0000000..c887174 --- /dev/null +++ b/doxygen_files/html/search/files_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_1.js b/doxygen_files/html/search/files_1.js new file mode 100644 index 0000000..bff98f0 --- /dev/null +++ b/doxygen_files/html/search/files_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['cdc_2ecpp_2ed',['CDC.cpp.d',['../CDC_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_2.html b/doxygen_files/html/search/files_2.html new file mode 100644 index 0000000..99bdf21 --- /dev/null +++ b/doxygen_files/html/search/files_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_2.js b/doxygen_files/html/search/files_2.js new file mode 100644 index 0000000..861c628 --- /dev/null +++ b/doxygen_files/html/search/files_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['dc_5fmotor_5fcontroller_2eino',['dc_motor_controller.ino',['../dc__motor__controller_8ino.html',1,'']]], + ['dc_5fmotor_5fcontroller_2eino_2ed',['dc_motor_controller.ino.d',['../dc__motor__controller_8ino_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_3.html b/doxygen_files/html/search/files_3.html new file mode 100644 index 0000000..f8e543a --- /dev/null +++ b/doxygen_files/html/search/files_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_3.js b/doxygen_files/html/search/files_3.js new file mode 100644 index 0000000..b60d346 --- /dev/null +++ b/doxygen_files/html/search/files_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['easycomm_2eh',['easycomm.h',['../easycomm_8h.html',1,'']]], + ['endstop_2eh',['endstop.h',['../endstop_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_4.html b/doxygen_files/html/search/files_4.html new file mode 100644 index 0000000..2ebb46c --- /dev/null +++ b/doxygen_files/html/search/files_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_4.js b/doxygen_files/html/search/files_4.js new file mode 100644 index 0000000..00952c6 --- /dev/null +++ b/doxygen_files/html/search/files_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['globals_2eh',['globals.h',['../globals_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_5.html b/doxygen_files/html/search/files_5.html new file mode 100644 index 0000000..268b7eb --- /dev/null +++ b/doxygen_files/html/search/files_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_5.js b/doxygen_files/html/search/files_5.js new file mode 100644 index 0000000..252f98e --- /dev/null +++ b/doxygen_files/html/search/files_5.js @@ -0,0 +1,9 @@ +var searchData= +[ + ['hardwareserial_2ecpp_2ed',['HardwareSerial.cpp.d',['../HardwareSerial_8cpp_8d.html',1,'']]], + ['hardwareserial0_2ecpp_2ed',['HardwareSerial0.cpp.d',['../HardwareSerial0_8cpp_8d.html',1,'']]], + ['hardwareserial1_2ecpp_2ed',['HardwareSerial1.cpp.d',['../HardwareSerial1_8cpp_8d.html',1,'']]], + ['hardwareserial2_2ecpp_2ed',['HardwareSerial2.cpp.d',['../HardwareSerial2_8cpp_8d.html',1,'']]], + ['hardwareserial3_2ecpp_2ed',['HardwareSerial3.cpp.d',['../HardwareSerial3_8cpp_8d.html',1,'']]], + ['hooks_2ec_2ed',['hooks.c.d',['../hooks_8c_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_6.html b/doxygen_files/html/search/files_6.html new file mode 100644 index 0000000..98fc666 --- /dev/null +++ b/doxygen_files/html/search/files_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_6.js b/doxygen_files/html/search/files_6.js new file mode 100644 index 0000000..7d19a49 --- /dev/null +++ b/doxygen_files/html/search/files_6.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['i2c_5fmux_2eh',['i2c_mux.h',['../i2c__mux_8h.html',1,'']]], + ['ipaddress_2ecpp_2ed',['IPAddress.cpp.d',['../IPAddress_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_7.html b/doxygen_files/html/search/files_7.html new file mode 100644 index 0000000..49507de --- /dev/null +++ b/doxygen_files/html/search/files_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_7.js b/doxygen_files/html/search/files_7.js new file mode 100644 index 0000000..e225e09 --- /dev/null +++ b/doxygen_files/html/search/files_7.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['main_2ecpp_2ed',['main.cpp.d',['../main_8cpp_8d.html',1,'']]], + ['motor_2eh',['motor.h',['../motor_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_8.html b/doxygen_files/html/search/files_8.html new file mode 100644 index 0000000..12c6630 --- /dev/null +++ b/doxygen_files/html/search/files_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_8.js b/doxygen_files/html/search/files_8.js new file mode 100644 index 0000000..15525b9 --- /dev/null +++ b/doxygen_files/html/search/files_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['new_2ecpp_2ed',['new.cpp.d',['../new_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_9.html b/doxygen_files/html/search/files_9.html new file mode 100644 index 0000000..cabcae2 --- /dev/null +++ b/doxygen_files/html/search/files_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_9.js b/doxygen_files/html/search/files_9.js new file mode 100644 index 0000000..d1175dd --- /dev/null +++ b/doxygen_files/html/search/files_9.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['pid_5fv1_2ecpp_2ed',['PID_v1.cpp.d',['../PID__v1_8cpp_8d.html',1,'']]], + ['pluggableusb_2ecpp_2ed',['PluggableUSB.cpp.d',['../PluggableUSB_8cpp_8d.html',1,'']]], + ['print_2ecpp_2ed',['Print.cpp.d',['../Print_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_a.html b/doxygen_files/html/search/files_a.html new file mode 100644 index 0000000..f740221 --- /dev/null +++ b/doxygen_files/html/search/files_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_a.js b/doxygen_files/html/search/files_a.js new file mode 100644 index 0000000..3bdd427 --- /dev/null +++ b/doxygen_files/html/search/files_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['readme_2emd',['README.md',['../README_8md.html',1,'']]], + ['rotator_5fpins_2eh',['rotator_pins.h',['../rotator__pins_8h.html',1,'']]], + ['rs485_2eh',['rs485.h',['../rs485_8h.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_b.html b/doxygen_files/html/search/files_b.html new file mode 100644 index 0000000..7be1003 --- /dev/null +++ b/doxygen_files/html/search/files_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_b.js b/doxygen_files/html/search/files_b.js new file mode 100644 index 0000000..bf90074 --- /dev/null +++ b/doxygen_files/html/search/files_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['stepper_5fmotor_5fcontroller_2eino',['stepper_motor_controller.ino',['../stepper__motor__controller_8ino.html',1,'']]], + ['stream_2ecpp_2ed',['Stream.cpp.d',['../Stream_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_c.html b/doxygen_files/html/search/files_c.html new file mode 100644 index 0000000..c769b49 --- /dev/null +++ b/doxygen_files/html/search/files_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_c.js b/doxygen_files/html/search/files_c.js new file mode 100644 index 0000000..75da63b --- /dev/null +++ b/doxygen_files/html/search/files_c.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['tc74_2eh',['tc74.h',['../tc74_8h.html',1,'']]], + ['tone_2ecpp_2ed',['Tone.cpp.d',['../Tone_8cpp_8d.html',1,'']]], + ['twi_2ec_2ed',['twi.c.d',['../twi_8c_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_d.html b/doxygen_files/html/search/files_d.html new file mode 100644 index 0000000..54e3977 --- /dev/null +++ b/doxygen_files/html/search/files_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_d.js b/doxygen_files/html/search/files_d.js new file mode 100644 index 0000000..4e61583 --- /dev/null +++ b/doxygen_files/html/search/files_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['usbcore_2ecpp_2ed',['USBCore.cpp.d',['../USBCore_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/files_e.html b/doxygen_files/html/search/files_e.html new file mode 100644 index 0000000..febb549 --- /dev/null +++ b/doxygen_files/html/search/files_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/files_e.js b/doxygen_files/html/search/files_e.js new file mode 100644 index 0000000..bf5b885 --- /dev/null +++ b/doxygen_files/html/search/files_e.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['watchdog_2eh',['watchdog.h',['../watchdog_8h.html',1,'']]], + ['winterrupts_2ec_2ed',['WInterrupts.c.d',['../WInterrupts_8c_8d.html',1,'']]], + ['wire_2ecpp_2ed',['Wire.cpp.d',['../Wire_8cpp_8d.html',1,'']]], + ['wiring_2ec_2ed',['wiring.c.d',['../wiring_8c_8d.html',1,'']]], + ['wiring_5fanalog_2ec_2ed',['wiring_analog.c.d',['../wiring__analog_8c_8d.html',1,'']]], + ['wiring_5fdigital_2ec_2ed',['wiring_digital.c.d',['../wiring__digital_8c_8d.html',1,'']]], + ['wiring_5fpulse_2ec_2ed',['wiring_pulse.c.d',['../wiring__pulse_8c_8d.html',1,'']]], + ['wiring_5fpulse_2es_2ed',['wiring_pulse.S.d',['../wiring__pulse_8S_8d.html',1,'']]], + ['wiring_5fshift_2ec_2ed',['wiring_shift.c.d',['../wiring__shift_8c_8d.html',1,'']]], + ['wmath_2ecpp_2ed',['WMath.cpp.d',['../WMath_8cpp_8d.html',1,'']]], + ['wstring_2ecpp_2ed',['WString.cpp.d',['../WString_8cpp_8d.html',1,'']]] +]; diff --git a/doxygen_files/html/search/functions_0.html b/doxygen_files/html/search/functions_0.html new file mode 100644 index 0000000..0539c8c --- /dev/null +++ b/doxygen_files/html/search/functions_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_0.js b/doxygen_files/html/search/functions_0.js new file mode 100644 index 0000000..f5a1c4f --- /dev/null +++ b/doxygen_files/html/search/functions_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['available',['available',['../classrs485.html#a204229ca0c3ee5d24d4c5eac9a543ef7',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/functions_1.html b/doxygen_files/html/search/functions_1.html new file mode 100644 index 0000000..4878b3d --- /dev/null +++ b/doxygen_files/html/search/functions_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_1.js b/doxygen_files/html/search/functions_1.js new file mode 100644 index 0000000..87c56b9 --- /dev/null +++ b/doxygen_files/html/search/functions_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['begin',['begin',['../classrs485.html#ab7cf3f6e3b6e6d79dc490145aa3c1b12',1,'rs485::begin()'],['../classAS5601.html#a51af9d44432ad5ccaa764a98d2450ec3',1,'AS5601::Begin()']]] +]; diff --git a/doxygen_files/html/search/functions_2.html b/doxygen_files/html/search/functions_2.html new file mode 100644 index 0000000..67d2a39 --- /dev/null +++ b/doxygen_files/html/search/functions_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_2.js b/doxygen_files/html/search/functions_2.js new file mode 100644 index 0000000..ac6c662 --- /dev/null +++ b/doxygen_files/html/search/functions_2.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['deg2step',['deg2step',['../stepper__motor__controller_8ino.html#a989afa0bbcee20968a0c01cb53bf3159',1,'stepper_motor_controller.ino']]], + ['disenable',['disenable',['../classmotor.html#ae21d592f52c6aa57a641ca3e99cf52b9',1,'motor']]] +]; diff --git a/doxygen_files/html/search/functions_3.html b/doxygen_files/html/search/functions_3.html new file mode 100644 index 0000000..1f0eedb --- /dev/null +++ b/doxygen_files/html/search/functions_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_3.js b/doxygen_files/html/search/functions_3.js new file mode 100644 index 0000000..540c258 --- /dev/null +++ b/doxygen_files/html/search/functions_3.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['easycomm_5finit',['easycomm_init',['../classeasycomm.html#a7db30a0f3a754dc281cbedab461d76f6',1,'easycomm']]], + ['easycomm_5fproc',['easycomm_proc',['../classeasycomm.html#a68c229f5c44074fae9992ec9ea605046',1,'easycomm']]], + ['enable',['enable',['../classmotor.html#abee35525f6340b3a8118e8711a6033b4',1,'motor']]], + ['end',['end',['../classrs485.html#a1a7d6743372a514e371f761d357b3bd8',1,'rs485']]], + ['endstop',['endstop',['../classendstop.html#accd7d557af506828fffb434809f422f1',1,'endstop']]] +]; diff --git a/doxygen_files/html/search/functions_4.html b/doxygen_files/html/search/functions_4.html new file mode 100644 index 0000000..c5bf87a --- /dev/null +++ b/doxygen_files/html/search/functions_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_4.js b/doxygen_files/html/search/functions_4.js new file mode 100644 index 0000000..2588093 --- /dev/null +++ b/doxygen_files/html/search/functions_4.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['flush',['flush',['../classrs485.html#af02e2635ac5bb688bc9f05895a983704',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/functions_5.html b/doxygen_files/html/search/functions_5.html new file mode 100644 index 0000000..a34446c --- /dev/null +++ b/doxygen_files/html/search/functions_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_5.js b/doxygen_files/html/search/functions_5.js new file mode 100644 index 0000000..fe1775a --- /dev/null +++ b/doxygen_files/html/search/functions_5.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['get_5fagc',['get_agc',['../classAS5601.html#ad8192e27c57aaef265e0649876ca6bf2',1,'AS5601']]], + ['get_5fconf',['get_conf',['../classAS5601.html#abfce6bb3f9888bca6c8527ea0d4fad88',1,'AS5601']]], + ['get_5ffault',['get_fault',['../classmotor.html#a3fb941091e69025a6ed7b66b2458b302',1,'motor']]], + ['get_5fload',['get_load',['../classmotor.html#ae106093068947e7b5453cfb70c06e83d',1,'motor']]], + ['get_5fmagnitude',['get_magnitude',['../classAS5601.html#a6fd828b9871407420fb8a277d13e769c',1,'AS5601']]], + ['get_5fpos',['get_pos',['../classAS5601.html#a9cbfc7e9a35fd7b4c0cfa04fec4bf0c5',1,'AS5601']]], + ['get_5fstate',['get_state',['../classendstop.html#a530a60aaf81bd5022e56df71c194dfbc',1,'endstop']]], + ['get_5fstatus',['get_status',['../classtc74.html#a91d194f87d6153a0556ab5fd857e66ee',1,'tc74']]], + ['get_5ftemp',['get_temp',['../classtc74.html#a5e923d126027ab1e7102b4a203698eb3',1,'tc74']]] +]; diff --git a/doxygen_files/html/search/functions_6.html b/doxygen_files/html/search/functions_6.html new file mode 100644 index 0000000..6fd4b1f --- /dev/null +++ b/doxygen_files/html/search/functions_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_6.js b/doxygen_files/html/search/functions_6.js new file mode 100644 index 0000000..d7b4976 --- /dev/null +++ b/doxygen_files/html/search/functions_6.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['homing',['homing',['../dc__motor__controller_8ino.html#acb27c796ddcae7f932e2898cba368c3b',1,'homing(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#afe48c9319f61788ed4622597bdaf17ab',1,'homing(int32_t seek_az, int32_t seek_el): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/functions_7.html b/doxygen_files/html/search/functions_7.html new file mode 100644 index 0000000..6e09abf --- /dev/null +++ b/doxygen_files/html/search/functions_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_7.js b/doxygen_files/html/search/functions_7.js new file mode 100644 index 0000000..2553e87 --- /dev/null +++ b/doxygen_files/html/search/functions_7.js @@ -0,0 +1,12 @@ +var searchData= +[ + ['i2c_5fbyte_5ftransaction',['i2c_byte_transaction',['../classAS5601.html#afcac1b1abeeea88e465694373136168a',1,'AS5601']]], + ['i2c_5fmux',['i2c_mux',['../classi2c__mux.html#aacb992d29412ed15eb0b8b1983dcf976',1,'i2c_mux']]], + ['i2c_5fword_5ftransaction',['i2c_word_transaction',['../classAS5601.html#a2d48c32082d4bfa19bde77d614cc78dc',1,'AS5601']]], + ['init',['init',['../classendstop.html#a6d24d7ed95ded92431288da42a6aebf9',1,'endstop::init()'],['../classi2c__mux.html#a297c753f7c9fd03b7a6be09a7d3bd87a',1,'i2c_mux::init()'],['../classtc74.html#a9e9df64f45929efc9b56b4668269ffbe',1,'tc74::init()']]], + ['init_5fpin',['init_pin',['../classmotor.html#a7c7a40ef8985fae55eda9b9254d760a7',1,'motor']]], + ['init_5ftimer',['init_timer',['../classmotor.html#a1aa585ea14305952469f95cb26f3ad2f',1,'motor']]], + ['init_5fzero',['init_zero',['../classAS5601.html#a865a4971a787bbdb9ff64fd31e2eb348',1,'AS5601']]], + ['isnumber',['isNumber',['../classeasycomm.html#a0da8917b93ae0d477791a86e1edeefb9',1,'easycomm']]], + ['isr',['ISR',['../watchdog_8h.html#a43905d6fb5c4d433a49f527fa6ab811f',1,'watchdog.h']]] +]; diff --git a/doxygen_files/html/search/functions_8.html b/doxygen_files/html/search/functions_8.html new file mode 100644 index 0000000..d59ea97 --- /dev/null +++ b/doxygen_files/html/search/functions_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_8.js b/doxygen_files/html/search/functions_8.js new file mode 100644 index 0000000..8945610 --- /dev/null +++ b/doxygen_files/html/search/functions_8.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['loop',['loop',['../dc__motor__controller_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'loop(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#afe461d27b9c48d5921c00d521181f12f',1,'loop(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/functions_9.html b/doxygen_files/html/search/functions_9.html new file mode 100644 index 0000000..5ccec42 --- /dev/null +++ b/doxygen_files/html/search/functions_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_9.js b/doxygen_files/html/search/functions_9.js new file mode 100644 index 0000000..774feba --- /dev/null +++ b/doxygen_files/html/search/functions_9.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['motor',['motor',['../classmotor.html#a2a035f9f051ce59d705654966dd95851',1,'motor']]], + ['move',['move',['../classmotor.html#a01f848ad7e9ff16b4cb61174d3a5a084',1,'motor']]] +]; diff --git a/doxygen_files/html/search/functions_a.html b/doxygen_files/html/search/functions_a.html new file mode 100644 index 0000000..3958eb7 --- /dev/null +++ b/doxygen_files/html/search/functions_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_a.js b/doxygen_files/html/search/functions_a.js new file mode 100644 index 0000000..e6e385d --- /dev/null +++ b/doxygen_files/html/search/functions_a.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['print',['print',['../classrs485.html#acffe305907c9de94dda20135bc6ad93a',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/functions_b.html b/doxygen_files/html/search/functions_b.html new file mode 100644 index 0000000..b99b702 --- /dev/null +++ b/doxygen_files/html/search/functions_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_b.js b/doxygen_files/html/search/functions_b.js new file mode 100644 index 0000000..c604b87 --- /dev/null +++ b/doxygen_files/html/search/functions_b.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['read',['read',['../classrs485.html#ac549517006a6b2cff970e3390ccd2c45',1,'rs485']]], + ['rs485',['rs485',['../classrs485.html#acd42457ff65a8979a5cdd62b64d1b905',1,'rs485::rs485()'],['../easycomm_8h.html#abdffa1ce6a347f355c4de274ec721357',1,'rs485(): easycomm.h']]] +]; diff --git a/doxygen_files/html/search/functions_c.html b/doxygen_files/html/search/functions_c.html new file mode 100644 index 0000000..3a33d87 --- /dev/null +++ b/doxygen_files/html/search/functions_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_c.js b/doxygen_files/html/search/functions_c.js new file mode 100644 index 0000000..38c951e --- /dev/null +++ b/doxygen_files/html/search/functions_c.js @@ -0,0 +1,14 @@ +var searchData= +[ + ['set_5fchannel',['set_channel',['../classi2c__mux.html#af4a7327c09d2f0ea8ee5a5797871e876',1,'i2c_mux']]], + ['set_5fgear_5fratio',['set_gear_ratio',['../classAS5601.html#aeb9eb168d26d44261dc37d4ca54ae24f',1,'AS5601']]], + ['set_5fmax',['set_max',['../classmotor.html#a9881112348f2cf0d338fc47fefd66f15',1,'motor']]], + ['set_5fmin',['set_min',['../classmotor.html#afcebea9102569fa416a2872f0d33b32e',1,'motor']]], + ['set_5fzero',['set_zero',['../classAS5601.html#af760a7dd400974baf9daebad22920bdb',1,'AS5601']]], + ['setup',['setup',['../dc__motor__controller_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'setup(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a4fc01d736fe50cf5b977f755b675f11d',1,'setup(): stepper_motor_controller.ino']]], + ['sleep',['sleep',['../classtc74.html#a5304cfec3e2fd0955db133ae0892c734',1,'tc74']]], + ['step2deg',['step2deg',['../stepper__motor__controller_8ino.html#a8d74466a27b92f353f6e74a079bb228d',1,'stepper_motor_controller.ino']]], + ['stepper_5faz',['stepper_az',['../stepper__motor__controller_8ino.html#ac9a4325f61d2c3b2f45582cc3234df41',1,'stepper_motor_controller.ino']]], + ['stepper_5fel',['stepper_el',['../stepper__motor__controller_8ino.html#ae50506f007819f8841a2ead6e8ddb509',1,'stepper_motor_controller.ino']]], + ['stop',['stop',['../classmotor.html#a9395e462f009a775c5fbe11f4c39150c',1,'motor']]] +]; diff --git a/doxygen_files/html/search/functions_d.html b/doxygen_files/html/search/functions_d.html new file mode 100644 index 0000000..31b75b8 --- /dev/null +++ b/doxygen_files/html/search/functions_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_d.js b/doxygen_files/html/search/functions_d.js new file mode 100644 index 0000000..340b520 --- /dev/null +++ b/doxygen_files/html/search/functions_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['tc74',['tc74',['../classtc74.html#a0adb7370c49b3f39787270357a07d12c',1,'tc74']]] +]; diff --git a/doxygen_files/html/search/functions_e.html b/doxygen_files/html/search/functions_e.html new file mode 100644 index 0000000..cddb9bb --- /dev/null +++ b/doxygen_files/html/search/functions_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/functions_e.js b/doxygen_files/html/search/functions_e.js new file mode 100644 index 0000000..c804190 --- /dev/null +++ b/doxygen_files/html/search/functions_e.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['wake_5fup',['wake_up',['../classtc74.html#a9e10af3dbd52592f902f81885dc166d2',1,'tc74']]], + ['watchdog_5finit',['watchdog_init',['../classwdt__timer.html#a4463b57c8af9b89797cb222c745c0355',1,'wdt_timer']]], + ['watchdog_5freset',['watchdog_reset',['../classwdt__timer.html#a1be743743ff4d19d726a45c2d49fbada',1,'wdt_timer']]] +]; diff --git a/doxygen_files/html/search/mag_sel.png b/doxygen_files/html/search/mag_sel.png new file mode 100644 index 0000000000000000000000000000000000000000..81f6040a2092402b4d98f9ffa8855d12a0d4ca17 GIT binary patch literal 563 zcmV-30?hr1P)zxx&tqG15pu7)IiiXFflOc2k;dXd>%13GZAy? zRz!q0=|E6a6vV)&ZBS~G9oe0kbqyw1*gvY`{Pop2oKq#FlzgXt@Xh-7fxh>}`Fxg> z$%N%{$!4=5nM{(;=c!aG1Ofr^Do{u%Ih{^&Fc@H2)+a-?TBXrw5DW&z%Nb6mQ!L9O zl}b@6mB?f=tX3;#vl)}ggh(Vpyh(IK z(Mb0D{l{U$FsRjP;!{($+bsaaVi8T#1c0V#qEIOCYa9@UVLV`f__E81L;?WEaRA;Y zUH;rZ;vb;mk7JX|$=i3O~&If0O@oZfLg8gfIjW=dcBsz;gI=!{-r4# z4%6v$&~;q^j7Fo67yJ(NJWuX+I~I!tj^nW3?}^9bq|<3^+vapS5sgM^x7!cs(+mMT z&y%j};&~po+YO)3hoUH4E*E;e9>?R6SS&`X)p`njycAVcg{rEb41T{~Hk(bl-7eSb zmFxA2uIqo#@R?lKm50ND`~6Nfn|-b1|L6O98vt3Tx@gKz#isxO002ovPDHLkV1kyW B_l^Jn literal 0 HcmV?d00001 diff --git a/doxygen_files/html/search/nomatches.html b/doxygen_files/html/search/nomatches.html new file mode 100644 index 0000000..b1ded27 --- /dev/null +++ b/doxygen_files/html/search/nomatches.html @@ -0,0 +1,12 @@ + + + + + + + +
    +
    No Matches
    +
    + + diff --git a/doxygen_files/html/search/pages_0.html b/doxygen_files/html/search/pages_0.html new file mode 100644 index 0000000..d752858 --- /dev/null +++ b/doxygen_files/html/search/pages_0.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/pages_0.js b/doxygen_files/html/search/pages_0.js new file mode 100644 index 0000000..e1925f9 --- /dev/null +++ b/doxygen_files/html/search/pages_0.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['satnogs_20rotator_20firmware',['SatNOGS Rotator Firmware',['../index.html',1,'']]] +]; diff --git a/doxygen_files/html/search/pages_1.html b/doxygen_files/html/search/pages_1.html new file mode 100644 index 0000000..924fb48 --- /dev/null +++ b/doxygen_files/html/search/pages_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/pages_1.js b/doxygen_files/html/search/pages_1.js new file mode 100644 index 0000000..ac06e3b --- /dev/null +++ b/doxygen_files/html/search/pages_1.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['satnogs_20rotator_20firmware',['SatNOGS Rotator Firmware',['../md_README.html',1,'']]] +]; diff --git a/doxygen_files/html/search/search.css b/doxygen_files/html/search/search.css new file mode 100644 index 0000000..3cf9df9 --- /dev/null +++ b/doxygen_files/html/search/search.css @@ -0,0 +1,271 @@ +/*---------------- Search Box */ + +#FSearchBox { + float: left; +} + +#MSearchBox { + white-space : nowrap; + float: none; + margin-top: 8px; + right: 0px; + width: 170px; + height: 24px; + z-index: 102; +} + +#MSearchBox .left +{ + display:block; + position:absolute; + left:10px; + width:20px; + height:19px; + background:url('search_l.png') no-repeat; + background-position:right; +} + +#MSearchSelect { + display:block; + position:absolute; + width:20px; + height:19px; +} + +.left #MSearchSelect { + left:4px; +} + +.right #MSearchSelect { + right:5px; +} + +#MSearchField { + display:block; + position:absolute; + height:19px; + background:url('search_m.png') repeat-x; + border:none; + width:115px; + margin-left:20px; + padding-left:4px; + color: #909090; + outline: none; + font: 9pt Arial, Verdana, sans-serif; + -webkit-border-radius: 0px; +} + +#FSearchBox #MSearchField { + margin-left:15px; +} + +#MSearchBox .right { + display:block; + position:absolute; + right:10px; + top:8px; + width:20px; + height:19px; + background:url('search_r.png') no-repeat; + background-position:left; +} + +#MSearchClose { + display: none; + position: absolute; + top: 4px; + background : none; + border: none; + margin: 0px 4px 0px 0px; + padding: 0px 0px; + outline: none; +} + +.left #MSearchClose { + left: 6px; +} + +.right #MSearchClose { + right: 2px; +} + +.MSearchBoxActive #MSearchField { + color: #000000; +} + +/*---------------- Search filter selection */ + +#MSearchSelectWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #90A5CE; + background-color: #F9FAFC; + z-index: 10001; + padding-top: 4px; + padding-bottom: 4px; + -moz-border-radius: 4px; + -webkit-border-top-left-radius: 4px; + -webkit-border-top-right-radius: 4px; + -webkit-border-bottom-left-radius: 4px; + -webkit-border-bottom-right-radius: 4px; + -webkit-box-shadow: 5px 5px 5px rgba(0, 0, 0, 0.15); +} + +.SelectItem { + font: 8pt Arial, Verdana, sans-serif; + padding-left: 2px; + padding-right: 12px; + border: 0px; +} + +span.SelectionMark { + margin-right: 4px; + font-family: monospace; + outline-style: none; + text-decoration: none; +} + +a.SelectItem { + display: block; + outline-style: none; + color: #000000; + text-decoration: none; + padding-left: 6px; + padding-right: 12px; +} + +a.SelectItem:focus, +a.SelectItem:active { + color: #000000; + outline-style: none; + text-decoration: none; +} + +a.SelectItem:hover { + color: #FFFFFF; + background-color: #3D578C; + outline-style: none; + text-decoration: none; + cursor: pointer; + display: block; +} + +/*---------------- Search results window */ + +iframe#MSearchResults { + width: 60ex; + height: 15em; +} + +#MSearchResultsWindow { + display: none; + position: absolute; + left: 0; top: 0; + border: 1px solid #000; + background-color: #EEF1F7; + z-index:10000; +} + +/* ----------------------------------- */ + + +#SRIndex { + clear:both; + padding-bottom: 15px; +} + +.SREntry { + font-size: 10pt; + padding-left: 1ex; +} + +.SRPage .SREntry { + font-size: 8pt; + padding: 1px 5px; +} + +body.SRPage { + margin: 5px 2px; +} + +.SRChildren { + padding-left: 3ex; padding-bottom: .5em +} + +.SRPage .SRChildren { + display: none; +} + +.SRSymbol { + font-weight: bold; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRScope { + display: block; + color: #425E97; + font-family: Arial, Verdana, sans-serif; + text-decoration: none; + outline: none; +} + +a.SRSymbol:focus, a.SRSymbol:active, +a.SRScope:focus, a.SRScope:active { + text-decoration: underline; +} + +span.SRScope { + padding-left: 4px; +} + +.SRPage .SRStatus { + padding: 2px 5px; + font-size: 8pt; + font-style: italic; +} + +.SRResult { + display: none; +} + +DIV.searchresults { + margin-left: 10px; + margin-right: 10px; +} + +/*---------------- External search page results */ + +.searchresult { + background-color: #F0F3F8; +} + +.pages b { + color: white; + padding: 5px 5px 3px 5px; + background-image: url("../tab_a.png"); + background-repeat: repeat-x; + text-shadow: 0 1px 1px #000000; +} + +.pages { + line-height: 17px; + margin-left: 4px; + text-decoration: none; +} + +.hl { + font-weight: bold; +} + +#searchresults { + margin-bottom: 20px; +} + +.searchpages { + margin-top: 10px; +} + diff --git a/doxygen_files/html/search/search.js b/doxygen_files/html/search/search.js new file mode 100644 index 0000000..a554ab9 --- /dev/null +++ b/doxygen_files/html/search/search.js @@ -0,0 +1,814 @@ +/* + @licstart The following is the entire license notice for the + JavaScript code in this file. + + Copyright (C) 1997-2017 by Dimitri van Heesch + + 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. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License along + with this program; if not, write to the Free Software Foundation, Inc., + 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. + + @licend The above is the entire license notice + for the JavaScript code in this file + */ +function convertToId(search) +{ + var result = ''; + for (i=0;i do a search + { + this.Search(); + } + } + + this.OnSearchSelectKey = function(evt) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==40 && this.searchIndex0) // Up + { + this.searchIndex--; + this.OnSelectItem(this.searchIndex); + } + else if (e.keyCode==13 || e.keyCode==27) + { + this.OnSelectItem(this.searchIndex); + this.CloseSelectionWindow(); + this.DOMSearchField().focus(); + } + return false; + } + + // --------- Actions + + // Closes the results window. + this.CloseResultsWindow = function() + { + this.DOMPopupSearchResultsWindow().style.display = 'none'; + this.DOMSearchClose().style.display = 'none'; + this.Activate(false); + } + + this.CloseSelectionWindow = function() + { + this.DOMSearchSelectWindow().style.display = 'none'; + } + + // Performs a search. + this.Search = function() + { + this.keyTimeout = 0; + + // strip leading whitespace + var searchValue = this.DOMSearchField().value.replace(/^ +/, ""); + + var code = searchValue.toLowerCase().charCodeAt(0); + var idxChar = searchValue.substr(0, 1).toLowerCase(); + if ( 0xD800 <= code && code <= 0xDBFF && searchValue > 1) // surrogate pair + { + idxChar = searchValue.substr(0, 2); + } + + var resultsPage; + var resultsPageWithSearch; + var hasResultsPage; + + var idx = indexSectionsWithContent[this.searchIndex].indexOf(idxChar); + if (idx!=-1) + { + var hexCode=idx.toString(16); + resultsPage = this.resultsPath + '/' + indexSectionNames[this.searchIndex] + '_' + hexCode + '.html'; + resultsPageWithSearch = resultsPage+'?'+escape(searchValue); + hasResultsPage = true; + } + else // nothing available for this search term + { + resultsPage = this.resultsPath + '/nomatches.html'; + resultsPageWithSearch = resultsPage; + hasResultsPage = false; + } + + window.frames.MSearchResults.location = resultsPageWithSearch; + var domPopupSearchResultsWindow = this.DOMPopupSearchResultsWindow(); + + if (domPopupSearchResultsWindow.style.display!='block') + { + var domSearchBox = this.DOMSearchBox(); + this.DOMSearchClose().style.display = 'inline'; + if (this.insideFrame) + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + domPopupSearchResultsWindow.style.position = 'relative'; + domPopupSearchResultsWindow.style.display = 'block'; + var width = document.body.clientWidth - 8; // the -8 is for IE :-( + domPopupSearchResultsWindow.style.width = width + 'px'; + domPopupSearchResults.style.width = width + 'px'; + } + else + { + var domPopupSearchResults = this.DOMPopupSearchResults(); + var left = getXPos(domSearchBox) + 150; // domSearchBox.offsetWidth; + var top = getYPos(domSearchBox) + 20; // domSearchBox.offsetHeight + 1; + domPopupSearchResultsWindow.style.display = 'block'; + left -= domPopupSearchResults.offsetWidth; + domPopupSearchResultsWindow.style.top = top + 'px'; + domPopupSearchResultsWindow.style.left = left + 'px'; + } + } + + this.lastSearchValue = searchValue; + this.lastResultsPage = resultsPage; + } + + // -------- Activation Functions + + // Activates or deactivates the search panel, resetting things to + // their default values if necessary. + this.Activate = function(isActive) + { + if (isActive || // open it + this.DOMPopupSearchResultsWindow().style.display == 'block' + ) + { + this.DOMSearchBox().className = 'MSearchBoxActive'; + + var searchField = this.DOMSearchField(); + + if (searchField.value == this.searchLabel) // clear "Search" term upon entry + { + searchField.value = ''; + this.searchActive = true; + } + } + else if (!isActive) // directly remove the panel + { + this.DOMSearchBox().className = 'MSearchBoxInactive'; + this.DOMSearchField().value = this.searchLabel; + this.searchActive = false; + this.lastSearchValue = '' + this.lastResultsPage = ''; + } + } +} + +// ----------------------------------------------------------------------- + +// The class that handles everything on the search results page. +function SearchResults(name) +{ + // The number of matches from the last run of . + this.lastMatchCount = 0; + this.lastKey = 0; + this.repeatOn = false; + + // Toggles the visibility of the passed element ID. + this.FindChildElement = function(id) + { + var parentElement = document.getElementById(id); + var element = parentElement.firstChild; + + while (element && element!=parentElement) + { + if (element.nodeName == 'DIV' && element.className == 'SRChildren') + { + return element; + } + + if (element.nodeName == 'DIV' && element.hasChildNodes()) + { + element = element.firstChild; + } + else if (element.nextSibling) + { + element = element.nextSibling; + } + else + { + do + { + element = element.parentNode; + } + while (element && element!=parentElement && !element.nextSibling); + + if (element && element!=parentElement) + { + element = element.nextSibling; + } + } + } + } + + this.Toggle = function(id) + { + var element = this.FindChildElement(id); + if (element) + { + if (element.style.display == 'block') + { + element.style.display = 'none'; + } + else + { + element.style.display = 'block'; + } + } + } + + // Searches for the passed string. If there is no parameter, + // it takes it from the URL query. + // + // Always returns true, since other documents may try to call it + // and that may or may not be possible. + this.Search = function(search) + { + if (!search) // get search word from URL + { + search = window.location.search; + search = search.substring(1); // Remove the leading '?' + search = unescape(search); + } + + search = search.replace(/^ +/, ""); // strip leading spaces + search = search.replace(/ +$/, ""); // strip trailing spaces + search = search.toLowerCase(); + search = convertToId(search); + + var resultRows = document.getElementsByTagName("div"); + var matches = 0; + + var i = 0; + while (i < resultRows.length) + { + var row = resultRows.item(i); + if (row.className == "SRResult") + { + var rowMatchName = row.id.toLowerCase(); + rowMatchName = rowMatchName.replace(/^sr\d*_/, ''); // strip 'sr123_' + + if (search.length<=rowMatchName.length && + rowMatchName.substr(0, search.length)==search) + { + row.style.display = 'block'; + matches++; + } + else + { + row.style.display = 'none'; + } + } + i++; + } + document.getElementById("Searching").style.display='none'; + if (matches == 0) // no results + { + document.getElementById("NoMatches").style.display='block'; + } + else // at least one result + { + document.getElementById("NoMatches").style.display='none'; + } + this.lastMatchCount = matches; + return true; + } + + // return the first item with index index or higher that is visible + this.NavNext = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index++; + } + return focusItem; + } + + this.NavPrev = function(index) + { + var focusItem; + while (1) + { + var focusName = 'Item'+index; + focusItem = document.getElementById(focusName); + if (focusItem && focusItem.parentNode.parentNode.style.display=='block') + { + break; + } + else if (!focusItem) // last element + { + break; + } + focusItem=null; + index--; + } + return focusItem; + } + + this.ProcessKeys = function(e) + { + if (e.type == "keydown") + { + this.repeatOn = false; + this.lastKey = e.keyCode; + } + else if (e.type == "keypress") + { + if (!this.repeatOn) + { + if (this.lastKey) this.repeatOn = true; + return false; // ignore first keypress after keydown + } + } + else if (e.type == "keyup") + { + this.lastKey = 0; + this.repeatOn = false; + } + return this.lastKey!=0; + } + + this.Nav = function(evt,itemIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + var newIndex = itemIndex-1; + var focusItem = this.NavPrev(newIndex); + if (focusItem) + { + var child = this.FindChildElement(focusItem.parentNode.parentNode.id); + if (child && child.style.display == 'block') // children visible + { + var n=0; + var tmpElem; + while (1) // search for last child + { + tmpElem = document.getElementById('Item'+newIndex+'_c'+n); + if (tmpElem) + { + focusItem = tmpElem; + } + else // found it! + { + break; + } + n++; + } + } + } + if (focusItem) + { + focusItem.focus(); + } + else // return focus to search field + { + parent.document.getElementById("MSearchField").focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = itemIndex+1; + var focusItem; + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem && elem.style.display == 'block') // children visible + { + focusItem = document.getElementById('Item'+itemIndex+'_c0'); + } + if (!focusItem) focusItem = this.NavNext(newIndex); + if (focusItem) focusItem.focus(); + } + else if (this.lastKey==39) // Right + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'block'; + } + else if (this.lastKey==37) // Left + { + var item = document.getElementById('Item'+itemIndex); + var elem = this.FindChildElement(item.parentNode.parentNode.id); + if (elem) elem.style.display = 'none'; + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } + + this.NavChild = function(evt,itemIndex,childIndex) + { + var e = (evt) ? evt : window.event; // for IE + if (e.keyCode==13) return true; + if (!this.ProcessKeys(e)) return false; + + if (this.lastKey==38) // Up + { + if (childIndex>0) + { + var newIndex = childIndex-1; + document.getElementById('Item'+itemIndex+'_c'+newIndex).focus(); + } + else // already at first child, jump to parent + { + document.getElementById('Item'+itemIndex).focus(); + } + } + else if (this.lastKey==40) // Down + { + var newIndex = childIndex+1; + var elem = document.getElementById('Item'+itemIndex+'_c'+newIndex); + if (!elem) // last child, jump to parent next parent + { + elem = this.NavNext(itemIndex+1); + } + if (elem) + { + elem.focus(); + } + } + else if (this.lastKey==27) // Escape + { + parent.searchBox.CloseResultsWindow(); + parent.document.getElementById("MSearchField").focus(); + } + else if (this.lastKey==13) // Enter + { + return true; + } + return false; + } +} + +function setKeyActions(elem,action) +{ + elem.setAttribute('onkeydown',action); + elem.setAttribute('onkeypress',action); + elem.setAttribute('onkeyup',action); +} + +function setClassAttr(elem,attr) +{ + elem.setAttribute('class',attr); + elem.setAttribute('className',attr); +} + +function createResults() +{ + var results = document.getElementById("SRResults"); + for (var e=0; ek7RCwB~R6VQOP#AvB$vH7i{6H{96zot$7cZT<7246EF5Np6N}+$IbiG6W zg#87A+NFaX+=_^xM1#gCtshC=E{%9^uQX_%?YwXvo{#q&MnpJ8uh(O?ZRc&~_1%^SsPxG@rfElJg-?U zm!Cz-IOn(qJP3kDp-^~qt+FGbl=5jNli^Wj_xIBG{Rc0en{!oFvyoNC7{V~T8}b>| z=jL2WIReZzX(YN(_9fV;BBD$VXQIxNasAL8ATvEu822WQ%mvv4FO#qs` BFGc_W literal 0 HcmV?d00001 diff --git a/doxygen_files/html/search/search_r.png b/doxygen_files/html/search/search_r.png new file mode 100644 index 0000000000000000000000000000000000000000..97ee8b439687084201b79c6f776a41f495c6392a GIT binary patch literal 612 zcmV-q0-ODbP)PbXFRCwB?)W514K@j&X?z2*SxFI6-@HT2E2K=9X9%Pb zEK*!TBw&g(DMC;|A)uGlRkOS9vd-?zNs%bR4d$w+ox_iFnE8fvIvv7^5<(>Te12Li z7C)9srCzmK{ZcNM{YIl9j{DePFgOWiS%xG@5CnnnJa4nvY<^glbz7^|-ZY!dUkAwd z{gaTC@_>b5h~;ug#R0wRL0>o5!hxm*s0VW?8dr}O#zXTRTnrQm_Z7z1Mrnx>&p zD4qifUjzLvbVVWi?l?rUzwt^sdb~d!f_LEhsRVIXZtQ=qSxuxqm zEX#tf>$?M_Y1-LSDT)HqG?`%-%ZpY!#{N!rcNIiL;G7F0`l?)mNGTD9;f9F5Up3Kg zw}a<-JylhG&;=!>B+fZaCX+?C+kHYrP%c?X2!Zu_olK|GcS4A70HEy;vn)I0>0kLH z`jc(WIaaHc7!HS@f*^R^Znx8W=_jIl2oWJoQ*h1^$FX!>*PqR1J8k|fw}w_y}TpE>7m8DqDO<3z`OzXt$ccSejbEZCg@0000 + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_0.js b/doxygen_files/html/search/variables_0.js new file mode 100644 index 0000000..6527ed7 --- /dev/null +++ b/doxygen_files/html/search/variables_0.js @@ -0,0 +1,21 @@ +var searchData= +[ + ['_5fangle_5foffset',['_angle_offset',['../classAS5601.html#a9b2058241b8e88142e6376ac5a8abeb4',1,'AS5601']]], + ['_5fch0',['_ch0',['../classi2c__mux.html#acca9a43816973b7471017cbc1d6fd70a',1,'i2c_mux']]], + ['_5fch1',['_ch1',['../classi2c__mux.html#a3aa95a560e46d8a078ca2fd2eeb4dab4',1,'i2c_mux']]], + ['_5fdefault_5fstate',['_default_state',['../classendstop.html#aaf8429fa28d2aa40a42884b469e8f626',1,'endstop']]], + ['_5fen_5fpin',['_en_pin',['../classmotor.html#aa8dc53ecf02031b944ef6658c2b14fde',1,'motor']]], + ['_5fenc_5fratio',['_enc_ratio',['../classAS5601.html#a6523b0a1e1d9451b1df96398e7212b90',1,'AS5601']]], + ['_5ffb_5fpin',['_fb_pin',['../classmotor.html#a0a0c29d8c7332855eba796dc9d17d516',1,'motor']]], + ['_5fid',['_id',['../classi2c__mux.html#ad56c7d14d6638caa0bccce4d609256c6',1,'i2c_mux::_id()'],['../classtc74.html#a9aef242072cf2021850126f6931cd577',1,'tc74::_id()']]], + ['_5fmaxspeed',['_maxSpeed',['../classmotor.html#a7a8635dc94a8eb9a410b5dff9c658d09',1,'motor']]], + ['_5fminspeed',['_minSpeed',['../classmotor.html#a14521e2beea4039acb94a5a20f3282ca',1,'motor']]], + ['_5fn',['_n',['../classAS5601.html#a6524caff1a797ace0b48dfcad375f37a',1,'AS5601']]], + ['_5fpin',['_pin',['../classendstop.html#a17475e2676c5922399ea8b2bd6de0111',1,'endstop']]], + ['_5fpin_5fdir',['_pin_dir',['../classrs485.html#a8a09bf5dcd2b3274220eb95c6323e2bf',1,'rs485']]], + ['_5fpwm_5fpin1',['_pwm_pin1',['../classmotor.html#aad1f7bbc1a73c605947ce4a80a8019f8',1,'motor']]], + ['_5fpwm_5fpin2',['_pwm_pin2',['../classmotor.html#acc3ee3c3243453a974ca0e9f96e93bce',1,'motor']]], + ['_5fraw_5fprev_5fpos',['_raw_prev_pos',['../classAS5601.html#a104f193f38617cb45e2af426f10971af',1,'AS5601']]], + ['_5fsf_5fpin',['_sf_pin',['../classmotor.html#ad3782417f957c2c0806bb37df3709b4a',1,'motor']]], + ['_5ftx_5ftime',['_tx_time',['../classrs485.html#a1b38109fc4d9cf9f98cebda6d6f2b033',1,'rs485']]] +]; diff --git a/doxygen_files/html/search/variables_1.html b/doxygen_files/html/search/variables_1.html new file mode 100644 index 0000000..f46154d --- /dev/null +++ b/doxygen_files/html/search/variables_1.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_1.js b/doxygen_files/html/search/variables_1.js new file mode 100644 index 0000000..ea7de75 --- /dev/null +++ b/doxygen_files/html/search/variables_1.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['comm',['comm',['../dc__motor__controller_8ino.html#a43731445552d0e8cea4cbc7c75ba56cb',1,'comm(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a43731445552d0e8cea4cbc7c75ba56cb',1,'comm(): stepper_motor_controller.ino']]], + ['control_5faz',['control_az',['../globals_8h.html#a87c5a684fccc0f0ed68486d54ffbda77',1,'control_az(): globals.h'],['../dc__motor__controller_8ino.html#a7f4a4d4b871eb2a5ffbf72d413092114',1,'control_az(): dc_motor_controller.ino']]], + ['control_5fel',['control_el',['../globals_8h.html#ade92ac8f94e642ce7708250d1235ae85',1,'control_el(): globals.h'],['../dc__motor__controller_8ino.html#a961d3c110bf0dbe986c469b9b164f109',1,'control_el(): dc_motor_controller.ino']]], + ['control_5fmode',['control_mode',['../struct__rotator.html#a86308cdfcd35e4a153476bf09869a981',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/variables_2.html b/doxygen_files/html/search/variables_2.html new file mode 100644 index 0000000..15275b7 --- /dev/null +++ b/doxygen_files/html/search/variables_2.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_2.js b/doxygen_files/html/search/variables_2.js new file mode 100644 index 0000000..6702ef6 --- /dev/null +++ b/doxygen_files/html/search/variables_2.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['d',['d',['../struct__control.html#aba0fe925711333cc0910d439b589d175',1,'_control']]] +]; diff --git a/doxygen_files/html/search/variables_3.html b/doxygen_files/html/search/variables_3.html new file mode 100644 index 0000000..fbc3671 --- /dev/null +++ b/doxygen_files/html/search/variables_3.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_3.js b/doxygen_files/html/search/variables_3.js new file mode 100644 index 0000000..6bb1f33 --- /dev/null +++ b/doxygen_files/html/search/variables_3.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['encoder_5faz',['encoder_az',['../dc__motor__controller_8ino.html#ad7b945823a2a9518064aa22ce612fcaf',1,'dc_motor_controller.ino']]], + ['encoder_5fel',['encoder_el',['../dc__motor__controller_8ino.html#a35ce9a059097bea4c32ee620078a659c',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/variables_4.html b/doxygen_files/html/search/variables_4.html new file mode 100644 index 0000000..8067e67 --- /dev/null +++ b/doxygen_files/html/search/variables_4.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_4.js b/doxygen_files/html/search/variables_4.js new file mode 100644 index 0000000..b03b6ed --- /dev/null +++ b/doxygen_files/html/search/variables_4.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['fault_5faz',['fault_az',['../struct__rotator.html#a5aee46515ac7930a9ae114b9c9c01d8c',1,'_rotator']]], + ['fault_5fel',['fault_el',['../struct__rotator.html#ac2e58e190516589323db0255129cfe96',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/variables_5.html b/doxygen_files/html/search/variables_5.html new file mode 100644 index 0000000..7e95e94 --- /dev/null +++ b/doxygen_files/html/search/variables_5.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_5.js b/doxygen_files/html/search/variables_5.js new file mode 100644 index 0000000..9792e86 --- /dev/null +++ b/doxygen_files/html/search/variables_5.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['homing_5fflag',['homing_flag',['../struct__rotator.html#adf96afc711bf7075748f043b1b656311',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/variables_6.html b/doxygen_files/html/search/variables_6.html new file mode 100644 index 0000000..3d398e6 --- /dev/null +++ b/doxygen_files/html/search/variables_6.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_6.js b/doxygen_files/html/search/variables_6.js new file mode 100644 index 0000000..6dec18e --- /dev/null +++ b/doxygen_files/html/search/variables_6.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['i',['i',['../struct__control.html#a97e0823512ecbf67560099811613002c',1,'_control']]], + ['input',['input',['../struct__control.html#adc122b9fd1dc7cb0b859405b0bc6ad1a',1,'_control']]], + ['input_5fprv',['input_prv',['../struct__control.html#a42d481daff320ecacaa999a12e4b7412',1,'_control']]], + ['inside_5ftemperature',['inside_temperature',['../struct__rotator.html#a1bfde08392f85de45463f69b77c8120d',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/variables_7.html b/doxygen_files/html/search/variables_7.html new file mode 100644 index 0000000..7b79146 --- /dev/null +++ b/doxygen_files/html/search/variables_7.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_7.js b/doxygen_files/html/search/variables_7.js new file mode 100644 index 0000000..a7f98f3 --- /dev/null +++ b/doxygen_files/html/search/variables_7.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['load',['load',['../struct__control.html#aeb5b4a7fd5e9aa8ada410f568a0a87b4',1,'_control']]] +]; diff --git a/doxygen_files/html/search/variables_8.html b/doxygen_files/html/search/variables_8.html new file mode 100644 index 0000000..8ebc5f6 --- /dev/null +++ b/doxygen_files/html/search/variables_8.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_8.js b/doxygen_files/html/search/variables_8.js new file mode 100644 index 0000000..ab1f2ab --- /dev/null +++ b/doxygen_files/html/search/variables_8.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['motor_5faz',['motor_az',['../dc__motor__controller_8ino.html#a93ae915cd10983ab1234aa4a6b7910b3',1,'dc_motor_controller.ino']]], + ['motor_5fel',['motor_el',['../dc__motor__controller_8ino.html#a60cac79aef5df2246c291f606098d33b',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/variables_9.html b/doxygen_files/html/search/variables_9.html new file mode 100644 index 0000000..1213661 --- /dev/null +++ b/doxygen_files/html/search/variables_9.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_9.js b/doxygen_files/html/search/variables_9.js new file mode 100644 index 0000000..d14bb60 --- /dev/null +++ b/doxygen_files/html/search/variables_9.js @@ -0,0 +1,7 @@ +var searchData= +[ + ['p',['p',['../struct__control.html#a08335ac31b691f2ed082a02d4a10961b',1,'_control']]], + ['park_5faz',['park_az',['../struct__rotator.html#ab6fce38c41558f84a92605b37c35837f',1,'_rotator']]], + ['park_5fel',['park_el',['../struct__rotator.html#a6ad10e10ad60c7cb8d4f30986cb1384f',1,'_rotator']]], + ['pca9540',['pca9540',['../dc__motor__controller_8ino.html#a7741af4fcf4d529c3183cff30f191c5d',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/variables_a.html b/doxygen_files/html/search/variables_a.html new file mode 100644 index 0000000..24819a3 --- /dev/null +++ b/doxygen_files/html/search/variables_a.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_a.js b/doxygen_files/html/search/variables_a.js new file mode 100644 index 0000000..b07bfe4 --- /dev/null +++ b/doxygen_files/html/search/variables_a.js @@ -0,0 +1,6 @@ +var searchData= +[ + ['rotator',['rotator',['../globals_8h.html#addd34cf12b8ad4e4eb65097b7c950dc4',1,'globals.h']]], + ['rotator_5ferror',['rotator_error',['../struct__rotator.html#a169bb52a1b00c2506bf7979aae6bab12',1,'_rotator']]], + ['rotator_5fstatus',['rotator_status',['../struct__rotator.html#ad7f5a96e0a6675c3471670c927bbae49',1,'_rotator']]] +]; diff --git a/doxygen_files/html/search/variables_b.html b/doxygen_files/html/search/variables_b.html new file mode 100644 index 0000000..b306931 --- /dev/null +++ b/doxygen_files/html/search/variables_b.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_b.js b/doxygen_files/html/search/variables_b.js new file mode 100644 index 0000000..c94a4b7 --- /dev/null +++ b/doxygen_files/html/search/variables_b.js @@ -0,0 +1,8 @@ +var searchData= +[ + ['setpoint',['setpoint',['../struct__control.html#a1d9d72c3f267607ad077052f215cbcd5',1,'_control']]], + ['setpoint_5fspeed',['setpoint_speed',['../struct__control.html#a08308f27e459947c9692735b18aa2f04',1,'_control']]], + ['speed',['speed',['../struct__control.html#ac6968a0c314b5e6c1910fa2238b5e325',1,'_control']]], + ['switch_5faz',['switch_az',['../struct__rotator.html#a5626b9e27ffdef0f5f8851ebb5a27812',1,'_rotator::switch_az()'],['../dc__motor__controller_8ino.html#a0c0a9fc59fead4da5429a12a827f6e92',1,'switch_az(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a0c0a9fc59fead4da5429a12a827f6e92',1,'switch_az(): stepper_motor_controller.ino']]], + ['switch_5fel',['switch_el',['../struct__rotator.html#a88068d1cd476b7a52bbc400c77e81d9a',1,'_rotator::switch_el()'],['../dc__motor__controller_8ino.html#a0886ffe9fa915cc70ac3ed7e528145d9',1,'switch_el(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#a0886ffe9fa915cc70ac3ed7e528145d9',1,'switch_el(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/variables_c.html b/doxygen_files/html/search/variables_c.html new file mode 100644 index 0000000..75709df --- /dev/null +++ b/doxygen_files/html/search/variables_c.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_c.js b/doxygen_files/html/search/variables_c.js new file mode 100644 index 0000000..76b92a6 --- /dev/null +++ b/doxygen_files/html/search/variables_c.js @@ -0,0 +1,5 @@ +var searchData= +[ + ['t_5frun',['t_run',['../dc__motor__controller_8ino.html#ab758c64f84e0623e98a61e37b9bdd2b7',1,'t_run(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#ab758c64f84e0623e98a61e37b9bdd2b7',1,'t_run(): stepper_motor_controller.ino']]], + ['temp_5fsensor',['temp_sensor',['../dc__motor__controller_8ino.html#a2499307ac3e6e8f80aa5c12b27668b4b',1,'dc_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/search/variables_d.html b/doxygen_files/html/search/variables_d.html new file mode 100644 index 0000000..34c80a4 --- /dev/null +++ b/doxygen_files/html/search/variables_d.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_d.js b/doxygen_files/html/search/variables_d.js new file mode 100644 index 0000000..ba033e9 --- /dev/null +++ b/doxygen_files/html/search/variables_d.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['u',['u',['../struct__control.html#a4ab9d7afcc7a10368b5045b228f0e0bd',1,'_control']]] +]; diff --git a/doxygen_files/html/search/variables_e.html b/doxygen_files/html/search/variables_e.html new file mode 100644 index 0000000..4a1c8a6 --- /dev/null +++ b/doxygen_files/html/search/variables_e.html @@ -0,0 +1,30 @@ + + + + + + + + + +
    +
    Loading...
    +
    + +
    Searching...
    +
    No Matches
    + +
    + + diff --git a/doxygen_files/html/search/variables_e.js b/doxygen_files/html/search/variables_e.js new file mode 100644 index 0000000..032cc14 --- /dev/null +++ b/doxygen_files/html/search/variables_e.js @@ -0,0 +1,4 @@ +var searchData= +[ + ['wdt',['wdt',['../dc__motor__controller_8ino.html#aa21a88a61f63525bb1db8401772e7f70',1,'wdt(): dc_motor_controller.ino'],['../stepper__motor__controller_8ino.html#aa21a88a61f63525bb1db8401772e7f70',1,'wdt(): stepper_motor_controller.ino']]] +]; diff --git a/doxygen_files/html/splitbar.png b/doxygen_files/html/splitbar.png new file mode 100644 index 0000000000000000000000000000000000000000..fe895f2c58179b471a22d8320b39a4bd7312ec8e GIT binary patch literal 314 zcmeAS@N?(olHy`uVBq!ia0vp^Yzz!63>-{AmhX=Jf(#6djGiuzAr*{o?=JLmPLyc> z_*`QK&+BH@jWrYJ7>r6%keRM@)Qyv8R=enp0jiI>aWlGyB58O zFVR20d+y`K7vDw(hJF3;>dD*3-?v=<8M)@x|EEGLnJsniYK!2U1 Y!`|5biEc?d1`HDhPgg&ebxsLQ02F6;9RL6T literal 0 HcmV?d00001 diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html new file mode 100644 index 0000000..6e27ffe --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/CDC.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    CDC.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html new file mode 100644 index 0000000..45a27d7 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2CDC_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/CDC.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    CDC.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/CDC.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/CDC.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html new file mode 100644 index 0000000..adfc2d6 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial0.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html new file mode 100644 index 0000000..73c822a --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial0_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial0.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial0.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/HardwareSerial0.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial0.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html new file mode 100644 index 0000000..75ee736 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial1.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html new file mode 100644 index 0000000..7f880a5 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial1_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial1.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial1.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/HardwareSerial1.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial1.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html new file mode 100644 index 0000000..4cac728 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial2.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html new file mode 100644 index 0000000..2b0179b --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial2_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial2.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial2.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/HardwareSerial2.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial2.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html new file mode 100644 index 0000000..5a15e0e --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial3.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html new file mode 100644 index 0000000..4aadc02 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial3_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial3.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial3.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/HardwareSerial3.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial3.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html new file mode 100644 index 0000000..c4fd310 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html new file mode 100644 index 0000000..83a3a41 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2HardwareSerial_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/HardwareSerial.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    HardwareSerial.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/HardwareSerial.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial_private.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html new file mode 100644 index 0000000..7a525c0 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/IPAddress.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    IPAddress.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html new file mode 100644 index 0000000..b314107 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2IPAddress_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/IPAddress.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    IPAddress.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/IPAddress.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    15  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/IPAddress.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html new file mode 100644 index 0000000..35a0d93 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/PluggableUSB.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    PluggableUSB.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html new file mode 100644 index 0000000..77f18a2 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2PluggableUSB_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/PluggableUSB.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    PluggableUSB.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/PluggableUSB.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html new file mode 100644 index 0000000..7f5c31b --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Print.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Print.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html new file mode 100644 index 0000000..92ce520 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Print_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Print.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Print.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/Print.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html new file mode 100644 index 0000000..5693736 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Stream.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Stream.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html new file mode 100644 index 0000000..ce188ed --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Stream_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Stream.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Stream.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/Stream.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html new file mode 100644 index 0000000..db735e3 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Tone.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Tone.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html new file mode 100644 index 0000000..a11c3b7 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2Tone_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/Tone.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Tone.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/Tone.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Tone.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html new file mode 100644 index 0000000..84bb470 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/USBCore.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    USBCore.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html new file mode 100644 index 0000000..8a3764b --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2USBCore_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/USBCore.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    USBCore.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/USBCore.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBCore.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/PluggableUSB.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html new file mode 100644 index 0000000..578e930 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WInterrupts.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WInterrupts.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html new file mode 100644 index 0000000..f863ada --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WInterrupts_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WInterrupts.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WInterrupts.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/WInterrupts.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WInterrupts.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html new file mode 100644 index 0000000..3f588ac --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WMath.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WMath.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html new file mode 100644 index 0000000..6784440 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WMath_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WMath.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WMath.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/WMath.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WMath.cpp
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html new file mode 100644 index 0000000..a8a2e9d --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WString.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WString.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html new file mode 100644 index 0000000..5c7ea8b --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2WString_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/WString.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    WString.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/WString.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html new file mode 100644 index 0000000..977f5e8 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/abi.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    abi.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html new file mode 100644 index 0000000..0cda39e --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2abi_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/abi.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    abi.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/abi.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/abi.cpp
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html new file mode 100644 index 0000000..dad9803 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/hooks.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    hooks.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html new file mode 100644 index 0000000..a8b7bba --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2hooks_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/hooks.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    hooks.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/hooks.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/hooks.c
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html new file mode 100644 index 0000000..390fdc9 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/main.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    main.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html new file mode 100644 index 0000000..731f652 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2main_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/main.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    main.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/main.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/main.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html new file mode 100644 index 0000000..cf47d79 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/new.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    new.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html new file mode 100644 index 0000000..912ebe9 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2new_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/new.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    new.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/new.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/new.cpp
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html new file mode 100644 index 0000000..ecf1490 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html new file mode 100644 index 0000000..232e590 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html new file mode 100644 index 0000000..086ec58 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_analog.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_analog.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html new file mode 100644 index 0000000..8d606c1 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__analog_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_analog.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_analog.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_analog.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_analog.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html new file mode 100644 index 0000000..fc08e85 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_digital.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_digital.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html new file mode 100644 index 0000000..f22fa64 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__digital_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_digital.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_digital.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_digital.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_digital.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html new file mode 100644 index 0000000..659cbd3 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_pulse.S.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.S.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html new file mode 100644 index 0000000..b37dd91 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8S_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_pulse.S.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.S.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_pulse.S.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.S
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html new file mode 100644 index 0000000..fa2b678 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_pulse.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html new file mode 100644 index 0000000..de06bfd --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__pulse_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_pulse.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_pulse.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html new file mode 100644 index 0000000..1c63cb6 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_shift.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_shift.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html new file mode 100644 index 0000000..9e07826 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2core_2wiring__shift_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/core/wiring_shift.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_shift.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_shift.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_shift.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html new file mode 100644 index 0000000..92f919c --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Wire.cpp.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html new file mode 100644 index 0000000..8674337 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2Wire_8cpp_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src/Wire.cpp.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    Wire.cpp.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/platformlibs/Wire/src/Wire.cpp.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.cpp \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html new file mode 100644 index 0000000..34a40a0 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    twi.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html new file mode 100644 index 0000000..f16714e --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_2build-satnogs_2platformlibs_2Wire_2src_2utility_2twi_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    twi.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/platformlibs/Wire/src/utility/twi.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino.html b/doxygen_files/html/stepper__motor__controller_8ino.html new file mode 100644 index 0000000..5595089 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino.html @@ -0,0 +1,798 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/stepper_motor_controller.ino File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    stepper_motor_controller.ino File Reference
    +
    +
    +
    #include <AccelStepper.h>
    +#include <Wire.h>
    +#include "../libraries/globals.h"
    +#include "../libraries/easycomm.h"
    +#include "../libraries/rotator_pins.h"
    +#include "../libraries/rs485.h"
    +#include "../libraries/endstop.h"
    +#include "../libraries/watchdog.h"
    +
    +Include dependency graph for stepper_motor_controller.ino:
    +
    +
    + + + + + + + + +
    +
    +

    Go to the source code of this file.

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

    +Macros

    #define SAMPLE_TIME   0.1
     Control loop in s. More...
     
    #define RATIO   54
     Gear ratio of rotator gear box. More...
     
    #define MICROSTEP   8
     Set Microstep. More...
     
    #define MIN_PULSE_WIDTH   20
     In microsecond for AccelStepper. More...
     
    #define MAX_SPEED   6400
     In steps/s, consider the microstep. More...
     
    #define MAX_ACCELERATION   1600
     In steps/s^2, consider the microstep. More...
     
    #define SPR   1600L
     Step Per Revolution, consider the microstep. More...
     
    #define MIN_M1_ANGLE   0
     Minimum angle of azimuth. More...
     
    #define MAX_M1_ANGLE   360
     Maximum angle of azimuth. More...
     
    #define MIN_M2_ANGLE   0
     Minimum angle of elevation. More...
     
    #define MAX_M2_ANGLE   180
     Maximum angle of elevation. More...
     
    #define DEFAULT_HOME_STATE   HIGH
     Change to LOW according to Home sensor. More...
     
    #define HOME_DELAY   10000
     Time for homing Deceleration in millisecond. More...
     
    + + + + + + + + + + + + + + + + + + +

    +Functions

    AccelStepper stepper_az (1, M1IN1, M1IN2)
     
    AccelStepper stepper_el (1, M2IN1, M2IN2)
     
    enum _rotator_error homing (int32_t seek_az, int32_t seek_el)
     Move both axis with one direction in order to find home position, end-stop switches. More...
     
    int32_t deg2step (float deg)
     Convert degrees to steps according to step/revolution, rotator gear box ratio and microstep. More...
     
    float step2deg (int32_t step)
     Convert steps to degrees according to step/revolution, rotator gear box ratio and microstep. More...
     
    void setup ()
     
    void loop ()
     
    + + + + + + + + + + + +

    +Variables

    uint32_t t_run = 0
     
    easycomm comm
     
    endstop switch_az (SW1, DEFAULT_HOME_STATE)
     
    endstop switch_el (SW2, DEFAULT_HOME_STATE)
     
    wdt_timer wdt
     
    +

    Detailed Description

    +

    This is the documentation for satnogs rotator controller firmware for stepper motors configuration. The board (PCB) is placed in satnogs-rotator-controller and is for releases: v2.0 v2.1 v2.2 wiki page

    +

    +Dependencies

    +

    This firmware depends on AccelStepper library being present on your system. Please make sure you have installed the latest version before using this firmware.

    +

    +License

    +

    Licensed under the GPLv3.

    + +

    Definition in file stepper_motor_controller.ino.

    +

    Macro Definition Documentation

    + +

    ◆ DEFAULT_HOME_STATE

    + +
    +
    + + + + +
    #define DEFAULT_HOME_STATE   HIGH
    +
    + +

    Change to LOW according to Home sensor.

    + +

    Definition at line 36 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ HOME_DELAY

    + +
    +
    + + + + +
    #define HOME_DELAY   10000
    +
    + +

    Time for homing Deceleration in millisecond.

    + +

    Definition at line 37 of file stepper_motor_controller.ino.

    + +

    Referenced by homing().

    + +
    +
    + +

    ◆ MAX_ACCELERATION

    + +
    +
    + + + + +
    #define MAX_ACCELERATION   1600
    +
    + +

    In steps/s^2, consider the microstep.

    + +

    Definition at line 30 of file stepper_motor_controller.ino.

    + +

    Referenced by setup().

    + +
    +
    + +

    ◆ MAX_M1_ANGLE

    + +
    +
    + + + + +
    #define MAX_M1_ANGLE   360
    +
    + +

    Maximum angle of azimuth.

    + +

    Definition at line 33 of file stepper_motor_controller.ino.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ MAX_M2_ANGLE

    + +
    +
    + + + + +
    #define MAX_M2_ANGLE   180
    +
    + +

    Maximum angle of elevation.

    + +

    Definition at line 35 of file stepper_motor_controller.ino.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ MAX_SPEED

    + +
    +
    + + + + +
    #define MAX_SPEED   6400
    +
    + +

    In steps/s, consider the microstep.

    + +

    Definition at line 29 of file stepper_motor_controller.ino.

    + +

    Referenced by setup().

    + +
    +
    + +

    ◆ MICROSTEP

    + +
    +
    + + + + +
    #define MICROSTEP   8
    +
    + +

    Set Microstep.

    + +

    Definition at line 27 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ MIN_M1_ANGLE

    + +
    +
    + + + + +
    #define MIN_M1_ANGLE   0
    +
    + +

    Minimum angle of azimuth.

    + +

    Definition at line 32 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ MIN_M2_ANGLE

    + +
    +
    + + + + +
    #define MIN_M2_ANGLE   0
    +
    + +

    Minimum angle of elevation.

    + +

    Definition at line 34 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ MIN_PULSE_WIDTH

    + +
    +
    + + + + +
    #define MIN_PULSE_WIDTH   20
    +
    + +

    In microsecond for AccelStepper.

    + +

    Definition at line 28 of file stepper_motor_controller.ino.

    + +

    Referenced by setup().

    + +
    +
    + +

    ◆ RATIO

    + +
    +
    + + + + +
    #define RATIO   54
    +
    + +

    Gear ratio of rotator gear box.

    + +

    Definition at line 26 of file stepper_motor_controller.ino.

    + +

    Referenced by deg2step(), and step2deg().

    + +
    +
    + +

    ◆ SAMPLE_TIME

    + +
    +
    + + + + +
    #define SAMPLE_TIME   0.1
    +
    + +

    Control loop in s.

    + +

    Definition at line 25 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ SPR

    + +
    +
    + + + + +
    #define SPR   1600L
    +
    + +

    Step Per Revolution, consider the microstep.

    + +

    Definition at line 31 of file stepper_motor_controller.ino.

    + +

    Referenced by deg2step(), and step2deg().

    + +
    +
    +

    Function Documentation

    + +

    ◆ deg2step()

    + +
    +
    + + + + + + + + +
    int32_t deg2step (float deg)
    +
    + +

    Convert degrees to steps according to step/revolution, rotator gear box ratio and microstep.

    +
    Parameters
    + + +
    degDegrees in float format
    +
    +
    +
    Returns
    Steps for stepper motor driver, int32_t
    + +

    Definition at line 211 of file stepper_motor_controller.ino.

    + +

    References RATIO, and SPR.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ homing()

    + +
    +
    + + + + + + + + + + + + + + + + + + +
    enum _rotator_error homing (int32_t seek_az,
    int32_t seek_el 
    )
    +
    + +

    Move both axis with one direction in order to find home position, end-stop switches.

    +
    Parameters
    + + + +
    seek_azSteps to find home position for azimuth axis
    seek_elSteps to find home position for elevation axis
    +
    +
    +
    Returns
    _rotator_error
    + +

    Definition at line 154 of file stepper_motor_controller.ino.

    + +

    References control_az, control_el, endstop::get_state(), HOME_DELAY, homing_error, no_error, _control::setpoint, stepper_az(), stepper_el(), switch_az, switch_el, wdt_timer::watchdog_reset(), and wdt.

    + +

    Referenced by loop().

    +
    +Here is the call graph for this function:
    +
    +
    + + + + + + +
    + +
    +
    + +

    ◆ loop()

    + + + +

    ◆ setup()

    + +
    +
    + + + + + + + +
    void setup ()
    +
    + +

    Definition at line 59 of file stepper_motor_controller.ino.

    + +

    References comm, easycomm::easycomm_init(), endstop::init(), MAX_ACCELERATION, MAX_SPEED, MIN_PULSE_WIDTH, MOTOR_EN, stepper_az(), stepper_el(), switch_az, switch_el, wdt_timer::watchdog_init(), and wdt.

    +
    +Here is the call graph for this function:
    +
    +
    + + + + + + + + +
    + +
    +
    + +

    ◆ step2deg()

    + +
    +
    + + + + + + + + +
    float step2deg (int32_t step)
    +
    + +

    Convert steps to degrees according to step/revolution, rotator gear box ratio and microstep.

    +
    Parameters
    + + +
    stepSteps in int32_t format
    +
    +
    +
    Returns
    Degrees in float format
    + +

    Definition at line 224 of file stepper_motor_controller.ino.

    + +

    References RATIO, and SPR.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ stepper_az()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    AccelStepper stepper_az (,
    M1IN1 ,
    M1IN2  
    )
    +
    + +

    Referenced by homing(), loop(), and setup().

    + +
    +
    + +

    ◆ stepper_el()

    + +
    +
    + + + + + + + + + + + + + + + + + + + + + + + + +
    AccelStepper stepper_el (,
    M2IN1 ,
    M2IN2  
    )
    +
    + +

    Referenced by homing(), loop(), and setup().

    + +
    +
    +

    Variable Documentation

    + +

    ◆ comm

    + +
    +
    + + + + +
    easycomm comm
    +
    + +

    Definition at line 49 of file stepper_motor_controller.ino.

    + +

    Referenced by loop(), and setup().

    + +
    +
    + +

    ◆ switch_az

    + +
    +
    + + + + +
    endstop switch_az(SW1, DEFAULT_HOME_STATE)
    +
    + +

    Referenced by homing(), loop(), and setup().

    + +
    +
    + +

    ◆ switch_el

    + +
    +
    + + + + +
    endstop switch_el(SW2, DEFAULT_HOME_STATE)
    +
    + +

    Referenced by homing(), loop(), and setup().

    + +
    +
    + +

    ◆ t_run

    + +
    +
    + + + + +
    uint32_t t_run = 0
    +
    + +

    Definition at line 48 of file stepper_motor_controller.ino.

    + +
    +
    + +

    ◆ wdt

    + +
    +
    + + + + +
    wdt_timer wdt
    +
    + +

    Definition at line 53 of file stepper_motor_controller.ino.

    + +

    Referenced by homing(), loop(), and setup().

    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino_8d.html b/doxygen_files/html/stepper__motor__controller_8ino_8d.html new file mode 100644 index 0000000..59cf88c --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/stepper_motor_controller.ino.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stepper_motor_controller.ino.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino_8d_source.html b/doxygen_files/html/stepper__motor__controller_8ino_8d_source.html new file mode 100644 index 0000000..62333b3 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_8d_source.html @@ -0,0 +1,83 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/build-satnogs/stepper_motor_controller.ino.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stepper_motor_controller.ino.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/stepper_motor_controller.ino.o: \
    2  stepper_motor_controller.ino \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WCharacter.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/HardwareSerial.h \
    8  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    9  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Print.h \
    10  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Printable.h \
    11  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/USBAPI.h \
    12  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    13  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    14  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    15  /home/azisi/workspace/arduino/libraries/AccelStepper/AccelStepper.h \
    16  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/Wire.h \
    17  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Stream.h \
    18  ../libraries/globals.h ../libraries/easycomm.h \
    19  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/WString.h \
    20  ../libraries/rs485.h ../libraries/rotator_pins.h ../libraries/globals.h \
    21  ../libraries/rotator_pins.h ../libraries/rs485.h ../libraries/endstop.h \
    22  ../libraries/watchdog.h ../libraries/easycomm.h
    Class that functions for interacting with end-stop.
    Definition: endstop.h:22
    +
    Class that functions for easycomm 3 implementation.
    Definition: easycomm.h:31
    +
    Class that functions for interacting with a RS485 transceiver.
    Definition: rs485.h:23
    +
    + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino__incl.map b/doxygen_files/html/stepper__motor__controller_8ino__incl.map new file mode 100644 index 0000000..5622528 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino__incl.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino__incl.md5 b/doxygen_files/html/stepper__motor__controller_8ino__incl.md5 new file mode 100644 index 0000000..338a6ad --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino__incl.md5 @@ -0,0 +1 @@ +7c92c760073a0bc56756387d344dc345 \ No newline at end of file diff --git a/doxygen_files/html/stepper__motor__controller_8ino__incl.png b/doxygen_files/html/stepper__motor__controller_8ino__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..3d65d4fc3f92ad8838dea098714cf61e43080446 GIT binary patch literal 51805 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 bnKi1=J;NriKQ)(;@SoN}J&h7I+spq4q!HD> literal 0 HcmV?d00001 diff --git a/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.map b/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.map new file mode 100644 index 0000000..d134081 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.map @@ -0,0 +1,8 @@ + + + + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 b/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 new file mode 100644 index 0000000..7755521 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.md5 @@ -0,0 +1 @@ +1faf1b32da05fe5f6bd5c5047858d95b \ No newline at end of file diff --git a/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png b/doxygen_files/html/stepper__motor__controller_8ino_a4fc01d736fe50cf5b977f755b675f11d_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..fb85f2885813d69a190a5bb98083b2c26842c554 GIT binary patch literal 16496 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 affmf)TZu3D)dc + + + + + + + + + + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 b/doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 new file mode 100644 index 0000000..5e2799f --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.md5 @@ -0,0 +1 @@ +3f29e49990a7d8a4d3a76ebae2fe7594 \ No newline at end of file diff --git a/doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png b/doxygen_files/html/stepper__motor__controller_8ino_afe461d27b9c48d5921c00d521181f12f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..e0f1c565744d1a15ab7878331edc7a29ec1c05c9 GIT binary patch literal 46832 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 + + + + + diff --git a/doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.md5 b/doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.md5 new file mode 100644 index 0000000..896f356 --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.md5 @@ -0,0 +1 @@ +61359b1446a51a3c8b1c8104d8ff077e \ No newline at end of file diff --git a/doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.png b/doxygen_files/html/stepper__motor__controller_8ino_afe48c9319f61788ed4622597bdaf17ab_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..35dcdeb69fa8c9b82053c0aa1ce0c76658f1732a GIT binary patch literal 11875 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/stepper__motor__controller_8ino_source.html b/doxygen_files/html/stepper__motor__controller_8ino_source.html new file mode 100644 index 0000000..943a6dc --- /dev/null +++ b/doxygen_files/html/stepper__motor__controller_8ino_source.html @@ -0,0 +1,135 @@ + + + + + + + +satnogs-rotator-firmware: stepper_motor_controller/stepper_motor_controller.ino Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    stepper_motor_controller.ino
    +
    +
    +Go to the documentation of this file.
    1 
    25 #define SAMPLE_TIME 0.1
    26 #define RATIO 54
    27 #define MICROSTEP 8
    28 #define MIN_PULSE_WIDTH 20
    29 #define MAX_SPEED 6400
    30 #define MAX_ACCELERATION 1600
    31 #define SPR 1600L
    32 #define MIN_M1_ANGLE 0
    33 #define MAX_M1_ANGLE 360
    34 #define MIN_M2_ANGLE 0
    35 #define MAX_M2_ANGLE 180
    36 #define DEFAULT_HOME_STATE HIGH
    37 #define HOME_DELAY 10000
    38 
    39 #include <AccelStepper.h>
    40 #include <Wire.h>
    41 #include "../libraries/globals.h"
    42 #include "../libraries/easycomm.h"
    43 #include "../libraries/rotator_pins.h"
    44 #include "../libraries/rs485.h"
    45 #include "../libraries/endstop.h"
    46 #include "../libraries/watchdog.h"
    47 
    48 uint32_t t_run = 0; // run time of uC
    50 AccelStepper stepper_az(1, M1IN1, M1IN2);
    51 AccelStepper stepper_el(1, M2IN1, M2IN2);
    54 
    55 enum _rotator_error homing(int32_t seek_az, int32_t seek_el);
    56 int32_t deg2step(float deg);
    57 float step2deg(int32_t step);
    58 
    59 void setup() {
    60  // Homing switch
    61  switch_az.init();
    62  switch_el.init();
    63 
    64  // Serial Communication
    66 
    67  // Stepper Motor setup
    68  stepper_az.setEnablePin(MOTOR_EN);
    69  stepper_az.setPinsInverted(false, false, true);
    70  stepper_az.enableOutputs();
    71  stepper_az.setMaxSpeed(MAX_SPEED);
    72  stepper_az.setAcceleration(MAX_ACCELERATION);
    73  stepper_az.setMinPulseWidth(MIN_PULSE_WIDTH);
    74  stepper_el.setPinsInverted(false, false, true);
    75  stepper_el.enableOutputs();
    76  stepper_el.setMaxSpeed(MAX_SPEED);
    77  stepper_el.setAcceleration(MAX_ACCELERATION);
    78  stepper_el.setMinPulseWidth(MIN_PULSE_WIDTH);
    79 
    80  // Initialize WDT
    82 }
    83 
    84 void loop() {
    85  // Update WDT
    87 
    88  // Get end stop status
    91 
    92  // Run easycomm implementation
    94 
    95  // Get position of both axis
    96  control_az.input = step2deg(stepper_az.currentPosition());
    97  control_el.input = step2deg(stepper_el.currentPosition());
    98 
    99  // Check rotator status
    100  if (rotator.rotator_status != error) {
    101  if (rotator.homing_flag == false) {
    102  // Check home flag
    104  // Homing
    107  if (rotator.rotator_error == no_error) {
    108  // No error
    110  rotator.homing_flag = true;
    111  } else {
    112  // Error
    115  }
    116  } else {
    117  // Control Loop
    121  // Move azimuth and elevation motors
    122  stepper_az.run();
    123  stepper_el.run();
    124  // Idle rotator
    125  if (stepper_az.distanceToGo() == 0 && stepper_el.distanceToGo() == 0) {
    127  }
    128  }
    129  } else {
    130  // Error handler, stop motors and disable the motor driver
    131  stepper_az.stop();
    132  stepper_az.disableOutputs();
    133  stepper_el.stop();
    134  stepper_el.disableOutputs();
    136  // Reset error according to error value
    139  }
    140  }
    141 }
    142 
    143 /**************************************************************************/
    153 /**************************************************************************/
    154 enum _rotator_error homing(int32_t seek_az, int32_t seek_el) {
    155  bool isHome_az = false;
    156  bool isHome_el = false;
    157 
    158  // Move motors to "seek" position
    159  stepper_az.moveTo(seek_az);
    160  stepper_el.moveTo(seek_el);
    161 
    162  // Homing loop
    163  while (isHome_az == false || isHome_el == false) {
    164  // Update WDT
    166  if (switch_az.get_state() == true && !isHome_az) {
    167  // Find azimuth home
    168  stepper_az.moveTo(stepper_az.currentPosition());
    169  isHome_az = true;
    170  }
    171  if (switch_el.get_state() == true && !isHome_el) {
    172  // Find elevation home
    173  stepper_el.moveTo(stepper_el.currentPosition());
    174  isHome_el = true;
    175  }
    176  // Check if the rotator goes out of limits or something goes wrong (in
    177  // mechanical)
    178  if ((stepper_az.distanceToGo() == 0 && !isHome_az) ||
    179  (stepper_el.distanceToGo() == 0 && !isHome_el)){
    180  return homing_error;
    181  }
    182  // Move motors to "seek" position
    183  stepper_az.run();
    184  stepper_el.run();
    185  }
    186  // Delay to Deccelerate and homing, to complete the movements
    187  uint32_t time = millis();
    188  while (millis() - time < HOME_DELAY) {
    190  stepper_az.run();
    191  stepper_el.run();
    192  }
    193  // Set the home position and reset all critical control variables
    194  stepper_az.setCurrentPosition(0);
    195  stepper_el.setCurrentPosition(0);
    196  control_az.setpoint = 0;
    197  control_el.setpoint = 0;
    198 
    199  return no_error;
    200 }
    201 
    202 /**************************************************************************/
    210 /**************************************************************************/
    211 int32_t deg2step(float deg) {
    212  return (RATIO * SPR * deg / 360);
    213 }
    214 
    215 /**************************************************************************/
    223 /**************************************************************************/
    224 float step2deg(int32_t step) {
    225  return (360.00 * step / (SPR * RATIO));
    226 }
    #define SW1
    Digital input, to read the status of end-stop for motor 1.
    Definition: rotator_pins.h:25
    +
    easycomm comm
    +
    #define M2IN1
    Motor 2 PWM pin.
    Definition: rotator_pins.h:18
    +
    double input
    Motor Position feedback in deg.
    Definition: globals.h:30
    +
    #define M2IN2
    Motor 2 PWM pin.
    Definition: rotator_pins.h:19
    +
    Class that functions for interacting with a watchdog timer.
    Definition: watchdog.h:23
    + +
    Definition: globals.h:17
    + + +
    void setup()
    +
    void easycomm_proc()
    Get the commands from RS485 and response to the client.
    Definition: easycomm.h:48
    +
    #define MOTOR_EN
    Digital output, to enable the motors.
    Definition: rotator_pins.h:23
    +
    #define MIN_PULSE_WIDTH
    In microsecond for AccelStepper.
    +
    double setpoint
    Position set point in deg.
    Definition: globals.h:33
    +
    int32_t deg2step(float deg)
    Convert degrees to steps according to step/revolution, rotator gear box ratio and microstep...
    +
    void init()
    Initialize the Input pin for end-stop.
    Definition: endstop.h:35
    +
    endstop switch_az(SW1, DEFAULT_HOME_STATE)
    +
    bool switch_az
    Definition: globals.h:48
    + +
    _control control_az
    Definition: globals.h:51
    +
    uint32_t t_run
    +
    _rotator rotator
    Definition: globals.h:57
    +
    endstop switch_el(SW2, DEFAULT_HOME_STATE)
    +
    Class that functions for interacting with end-stop.
    Definition: endstop.h:22
    +
    enum _rotator_status rotator_status
    Rotator status.
    Definition: globals.h:41
    +
    enum _rotator_error rotator_error
    Rotator error.
    Definition: globals.h:42
    +
    bool switch_el
    End-stop vales.
    Definition: globals.h:48
    +
    enum _rotator_error homing(int32_t seek_az, int32_t seek_el)
    Move both axis with one direction in order to find home position, end-stop switches.
    +
    #define MAX_SPEED
    In steps/s, consider the microstep.
    +
    #define DEFAULT_HOME_STATE
    Change to LOW according to Home sensor.
    + +
    #define M1IN1
    Motor 1 PWM pin.
    Definition: rotator_pins.h:13
    +
    void watchdog_reset()
    Reset the watchdog timer.
    Definition: watchdog.h:45
    +
    AccelStepper stepper_az(1, M1IN1, M1IN2)
    +
    #define RATIO
    Gear ratio of rotator gear box.
    +
    void easycomm_init()
    Initialize the RS485 bus.
    Definition: easycomm.h:39
    +
    #define M1IN2
    Motor 1 PWM pin.
    Definition: rotator_pins.h:14
    +
    #define MAX_M1_ANGLE
    Maximum angle of azimuth.
    +
    bool homing_flag
    Homing flag.
    Definition: globals.h:44
    +
    AccelStepper stepper_el(1, M2IN1, M2IN2)
    +
    void watchdog_init()
    Initialize watchdog timer to 2sec time out and to set up interrupt routine.
    Definition: watchdog.h:32
    +
    float step2deg(int32_t step)
    Convert steps to degrees according to step/revolution, rotator gear box ratio and microstep...
    +
    enum _control_mode control_mode
    Control mode.
    Definition: globals.h:43
    +
    #define SW2
    Digital input, to read the status of end-stop for motor 2.
    Definition: rotator_pins.h:26
    +
    Class that functions for easycomm 3 implementation.
    Definition: easycomm.h:31
    +
    Definition: globals.h:17
    +
    #define MAX_M2_ANGLE
    Maximum angle of elevation.
    +
    #define MAX_ACCELERATION
    In steps/s^2, consider the microstep.
    +
    _rotator_error
    Definition: globals.h:20
    +
    wdt_timer wdt
    +
    bool get_state()
    Get the state of end-stop.
    Definition: endstop.h:45
    +
    #define HOME_DELAY
    Time for homing Deceleration in millisecond.
    +
    _control control_el
    Definition: globals.h:54
    +
    #define SPR
    Step Per Revolution, consider the microstep.
    +
    + + + + diff --git a/doxygen_files/html/struct__control-members.html b/doxygen_files/html/struct__control-members.html new file mode 100644 index 0000000..d514579 --- /dev/null +++ b/doxygen_files/html/struct__control-members.html @@ -0,0 +1,89 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    _control Member List
    +
    +
    + +

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

    + + + + + + + + + + + +
    d_control
    i_control
    input_control
    input_prv_control
    load_control
    p_control
    setpoint_control
    setpoint_speed_control
    speed_control
    u_control
    + + + + diff --git a/doxygen_files/html/struct__control.html b/doxygen_files/html/struct__control.html new file mode 100644 index 0000000..95fa95c --- /dev/null +++ b/doxygen_files/html/struct__control.html @@ -0,0 +1,312 @@ + + + + + + + +satnogs-rotator-firmware: _control Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    _control Struct Reference
    +
    +
    + +

    #include <globals.h>

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

    +Public Attributes

    double input
     Motor Position feedback in deg. More...
     
    double input_prv
     T-1 Motor Position feedback in deg. More...
     
    double speed
     Motor Rotation speed in deg/s. More...
     
    double setpoint
     Position set point in deg. More...
     
    double setpoint_speed
     Speed set point in deg/s. More...
     
    uint16_t load
     Motor Load in mA. More...
     
    double u
     Control signal range 0-255. More...
     
    double p
     
    double i
     
    double d
     Control gains. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 29 of file globals.h.

    +

    Member Data Documentation

    + +

    ◆ d

    + +
    +
    + + + + +
    double _control::d
    +
    + +

    Control gains.

    + +

    Definition at line 37 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ i

    + +
    +
    + + + + +
    double _control::i
    +
    + +

    Definition at line 37 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ input

    + +
    +
    + + + + +
    double _control::input
    +
    + +

    Motor Position feedback in deg.

    + +

    Definition at line 30 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    + +

    ◆ input_prv

    + +
    +
    + + + + +
    double _control::input_prv
    +
    + +

    T-1 Motor Position feedback in deg.

    + +

    Definition at line 31 of file globals.h.

    + +
    +
    + +

    ◆ load

    + +
    +
    + + + + +
    uint16_t _control::load
    +
    + +

    Motor Load in mA.

    + +

    Definition at line 35 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ p

    + +
    +
    + + + + +
    double _control::p
    +
    + +

    Definition at line 37 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ setpoint

    + +
    +
    + + + + +
    double _control::setpoint
    +
    + +

    Position set point in deg.

    + +

    Definition at line 33 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), homing(), and loop().

    + +
    +
    + +

    ◆ setpoint_speed

    + +
    +
    + + + + +
    double _control::setpoint_speed
    +
    + +

    Speed set point in deg/s.

    + +

    Definition at line 34 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ speed

    + +
    +
    + + + + +
    double _control::speed
    +
    + +

    Motor Rotation speed in deg/s.

    + +

    Definition at line 32 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ u

    + +
    +
    + + + + +
    double _control::u
    +
    + +

    Control signal range 0-255.

    + +

    Definition at line 36 of file globals.h.

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doxygen_files/html/struct__rotator-members.html b/doxygen_files/html/struct__rotator-members.html new file mode 100644 index 0000000..0a2e8f6 --- /dev/null +++ b/doxygen_files/html/struct__rotator-members.html @@ -0,0 +1,90 @@ + + + + + + + +satnogs-rotator-firmware: Member List + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    +
    +
    _rotator Member List
    +
    + + + + + diff --git a/doxygen_files/html/struct__rotator.html b/doxygen_files/html/struct__rotator.html new file mode 100644 index 0000000..ec751be --- /dev/null +++ b/doxygen_files/html/struct__rotator.html @@ -0,0 +1,336 @@ + + + + + + + +satnogs-rotator-firmware: _rotator Struct Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + +
    +
    + +
    +
    _rotator Struct Reference
    +
    +
    + +

    #include <globals.h>

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

    +Public Attributes

    enum _rotator_status rotator_status
     Rotator status. More...
     
    enum _rotator_error rotator_error
     Rotator error. More...
     
    enum _control_mode control_mode
     Control mode. More...
     
    bool homing_flag
     Homing flag. More...
     
    int8_t inside_temperature
     Inside Temperature. More...
     
    double park_az
     
    double park_el
     Park position for both axis. More...
     
    uint8_t fault_az
     
    uint8_t fault_el
     Motor drivers fault flag. More...
     
    bool switch_az
     
    bool switch_el
     End-stop vales. More...
     
    +

    Detailed Description

    +
    +

    Definition at line 40 of file globals.h.

    +

    Member Data Documentation

    + +

    ◆ control_mode

    + +
    +
    + + + + +
    enum _control_mode _rotator::control_mode
    +
    + +

    Control mode.

    + +

    Definition at line 43 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    + +

    ◆ fault_az

    + +
    +
    + + + + +
    uint8_t _rotator::fault_az
    +
    + +

    Definition at line 47 of file globals.h.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ fault_el

    + +
    +
    + + + + +
    uint8_t _rotator::fault_el
    +
    + +

    Motor drivers fault flag.

    + +

    Definition at line 47 of file globals.h.

    + +

    Referenced by loop().

    + +
    +
    + +

    ◆ homing_flag

    + +
    +
    + + + + +
    bool _rotator::homing_flag
    +
    + +

    Homing flag.

    + +

    Definition at line 44 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    + +

    ◆ inside_temperature

    + +
    +
    + + + + +
    int8_t _rotator::inside_temperature
    +
    + +

    Inside Temperature.

    + +

    Definition at line 45 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    + +

    ◆ park_az

    + +
    +
    + + + + +
    double _rotator::park_az
    +
    + +

    Definition at line 46 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ park_el

    + +
    +
    + + + + +
    double _rotator::park_el
    +
    + +

    Park position for both axis.

    + +

    Definition at line 46 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc().

    + +
    +
    + +

    ◆ rotator_error

    + +
    +
    + + + + +
    enum _rotator_error _rotator::rotator_error
    +
    + +

    Rotator error.

    + +

    Definition at line 42 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), ISR(), and loop().

    + +
    +
    + +

    ◆ rotator_status

    + +
    +
    + + + + +
    enum _rotator_status _rotator::rotator_status
    +
    + +

    Rotator status.

    + +

    Definition at line 41 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), ISR(), and loop().

    + +
    +
    + +

    ◆ switch_az

    + +
    +
    + + + + +
    bool _rotator::switch_az
    +
    + +

    Definition at line 48 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    + +

    ◆ switch_el

    + +
    +
    + + + + +
    bool _rotator::switch_el
    +
    + +

    End-stop vales.

    + +

    Definition at line 48 of file globals.h.

    + +

    Referenced by easycomm::easycomm_proc(), and loop().

    + +
    +
    +
    The documentation for this struct was generated from the following file: +
    + + + + diff --git a/doxygen_files/html/sync_off.png b/doxygen_files/html/sync_off.png new file mode 100644 index 0000000000000000000000000000000000000000..3b443fc62892114406e3d399421b2a881b897acc GIT binary patch literal 853 zcmV-b1FHOqP)oT|#XixUYy%lpuf3i8{fX!o zUyDD0jOrAiT^tq>fLSOOABs-#u{dV^F$b{L9&!2=9&RmV;;8s^x&UqB$PCj4FdKbh zoB1WTskPUPu05XzFbA}=KZ-GP1fPpAfSs>6AHb12UlR%-i&uOlTpFNS7{jm@mkU1V zh`nrXr~+^lsV-s1dkZOaI|kYyVj3WBpPCY{n~yd%u%e+d=f%`N0FItMPtdgBb@py; zq@v6NVArhyTC7)ULw-Jy8y42S1~4n(3LkrW8mW(F-4oXUP3E`e#g**YyqI7h-J2zK zK{m9##m4ri!7N>CqQqCcnI3hqo1I;Yh&QLNY4T`*ptiQGozK>FF$!$+84Z`xwmeMh zJ0WT+OH$WYFALEaGj2_l+#DC3t7_S`vHpSivNeFbP6+r50cO8iu)`7i%Z4BTPh@_m3Tk!nAm^)5Bqnr%Ov|Baunj#&RPtRuK& z4RGz|D5HNrW83-#ydk}tVKJrNmyYt-sTxLGlJY5nc&Re zU4SgHNPx8~Yxwr$bsju?4q&%T1874xxzq+_%?h8_ofw~(bld=o3iC)LUNR*BY%c0y zWd_jX{Y8`l%z+ol1$@Qa?Cy!(0CVIEeYpKZ`(9{z>3$CIe;pJDQk$m3p}$>xBm4lb zKo{4S)`wdU9Ba9jJbVJ0C=SOefZe%d$8=2r={nu<_^a3~>c#t_U6dye5)JrR(_a^E f@}b6j1K9lwFJq@>o)+Ry00000NkvXXu0mjfWa5j* literal 0 HcmV?d00001 diff --git a/doxygen_files/html/sync_on.png b/doxygen_files/html/sync_on.png new file mode 100644 index 0000000000000000000000000000000000000000..e08320fb64e6fa33b573005ed6d8fe294e19db76 GIT binary patch literal 845 zcmV-T1G4;yP)Y;xxyHF2B5Wzm| zOOGupOTn@c(JmBOl)e;XMNnZuiTJP>rM8<|Q`7I_))aP?*T)ow&n59{}X4$3Goat zgjs?*aasfbrokzG5cT4K=uG`E14xZl@z)F={P0Y^?$4t z>v!teRnNZym<6h{7sLyF1V0HsfEl+l6TrZpsfr1}luH~F7L}ktXu|*uVX^RG$L0`K zWs3j|0tIvVe(N%_?2{(iCPFGf#B6Hjy6o&}D$A%W%jfO8_W%ZO#-mh}EM$LMn7joJ z05dHr!5Y92g+31l<%i1(=L1a1pXX+OYnalY>31V4K}BjyRe3)9n#;-cCVRD_IG1fT zOKGeNY8q;TL@K{dj@D^scf&VCs*-Jb>8b>|`b*osv52-!A?BpbYtTQBns5EAU**$m zSnVSm(teh>tQi*S*A>#ySc=n;`BHz`DuG4&g4Kf8lLhca+zvZ7t7RflD6-i-mcK=M z!=^P$*u2)bkY5asG4gsss!Hn%u~>}kIW`vMs%lJLH+u*9<4PaV_c6U`KqWXQH%+Nu zTv41O(^ZVi@qhjQdG!fbZw&y+2o!iYymO^?ud3{P*HdoX83YV*Uu_HB=?U&W9%AU# z80}k1SS-CXTU7dcQlsm<^oYLxVSseqY6NO}dc`Nj?8vrhNuCdm@^{a3AQ_>6myOj+ z`1RsLUXF|dm|3k7s2jD(B{rzE>WI2scH8i1;=O5Cc9xB3^aJk%fQjqsu+kH#0=_5a z0nCE8@dbQa-|YIuUVvG0L_IwHMEhOj$Mj4Uq05 X8=0q~qBNan00000NkvXXu0mjfptF>5 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/tab_a.png b/doxygen_files/html/tab_a.png new file mode 100644 index 0000000000000000000000000000000000000000..3b725c41c5a527a3a3e40097077d0e206a681247 GIT binary patch literal 142 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QlXwMjv*C{Z|8b*H5dputLHD# z=<0|*y7z(Vor?d;H&?EG&cXR}?!j-Lm&u1OOI7AIF5&c)RFE;&p0MYK>*Kl@eiymD r@|NpwKX@^z+;{u_Z~trSBfrMKa%3`zocFjEXaR$#tDnm{r-UW|TZ1%4 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/tab_b.png b/doxygen_files/html/tab_b.png new file mode 100644 index 0000000000000000000000000000000000000000..e2b4a8638cb3496a016eaed9e16ffc12846dea18 GIT binary patch literal 169 zcmeAS@N?(olHy`uVBq!ia0vp^j6kfy!2~3aiye;!QU#tajv*C{Z}0l@H7kg?K0Lnr z!j&C6_(~HV9oQ0Pa6x{-v0AGV_E?vLn=ZI-;YrdjIl`U`uzuDWSP?o#Dmo{%SgM#oan kX~E1%D-|#H#QbHoIja2U-MgvsK&LQxy85}Sb4q9e0Efg%P5=M^ literal 0 HcmV?d00001 diff --git a/doxygen_files/html/tabs.css b/doxygen_files/html/tabs.css new file mode 100644 index 0000000..a28614b --- /dev/null +++ b/doxygen_files/html/tabs.css @@ -0,0 +1 @@ +.sm{position:relative;z-index:9999}.sm,.sm ul,.sm li{display:block;list-style:none;margin:0;padding:0;line-height:normal;direction:ltr;text-align:left;-webkit-tap-highlight-color:rgba(0,0,0,0)}.sm-rtl,.sm-rtl ul,.sm-rtl li{direction:rtl;text-align:right}.sm>li>h1,.sm>li>h2,.sm>li>h3,.sm>li>h4,.sm>li>h5,.sm>li>h6{margin:0;padding:0}.sm ul{display:none}.sm li,.sm a{position:relative}.sm a{display:block}.sm a.disabled{cursor:not-allowed}.sm:after{content:"\00a0";display:block;height:0;font:0/0 serif;clear:both;visibility:hidden;overflow:hidden}.sm,.sm *,.sm *:before,.sm *:after{-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}#doc-content{overflow:auto;display:block;padding:0;margin:0;-webkit-overflow-scrolling:touch}.sm-dox{background-image:url("tab_b.png")}.sm-dox a,.sm-dox a:focus,.sm-dox a:hover,.sm-dox a:active{padding:0 12px;padding-right:43px;font-family:"Lucida Grande","Geneva","Helvetica",Arial,sans-serif;font-size:13px;font-weight:bold;line-height:36px;text-decoration:none;text-shadow:0 1px 1px rgba(255,255,255,0.9);color:#283a5d;outline:0}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a.current{color:#d23600}.sm-dox a.disabled{color:#bbb}.sm-dox a span.sub-arrow{position:absolute;top:50%;margin-top:-14px;left:auto;right:3px;width:28px;height:28px;overflow:hidden;font:bold 12px/28px monospace!important;text-align:center;text-shadow:none;background:rgba(255,255,255,0.5);-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox a.highlighted span.sub-arrow:before{display:block;content:'-'}.sm-dox>li:first-child>a,.sm-dox>li:first-child>:not(ul) a{-moz-border-radius:5px 5px 0 0;-webkit-border-radius:5px;border-radius:5px 5px 0 0}.sm-dox>li:last-child>a,.sm-dox>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul{-moz-border-radius:0 0 5px 5px;-webkit-border-radius:0;border-radius:0 0 5px 5px}.sm-dox>li:last-child>a.highlighted,.sm-dox>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>a.highlighted,.sm-dox>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>ul>li:last-child>*:not(ul) a.highlighted{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox ul{background:rgba(162,162,162,0.1)}.sm-dox ul a,.sm-dox ul a:focus,.sm-dox ul a:hover,.sm-dox ul a:active{font-size:12px;border-left:8px solid transparent;line-height:36px;text-shadow:none;background-color:white;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul ul a,.sm-dox ul ul a:hover,.sm-dox ul ul a:focus,.sm-dox ul ul a:active{border-left:16px solid transparent}.sm-dox ul ul ul a,.sm-dox ul ul ul a:hover,.sm-dox ul ul ul a:focus,.sm-dox ul ul ul a:active{border-left:24px solid transparent}.sm-dox ul ul ul ul a,.sm-dox ul ul ul ul a:hover,.sm-dox ul ul ul ul a:focus,.sm-dox ul ul ul ul a:active{border-left:32px solid transparent}.sm-dox ul ul ul ul ul a,.sm-dox ul ul ul ul ul a:hover,.sm-dox ul ul ul ul ul a:focus,.sm-dox ul ul ul ul ul a:active{border-left:40px solid transparent}@media(min-width:768px){.sm-dox ul{position:absolute;width:12em}.sm-dox li{float:left}.sm-dox.sm-rtl li{float:right}.sm-dox ul li,.sm-dox.sm-rtl ul li,.sm-dox.sm-vertical li{float:none}.sm-dox a{white-space:nowrap}.sm-dox ul a,.sm-dox.sm-vertical a{white-space:normal}.sm-dox .sm-nowrap>li>a,.sm-dox .sm-nowrap>li>:not(ul) a{white-space:nowrap}.sm-dox{padding:0 10px;background-image:url("tab_b.png");line-height:36px}.sm-dox a span.sub-arrow{top:50%;margin-top:-2px;right:12px;width:0;height:0;border-width:4px;border-style:solid dashed dashed dashed;border-color:#283a5d transparent transparent transparent;background:transparent;-moz-border-radius:0;-webkit-border-radius:0;border-radius:0}.sm-dox a,.sm-dox a:focus,.sm-dox a:active,.sm-dox a:hover,.sm-dox a.highlighted{padding:0 12px;background-image:url("tab_s.png");background-repeat:no-repeat;background-position:right;-moz-border-radius:0!important;-webkit-border-radius:0;border-radius:0!important}.sm-dox a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox a:hover span.sub-arrow{border-color:white transparent transparent transparent}.sm-dox a.has-submenu{padding-right:24px}.sm-dox li{border-top:0}.sm-dox>li>ul:before,.sm-dox>li>ul:after{content:'';position:absolute;top:-18px;left:30px;width:0;height:0;overflow:hidden;border-width:9px;border-style:dashed dashed solid dashed;border-color:transparent transparent #bbb transparent}.sm-dox>li>ul:after{top:-16px;left:31px;border-width:8px;border-color:transparent transparent #fff transparent}.sm-dox ul{border:1px solid #bbb;padding:5px 0;background:#fff;-moz-border-radius:5px!important;-webkit-border-radius:5px;border-radius:5px!important;-moz-box-shadow:0 5px 9px rgba(0,0,0,0.2);-webkit-box-shadow:0 5px 9px rgba(0,0,0,0.2);box-shadow:0 5px 9px rgba(0,0,0,0.2)}.sm-dox ul a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-color:transparent transparent transparent #555;border-style:dashed dashed dashed solid}.sm-dox ul a,.sm-dox ul a:hover,.sm-dox ul a:focus,.sm-dox ul a:active,.sm-dox ul a.highlighted{color:#555;background-image:none;border:0!important;color:#555;background-image:none}.sm-dox ul a:hover{background-image:url("tab_a.png");background-repeat:repeat-x;color:white;text-shadow:0 1px 1px black}.sm-dox ul a:hover span.sub-arrow{border-color:transparent transparent transparent white}.sm-dox span.scroll-up,.sm-dox span.scroll-down{position:absolute;display:none;visibility:hidden;overflow:hidden;background:#fff;height:36px}.sm-dox span.scroll-up:hover,.sm-dox span.scroll-down:hover{background:#eee}.sm-dox span.scroll-up:hover span.scroll-up-arrow,.sm-dox span.scroll-up:hover span.scroll-down-arrow{border-color:transparent transparent #d23600 transparent}.sm-dox span.scroll-down:hover span.scroll-down-arrow{border-color:#d23600 transparent transparent transparent}.sm-dox span.scroll-up-arrow,.sm-dox span.scroll-down-arrow{position:absolute;top:0;left:50%;margin-left:-6px;width:0;height:0;overflow:hidden;border-width:6px;border-style:dashed dashed solid dashed;border-color:transparent transparent #555 transparent}.sm-dox span.scroll-down-arrow{top:8px;border-style:solid dashed dashed dashed;border-color:#555 transparent transparent transparent}.sm-dox.sm-rtl a.has-submenu{padding-right:12px;padding-left:24px}.sm-dox.sm-rtl a span.sub-arrow{right:auto;left:12px}.sm-dox.sm-rtl.sm-vertical a.has-submenu{padding:10px 20px}.sm-dox.sm-rtl.sm-vertical a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-rtl>li>ul:before{left:auto;right:30px}.sm-dox.sm-rtl>li>ul:after{left:auto;right:31px}.sm-dox.sm-rtl ul a.has-submenu{padding:10px 20px!important}.sm-dox.sm-rtl ul a span.sub-arrow{right:auto;left:8px;border-style:dashed solid dashed dashed;border-color:transparent #555 transparent transparent}.sm-dox.sm-vertical{padding:10px 0;-moz-border-radius:5px;-webkit-border-radius:5px;border-radius:5px}.sm-dox.sm-vertical a{padding:10px 20px}.sm-dox.sm-vertical a:hover,.sm-dox.sm-vertical a:focus,.sm-dox.sm-vertical a:active,.sm-dox.sm-vertical a.highlighted{background:#fff}.sm-dox.sm-vertical a.disabled{background-image:url("tab_b.png")}.sm-dox.sm-vertical a span.sub-arrow{right:8px;top:50%;margin-top:-5px;border-width:5px;border-style:dashed dashed dashed solid;border-color:transparent transparent transparent #555}.sm-dox.sm-vertical>li>ul:before,.sm-dox.sm-vertical>li>ul:after{display:none}.sm-dox.sm-vertical ul a{padding:10px 20px}.sm-dox.sm-vertical ul a:hover,.sm-dox.sm-vertical ul a:focus,.sm-dox.sm-vertical ul a:active,.sm-dox.sm-vertical ul a.highlighted{background:#eee}.sm-dox.sm-vertical ul a.disabled{background:#fff}} \ No newline at end of file diff --git a/doxygen_files/html/tc74_8h.html b/doxygen_files/html/tc74_8h.html new file mode 100644 index 0000000..2717b42 --- /dev/null +++ b/doxygen_files/html/tc74_8h.html @@ -0,0 +1,213 @@ + + + + + + + +satnogs-rotator-firmware: libraries/tc74.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    tc74.h File Reference
    +
    +
    +
    #include <Wire.h>
    +
    +Include dependency graph for tc74.h:
    +
    +
    +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  tc74
     Class that functions for interacting with a TC74 Temperature sensor. More...
     
    + + + + + + + + + + + +

    +Macros

    #define TC74_TEMPERATURE_REGISTER   0x00
     
    #define TC74_CONFIGURATION_REGISTER   0x01
     
    #define TC74_STANDBY_COMMAND   0x80
     
    #define TC74_AWAKE_COMMAND   0x00
     
    #define TC74_DATA_READY_FLAG   0x40
     
    +

    Detailed Description

    +

    It is a driver for a TC74 Temperature sensor.

    +

    Licensed under the GPLv3

    + +

    Definition in file tc74.h.

    +

    Macro Definition Documentation

    + +

    ◆ TC74_AWAKE_COMMAND

    + +
    +
    + + + + +
    #define TC74_AWAKE_COMMAND   0x00
    +
    + +

    Definition at line 18 of file tc74.h.

    + +

    Referenced by tc74::get_status(), and tc74::wake_up().

    + +
    +
    + +

    ◆ TC74_CONFIGURATION_REGISTER

    + +
    +
    + + + + +
    #define TC74_CONFIGURATION_REGISTER   0x01
    +
    + +

    Definition at line 16 of file tc74.h.

    + +

    Referenced by tc74::get_status(), tc74::sleep(), and tc74::wake_up().

    + +
    +
    + +

    ◆ TC74_DATA_READY_FLAG

    + +
    +
    + + + + +
    #define TC74_DATA_READY_FLAG   0x40
    +
    + +

    Definition at line 19 of file tc74.h.

    + +
    +
    + +

    ◆ TC74_STANDBY_COMMAND

    + +
    +
    + + + + +
    #define TC74_STANDBY_COMMAND   0x80
    +
    + +

    Definition at line 17 of file tc74.h.

    + +

    Referenced by tc74::sleep().

    + +
    +
    + +

    ◆ TC74_TEMPERATURE_REGISTER

    + +
    +
    + + + + +
    #define TC74_TEMPERATURE_REGISTER   0x00
    +
    + +

    Definition at line 15 of file tc74.h.

    + +

    Referenced by tc74::get_temp().

    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/tc74_8h__dep__incl.map b/doxygen_files/html/tc74_8h__dep__incl.map new file mode 100644 index 0000000..7783ded --- /dev/null +++ b/doxygen_files/html/tc74_8h__dep__incl.map @@ -0,0 +1,3 @@ + + + diff --git a/doxygen_files/html/tc74_8h__dep__incl.md5 b/doxygen_files/html/tc74_8h__dep__incl.md5 new file mode 100644 index 0000000..32e9c6d --- /dev/null +++ b/doxygen_files/html/tc74_8h__dep__incl.md5 @@ -0,0 +1 @@ +3bdf7c5cf4e3cac5074c187f65e60e43 \ No newline at end of file diff --git a/doxygen_files/html/tc74_8h__dep__incl.png b/doxygen_files/html/tc74_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..c30b4ddb8e2a2de9ecc9222c0a592455ffe2edda GIT binary patch literal 4105 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/tc74_8h__incl.map b/doxygen_files/html/tc74_8h__incl.map new file mode 100644 index 0000000..5394b5d --- /dev/null +++ b/doxygen_files/html/tc74_8h__incl.map @@ -0,0 +1,2 @@ + + diff --git a/doxygen_files/html/tc74_8h__incl.md5 b/doxygen_files/html/tc74_8h__incl.md5 new file mode 100644 index 0000000..07b403b --- /dev/null +++ b/doxygen_files/html/tc74_8h__incl.md5 @@ -0,0 +1 @@ +be59189dfb814b0a1b3f1b29b8ce2fa2 \ No newline at end of file diff --git a/doxygen_files/html/tc74_8h__incl.png b/doxygen_files/html/tc74_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..510cfcfb695d00ea5d533a96895971f0abb6e235 GIT binary patch literal 2907 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 Wr1e=d + + + + + + +satnogs-rotator-firmware: libraries/tc74.h Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    tc74.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef TC74_H_
    11 #define TC74_H_
    12 
    13 #include <Wire.h>
    14 
    15 #define TC74_TEMPERATURE_REGISTER 0x00
    16 #define TC74_CONFIGURATION_REGISTER 0x01
    17 #define TC74_STANDBY_COMMAND 0x80
    18 #define TC74_AWAKE_COMMAND 0x00
    19 #define TC74_DATA_READY_FLAG 0x40
    20 
    21 /**************************************************************************/
    35 /**************************************************************************/
    36 class tc74 {
    37 public:
    38 
    39  tc74(uint8_t id) {
    40  _id = id;
    41  }
    42 
    43  /**************************************************************************/
    47  /**************************************************************************/
    48  void init() {
    49  Wire.begin();
    50  Wire.setClock(I2C_FREQ);
    51  }
    52 
    53  /**************************************************************************/
    58  /**************************************************************************/
    59  int8_t get_temp() {
    60  Wire.beginTransmission(_id);
    61  Wire.write(TC74_TEMPERATURE_REGISTER);
    62  Wire.endTransmission();
    63  Wire.requestFrom(_id, 1);
    64  while (Wire.available() == 0)
    65  ;
    66  return Wire.read();
    67  }
    68 
    69  /**************************************************************************/
    74  /**************************************************************************/
    75  int8_t get_status() {
    76  Wire.beginTransmission(_id);
    77  Wire.write(TC74_CONFIGURATION_REGISTER);
    78  Wire.endTransmission();
    79  Wire.beginTransmission(_id);
    80  Wire.write(TC74_AWAKE_COMMAND);
    81  Wire.endTransmission();
    82  Wire.requestFrom(_id, 1);
    83  while (Wire.available() == 0)
    84  ;
    85  return Wire.read();
    86  }
    87 
    88  /**************************************************************************/
    93  /**************************************************************************/
    94  int8_t wake_up() {
    95  Wire.beginTransmission(_id);
    96  Wire.write(TC74_CONFIGURATION_REGISTER);
    97  Wire.endTransmission();
    98  Wire.beginTransmission(_id);
    99  Wire.write(TC74_AWAKE_COMMAND);
    100  Wire.endTransmission();
    101  return get_status();
    102  }
    103 
    104  /**************************************************************************/
    109  /**************************************************************************/
    110  int8_t sleep() {
    111  Wire.beginTransmission(_id);
    112  Wire.write(TC74_CONFIGURATION_REGISTER);
    113  Wire.endTransmission();
    114  Wire.beginTransmission(_id);
    115  Wire.write(TC74_STANDBY_COMMAND);
    116  Wire.endTransmission();
    117  return get_status();
    118  }
    119 
    120 private:
    121  int _id;
    122 };
    123 
    124 #endif /* TC74_H_ */
    int8_t get_status()
    Reads the int8_t in status register.
    Definition: tc74.h:75
    +
    void init()
    Initialize the I2C bus.
    Definition: tc74.h:48
    +
    int8_t sleep()
    Sleep device request to the sensor on the specified address.
    Definition: tc74.h:110
    +
    #define TC74_STANDBY_COMMAND
    Definition: tc74.h:17
    +
    int _id
    Definition: tc74.h:121
    +
    Class that functions for interacting with a TC74 Temperature sensor.
    Definition: tc74.h:36
    +
    #define I2C_FREQ
    Definition: as5601.h:17
    +
    int8_t wake_up()
    Wake up request to the sensor on the specified address.
    Definition: tc74.h:94
    +
    #define TC74_CONFIGURATION_REGISTER
    Definition: tc74.h:16
    +
    tc74(uint8_t id)
    Definition: tc74.h:39
    +
    int8_t get_temp()
    Reads the int8_t in temperature measurement register.
    Definition: tc74.h:59
    +
    #define TC74_TEMPERATURE_REGISTER
    Definition: tc74.h:15
    +
    #define TC74_AWAKE_COMMAND
    Definition: tc74.h:18
    +
    + + + + diff --git a/doxygen_files/html/twi_8c_8d.html b/doxygen_files/html/twi_8c_8d.html new file mode 100644 index 0000000..3b6acdb --- /dev/null +++ b/doxygen_files/html/twi_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    twi.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/twi_8c_8d_source.html b/doxygen_files/html/twi_8c_8d_source.html new file mode 100644 index 0000000..daa7c1b --- /dev/null +++ b/doxygen_files/html/twi_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/platformlibs/Wire/src/utility/twi.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    twi.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/platformlibs/Wire/src/utility/twi.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/libraries/Wire/src/utility/twi.h
    + + + + diff --git a/doxygen_files/html/watchdog_8h.html b/doxygen_files/html/watchdog_8h.html new file mode 100644 index 0000000..a626fd0 --- /dev/null +++ b/doxygen_files/html/watchdog_8h.html @@ -0,0 +1,163 @@ + + + + + + + +satnogs-rotator-firmware: libraries/watchdog.h File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    + +
    +
    watchdog.h File Reference
    +
    +
    +
    #include <avr/wdt.h>
    +#include "globals.h"
    +#include "easycomm.h"
    +#include "rotator_pins.h"
    +
    +Include dependency graph for watchdog.h:
    +
    +
    + + + + + + +
    +
    +This graph shows which files directly or indirectly include this file:
    +
    +
    + + + + +
    +
    +

    Go to the source code of this file.

    + + + + + +

    +Classes

    class  wdt_timer
     Class that functions for interacting with a watchdog timer. More...
     
    + + + + +

    +Functions

     ISR (WDT_vect)
     Watchdog timer interrupt routine that implements a minimal easycomm protocol to get the errors and reset the uC. More...
     
    +

    Detailed Description

    +

    It is a driver for watchdog timer.

    +

    Licensed under the GPLv3

    + +

    Definition in file watchdog.h.

    +

    Function Documentation

    + +

    ◆ ISR()

    + +
    +
    + + + + + + + + +
    ISR (WDT_vect )
    +
    + +

    Watchdog timer interrupt routine that implements a minimal easycomm protocol to get the errors and reset the uC.

    + +

    Definition at line 56 of file watchdog.h.

    + +

    References rs485::available(), BUFFER_SIZE, error, rs485::flush(), MOTOR_EN, rs485::print(), rs485::read(), rotator, _rotator::rotator_error, _rotator::rotator_status, and wdt_error.

    +
    +Here is the call graph for this function:
    +
    +
    + + + + + + +
    + +
    +
    +
    + + + + diff --git a/doxygen_files/html/watchdog_8h__dep__incl.map b/doxygen_files/html/watchdog_8h__dep__incl.map new file mode 100644 index 0000000..e2869ef --- /dev/null +++ b/doxygen_files/html/watchdog_8h__dep__incl.map @@ -0,0 +1,4 @@ + + + + diff --git a/doxygen_files/html/watchdog_8h__dep__incl.md5 b/doxygen_files/html/watchdog_8h__dep__incl.md5 new file mode 100644 index 0000000..2748117 --- /dev/null +++ b/doxygen_files/html/watchdog_8h__dep__incl.md5 @@ -0,0 +1 @@ +a9080829ea5a24ec311185eceb17267a \ No newline at end of file diff --git a/doxygen_files/html/watchdog_8h__dep__incl.png b/doxygen_files/html/watchdog_8h__dep__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..b8bcd3bd337e17415f61a28890645223fdc17f0d GIT binary patch literal 7151 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 literal 0 HcmV?d00001 diff --git a/doxygen_files/html/watchdog_8h__incl.map b/doxygen_files/html/watchdog_8h__incl.map new file mode 100644 index 0000000..e25d81e --- /dev/null +++ b/doxygen_files/html/watchdog_8h__incl.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/watchdog_8h__incl.md5 b/doxygen_files/html/watchdog_8h__incl.md5 new file mode 100644 index 0000000..26afedc --- /dev/null +++ b/doxygen_files/html/watchdog_8h__incl.md5 @@ -0,0 +1 @@ +c03b51e93a7cec2a36d6011cf96c65d4 \ No newline at end of file diff --git a/doxygen_files/html/watchdog_8h__incl.png b/doxygen_files/html/watchdog_8h__incl.png new file mode 100644 index 0000000000000000000000000000000000000000..687d2d1c3aa928505a68d0d0aa311bf49c66f892 GIT binary patch literal 23462 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∓ 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 Tr!%_4y$7PEtgTdxH4pwT!vV;h literal 0 HcmV?d00001 diff --git a/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.map b/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.map new file mode 100644 index 0000000..c76a183 --- /dev/null +++ b/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.map @@ -0,0 +1,6 @@ + + + + + + diff --git a/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.md5 b/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.md5 new file mode 100644 index 0000000..a51faab --- /dev/null +++ b/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.md5 @@ -0,0 +1 @@ +39697224a29d2fc899ed9cb60e796da3 \ No newline at end of file diff --git a/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.png b/doxygen_files/html/watchdog_8h_a43905d6fb5c4d433a49f527fa6ab811f_cgraph.png new file mode 100644 index 0000000000000000000000000000000000000000..aa6c35b244c77264c58b8153525e328a50b6bca7 GIT binary patch literal 9604 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 + + + + + + +satnogs-rotator-firmware: libraries/watchdog.h Source File + + + + + + + + + +

    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    watchdog.h
    +
    +
    +Go to the documentation of this file.
    1 
    10 #ifndef WATCHDOG_H_
    11 #define WATCHDOG_H_
    12 
    13 #include <avr/wdt.h>
    14 #include "globals.h"
    15 #include "easycomm.h"
    16 #include "rotator_pins.h"
    17 
    18 /**************************************************************************/
    22 /**************************************************************************/
    23 class wdt_timer{
    24 public:
    25 
    26  /**************************************************************************/
    31  /**************************************************************************/
    32  void watchdog_init() {
    33  cli();
    34  wdt_reset();
    35  WDTCSR |= _BV(WDCE) | _BV(WDE);
    36  WDTCSR = _BV(WDIE) | _BV(WDE) | _BV(WDP3) | _BV(WDP2) | _BV(WDP1);
    37  sei();
    38  }
    39 
    40  /**************************************************************************/
    44  /**************************************************************************/
    45  void watchdog_reset() {
    46  wdt_reset();
    47  }
    48 };
    49 
    50 /**************************************************************************/
    55 /**************************************************************************/
    56 ISR(WDT_vect) {
    57  // Disable motors
    58  digitalWrite(MOTOR_EN, LOW);
    59  // Set error
    62  // Enable interrupts for serial communication
    63  sei();
    64 
    65  while (1) {
    66  // Reset the watchdog timer because the interrupts are enabled
    67  wdt_reset();
    68  // Implement a minimal easycomm protocol to get the errors and reset uC
    69  char buffer[BUFFER_SIZE];
    70  char incomingByte;
    71  static uint16_t BufferCnt = 0;
    72  String str1, str2, str3, str4, str5, str6;
    73  while (rs485.available() > 0) {
    74  incomingByte = rs485.read();
    75  if (incomingByte == '\n') {
    76  buffer[BufferCnt] = 0;
    77  if (buffer[0] == 'G' && buffer[1] == 'S') {
    78  str1 = String("GS");
    79  str2 = String(rotator.rotator_status, DEC);
    80  str3 = String("\n");
    81  rs485.print(str1 + str2 + str3);
    82  } else if (buffer[0] == 'G' && buffer[1] == 'E') {
    83  str1 = String("GE");
    84  str2 = String(rotator.rotator_error, DEC);
    85  str3 = String("\n");
    86  rs485.print(str1 + str2 + str3);
    87  } else if (buffer[0] == 'R' && buffer[1] == 'B') {
    88  while(1);
    89  }
    90  BufferCnt = 0;
    91  rs485.flush();
    92  } else {
    93  buffer[BufferCnt] = incomingByte;
    94  BufferCnt++;
    95  }
    96  }
    97  // Reset the watchdog timer
    98  wdt_reset();
    99  }
    100 }
    101 
    102 #endif /* WATCHDOG_H_ */
    Class that functions for interacting with a watchdog timer.
    Definition: watchdog.h:23
    +
    ISR(WDT_vect)
    Watchdog timer interrupt routine that implements a minimal easycomm protocol to get the errors and re...
    Definition: watchdog.h:56
    +
    #define MOTOR_EN
    Digital output, to enable the motors.
    Definition: rotator_pins.h:23
    + +
    _rotator rotator
    Definition: globals.h:57
    +
    enum _rotator_status rotator_status
    Rotator status.
    Definition: globals.h:41
    +
    enum _rotator_error rotator_error
    Rotator error.
    Definition: globals.h:42
    +
    uint8_t available(void)
    The number of chars/uint8_t that are available in RS485 buffer.
    Definition: rs485.h:73
    +
    void watchdog_reset()
    Reset the watchdog timer.
    Definition: watchdog.h:45
    +
    uint8_t read()
    Read a char/uint8_t from RS485 bus.
    Definition: rs485.h:63
    +
    void watchdog_init()
    Initialize watchdog timer to 2sec time out and to set up interrupt routine.
    Definition: watchdog.h:32
    + + +
    void flush()
    Waits for the transmission of outgoing serial data to complete.
    Definition: rs485.h:82
    +
    void print(String str)
    Print a string to RS485 bus.
    Definition: rs485.h:50
    +
    Class that functions for interacting with a RS485 transceiver.
    Definition: rs485.h:23
    +
    Definition: globals.h:17
    + +
    #define BUFFER_SIZE
    Set the size of serial buffer.
    Definition: easycomm.h:21
    +
    + + + + diff --git a/doxygen_files/html/wiring_8c_8d.html b/doxygen_files/html/wiring_8c_8d.html new file mode 100644 index 0000000..259653e --- /dev/null +++ b/doxygen_files/html/wiring_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring_8c_8d_source.html b/doxygen_files/html/wiring_8c_8d_source.html new file mode 100644 index 0000000..7e708b0 --- /dev/null +++ b/doxygen_files/html/wiring_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/wiring__analog_8c_8d.html b/doxygen_files/html/wiring__analog_8c_8d.html new file mode 100644 index 0000000..263f781 --- /dev/null +++ b/doxygen_files/html/wiring__analog_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_analog.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_analog.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring__analog_8c_8d_source.html b/doxygen_files/html/wiring__analog_8c_8d_source.html new file mode 100644 index 0000000..8e9ba29 --- /dev/null +++ b/doxygen_files/html/wiring__analog_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_analog.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_analog.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_analog.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_analog.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/wiring__digital_8c_8d.html b/doxygen_files/html/wiring__digital_8c_8d.html new file mode 100644 index 0000000..ee7d6d2 --- /dev/null +++ b/doxygen_files/html/wiring__digital_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_digital.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_digital.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring__digital_8c_8d_source.html b/doxygen_files/html/wiring__digital_8c_8d_source.html new file mode 100644 index 0000000..ac8024f --- /dev/null +++ b/doxygen_files/html/wiring__digital_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_digital.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_digital.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_digital.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_digital.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/wiring__pulse_8S_8d.html b/doxygen_files/html/wiring__pulse_8S_8d.html new file mode 100644 index 0000000..43d777f --- /dev/null +++ b/doxygen_files/html/wiring__pulse_8S_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.S.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.S.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring__pulse_8S_8d_source.html b/doxygen_files/html/wiring__pulse_8S_8d_source.html new file mode 100644 index 0000000..05c85dc --- /dev/null +++ b/doxygen_files/html/wiring__pulse_8S_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.S.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.S.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_pulse.S.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.S
    + + + + diff --git a/doxygen_files/html/wiring__pulse_8c_8d.html b/doxygen_files/html/wiring__pulse_8c_8d.html new file mode 100644 index 0000000..aa91539 --- /dev/null +++ b/doxygen_files/html/wiring__pulse_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring__pulse_8c_8d_source.html b/doxygen_files/html/wiring__pulse_8c_8d_source.html new file mode 100644 index 0000000..6185a29 --- /dev/null +++ b/doxygen_files/html/wiring__pulse_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_pulse.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_pulse.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_pulse.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_pulse.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + + diff --git a/doxygen_files/html/wiring__shift_8c_8d.html b/doxygen_files/html/wiring__shift_8c_8d.html new file mode 100644 index 0000000..561d3b4 --- /dev/null +++ b/doxygen_files/html/wiring__shift_8c_8d.html @@ -0,0 +1,82 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_shift.c.d File Reference + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_shift.c.d File Reference
    +
    + + + + + diff --git a/doxygen_files/html/wiring__shift_8c_8d_source.html b/doxygen_files/html/wiring__shift_8c_8d_source.html new file mode 100644 index 0000000..de28afe --- /dev/null +++ b/doxygen_files/html/wiring__shift_8c_8d_source.html @@ -0,0 +1,80 @@ + + + + + + + +satnogs-rotator-firmware: dc_motor_controller/build-satnogs/core/wiring_shift.c.d Source File + + + + + + + + + +
    +
    + + + + + + +
    +
    satnogs-rotator-firmware +
    +
    +
    + + + + + + + + +
    +
    + + +
    + +
    + + +
    +
    +
    +
    wiring_shift.c.d
    +
    +
    +Go to the documentation of this file.
    1 build-satnogs/core/wiring_shift.c.o: \
    2  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_shift.c \
    3  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/wiring_private.h \
    4  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/Arduino.h \
    5  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/cores/arduino/binary.h \
    6  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/pins_arduino.h \
    7  /home/azisi/opt/arduino-1.8.5/hardware/arduino/avr/variants/eightanaloginputs/../standard/pins_arduino.h
    + + + +