From 1824f294990edf70aba7ed975e63f422967838fd Mon Sep 17 00:00:00 2001 From: lishifeng Date: Sun, 26 Oct 2025 09:34:17 +0800 Subject: [PATCH] feat: update doxygen --- CHANGELOG.md | 6 + Doxyfile | 1226 ++++-- README.md | 2 +- doc/html/Doxygen.png | Bin 2049 -> 6015 bytes doc/html/annotated.html | 63 +- doc/html/bc_s.png | Bin 676 -> 0 bytes doc/html/bdwn.png | Bin 147 -> 0 bytes doc/html/classes.html | 61 +- doc/html/clipboard.js | 61 + doc/html/closed.png | Bin 132 -> 0 bytes doc/html/cookie.js | 58 + doc/html/darkmode_toggle.js | 228 + doc/html/dir_000001_000002.html | 112 + doc/html/dir_000002_000004.html | 112 + doc/html/dir_000005_000002.html | 112 + .../dir_11ec664f88f5f079ad4de1adb8458c37.html | 78 +- ...r_11ec664f88f5f079ad4de1adb8458c37_dep.md5 | 1 + ...r_11ec664f88f5f079ad4de1adb8458c37_dep.svg | 29 + .../dir_13e138d54eb8818da29c3992edef070a.html | 99 +- ...r_13e138d54eb8818da29c3992edef070a_dep.md5 | 1 + ...r_13e138d54eb8818da29c3992edef070a_dep.svg | 43 + .../dir_68267d1309a1af8e8297ef4c3efbcdba.html | 76 +- .../dir_b31d54d5631803016a26f28213a41162.html | 81 +- ...r_b31d54d5631803016a26f28213a41162_dep.md5 | 1 + ...r_b31d54d5631803016a26f28213a41162_dep.svg | 43 + .../dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html | 99 +- ...r_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.md5 | 1 + ...r_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.svg | 43 + .../dir_e68e8157741866f444e17edd764ebbae.html | 73 +- doc/html/doc.png | Bin 746 -> 0 bytes doc/html/doxygen.css | 2238 ++++++---- doc/html/doxygen.svg | 4 +- doc/html/doxygen_crawl.html | 287 ++ doc/html/driver__pcf8563_8c.html | 500 +-- doc/html/driver__pcf8563_8c__incl.md5 | 1 + doc/html/driver__pcf8563_8c__incl.svg | 93 + doc/html/driver__pcf8563_8c_source.html | 3649 +++++++++-------- doc/html/driver__pcf8563_8h.html | 410 +- doc/html/driver__pcf8563_8h__dep__incl.md5 | 1 + doc/html/driver__pcf8563_8h__dep__incl.svg | 381 ++ doc/html/driver__pcf8563_8h__incl.md5 | 1 + doc/html/driver__pcf8563_8h__incl.svg | 75 + doc/html/driver__pcf8563_8h_source.html | 668 +-- doc/html/driver__pcf8563__alarm_8c.html | 139 +- doc/html/driver__pcf8563__alarm_8c__incl.md5 | 1 + doc/html/driver__pcf8563__alarm_8c__incl.svg | 148 + .../driver__pcf8563__alarm_8c_source.html | 1005 ++--- doc/html/driver__pcf8563__alarm_8h.html | 158 +- .../driver__pcf8563__alarm_8h__dep__incl.md5 | 1 + .../driver__pcf8563__alarm_8h__dep__incl.svg | 41 + doc/html/driver__pcf8563__alarm_8h__incl.md5 | 1 + doc/html/driver__pcf8563__alarm_8h__incl.svg | 130 + .../driver__pcf8563__alarm_8h_source.html | 222 +- doc/html/driver__pcf8563__alarm__test_8c.html | 89 +- .../driver__pcf8563__alarm__test_8c__incl.md5 | 1 + .../driver__pcf8563__alarm__test_8c__incl.svg | 149 + ...river__pcf8563__alarm__test_8c_source.html | 775 ++-- doc/html/driver__pcf8563__alarm__test_8h.html | 94 +- ...er__pcf8563__alarm__test_8h__dep__incl.md5 | 1 + ...er__pcf8563__alarm__test_8h__dep__incl.svg | 41 + .../driver__pcf8563__alarm__test_8h__incl.md5 | 1 + .../driver__pcf8563__alarm__test_8h__incl.svg | 112 + ...river__pcf8563__alarm__test_8h_source.html | 106 +- doc/html/driver__pcf8563__basic_8c.html | 124 +- doc/html/driver__pcf8563__basic_8c__incl.md5 | 1 + doc/html/driver__pcf8563__basic_8c__incl.svg | 148 + .../driver__pcf8563__basic_8c_source.html | 679 +-- doc/html/driver__pcf8563__basic_8h.html | 129 +- .../driver__pcf8563__basic_8h__dep__incl.md5 | 1 + .../driver__pcf8563__basic_8h__dep__incl.svg | 41 + doc/html/driver__pcf8563__basic_8h__incl.md5 | 1 + doc/html/driver__pcf8563__basic_8h__incl.svg | 130 + .../driver__pcf8563__basic_8h_source.html | 152 +- doc/html/driver__pcf8563__interface_8h.html | 119 +- ...iver__pcf8563__interface_8h__dep__incl.md5 | 1 + ...iver__pcf8563__interface_8h__dep__incl.svg | 345 ++ .../driver__pcf8563__interface_8h__incl.md5 | 1 + .../driver__pcf8563__interface_8h__incl.svg | 94 + .../driver__pcf8563__interface_8h_source.html | 136 +- ...iver__pcf8563__interface__template_8c.html | 114 +- ..._pcf8563__interface__template_8c__incl.md5 | 1 + ..._pcf8563__interface__template_8c__incl.svg | 112 + ...cf8563__interface__template_8c_source.html | 208 +- doc/html/driver__pcf8563__output_8c.html | 134 +- doc/html/driver__pcf8563__output_8c__incl.md5 | 1 + doc/html/driver__pcf8563__output_8c__incl.svg | 148 + .../driver__pcf8563__output_8c_source.html | 763 ++-- doc/html/driver__pcf8563__output_8h.html | 139 +- .../driver__pcf8563__output_8h__dep__incl.md5 | 1 + .../driver__pcf8563__output_8h__dep__incl.svg | 41 + doc/html/driver__pcf8563__output_8h__incl.md5 | 1 + doc/html/driver__pcf8563__output_8h__incl.svg | 130 + .../driver__pcf8563__output_8h_source.html | 166 +- .../driver__pcf8563__output__test_8c.html | 84 +- ...driver__pcf8563__output__test_8c__incl.md5 | 1 + ...driver__pcf8563__output__test_8c__incl.svg | 149 + ...iver__pcf8563__output__test_8c_source.html | 709 ++-- .../driver__pcf8563__output__test_8h.html | 89 +- ...r__pcf8563__output__test_8h__dep__incl.md5 | 1 + ...r__pcf8563__output__test_8h__dep__incl.svg | 41 + ...driver__pcf8563__output__test_8h__incl.md5 | 1 + ...driver__pcf8563__output__test_8h__incl.svg | 112 + ...iver__pcf8563__output__test_8h_source.html | 100 +- .../driver__pcf8563__register__test_8c.html | 84 +- ...iver__pcf8563__register__test_8c__incl.md5 | 1 + ...iver__pcf8563__register__test_8c__incl.svg | 149 + ...er__pcf8563__register__test_8c_source.html | 2049 ++++----- .../driver__pcf8563__register__test_8h.html | 89 +- ..._pcf8563__register__test_8h__dep__incl.md5 | 1 + ..._pcf8563__register__test_8h__dep__incl.svg | 41 + ...iver__pcf8563__register__test_8h__incl.md5 | 1 + ...iver__pcf8563__register__test_8h__incl.svg | 112 + ...er__pcf8563__register__test_8h_source.html | 100 +- doc/html/driver__pcf8563__timer_8c.html | 139 +- doc/html/driver__pcf8563__timer_8c__incl.md5 | 1 + doc/html/driver__pcf8563__timer_8c__incl.svg | 148 + .../driver__pcf8563__timer_8c_source.html | 869 ++-- doc/html/driver__pcf8563__timer_8h.html | 144 +- .../driver__pcf8563__timer_8h__dep__incl.md5 | 1 + .../driver__pcf8563__timer_8h__dep__incl.svg | 41 + doc/html/driver__pcf8563__timer_8h__incl.md5 | 1 + doc/html/driver__pcf8563__timer_8h__incl.svg | 130 + .../driver__pcf8563__timer_8h_source.html | 174 +- doc/html/driver__pcf8563__timer__test_8c.html | 89 +- .../driver__pcf8563__timer__test_8c__incl.md5 | 1 + .../driver__pcf8563__timer__test_8c__incl.svg | 149 + ...river__pcf8563__timer__test_8c_source.html | 743 ++-- doc/html/driver__pcf8563__timer__test_8h.html | 94 +- ...er__pcf8563__timer__test_8h__dep__incl.md5 | 1 + ...er__pcf8563__timer__test_8h__dep__incl.svg | 41 + .../driver__pcf8563__timer__test_8h__incl.md5 | 1 + .../driver__pcf8563__timer__test_8h__incl.svg | 112 + ...river__pcf8563__timer__test_8h_source.html | 106 +- doc/html/dynsections.js | 250 +- doc/html/favicon.svg | 20 + doc/html/files.html | 115 +- doc/html/folderclosed.png | Bin 616 -> 0 bytes doc/html/folderopen.png | Bin 597 -> 0 bytes doc/html/functions.html | 199 +- doc/html/functions_vars.html | 201 +- doc/html/globals.html | 62 +- doc/html/globals_d.html | 94 +- doc/html/globals_defs.html | 202 +- doc/html/globals_enum.html | 78 +- doc/html/globals_eval.html | 114 +- doc/html/globals_func.html | 580 +-- doc/html/globals_m.html | 66 +- doc/html/globals_p.html | 738 +--- doc/html/globals_s.html | 66 +- doc/html/globals_t.html | 66 +- doc/html/globals_type.html | 74 +- doc/html/graph_legend.html | 167 + doc/html/graph_legend.md5 | 1 + doc/html/graph_legend.svg | 167 + doc/html/group__pcf8563__base__driver.html | 1103 ++--- doc/html/group__pcf8563__base__driver.md5 | 1 + doc/html/group__pcf8563__base__driver.svg | 37 + doc/html/group__pcf8563__driver.html | 97 +- doc/html/group__pcf8563__driver.md5 | 1 + doc/html/group__pcf8563__driver.svg | 117 + doc/html/group__pcf8563__example__driver.html | 854 ++-- doc/html/group__pcf8563__example__driver.md5 | 1 + doc/html/group__pcf8563__example__driver.svg | 37 + ...5ba903840c9bf7345ab2f2697139bd2_cgraph.md5 | 1 + ...5ba903840c9bf7345ab2f2697139bd2_cgraph.svg | 39 + ...22645aedcfc67e2c88b626b9dae36ab_cgraph.md5 | 1 + ...22645aedcfc67e2c88b626b9dae36ab_cgraph.svg | 39 + ...46d9f475f1d83f27aaac9cbd8739fb3_cgraph.md5 | 1 + ...46d9f475f1d83f27aaac9cbd8739fb3_cgraph.svg | 39 + ...7bc3f27d390831ec6f5641be830ea10_cgraph.md5 | 1 + ...7bc3f27d390831ec6f5641be830ea10_cgraph.svg | 39 + ...64782ac1e2948365bbd2bf65c6c3322_cgraph.md5 | 1 + ...64782ac1e2948365bbd2bf65c6c3322_cgraph.svg | 39 + ...7d256c25ad11e4a680739fab211d38c_cgraph.md5 | 1 + ...7d256c25ad11e4a680739fab211d38c_cgraph.svg | 58 + ...90c95c027938d7ab244d9a90b6a9b7a_cgraph.md5 | 1 + ...90c95c027938d7ab244d9a90b6a9b7a_cgraph.svg | 39 + ...96d96e32f798a68cfaf5987a0b06f9c_cgraph.md5 | 1 + ...96d96e32f798a68cfaf5987a0b06f9c_cgraph.svg | 39 + ...c035f7bdcbb40998a0ce9b373987fdb_cgraph.md5 | 1 + ...c035f7bdcbb40998a0ce9b373987fdb_cgraph.svg | 148 + ...068b67fe16fed396cc92bb740a8f1d6_cgraph.md5 | 1 + ...068b67fe16fed396cc92bb740a8f1d6_cgraph.svg | 94 + ...45a2372c74d57ae5616245e3deb7bdc_cgraph.md5 | 1 + ...45a2372c74d57ae5616245e3deb7bdc_cgraph.svg | 115 + ...70cef3775e7bd98d4884a2afda54b24_cgraph.md5 | 1 + ...70cef3775e7bd98d4884a2afda54b24_cgraph.svg | 261 ++ ...3cb129724c81670afc0542a6310eaf0_cgraph.md5 | 1 + ...3cb129724c81670afc0542a6310eaf0_cgraph.svg | 39 + ...81c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.md5 | 1 + ...81c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.svg | 39 + ...a92be187f79456eea1a82a7e8e0df14_cgraph.md5 | 1 + ...a92be187f79456eea1a82a7e8e0df14_cgraph.svg | 39 + ...09dfaecc0af62f8aa11165c3884359f_cgraph.md5 | 1 + ...09dfaecc0af62f8aa11165c3884359f_cgraph.svg | 39 + ...f95bb3693ec02ced4ddf7b7acb15190_cgraph.md5 | 1 + ...f95bb3693ec02ced4ddf7b7acb15190_cgraph.svg | 40 + ...8d18766c300193de91ab33d847dd0c3_cgraph.md5 | 1 + ...8d18766c300193de91ab33d847dd0c3_cgraph.svg | 39 + ...b3135ee07e6fc2c8d512d8f9831c72e_cgraph.md5 | 1 + ...b3135ee07e6fc2c8d512d8f9831c72e_cgraph.svg | 39 + ...206004c8b4c1e094b6f506989598972_cgraph.md5 | 1 + ...206004c8b4c1e094b6f506989598972_cgraph.svg | 39 + ...e3236190eca6ec2125fa2cdf3eeb751_cgraph.md5 | 1 + ...e3236190eca6ec2125fa2cdf3eeb751_cgraph.svg | 40 + ...5c4fde9e725ec85f29673ac9ac1df0f_cgraph.md5 | 1 + ...5c4fde9e725ec85f29673ac9ac1df0f_cgraph.svg | 40 + ...a92288c1898f5616f62a6486092228f_cgraph.md5 | 1 + ...a92288c1898f5616f62a6486092228f_cgraph.svg | 39 + ...0ca5703971cfb2bac32aa100ba751c4_cgraph.md5 | 1 + ...0ca5703971cfb2bac32aa100ba751c4_cgraph.svg | 39 + ...5d096b019600da0dec2725771d545d5_cgraph.md5 | 1 + ...5d096b019600da0dec2725771d545d5_cgraph.svg | 40 + ...77f313ac561c74b2f2deb47b98404b6_cgraph.md5 | 1 + ...77f313ac561c74b2f2deb47b98404b6_cgraph.svg | 372 ++ ...8b9c723d27b6b39c4645f73c831b919_cgraph.md5 | 1 + ...8b9c723d27b6b39c4645f73c831b919_cgraph.svg | 39 + ...8dc1cdaf433f0b8649e56104952bab3_cgraph.md5 | 1 + ...8dc1cdaf433f0b8649e56104952bab3_cgraph.svg | 39 + ...d1359dd8997be56914a47855cfe7beb_cgraph.md5 | 1 + ...d1359dd8997be56914a47855cfe7beb_cgraph.svg | 39 + ...4088942e64f38505f433092ae3d561c_cgraph.md5 | 1 + ...4088942e64f38505f433092ae3d561c_cgraph.svg | 39 + ...7cf79bfb26863cc883d9013d56dbc5f_cgraph.md5 | 1 + ...7cf79bfb26863cc883d9013d56dbc5f_cgraph.svg | 400 ++ ...883f150d3f84b8aa29ddb966626dbf9_cgraph.md5 | 1 + ...883f150d3f84b8aa29ddb966626dbf9_cgraph.svg | 39 + ...1bb65bc26a797419501184cd3d962f2_cgraph.md5 | 1 + ...1bb65bc26a797419501184cd3d962f2_cgraph.svg | 372 ++ ...9043271954793f57fb6111ff1963c59_cgraph.md5 | 1 + ...9043271954793f57fb6111ff1963c59_cgraph.svg | 39 + ...a5a3e5ccaa110e6a3737bb65a83131f_cgraph.md5 | 1 + ...a5a3e5ccaa110e6a3737bb65a83131f_cgraph.svg | 400 ++ ...198537d5057eccbf4040929099b6e1d_cgraph.md5 | 1 + ...198537d5057eccbf4040929099b6e1d_cgraph.svg | 39 + doc/html/group__pcf8563__extern__driver.html | 131 +- doc/html/group__pcf8563__extern__driver.md5 | 1 + doc/html/group__pcf8563__extern__driver.svg | 37 + .../group__pcf8563__interface__driver.html | 204 +- .../group__pcf8563__interface__driver.md5 | 1 + .../group__pcf8563__interface__driver.svg | 37 + ...f3583de504d5b8be618bdedf0a0efe4_cgraph.md5 | 1 + ...f3583de504d5b8be618bdedf0a0efe4_cgraph.svg | 41 + doc/html/group__pcf8563__link__driver.html | 267 +- doc/html/group__pcf8563__link__driver.md5 | 1 + doc/html/group__pcf8563__link__driver.svg | 37 + doc/html/group__pcf8563__test__driver.html | 181 +- doc/html/group__pcf8563__test__driver.md5 | 1 + doc/html/group__pcf8563__test__driver.svg | 37 + ...be8782d213029cd2e59de82da0f3880_cgraph.md5 | 1 + ...be8782d213029cd2e59de82da0f3880_cgraph.svg | 463 +++ ...9f05168757980c3db9b60bb94afec9a_cgraph.md5 | 1 + ...9f05168757980c3db9b60bb94afec9a_cgraph.svg | 40 + ...d99a1564a48011e028845dcd7b0c1e7_cgraph.md5 | 1 + ...d99a1564a48011e028845dcd7b0c1e7_cgraph.svg | 462 +++ ...e830f6081a3f22028016d99c45a3fc1_cgraph.md5 | 1 + ...e830f6081a3f22028016d99c45a3fc1_cgraph.svg | 436 ++ ...eccd038063610497bb9d09fb71929a2_cgraph.md5 | 1 + ...eccd038063610497bb9d09fb71929a2_cgraph.svg | 40 + ...ea79e78234f49ebdc6211f2e5125259_cgraph.md5 | 1 + ...ea79e78234f49ebdc6211f2e5125259_cgraph.svg | 948 +++++ doc/html/index.html | 65 +- doc/html/jquery.js | 197 +- doc/html/mainpage_8h.html | 68 +- doc/html/mainpage_8h_source.html | 63 +- doc/html/menu.js | 98 +- doc/html/menudata.js | 2 +- doc/html/nav_f.png | Bin 153 -> 0 bytes doc/html/nav_g.png | Bin 95 -> 0 bytes doc/html/nav_h.png | Bin 98 -> 0 bytes doc/html/navtree.css | 233 +- doc/html/navtree.js | 1245 ++++-- doc/html/navtreedata.js | 10 +- doc/html/navtreeindex0.js | 208 +- doc/html/navtreeindex1.js | 255 +- doc/html/navtreeindex2.js | 15 - doc/html/open.png | Bin 123 -> 0 bytes doc/html/resize.js | 140 - doc/html/search/all_0.html | 37 - doc/html/search/all_0.js | 3 +- doc/html/search/all_1.html | 37 - doc/html/search/all_1.js | 37 +- doc/html/search/all_2.html | 37 - doc/html/search/all_2.js | 38 +- doc/html/search/all_3.html | 37 - doc/html/search/all_3.js | 8 +- doc/html/search/all_4.html | 37 - doc/html/search/all_4.js | 2 +- doc/html/search/all_5.html | 37 - doc/html/search/all_5.js | 11 +- doc/html/search/all_6.html | 37 - doc/html/search/all_6.js | 162 +- doc/html/search/all_7.html | 37 - doc/html/search/all_7.js | 3 +- doc/html/search/all_8.html | 37 - doc/html/search/all_8.js | 14 +- doc/html/search/all_9.html | 37 - doc/html/search/all_9.js | 160 +- doc/html/search/all_a.html | 37 - doc/html/search/all_a.js | 3 +- doc/html/search/all_b.html | 37 - doc/html/search/all_b.js | 6 +- doc/html/search/all_c.js | 8 + doc/html/search/all_d.js | 5 + doc/html/search/all_e.js | 4 + doc/html/search/classes_0.html | 37 - doc/html/search/classes_0.js | 8 +- doc/html/search/close.svg | 31 - doc/html/search/defines_0.html | 37 - doc/html/search/defines_0.js | 2 +- doc/html/search/defines_1.html | 37 - doc/html/search/defines_1.js | 2 +- doc/html/search/defines_2.html | 37 - doc/html/search/defines_2.js | 4 +- doc/html/search/defines_3.html | 37 - doc/html/search/defines_3.js | 34 +- doc/html/search/defines_4.html | 37 - doc/html/search/defines_4.js | 4 +- doc/html/search/defines_5.html | 37 - doc/html/search/defines_5.js | 4 +- doc/html/search/enums_0.html | 37 - doc/html/search/enums_0.js | 10 +- doc/html/search/enumvalues_0.html | 37 - doc/html/search/enumvalues_0.js | 28 +- doc/html/search/files_0.html | 37 - doc/html/search/files_0.js | 40 +- doc/html/search/files_1.html | 37 - doc/html/search/files_1.js | 2 +- doc/html/search/functions_0.html | 37 - doc/html/search/functions_0.js | 208 +- doc/html/search/groups_0.html | 37 - doc/html/search/groups_0.js | 8 +- doc/html/search/groups_1.js | 4 + doc/html/search/groups_2.js | 5 + doc/html/search/groups_3.js | 4 + doc/html/search/groups_4.js | 4 + doc/html/search/groups_5.js | 4 + doc/html/search/groups_6.js | 10 + doc/html/search/groups_7.js | 4 + doc/html/search/mag_sel.svg | 74 - doc/html/search/nomatches.html | 13 - doc/html/search/pages_0.html | 37 - doc/html/search/pages_0.js | 2 +- doc/html/search/pages_1.js | 4 + doc/html/search/search.css | 253 +- doc/html/search/search.js | 1032 +++-- doc/html/search/search_l.png | Bin 567 -> 0 bytes doc/html/search/search_m.png | Bin 158 -> 0 bytes doc/html/search/search_r.png | Bin 553 -> 0 bytes doc/html/search/searchdata.js | 6 +- doc/html/search/typedefs_0.html | 37 - doc/html/search/typedefs_0.js | 8 +- doc/html/search/variables_0.html | 37 - doc/html/search/variables_0.js | 2 +- doc/html/search/variables_1.html | 37 - doc/html/search/variables_1.js | 12 +- doc/html/search/variables_2.html | 37 - doc/html/search/variables_2.js | 4 +- doc/html/search/variables_3.html | 37 - doc/html/search/variables_3.js | 12 +- doc/html/search/variables_4.html | 37 - doc/html/search/variables_4.js | 12 +- doc/html/search/variables_5.html | 37 - doc/html/search/variables_5.js | 2 +- doc/html/search/variables_6.html | 37 - doc/html/search/variables_6.js | 6 +- doc/html/search/variables_7.html | 37 - doc/html/search/variables_7.js | 4 +- doc/html/search/variables_8.html | 37 - doc/html/search/variables_8.js | 4 +- doc/html/search/variables_9.html | 37 - doc/html/search/variables_9.js | 2 +- doc/html/splitbar.png | Bin 314 -> 0 bytes doc/html/structpcf8563__alarm__param__s.html | 141 +- doc/html/structpcf8563__handle__s.html | 134 +- doc/html/structpcf8563__info__s.html | 141 +- doc/html/structpcf8563__time__s.html | 127 +- doc/html/sync_off.png | Bin 853 -> 0 bytes doc/html/sync_on.png | Bin 845 -> 0 bytes doc/html/tab_a.png | Bin 142 -> 0 bytes doc/html/tab_b.png | Bin 169 -> 0 bytes doc/html/tab_h.png | Bin 177 -> 0 bytes doc/html/tab_s.png | Bin 184 -> 0 bytes doc/html/tabs.css | 2 +- doc/html/{modules.html => topics.html} | 73 +- doc/html/{modules.js => topics.js} | 2 +- doc/image/doxygen.png | Bin 2049 -> 6015 bytes doc/image/favicon.svg | 20 + .../raspberrypi4b_driver_pcf8563_interface.c | 4 +- 389 files changed, 27615 insertions(+), 16718 deletions(-) delete mode 100644 doc/html/bc_s.png delete mode 100644 doc/html/bdwn.png create mode 100644 doc/html/clipboard.js delete mode 100644 doc/html/closed.png create mode 100644 doc/html/cookie.js create mode 100644 doc/html/darkmode_toggle.js create mode 100644 doc/html/dir_000001_000002.html create mode 100644 doc/html/dir_000002_000004.html create mode 100644 doc/html/dir_000005_000002.html create mode 100644 doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.md5 create mode 100644 doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.svg create mode 100644 doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 create mode 100644 doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.svg create mode 100644 doc/html/dir_b31d54d5631803016a26f28213a41162_dep.md5 create mode 100644 doc/html/dir_b31d54d5631803016a26f28213a41162_dep.svg create mode 100644 doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.md5 create mode 100644 doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.svg delete mode 100644 doc/html/doc.png create mode 100644 doc/html/doxygen_crawl.html create mode 100644 doc/html/driver__pcf8563_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563_8c__incl.svg create mode 100644 doc/html/driver__pcf8563_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm__test_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm__test_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm__test_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm__test_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__alarm__test_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__alarm__test_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__basic_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__basic_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__basic_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__basic_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__basic_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__basic_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__interface_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__interface_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__interface_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__interface_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__interface__template_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__interface__template_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__output_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__output_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__output_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__output_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__output_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__output_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__output__test_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__output__test_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__output__test_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__output__test_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__output__test_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__output__test_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__register__test_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__register__test_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__register__test_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__register__test_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__register__test_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__register__test_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__timer_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__timer_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__timer_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer_8h__incl.svg create mode 100644 doc/html/driver__pcf8563__timer__test_8c__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer__test_8c__incl.svg create mode 100644 doc/html/driver__pcf8563__timer__test_8h__dep__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer__test_8h__dep__incl.svg create mode 100644 doc/html/driver__pcf8563__timer__test_8h__incl.md5 create mode 100644 doc/html/driver__pcf8563__timer__test_8h__incl.svg create mode 100644 doc/html/favicon.svg delete mode 100644 doc/html/folderclosed.png delete mode 100644 doc/html/folderopen.png create mode 100644 doc/html/graph_legend.html create mode 100644 doc/html/graph_legend.md5 create mode 100644 doc/html/graph_legend.svg create mode 100644 doc/html/group__pcf8563__base__driver.md5 create mode 100644 doc/html/group__pcf8563__base__driver.svg create mode 100644 doc/html/group__pcf8563__driver.md5 create mode 100644 doc/html/group__pcf8563__driver.svg create mode 100644 doc/html/group__pcf8563__example__driver.md5 create mode 100644 doc/html/group__pcf8563__example__driver.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.svg create mode 100644 doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.md5 create mode 100644 doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.svg create mode 100644 doc/html/group__pcf8563__extern__driver.md5 create mode 100644 doc/html/group__pcf8563__extern__driver.svg create mode 100644 doc/html/group__pcf8563__interface__driver.md5 create mode 100644 doc/html/group__pcf8563__interface__driver.svg create mode 100644 doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.md5 create mode 100644 doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.svg create mode 100644 doc/html/group__pcf8563__link__driver.md5 create mode 100644 doc/html/group__pcf8563__link__driver.svg create mode 100644 doc/html/group__pcf8563__test__driver.md5 create mode 100644 doc/html/group__pcf8563__test__driver.svg create mode 100644 doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.svg create mode 100644 doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.svg create mode 100644 doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.svg create mode 100644 doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.svg create mode 100644 doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.svg create mode 100644 doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.md5 create mode 100644 doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.svg delete mode 100644 doc/html/nav_f.png delete mode 100644 doc/html/nav_g.png delete mode 100644 doc/html/nav_h.png delete mode 100644 doc/html/navtreeindex2.js delete mode 100644 doc/html/open.png delete mode 100644 doc/html/resize.js delete mode 100644 doc/html/search/all_0.html delete mode 100644 doc/html/search/all_1.html delete mode 100644 doc/html/search/all_2.html delete mode 100644 doc/html/search/all_3.html delete mode 100644 doc/html/search/all_4.html delete mode 100644 doc/html/search/all_5.html delete mode 100644 doc/html/search/all_6.html delete mode 100644 doc/html/search/all_7.html delete mode 100644 doc/html/search/all_8.html delete mode 100644 doc/html/search/all_9.html delete mode 100644 doc/html/search/all_a.html delete mode 100644 doc/html/search/all_b.html create mode 100644 doc/html/search/all_c.js create mode 100644 doc/html/search/all_d.js create mode 100644 doc/html/search/all_e.js delete mode 100644 doc/html/search/classes_0.html delete mode 100644 doc/html/search/close.svg delete mode 100644 doc/html/search/defines_0.html delete mode 100644 doc/html/search/defines_1.html delete mode 100644 doc/html/search/defines_2.html delete mode 100644 doc/html/search/defines_3.html delete mode 100644 doc/html/search/defines_4.html delete mode 100644 doc/html/search/defines_5.html delete mode 100644 doc/html/search/enums_0.html delete mode 100644 doc/html/search/enumvalues_0.html delete mode 100644 doc/html/search/files_0.html delete mode 100644 doc/html/search/files_1.html delete mode 100644 doc/html/search/functions_0.html delete mode 100644 doc/html/search/groups_0.html create mode 100644 doc/html/search/groups_1.js create mode 100644 doc/html/search/groups_2.js create mode 100644 doc/html/search/groups_3.js create mode 100644 doc/html/search/groups_4.js create mode 100644 doc/html/search/groups_5.js create mode 100644 doc/html/search/groups_6.js create mode 100644 doc/html/search/groups_7.js delete mode 100644 doc/html/search/mag_sel.svg delete mode 100644 doc/html/search/nomatches.html delete mode 100644 doc/html/search/pages_0.html create mode 100644 doc/html/search/pages_1.js delete mode 100644 doc/html/search/search_l.png delete mode 100644 doc/html/search/search_m.png delete mode 100644 doc/html/search/search_r.png delete mode 100644 doc/html/search/typedefs_0.html delete mode 100644 doc/html/search/variables_0.html delete mode 100644 doc/html/search/variables_1.html delete mode 100644 doc/html/search/variables_2.html delete mode 100644 doc/html/search/variables_3.html delete mode 100644 doc/html/search/variables_4.html delete mode 100644 doc/html/search/variables_5.html delete mode 100644 doc/html/search/variables_6.html delete mode 100644 doc/html/search/variables_7.html delete mode 100644 doc/html/search/variables_8.html delete mode 100644 doc/html/search/variables_9.html delete mode 100644 doc/html/splitbar.png delete mode 100644 doc/html/sync_off.png delete mode 100644 doc/html/sync_on.png delete mode 100644 doc/html/tab_a.png delete mode 100644 doc/html/tab_b.png delete mode 100644 doc/html/tab_h.png delete mode 100644 doc/html/tab_s.png rename doc/html/{modules.html => topics.html} (56%) rename doc/html/{modules.js => topics.js} (87%) create mode 100644 doc/image/favicon.svg diff --git a/CHANGELOG.md b/CHANGELOG.md index bd9003b..5712d19 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,9 @@ +## 1.0.5 (2025-10-26) + +## Features + +- update doxygen + ## 1.0.4 (2025-04-16) ## Bug Fixes diff --git a/Doxyfile b/Doxyfile index b05dc5f..a3927ad 100644 --- a/Doxyfile +++ b/Doxyfile @@ -1,7 +1,7 @@ -# Doxyfile 1.9.1 +# Doxyfile 1.15.0 # This file describes the settings to be used by the documentation system -# doxygen (www.doxygen.org) for a project. +# Doxygen (www.doxygen.org) for a project. # # All text after a double hash (##) is considered a comment and is placed in # front of the TAG it is preceding. @@ -12,6 +12,16 @@ # For lists, items can also be appended using: # TAG += value [value, ...] # Values that contain spaces should be placed between quotes (\" \"). +# +# Note: +# +# Use Doxygen to compare the used configuration file with the template +# configuration file: +# doxygen -x [configFile] +# Use Doxygen to compare the used configuration file with the template +# configuration file without replacing the environment variables or CMake type +# replacement variables: +# doxygen -x_noenv [configFile] #--------------------------------------------------------------------------- # Project related configuration options @@ -38,39 +48,57 @@ PROJECT_NAME = "LibDriver PCF8563" # could be handy for archiving the generated documentation or if some version # control system is used. -PROJECT_NUMBER = 1.0.0 +PROJECT_NUMBER = # Using the PROJECT_BRIEF tag one can provide an optional one line description -# for a project that appears at the top of each page and should give viewer a +# for a project that appears at the top of each page and should give viewers a # quick idea about the purpose of the project. Keep the description short. -PROJECT_BRIEF = "PCF8563 full-featured driver" +PROJECT_BRIEF = # With the PROJECT_LOGO tag one can specify a logo or an icon that is included # in the documentation. The maximum height of the logo should not exceed 55 # pixels and the maximum width should not exceed 200 pixels. Doxygen will copy # the logo to the output directory. -PROJECT_LOGO = doc/image/Doxygen.png +PROJECT_LOGO = doc/image/doxygen.png + +# With the PROJECT_ICON tag one can specify an icon that is included in the tabs +# when the HTML document is shown. Doxygen will copy the logo to the output +# directory. + +PROJECT_ICON = doc/image/favicon.svg # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) path # into which the generated documentation will be written. If a relative path is -# entered, it will be relative to the location where doxygen was started. If +# entered, it will be relative to the location where Doxygen was started. If # left blank the current directory will be used. OUTPUT_DIRECTORY = doc -# If the CREATE_SUBDIRS tag is set to YES then doxygen will create 4096 sub- -# directories (in 2 levels) under the output directory of each output format and -# will distribute the generated files over these directories. Enabling this -# option can be useful when feeding doxygen a huge amount of source files, where -# putting all generated files in the same directory would otherwise causes -# performance problems for the file system. +# If the CREATE_SUBDIRS tag is set to YES then Doxygen will create up to 4096 +# sub-directories (in 2 levels) under the output directory of each output format +# and will distribute the generated files over these directories. Enabling this +# option can be useful when feeding Doxygen a huge amount of source files, where +# putting all generated files in the same directory would otherwise cause +# performance problems for the file system. Adapt CREATE_SUBDIRS_LEVEL to +# control the number of sub-directories. # The default value is: NO. CREATE_SUBDIRS = NO -# If the ALLOW_UNICODE_NAMES tag is set to YES, doxygen will allow non-ASCII +# Controls the number of sub-directories that will be created when +# CREATE_SUBDIRS tag is set to YES. Level 0 represents 16 directories, and every +# level increment doubles the number of directories, resulting in 4096 +# directories at level 8 which is the default and also the maximum value. The +# sub-directories are organized in 2 levels, the first level always has a fixed +# number of 16 directories. +# Minimum value: 0, maximum value: 8, default value: 8. +# This tag requires that the tag CREATE_SUBDIRS is set to YES. + +CREATE_SUBDIRS_LEVEL = 8 + +# If the ALLOW_UNICODE_NAMES tag is set to YES, Doxygen will allow non-ASCII # characters to appear in the names of generated files. If set to NO, non-ASCII # characters will be escaped, for example _xE3_x81_x84 will be used for Unicode # U+3044. @@ -79,36 +107,28 @@ CREATE_SUBDIRS = NO ALLOW_UNICODE_NAMES = NO # The OUTPUT_LANGUAGE tag is used to specify the language in which all -# documentation generated by doxygen is written. Doxygen will use this +# documentation generated by Doxygen is written. Doxygen will use this # information to generate all constant output in the proper language. -# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Catalan, Chinese, -# Chinese-Traditional, Croatian, Czech, Danish, Dutch, English (United States), -# Esperanto, Farsi (Persian), Finnish, French, German, Greek, Hungarian, -# Indonesian, Italian, Japanese, Japanese-en (Japanese with English messages), -# Korean, Korean-en (Korean with English messages), Latvian, Lithuanian, -# Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, Romanian, Russian, -# Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, Swedish, Turkish, -# Ukrainian and Vietnamese. +# Possible values are: Afrikaans, Arabic, Armenian, Brazilian, Bulgarian, +# Catalan, Chinese, Chinese-Traditional, Croatian, Czech, Danish, Dutch, English +# (United States), Esperanto, Farsi (Persian), Finnish, French, German, Greek, +# Hindi, Hungarian, Indonesian, Italian, Japanese, Japanese-en (Japanese with +# English messages), Korean, Korean-en (Korean with English messages), Latvian, +# Lithuanian, Macedonian, Norwegian, Persian (Farsi), Polish, Portuguese, +# Romanian, Russian, Serbian, Serbian-Cyrillic, Slovak, Slovene, Spanish, +# Swedish, Turkish, Ukrainian and Vietnamese. # The default value is: English. OUTPUT_LANGUAGE = English -# The OUTPUT_TEXT_DIRECTION tag is used to specify the direction in which all -# documentation generated by doxygen is written. Doxygen will use this -# information to generate all generated output in the proper direction. -# Possible values are: None, LTR, RTL and Context. -# The default value is: None. - -OUTPUT_TEXT_DIRECTION = None - -# If the BRIEF_MEMBER_DESC tag is set to YES, doxygen will include brief member +# If the BRIEF_MEMBER_DESC tag is set to YES, Doxygen will include brief member # descriptions after the members that are listed in the file and class # documentation (similar to Javadoc). Set to NO to disable this. # The default value is: YES. BRIEF_MEMBER_DESC = YES -# If the REPEAT_BRIEF tag is set to YES, doxygen will prepend the brief +# If the REPEAT_BRIEF tag is set to YES, Doxygen will prepend the brief # description of a member or function before the detailed description # # Note: If both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the @@ -139,13 +159,13 @@ ABBREVIATE_BRIEF = "The $name class" \ the # If the ALWAYS_DETAILED_SEC and REPEAT_BRIEF tags are both set to YES then -# doxygen will generate a detailed section even if there is only a brief +# Doxygen will generate a detailed section even if there is only a brief # description. # The default value is: NO. ALWAYS_DETAILED_SEC = NO -# If the INLINE_INHERITED_MEMB tag is set to YES, doxygen will show all +# If the INLINE_INHERITED_MEMB tag is set to YES, Doxygen will show all # inherited members of a class in the documentation of that class as if those # members were ordinary class members. Constructors, destructors and assignment # operators of the base classes will not be shown. @@ -153,7 +173,7 @@ ALWAYS_DETAILED_SEC = NO INLINE_INHERITED_MEMB = NO -# If the FULL_PATH_NAMES tag is set to YES, doxygen will prepend the full path +# If the FULL_PATH_NAMES tag is set to YES, Doxygen will prepend the full path # before files name in the file list and in the header files. If set to NO the # shortest path that makes the file name unique will be used # The default value is: YES. @@ -163,11 +183,11 @@ FULL_PATH_NAMES = YES # The STRIP_FROM_PATH tag can be used to strip a user-defined part of the path. # Stripping is only done if one of the specified strings matches the left-hand # part of the path. The tag can be used to show relative paths in the file list. -# If left blank the directory from which doxygen is run is used as the path to +# If left blank the directory from which Doxygen is run is used as the path to # strip. # # Note that you can specify absolute paths here, but also relative paths, which -# will be relative from the directory where doxygen is started. +# will be relative from the directory where Doxygen is started. # This tag requires that the tag FULL_PATH_NAMES is set to YES. STRIP_FROM_PATH = @@ -181,41 +201,42 @@ STRIP_FROM_PATH = STRIP_FROM_INC_PATH = -# If the SHORT_NAMES tag is set to YES, doxygen will generate much shorter (but -# less readable) file names. This can be useful is your file systems doesn't +# If the SHORT_NAMES tag is set to YES, Doxygen will generate much shorter (but +# less readable) file names. This can be useful if your file system doesn't # support long names like on DOS, Mac, or CD-ROM. # The default value is: NO. SHORT_NAMES = NO -# If the JAVADOC_AUTOBRIEF tag is set to YES then doxygen will interpret the -# first line (until the first dot) of a Javadoc-style comment as the brief -# description. If set to NO, the Javadoc-style will behave just like regular Qt- -# style comments (thus requiring an explicit @brief command for a brief -# description.) +# If the JAVADOC_AUTOBRIEF tag is set to YES then Doxygen will interpret the +# first line (until the first dot, question mark or exclamation mark) of a +# Javadoc-style comment as the brief description. If set to NO, the Javadoc- +# style will behave just like regular Qt-style comments (thus requiring an +# explicit @brief command for a brief description.) # The default value is: NO. JAVADOC_AUTOBRIEF = NO -# If the JAVADOC_BANNER tag is set to YES then doxygen will interpret a line +# If the JAVADOC_BANNER tag is set to YES then Doxygen will interpret a line # such as # /*************** # as being the beginning of a Javadoc-style comment "banner". If set to NO, the # Javadoc-style will behave just like regular comments and it will not be -# interpreted by doxygen. +# interpreted by Doxygen. # The default value is: NO. JAVADOC_BANNER = NO -# If the QT_AUTOBRIEF tag is set to YES then doxygen will interpret the first -# line (until the first dot) of a Qt-style comment as the brief description. If -# set to NO, the Qt-style will behave just like regular Qt-style comments (thus -# requiring an explicit \brief command for a brief description.) +# If the QT_AUTOBRIEF tag is set to YES then Doxygen will interpret the first +# line (until the first dot, question mark or exclamation mark) of a Qt-style +# comment as the brief description. If set to NO, the Qt-style will behave just +# like regular Qt-style comments (thus requiring an explicit \brief command for +# a brief description.) # The default value is: NO. QT_AUTOBRIEF = NO -# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make doxygen treat a +# The MULTILINE_CPP_IS_BRIEF tag can be set to YES to make Doxygen treat a # multi-line C++ special comment block (i.e. a block of //! or /// comments) as # a brief description. This used to be the default behavior. The new default is # to treat a multi-line C++ comment block as a detailed description. Set this @@ -227,10 +248,10 @@ QT_AUTOBRIEF = NO MULTILINE_CPP_IS_BRIEF = NO -# By default Python docstrings are displayed as preformatted text and doxygen's +# By default Python docstrings are displayed as preformatted text and Doxygen's # special commands cannot be used. By setting PYTHON_DOCSTRING to NO the -# doxygen's special commands can be used and the contents of the docstring -# documentation blocks is shown as doxygen documentation. +# Doxygen's special commands can be used and the contents of the docstring +# documentation blocks is shown as Doxygen documentation. # The default value is: YES. PYTHON_DOCSTRING = YES @@ -241,7 +262,7 @@ PYTHON_DOCSTRING = YES INHERIT_DOCS = YES -# If the SEPARATE_MEMBER_PAGES tag is set to YES then doxygen will produce a new +# If the SEPARATE_MEMBER_PAGES tag is set to YES then Doxygen will produce a new # page for each member. If set to NO, the documentation of a member will be part # of the file/class/namespace that contains it. # The default value is: NO. @@ -258,16 +279,16 @@ TAB_SIZE = 4 # the documentation. An alias has the form: # name=value # For example adding -# "sideeffect=@par Side Effects:\n" +# "sideeffect=@par Side Effects:^^" # will allow you to put the command \sideeffect (or @sideeffect) in the # documentation, which will result in a user-defined paragraph with heading -# "Side Effects:". You can put \n's in the value part of an alias to insert -# newlines (in the resulting output). You can put ^^ in the value part of an -# alias to insert a newline as if a physical newline was in the original file. -# When you need a literal { or } or , in the value part of an alias you have to -# escape them by means of a backslash (\), this can lead to conflicts with the -# commands \{ and \} for these it is advised to use the version @{ and @} or use -# a double escape (\\{ and \\}) +# "Side Effects:". Note that you cannot put \n's in the value part of an alias +# to insert newlines (in the resulting output). You can put ^^ in the value part +# of an alias to insert a newline as if a physical newline was in the original +# file. When you need a literal { or } or , in the value part of an alias you +# have to escape them by means of a backslash (\), this can lead to conflicts +# with the commands \{ and \} for these it is advised to use the version @{ and +# @} or use a double escape (\\{ and \\}) ALIASES = @@ -311,58 +332,92 @@ OPTIMIZE_OUTPUT_SLICE = NO # parses. With this tag you can assign which parser to use for a given # extension. Doxygen has a built-in mapping, but you can override or extend it # using this tag. The format is ext=language, where ext is a file extension, and -# language is one of the parsers supported by doxygen: IDL, Java, JavaScript, -# Csharp (C#), C, C++, D, PHP, md (Markdown), Objective-C, Python, Slice, VHDL, -# Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: +# language is one of the parsers supported by Doxygen: IDL, Java, JavaScript, +# Csharp (C#), C, C++, Lex, D, PHP, md (Markdown), Objective-C, Python, Slice, +# VHDL, Fortran (fixed format Fortran: FortranFixed, free formatted Fortran: # FortranFree, unknown formatted Fortran: Fortran. In the later case the parser # tries to guess whether the code is fixed or free formatted code, this is the -# default for Fortran type files). For instance to make doxygen treat .inc files +# default for Fortran type files). For instance to make Doxygen treat .inc files # as Fortran files (default is PHP), and .f files as C (default is Fortran), # use: inc=Fortran f=C. # # Note: For files without extension you can use no_extension as a placeholder. # # Note that for custom extensions you also need to set FILE_PATTERNS otherwise -# the files are not read by doxygen. When specifying no_extension you should add +# the files are not read by Doxygen. When specifying no_extension you should add # * to the FILE_PATTERNS. # # Note see also the list of default file extension mappings. EXTENSION_MAPPING = -# If the MARKDOWN_SUPPORT tag is enabled then doxygen pre-processes all comments +# If the MARKDOWN_SUPPORT tag is enabled then Doxygen pre-processes all comments # according to the Markdown format, which allows for more readable # documentation. See https://daringfireball.net/projects/markdown/ for details. -# The output of markdown processing is further processed by doxygen, so you can -# mix doxygen, HTML, and XML commands with Markdown formatting. Disable only in +# The output of markdown processing is further processed by Doxygen, so you can +# mix Doxygen, HTML, and XML commands with Markdown formatting. Disable only in # case of backward compatibilities issues. # The default value is: YES. MARKDOWN_SUPPORT = YES +# If the MARKDOWN_STRICT tag is enabled then Doxygen treats text in comments as +# Markdown formatted also in cases where Doxygen's native markup format +# conflicts with that of Markdown. This is only relevant in cases where +# backticks are used. Doxygen's native markup style allows a single quote to end +# a text fragment started with a backtick and then treat it as a piece of quoted +# text, whereas in Markdown such text fragment is treated as verbatim and only +# ends when a second matching backtick is found. Also, Doxygen's native markup +# format requires double quotes to be escaped when they appear in a backtick +# section, whereas this is not needed for Markdown. +# The default value is: YES. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_STRICT = YES + # When the TOC_INCLUDE_HEADINGS tag is set to a non-zero value, all headings up # to that level are automatically included in the table of contents, even if # they do not have an id attribute. # Note: This feature currently applies only to Markdown headings. -# Minimum value: 0, maximum value: 99, default value: 5. +# Minimum value: 0, maximum value: 99, default value: 6. # This tag requires that the tag MARKDOWN_SUPPORT is set to YES. -TOC_INCLUDE_HEADINGS = 5 +TOC_INCLUDE_HEADINGS = 6 -# When enabled doxygen tries to link words that correspond to documented +# The MARKDOWN_ID_STYLE tag can be used to specify the algorithm used to +# generate identifiers for the Markdown headings. Note: Every identifier is +# unique. +# Possible values are: DOXYGEN use a fixed 'autotoc_md' string followed by a +# sequence number starting at 0 and GITHUB use the lower case version of title +# with any whitespace replaced by '-' and punctuation characters removed. +# The default value is: DOXYGEN. +# This tag requires that the tag MARKDOWN_SUPPORT is set to YES. + +MARKDOWN_ID_STYLE = DOXYGEN + +# When enabled Doxygen tries to link words that correspond to documented # classes, or namespaces to their corresponding documentation. Such a link can # be prevented in individual cases by putting a % sign in front of the word or -# globally by setting AUTOLINK_SUPPORT to NO. +# globally by setting AUTOLINK_SUPPORT to NO. Words listed in the +# AUTOLINK_IGNORE_WORDS tag are excluded from automatic linking. # The default value is: YES. AUTOLINK_SUPPORT = YES +# This tag specifies a list of words that, when matching the start of a word in +# the documentation, will suppress auto links generation, if it is enabled via +# AUTOLINK_SUPPORT. This list does not affect links explicitly created using \# +# or the \link or commands. +# This tag requires that the tag AUTOLINK_SUPPORT is set to YES. + +AUTOLINK_IGNORE_WORDS = + # If you use STL classes (i.e. std::string, std::vector, etc.) but do not want # to include (a tag file for) the STL sources as input, then you should set this -# tag to YES in order to let doxygen match functions declarations and +# tag to YES in order to let Doxygen match functions declarations and # definitions whose arguments contain STL classes (e.g. func(std::string); -# versus func(std::string) {}). This also make the inheritance and collaboration -# diagrams that involve STL classes more complete and accurate. +# versus func(std::string) {}). This also makes the inheritance and +# collaboration diagrams that involve STL classes more complete and accurate. # The default value is: NO. BUILTIN_STL_SUPPORT = NO @@ -374,16 +429,16 @@ BUILTIN_STL_SUPPORT = NO CPP_CLI_SUPPORT = NO # Set the SIP_SUPPORT tag to YES if your project consists of sip (see: -# https://www.riverbankcomputing.com/software/sip/intro) sources only. Doxygen -# will parse them like normal C++ but will assume all classes use public instead -# of private inheritance when no explicit protection keyword is present. +# https://www.riverbankcomputing.com/software) sources only. Doxygen will parse +# them like normal C++ but will assume all classes use public instead of private +# inheritance when no explicit protection keyword is present. # The default value is: NO. SIP_SUPPORT = NO # For Microsoft's IDL there are propget and propput attributes to indicate # getter and setter methods for a property. Setting this option to YES will make -# doxygen to replace the get and set methods by a property in the documentation. +# Doxygen to replace the get and set methods by a property in the documentation. # This will only work if the methods are indeed getting or setting a simple # type. If this is not the case, or you want to show the methods anyway, you # should set this option to NO. @@ -392,7 +447,7 @@ SIP_SUPPORT = NO IDL_PROPERTY_SUPPORT = YES # If member grouping is used in the documentation and the DISTRIBUTE_GROUP_DOC -# tag is set to YES then doxygen will reuse the documentation of the first +# tag is set to YES then Doxygen will reuse the documentation of the first # member in the group (if any) for the other members of the group. By default # all members of a group must be documented explicitly. # The default value is: NO. @@ -450,34 +505,42 @@ TYPEDEF_HIDES_STRUCT = NO # The size of the symbol lookup cache can be set using LOOKUP_CACHE_SIZE. This # cache is used to resolve symbols given their name and scope. Since this can be # an expensive process and often the same symbol appears multiple times in the -# code, doxygen keeps a cache of pre-resolved symbols. If the cache is too small -# doxygen will become slower. If the cache is too large, memory is wasted. The +# code, Doxygen keeps a cache of pre-resolved symbols. If the cache is too small +# Doxygen will become slower. If the cache is too large, memory is wasted. The # cache size is given by this formula: 2^(16+LOOKUP_CACHE_SIZE). The valid range # is 0..9, the default is 0, corresponding to a cache size of 2^16=65536 -# symbols. At the end of a run doxygen will report the cache usage and suggest +# symbols. At the end of a run Doxygen will report the cache usage and suggest # the optimal cache size from a speed point of view. # Minimum value: 0, maximum value: 9, default value: 0. LOOKUP_CACHE_SIZE = 0 -# The NUM_PROC_THREADS specifies the number threads doxygen is allowed to use -# during processing. When set to 0 doxygen will based this on the number of +# The NUM_PROC_THREADS specifies the number of threads Doxygen is allowed to use +# during processing. When set to 0 Doxygen will based this on the number of # cores available in the system. You can set it explicitly to a value larger # than 0 to get more control over the balance between CPU load and processing # speed. At this moment only the input processing can be done using multiple # threads. Since this is still an experimental feature the default is set to 1, -# which efficively disables parallel processing. Please report any issues you +# which effectively disables parallel processing. Please report any issues you # encounter. Generating dot graphs in parallel is controlled by the # DOT_NUM_THREADS setting. -# Minimum value: 0, maximum value: 32, default value: 1. +# Minimum value: 0, maximum value: 512, default value: 1. NUM_PROC_THREADS = 1 +# If the TIMESTAMP tag is set different from NO then each generated page will +# contain the date or date and time when the page was generated. Setting this to +# NO can help when comparing the output of multiple runs. +# Possible values are: YES, NO, DATETIME and DATE. +# The default value is: NO. + +TIMESTAMP = NO + #--------------------------------------------------------------------------- # Build related configuration options #--------------------------------------------------------------------------- -# If the EXTRACT_ALL tag is set to YES, doxygen will assume all entities in +# If the EXTRACT_ALL tag is set to YES, Doxygen will assume all entities in # documentation are documented, even if no documentation was available. Private # class members and static file members will be hidden unless the # EXTRACT_PRIVATE respectively EXTRACT_STATIC tags are set to YES. @@ -543,7 +606,7 @@ EXTRACT_ANON_NSPACES = NO RESOLVE_UNNAMED_PARAMS = YES -# If the HIDE_UNDOC_MEMBERS tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_MEMBERS tag is set to YES, Doxygen will hide all # undocumented members inside documented classes or files. If set to NO these # members will be included in the various overviews, but no documentation # section is generated. This option has no effect if EXTRACT_ALL is enabled. @@ -551,22 +614,31 @@ RESOLVE_UNNAMED_PARAMS = YES HIDE_UNDOC_MEMBERS = NO -# If the HIDE_UNDOC_CLASSES tag is set to YES, doxygen will hide all +# If the HIDE_UNDOC_CLASSES tag is set to YES, Doxygen will hide all # undocumented classes that are normally visible in the class hierarchy. If set # to NO, these classes will be included in the various overviews. This option -# has no effect if EXTRACT_ALL is enabled. +# will also hide undocumented C++ concepts if enabled. This option has no effect +# if EXTRACT_ALL is enabled. # The default value is: NO. HIDE_UNDOC_CLASSES = NO -# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, doxygen will hide all friend +# If the HIDE_UNDOC_NAMESPACES tag is set to YES, Doxygen will hide all +# undocumented namespaces that are normally visible in the namespace hierarchy. +# If set to NO, these namespaces will be included in the various overviews. This +# option has no effect if EXTRACT_ALL is enabled. +# The default value is: YES. + +HIDE_UNDOC_NAMESPACES = YES + +# If the HIDE_FRIEND_COMPOUNDS tag is set to YES, Doxygen will hide all friend # declarations. If set to NO, these declarations will be included in the # documentation. # The default value is: NO. HIDE_FRIEND_COMPOUNDS = NO -# If the HIDE_IN_BODY_DOCS tag is set to YES, doxygen will hide any +# If the HIDE_IN_BODY_DOCS tag is set to YES, Doxygen will hide any # documentation blocks found inside the body of a function. If set to NO, these # blocks will be appended to the function's detailed documentation block. # The default value is: NO. @@ -580,37 +652,44 @@ HIDE_IN_BODY_DOCS = NO INTERNAL_DOCS = NO -# With the correct setting of option CASE_SENSE_NAMES doxygen will better be +# With the correct setting of option CASE_SENSE_NAMES Doxygen will better be # able to match the capabilities of the underlying filesystem. In case the # filesystem is case sensitive (i.e. it supports files in the same directory # whose names only differ in casing), the option must be set to YES to properly # deal with such files in case they appear in the input. For filesystems that -# are not case sensitive the option should be be set to NO to properly deal with +# are not case sensitive the option should be set to NO to properly deal with # output files written for symbols that only differ in casing, such as for two # classes, one named CLASS and the other named Class, and to also support # references to files without having to specify the exact matching casing. On -# Windows (including Cygwin) and MacOS, users should typically set this option +# Windows (including Cygwin) and macOS, users should typically set this option # to NO, whereas on Linux or other Unix flavors it should typically be set to # YES. -# The default value is: system dependent. +# Possible values are: SYSTEM, NO and YES. +# The default value is: SYSTEM. -CASE_SENSE_NAMES = NO +CASE_SENSE_NAMES = SYSTEM -# If the HIDE_SCOPE_NAMES tag is set to NO then doxygen will show members with +# If the HIDE_SCOPE_NAMES tag is set to NO then Doxygen will show members with # their full class and namespace scopes in the documentation. If set to YES, the # scope will be hidden. # The default value is: NO. HIDE_SCOPE_NAMES = YES -# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then doxygen will +# If the HIDE_COMPOUND_REFERENCE tag is set to NO (default) then Doxygen will # append additional text to a page's title, such as Class Reference. If set to # YES the compound reference will be hidden. # The default value is: NO. HIDE_COMPOUND_REFERENCE= NO -# If the SHOW_INCLUDE_FILES tag is set to YES then doxygen will put a list of +# If the SHOW_HEADERFILE tag is set to YES then the documentation for a class +# will show which file needs to be included to use the class. +# The default value is: YES. + +SHOW_HEADERFILE = YES + +# If the SHOW_INCLUDE_FILES tag is set to YES then Doxygen will put a list of # the files that are included by a file in the documentation of that file. # The default value is: YES. @@ -623,7 +702,7 @@ SHOW_INCLUDE_FILES = YES SHOW_GROUPED_MEMB_INC = NO -# If the FORCE_LOCAL_INCLUDES tag is set to YES then doxygen will list include +# If the FORCE_LOCAL_INCLUDES tag is set to YES then Doxygen will list include # files with double quotes in the documentation rather than with sharp brackets. # The default value is: NO. @@ -635,14 +714,14 @@ FORCE_LOCAL_INCLUDES = NO INLINE_INFO = YES -# If the SORT_MEMBER_DOCS tag is set to YES then doxygen will sort the +# If the SORT_MEMBER_DOCS tag is set to YES then Doxygen will sort the # (detailed) documentation of file and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. # The default value is: YES. SORT_MEMBER_DOCS = YES -# If the SORT_BRIEF_DOCS tag is set to YES then doxygen will sort the brief +# If the SORT_BRIEF_DOCS tag is set to YES then Doxygen will sort the brief # descriptions of file, namespace and class members alphabetically by member # name. If set to NO, the members will appear in declaration order. Note that # this will also influence the order of the classes in the class list. @@ -650,7 +729,7 @@ SORT_MEMBER_DOCS = YES SORT_BRIEF_DOCS = NO -# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then doxygen will sort the +# If the SORT_MEMBERS_CTORS_1ST tag is set to YES then Doxygen will sort the # (brief and detailed) documentation of class members so that constructors and # destructors are listed first. If set to NO the constructors will appear in the # respective orders defined by SORT_BRIEF_DOCS and SORT_MEMBER_DOCS. @@ -662,7 +741,7 @@ SORT_BRIEF_DOCS = NO SORT_MEMBERS_CTORS_1ST = NO -# If the SORT_GROUP_NAMES tag is set to YES then doxygen will sort the hierarchy +# If the SORT_GROUP_NAMES tag is set to YES then Doxygen will sort the hierarchy # of group names into alphabetical order. If set to NO the group names will # appear in their defined order. # The default value is: NO. @@ -679,11 +758,11 @@ SORT_GROUP_NAMES = NO SORT_BY_SCOPE_NAME = NO -# If the STRICT_PROTO_MATCHING option is enabled and doxygen fails to do proper +# If the STRICT_PROTO_MATCHING option is enabled and Doxygen fails to do proper # type resolution of all parameters of a function it will reject a match between # the prototype and the implementation of a member function even if there is # only one candidate or it is obvious which candidate to choose by doing a -# simple string match. By disabling STRICT_PROTO_MATCHING doxygen will still +# simple string match. By disabling STRICT_PROTO_MATCHING Doxygen will still # accept a match between prototype and implementation in such cases. # The default value is: NO. @@ -753,24 +832,25 @@ SHOW_FILES = YES SHOW_NAMESPACES = YES # The FILE_VERSION_FILTER tag can be used to specify a program or script that -# doxygen should invoke to get the current version for each file (typically from +# Doxygen should invoke to get the current version for each file (typically from # the version control system). Doxygen will invoke the program by executing (via # popen()) the command command input-file, where command is the value of the # FILE_VERSION_FILTER tag, and input-file is the name of an input file provided -# by doxygen. Whatever the program writes to standard output is used as the file +# by Doxygen. Whatever the program writes to standard output is used as the file # version. For an example see the documentation. FILE_VERSION_FILTER = # The LAYOUT_FILE tag can be used to specify a layout file which will be parsed -# by doxygen. The layout file controls the global structure of the generated +# by Doxygen. The layout file controls the global structure of the generated # output files in an output format independent way. To create the layout file -# that represents doxygen's defaults, run doxygen with the -l option. You can +# that represents Doxygen's defaults, run Doxygen with the -l option. You can # optionally specify a file name after the option, if omitted DoxygenLayout.xml -# will be used as the name of the layout file. +# will be used as the name of the layout file. See also section "Changing the +# layout of pages" for information. # -# Note that if you run doxygen from a directory containing a file called -# DoxygenLayout.xml, doxygen will parse it automatically even if the LAYOUT_FILE +# Note that if you run Doxygen from a directory containing a file called +# DoxygenLayout.xml, Doxygen will parse it automatically even if the LAYOUT_FILE # tag is left empty. LAYOUT_FILE = @@ -785,19 +865,35 @@ LAYOUT_FILE = CITE_BIB_FILES = +# The EXTERNAL_TOOL_PATH tag can be used to extend the search path (PATH +# environment variable) so that external tools such as latex and gs can be +# found. +# Note: Directories specified with EXTERNAL_TOOL_PATH are added in front of the +# path already specified by the PATH variable, and are added in the order +# specified. +# Note: This option is particularly useful for macOS version 14 (Sonoma) and +# higher, when running Doxygen from Doxywizard, because in this case any user- +# defined changes to the PATH are ignored. A typical example on macOS is to set +# EXTERNAL_TOOL_PATH = /Library/TeX/texbin /usr/local/bin +# together with the standard path, the full search path used by doxygen when +# launching external tools will then become +# PATH=/Library/TeX/texbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin + +EXTERNAL_TOOL_PATH = + #--------------------------------------------------------------------------- # Configuration options related to warning and progress messages #--------------------------------------------------------------------------- # The QUIET tag can be used to turn on/off the messages that are generated to -# standard output by doxygen. If QUIET is set to YES this implies that the +# standard output by Doxygen. If QUIET is set to YES this implies that the # messages are off. # The default value is: NO. QUIET = NO # The WARNINGS tag can be used to turn on/off the warning messages that are -# generated to standard error (stderr) by doxygen. If WARNINGS is set to YES +# generated to standard error (stderr) by Doxygen. If WARNINGS is set to YES # this implies that the warnings are on. # # Tip: Turn warnings on while writing the documentation. @@ -805,52 +901,97 @@ QUIET = NO WARNINGS = YES -# If the WARN_IF_UNDOCUMENTED tag is set to YES then doxygen will generate +# If the WARN_IF_UNDOCUMENTED tag is set to YES then Doxygen will generate # warnings for undocumented members. If EXTRACT_ALL is set to YES then this flag # will automatically be disabled. # The default value is: YES. WARN_IF_UNDOCUMENTED = YES -# If the WARN_IF_DOC_ERROR tag is set to YES, doxygen will generate warnings for -# potential errors in the documentation, such as not documenting some parameters -# in a documented function, or documenting parameters that don't exist or using -# markup commands wrongly. +# If the WARN_IF_DOC_ERROR tag is set to YES, Doxygen will generate warnings for +# potential errors in the documentation, such as documenting some parameters in +# a documented function twice, or documenting parameters that don't exist or +# using markup commands wrongly. # The default value is: YES. WARN_IF_DOC_ERROR = YES +# If WARN_IF_INCOMPLETE_DOC is set to YES, Doxygen will warn about incomplete +# function parameter documentation. If set to NO, Doxygen will accept that some +# parameters have no documentation without warning. +# The default value is: YES. + +WARN_IF_INCOMPLETE_DOC = YES + # This WARN_NO_PARAMDOC option can be enabled to get warnings for functions that # are documented, but have no documentation for their parameters or return -# value. If set to NO, doxygen will only warn about wrong or incomplete -# parameter documentation, but not about the absence of documentation. If -# EXTRACT_ALL is set to YES then this flag will automatically be disabled. +# value. If set to NO, Doxygen will only warn about wrong parameter +# documentation, but not about the absence of documentation. If EXTRACT_ALL is +# set to YES then this flag will automatically be disabled. See also +# WARN_IF_INCOMPLETE_DOC # The default value is: NO. WARN_NO_PARAMDOC = NO -# If the WARN_AS_ERROR tag is set to YES then doxygen will immediately stop when +# If WARN_IF_UNDOC_ENUM_VAL option is set to YES, Doxygen will warn about +# undocumented enumeration values. If set to NO, Doxygen will accept +# undocumented enumeration values. If EXTRACT_ALL is set to YES then this flag +# will automatically be disabled. +# The default value is: NO. + +WARN_IF_UNDOC_ENUM_VAL = NO + +# If WARN_LAYOUT_FILE option is set to YES, Doxygen will warn about issues found +# while parsing the user defined layout file, such as missing or wrong elements. +# See also LAYOUT_FILE for details. If set to NO, problems with the layout file +# will be suppressed. +# The default value is: YES. + +WARN_LAYOUT_FILE = YES + +# If the WARN_AS_ERROR tag is set to YES then Doxygen will immediately stop when # a warning is encountered. If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS -# then doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but -# at the end of the doxygen process doxygen will return with a non-zero status. -# Possible values are: NO, YES and FAIL_ON_WARNINGS. +# then Doxygen will continue running as if WARN_AS_ERROR tag is set to NO, but +# at the end of the Doxygen process Doxygen will return with a non-zero status. +# If the WARN_AS_ERROR tag is set to FAIL_ON_WARNINGS_PRINT then Doxygen behaves +# like FAIL_ON_WARNINGS but in case no WARN_LOGFILE is defined Doxygen will not +# write the warning messages in between other messages but write them at the end +# of a run, in case a WARN_LOGFILE is defined the warning messages will be +# besides being in the defined file also be shown at the end of a run, unless +# the WARN_LOGFILE is defined as - i.e. standard output (stdout) in that case +# the behavior will remain as with the setting FAIL_ON_WARNINGS. +# Possible values are: NO, YES, FAIL_ON_WARNINGS and FAIL_ON_WARNINGS_PRINT. # The default value is: NO. WARN_AS_ERROR = NO -# The WARN_FORMAT tag determines the format of the warning messages that doxygen +# The WARN_FORMAT tag determines the format of the warning messages that Doxygen # can produce. The string should contain the $file, $line, and $text tags, which # will be replaced by the file and line number from which the warning originated # and the warning text. Optionally the format may contain $version, which will # be replaced by the version of the file (if it could be obtained via # FILE_VERSION_FILTER) +# See also: WARN_LINE_FORMAT # The default value is: $file:$line: $text. WARN_FORMAT = "$file:$line: $text" +# In the $text part of the WARN_FORMAT command it is possible that a reference +# to a more specific place is given. To make it easier to jump to this place +# (outside of Doxygen) the user can define a custom "cut" / "paste" string. +# Example: +# WARN_LINE_FORMAT = "'vi $file +$line'" +# See also: WARN_FORMAT +# The default value is: at line $line of file $file. + +WARN_LINE_FORMAT = "at line $line of file $file" + # The WARN_LOGFILE tag can be used to specify a file to which warning and error # messages should be written. If left blank the output is written to standard -# error (stderr). +# error (stderr). In case the file specified cannot be opened for writing the +# warning and error messages are written to standard error. When as file - is +# specified the warning and error messages are written to standard output +# (stdout). WARN_LOGFILE = @@ -865,43 +1006,58 @@ WARN_LOGFILE = # Note: If this tag is empty the current directory is searched. INPUT = src \ - doc/mainpage \ interface \ example \ - test + test \ + doc/mainpage # This tag can be used to specify the character encoding of the source files -# that doxygen parses. Internally doxygen uses the UTF-8 encoding. Doxygen uses +# that Doxygen parses. Internally Doxygen uses the UTF-8 encoding. Doxygen uses # libiconv (or the iconv built into libc) for the transcoding. See the libiconv # documentation (see: # https://www.gnu.org/software/libiconv/) for the list of possible encodings. +# See also: INPUT_FILE_ENCODING # The default value is: UTF-8. INPUT_ENCODING = UTF-8 +# This tag can be used to specify the character encoding of the source files +# that Doxygen parses. The INPUT_FILE_ENCODING tag can be used to specify +# character encoding on a per file pattern basis. Doxygen will compare the file +# name with each pattern and apply the encoding instead of the default +# INPUT_ENCODING if there is a match. The character encodings are a list of the +# form: pattern=encoding (like *.php=ISO-8859-1). +# See also: INPUT_ENCODING for further information on supported encodings. + +INPUT_FILE_ENCODING = + # If the value of the INPUT tag contains directories, you can use the # FILE_PATTERNS tag to specify one or more wildcard patterns (like *.cpp and # *.h) to filter out the source-files in the directories. # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# read by doxygen. +# read by Doxygen. # # Note the list of default checked file patterns might differ from the list of # default file extension mappings. # -# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cpp, -# *.c++, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, *.idl, *.ddl, *.odl, *.h, -# *.hh, *.hxx, *.hpp, *.h++, *.cs, *.d, *.php, *.php4, *.php5, *.phtml, *.inc, -# *.m, *.markdown, *.md, *.mm, *.dox (to be provided as doxygen C comment), -# *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, *.f18, *.f, *.for, *.vhd, *.vhdl, -# *.ucf, *.qsf and *.ice. +# If left blank the following patterns are tested:*.c, *.cc, *.cxx, *.cxxm, +# *.cpp, *.cppm, *.ccm, *.c++, *.c++m, *.java, *.ii, *.ixx, *.ipp, *.i++, *.inl, +# *.idl, *.ddl, *.odl, *.h, *.hh, *.hxx, *.hpp, *.h++, *.l, *.cs, *.d, *.php, +# *.php4, *.php5, *.phtml, *.inc, *.m, *.markdown, *.md, *.mm, *.dox (to be +# provided as Doxygen C comment), *.py, *.pyw, *.f90, *.f95, *.f03, *.f08, +# *.f18, *.f, *.for, *.vhd, *.vhdl, *.ucf, *.qsf and *.ice. FILE_PATTERNS = *.c \ *.cc \ *.cxx \ + *.cxxm \ *.cpp \ + *.cppm \ + *.ccm \ *.c++ \ + *.c++m \ *.java \ *.ii \ *.ixx \ @@ -916,6 +1072,7 @@ FILE_PATTERNS = *.c \ *.hxx \ *.hpp \ *.h++ \ + *.l \ *.cs \ *.d \ *.php \ @@ -953,7 +1110,7 @@ RECURSIVE = YES # excluded from the INPUT source files. This way you can easily exclude a # subdirectory from a directory tree whose root is specified with the INPUT tag. # -# Note that relative paths are relative to the directory from which doxygen is +# Note that relative paths are relative to the directory from which Doxygen is # run. EXCLUDE = @@ -978,10 +1135,7 @@ EXCLUDE_PATTERNS = # (namespaces, classes, functions, etc.) that should be excluded from the # output. The symbol name can be a fully qualified name, a word, or if the # wildcard * is used, a substring. Examples: ANamespace, AClass, -# AClass::ANamespace, ANamespace::*Test -# -# Note that the wildcards are matched against the file with absolute path, so to -# exclude all test directories use the pattern */test/* +# ANamespace::AClass, ANamespace::*Test EXCLUDE_SYMBOLS = @@ -1011,7 +1165,7 @@ EXAMPLE_RECURSIVE = NO IMAGE_PATH = -# The INPUT_FILTER tag can be used to specify a program that doxygen should +# The INPUT_FILTER tag can be used to specify a program that Doxygen should # invoke to filter for each input file. Doxygen will invoke the filter program # by executing (via popen()) the command: # @@ -1026,9 +1180,14 @@ IMAGE_PATH = # code is scanned, but not when the output code is generated. If lines are added # or removed, the anchors will not be placed correctly. # +# Note that Doxygen will use the data processed and written to standard output +# for further processing, therefore nothing else, like debug statements or used +# commands (so in case of a Windows batch file always use @echo OFF), should be +# written to standard output. +# # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. INPUT_FILTER = @@ -1041,7 +1200,7 @@ INPUT_FILTER = # # Note that for custom extensions or not directly supported extensions you also # need to set EXTENSION_MAPPING for the extension otherwise the files are not -# properly processed by doxygen. +# properly processed by Doxygen. FILTER_PATTERNS = @@ -1063,10 +1222,28 @@ FILTER_SOURCE_PATTERNS = # If the USE_MDFILE_AS_MAINPAGE tag refers to the name of a markdown file that # is part of the input, its contents will be placed on the main page # (index.html). This can be useful if you have a project on for instance GitHub -# and want to reuse the introduction page also for the doxygen output. +# and want to reuse the introduction page also for the Doxygen output. USE_MDFILE_AS_MAINPAGE = +# If the IMPLICIT_DIR_DOCS tag is set to YES, any README.md file found in sub- +# directories of the project's root, is used as the documentation for that sub- +# directory, except when the README.md starts with a \dir, \page or \mainpage +# command. If set to NO, the README.md file needs to start with an explicit \dir +# command in order to be used as directory documentation. +# The default value is: YES. + +IMPLICIT_DIR_DOCS = YES + +# The Fortran standard specifies that for fixed formatted Fortran code all +# characters from position 72 are to be considered as comment. A common +# extension is to allow longer lines before the automatic comment starts. The +# setting FORTRAN_COMMENT_AFTER will also make it possible that longer lines can +# be processed before the automatic comment starts. +# Minimum value: 7, maximum value: 10000, default value: 72. + +FORTRAN_COMMENT_AFTER = 72 + #--------------------------------------------------------------------------- # Configuration options related to source browsing #--------------------------------------------------------------------------- @@ -1081,12 +1258,13 @@ USE_MDFILE_AS_MAINPAGE = SOURCE_BROWSER = YES # Setting the INLINE_SOURCES tag to YES will include the body of functions, -# classes and enums directly into the documentation. +# multi-line macros, enums or list initialized variables directly into the +# documentation. # The default value is: NO. INLINE_SOURCES = NO -# Setting the STRIP_CODE_COMMENTS tag to YES will instruct doxygen to hide any +# Setting the STRIP_CODE_COMMENTS tag to YES will instruct Doxygen to hide any # special comment blocks from generated source code fragments. Normal C, C++ and # Fortran comments will always remain visible. # The default value is: YES. @@ -1124,7 +1302,7 @@ REFERENCES_LINK_SOURCE = YES SOURCE_TOOLTIPS = YES # If the USE_HTAGS tag is set to YES then the references to source code will -# point to the HTML generated by the htags(1) tool instead of doxygen built-in +# point to the HTML generated by the htags(1) tool instead of Doxygen built-in # source browser. The htags tool is part of GNU's global source tagging system # (see https://www.gnu.org/software/global/global.html). You will need version # 4.8.6 or higher. @@ -1138,14 +1316,14 @@ SOURCE_TOOLTIPS = YES # Doxygen will invoke htags (and that will in turn invoke gtags), so these # tools must be available from the command line (i.e. in the search path). # -# The result: instead of the source browser generated by doxygen, the links to +# The result: instead of the source browser generated by Doxygen, the links to # source code will now point to the output of htags. # The default value is: NO. # This tag requires that the tag SOURCE_BROWSER is set to YES. USE_HTAGS = NO -# If the VERBATIM_HEADERS tag is set the YES then doxygen will generate a +# If the VERBATIM_HEADERS tag is set the YES then Doxygen will generate a # verbatim copy of the header file for each class for which an include is # specified. Set to NO to disable this. # See also: Section \class. @@ -1153,26 +1331,28 @@ USE_HTAGS = NO VERBATIM_HEADERS = YES -# If the CLANG_ASSISTED_PARSING tag is set to YES then doxygen will use the +# If the CLANG_ASSISTED_PARSING tag is set to YES then Doxygen will use the # clang parser (see: # http://clang.llvm.org/) for more accurate parsing at the cost of reduced # performance. This can be particularly helpful with template rich C++ code for -# which doxygen's built-in parser lacks the necessary type information. -# Note: The availability of this option depends on whether or not doxygen was +# which Doxygen's built-in parser lacks the necessary type information. +# Note: The availability of this option depends on whether or not Doxygen was # generated with the -Duse_libclang=ON option for CMake. # The default value is: NO. CLANG_ASSISTED_PARSING = NO -# If clang assisted parsing is enabled and the CLANG_ADD_INC_PATHS tag is set to -# YES then doxygen will add the directory of each input to the include path. +# If the CLANG_ASSISTED_PARSING tag is set to YES and the CLANG_ADD_INC_PATHS +# tag is set to YES then Doxygen will add the directory of each input to the +# include path. # The default value is: YES. +# This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. CLANG_ADD_INC_PATHS = YES # If clang assisted parsing is enabled you can provide the compiler with command # line options that you would normally use when invoking the compiler. Note that -# the include paths will already be set by doxygen for the files and directories +# the include paths will already be set by Doxygen for the files and directories # specified with INPUT and INCLUDE_PATH. # This tag requires that the tag CLANG_ASSISTED_PARSING is set to YES. @@ -1186,7 +1366,7 @@ CLANG_OPTIONS = # specifying the -p option to a clang tool, such as clang-check. These options # will then be passed to the parser. Any options specified with CLANG_OPTIONS # will be added as well. -# Note: The availability of this option depends on whether or not doxygen was +# Note: The availability of this option depends on whether or not Doxygen was # generated with the -Duse_libclang=ON option for CMake. CLANG_DATABASE_PATH = @@ -1202,10 +1382,11 @@ CLANG_DATABASE_PATH = ALPHABETICAL_INDEX = YES -# In case all classes in a project start with a common prefix, all classes will -# be put under the same header in the alphabetical index. The IGNORE_PREFIX tag -# can be used to specify a prefix (or a list of prefixes) that should be ignored -# while generating the index headers. +# The IGNORE_PREFIX tag can be used to specify a prefix (or a list of prefixes) +# that should be ignored while generating the index headers. The IGNORE_PREFIX +# tag works for classes, function and member names. The entity will be placed in +# the alphabetical list under the first letter of the entity name that remains +# after removing the prefix. # This tag requires that the tag ALPHABETICAL_INDEX is set to YES. IGNORE_PREFIX = @@ -1214,7 +1395,7 @@ IGNORE_PREFIX = # Configuration options related to the HTML output #--------------------------------------------------------------------------- -# If the GENERATE_HTML tag is set to YES, doxygen will generate HTML output +# If the GENERATE_HTML tag is set to YES, Doxygen will generate HTML output # The default value is: YES. GENERATE_HTML = YES @@ -1235,40 +1416,40 @@ HTML_OUTPUT = html HTML_FILE_EXTENSION = .html # The HTML_HEADER tag can be used to specify a user-defined HTML header file for -# each generated HTML page. If the tag is left blank doxygen will generate a +# each generated HTML page. If the tag is left blank Doxygen will generate a # standard header. # # To get valid HTML the header file that includes any scripts and style sheets -# that doxygen needs, which is dependent on the configuration options used (e.g. +# that Doxygen needs, which is dependent on the configuration options used (e.g. # the setting GENERATE_TREEVIEW). It is highly recommended to start with a # default header using # doxygen -w html new_header.html new_footer.html new_stylesheet.css # YourConfigFile # and then modify the file new_header.html. See also section "Doxygen usage" -# for information on how to generate the default header that doxygen normally +# for information on how to generate the default header that Doxygen normally # uses. # Note: The header is subject to change so you typically have to regenerate the -# default header when upgrading to a newer version of doxygen. For a description +# default header when upgrading to a newer version of Doxygen. For a description # of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_HEADER = # The HTML_FOOTER tag can be used to specify a user-defined HTML footer for each -# generated HTML page. If the tag is left blank doxygen will generate a standard +# generated HTML page. If the tag is left blank Doxygen will generate a standard # footer. See HTML_HEADER for more information on how to generate a default # footer and what special commands can be used inside the footer. See also # section "Doxygen usage" for information on how to generate the default footer -# that doxygen normally uses. +# that Doxygen normally uses. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_FOOTER = # The HTML_STYLESHEET tag can be used to specify a user-defined cascading style # sheet that is used by each HTML page. It can be used to fine-tune the look of -# the HTML output. If left blank doxygen will generate a default style sheet. +# the HTML output. If left blank Doxygen will generate a default style sheet. # See also section "Doxygen usage" for information on how to generate the style -# sheet that doxygen normally uses. +# sheet that Doxygen normally uses. # Note: It is recommended to use HTML_EXTRA_STYLESHEET instead of this tag, as # it is more robust and this tag (HTML_STYLESHEET) will in the future become # obsolete. @@ -1278,13 +1459,18 @@ HTML_STYLESHEET = # The HTML_EXTRA_STYLESHEET tag can be used to specify additional user-defined # cascading style sheets that are included after the standard style sheets -# created by doxygen. Using this option one can overrule certain style aspects. +# created by Doxygen. Using this option one can overrule certain style aspects. # This is preferred over using HTML_STYLESHEET since it does not replace the # standard style sheet and is therefore more robust against future updates. # Doxygen will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the -# list). For an example see the documentation. +# list). +# Note: Since the styling of scrollbars can currently not be overruled in +# Webkit/Chromium, the styling will be left out of the default doxygen.css if +# one or more extra stylesheets have been specified. So if scrollbar +# customization is desired it has to be added explicitly. For an example see the +# documentation. # This tag requires that the tag GENERATE_HTML is set to YES. HTML_EXTRA_STYLESHEET = @@ -1299,9 +1485,22 @@ HTML_EXTRA_STYLESHEET = HTML_EXTRA_FILES = +# The HTML_COLORSTYLE tag can be used to specify if the generated HTML output +# should be rendered with a dark or light theme. +# Possible values are: LIGHT always generates light mode output, DARK always +# generates dark mode output, AUTO_LIGHT automatically sets the mode according +# to the user preference, uses light mode if no preference is set (the default), +# AUTO_DARK automatically sets the mode according to the user preference, uses +# dark mode if no preference is set and TOGGLE allows a user to switch between +# light and dark mode via a button. +# The default value is: AUTO_LIGHT. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COLORSTYLE = TOGGLE + # The HTML_COLORSTYLE_HUE tag controls the color of the HTML output. Doxygen # will adjust the colors in the style sheet and background images according to -# this color. Hue is specified as an angle on a colorwheel, see +# this color. Hue is specified as an angle on a color-wheel, see # https://en.wikipedia.org/wiki/Hue for more information. For instance the value # 0 represents red, 60 is yellow, 120 is green, 180 is cyan, 240 is blue, 300 # purple, and 360 is red again. @@ -1311,7 +1510,7 @@ HTML_EXTRA_FILES = HTML_COLORSTYLE_HUE = 220 # The HTML_COLORSTYLE_SAT tag controls the purity (or saturation) of the colors -# in the HTML output. For a value of 0 the output will use grayscales only. A +# in the HTML output. For a value of 0 the output will use gray-scales only. A # value of 255 will produce the most vivid colors. # Minimum value: 0, maximum value: 255, default value: 100. # This tag requires that the tag GENERATE_HTML is set to YES. @@ -1329,15 +1528,6 @@ HTML_COLORSTYLE_SAT = 100 HTML_COLORSTYLE_GAMMA = 80 -# If the HTML_TIMESTAMP tag is set to YES then the footer of each generated HTML -# page will contain the date and time when the page was generated. Setting this -# to YES can help to show when doxygen was last run and thus if the -# documentation is up to date. -# The default value is: NO. -# This tag requires that the tag GENERATE_HTML is set to YES. - -HTML_TIMESTAMP = NO - # If the HTML_DYNAMIC_MENUS tag is set to YES then the generated HTML # documentation will contain a main index with vertical navigation menus that # are dynamically created via JavaScript. If disabled, the navigation index will @@ -1357,6 +1547,33 @@ HTML_DYNAMIC_MENUS = YES HTML_DYNAMIC_SECTIONS = NO +# If the HTML_CODE_FOLDING tag is set to YES then classes and functions can be +# dynamically folded and expanded in the generated HTML source code. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_CODE_FOLDING = YES + +# If the HTML_COPY_CLIPBOARD tag is set to YES then Doxygen will show an icon in +# the top right corner of code and text fragments that allows the user to copy +# its content to the clipboard. Note this only works if supported by the browser +# and the web page is served via a secure context (see: +# https://www.w3.org/TR/secure-contexts/), i.e. using the https: or file: +# protocol. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_COPY_CLIPBOARD = YES + +# Doxygen stores a couple of settings persistently in the browser (via e.g. +# cookies). By default these settings apply to all HTML pages generated by +# Doxygen across all projects. The HTML_PROJECT_COOKIE tag can be used to store +# the settings under a project specific key, such that the user preferences will +# be stored separately. +# This tag requires that the tag GENERATE_HTML is set to YES. + +HTML_PROJECT_COOKIE = + # With HTML_INDEX_NUM_ENTRIES one can control the preferred number of entries # shown in the various tree structured indices initially; the user can expand # and collapse entries dynamically later on. Doxygen will expand the tree to @@ -1374,7 +1591,7 @@ HTML_INDEX_NUM_ENTRIES = 100 # generated that can be used as input for Apple's Xcode 3 integrated development # environment (see: # https://developer.apple.com/xcode/), introduced with OSX 10.5 (Leopard). To -# create a documentation set, doxygen will generate a Makefile in the HTML +# create a documentation set, Doxygen will generate a Makefile in the HTML # output directory. Running make will produce the docset in that directory and # running make install will install the docset in # ~/Library/Developer/Shared/Documentation/DocSets so that Xcode will find it at @@ -1393,6 +1610,13 @@ GENERATE_DOCSET = NO DOCSET_FEEDNAME = "Doxygen generated docs" +# This tag determines the URL of the docset feed. A documentation feed provides +# an umbrella under which multiple documentation sets from a single provider +# (such as a company or product suite) can be grouped. +# This tag requires that the tag GENERATE_DOCSET is set to YES. + +DOCSET_FEEDURL = + # This tag specifies a string that should uniquely identify the documentation # set bundle. This should be a reverse domain-name style string, e.g. # com.mycompany.MyDocSet. Doxygen will append .docset to the name. @@ -1415,14 +1639,18 @@ DOCSET_PUBLISHER_ID = org.doxygen.Publisher DOCSET_PUBLISHER_NAME = Publisher -# If the GENERATE_HTMLHELP tag is set to YES then doxygen generates three +# If the GENERATE_HTMLHELP tag is set to YES then Doxygen generates three # additional HTML index files: index.hhp, index.hhc, and index.hhk. The # index.hhp is a project file that can be read by Microsoft's HTML Help Workshop -# (see: -# https://www.microsoft.com/en-us/download/details.aspx?id=21138) on Windows. +# on Windows. In the beginning of 2021 Microsoft took the original page, with +# a.o. the download links, offline (the HTML help workshop was already many +# years in maintenance mode). You can download the HTML help workshop from the +# web archives at Installation executable (see: +# http://web.archive.org/web/20160201063255/http://download.microsoft.com/downlo +# ad/0/A/9/0A939EF6-E31C-430F-A3DF-DFAE7960D564/htmlhelp.exe). # # The HTML Help Workshop contains a compiler that can convert all HTML output -# generated by doxygen into a single compiled HTML file (.chm). Compiled HTML +# generated by Doxygen into a single compiled HTML file (.chm). Compiled HTML # files are now used as the Windows 98 help format, and will replace the old # Windows help format (.hlp) on all Windows platforms in the future. Compressed # HTML files also contain an index, a table of contents, and you can search for @@ -1442,7 +1670,7 @@ CHM_FILE = # The HHC_LOCATION tag can be used to specify the location (absolute path # including file name) of the HTML help compiler (hhc.exe). If non-empty, -# doxygen will try to run the HTML help compiler on the generated index.hhp. +# Doxygen will try to run the HTML help compiler on the generated index.hhp. # The file has to be specified with full path. # This tag requires that the tag GENERATE_HTMLHELP is set to YES. @@ -1476,6 +1704,16 @@ BINARY_TOC = NO TOC_EXPAND = NO +# The SITEMAP_URL tag is used to specify the full URL of the place where the +# generated documentation will be placed on the server by the user during the +# deployment of the documentation. The generated sitemap is called sitemap.xml +# and placed on the directory specified by HTML_OUTPUT. In case no SITEMAP_URL +# is specified no sitemap is generated. For information about the sitemap +# protocol see https://www.sitemaps.org +# This tag requires that the tag GENERATE_HTML is set to YES. + +SITEMAP_URL = + # If the GENERATE_QHP tag is set to YES and both QHP_NAMESPACE and # QHP_VIRTUAL_FOLDER are set, an additional index file will be generated that # can be used as input for Qt's qhelpgenerator to generate a Qt Compressed Help @@ -1534,7 +1772,7 @@ QHP_CUST_FILTER_ATTRS = QHP_SECT_FILTER_ATTRS = # The QHG_LOCATION tag can be used to specify the location (absolute path -# including file name) of Qt's qhelpgenerator. If non-empty doxygen will try to +# including file name) of Qt's qhelpgenerator. If non-empty Doxygen will try to # run qhelpgenerator on the generated .qhp file. # This tag requires that the tag GENERATE_QHP is set to YES. @@ -1578,18 +1816,39 @@ DISABLE_INDEX = NO # to work a browser that supports JavaScript, DHTML, CSS and frames is required # (i.e. any modern browser). Windows users are probably better off using the # HTML help feature. Via custom style sheets (see HTML_EXTRA_STYLESHEET) one can -# further fine-tune the look of the index. As an example, the default style -# sheet generated by doxygen has an example that shows how to put an image at -# the root of the tree instead of the PROJECT_NAME. Since the tree basically has -# the same information as the tab index, you could consider setting -# DISABLE_INDEX to YES when enabling this option. -# The default value is: NO. +# further fine tune the look of the index (see "Fine-tuning the output"). As an +# example, the default style sheet generated by Doxygen has an example that +# shows how to put an image at the root of the tree instead of the PROJECT_NAME. +# Since the tree basically has more details information than the tab index, you +# could consider setting DISABLE_INDEX to YES when enabling this option. +# The default value is: YES. # This tag requires that the tag GENERATE_HTML is set to YES. GENERATE_TREEVIEW = YES +# When GENERATE_TREEVIEW is set to YES, the PAGE_OUTLINE_PANEL option determines +# if an additional navigation panel is shown at the right hand side of the +# screen, displaying an outline of the contents of the main page, similar to +# e.g. https://developer.android.com/reference If GENERATE_TREEVIEW is set to +# NO, this option has no effect. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +PAGE_OUTLINE_PANEL = YES + +# When GENERATE_TREEVIEW is set to YES, the FULL_SIDEBAR option determines if +# the side bar is limited to only the treeview area (value NO) or if it should +# extend to the full height of the window (value YES). Setting this to YES gives +# a layout similar to e.g. https://docs.readthedocs.io with more room for +# contents, but less room for the project logo, title, and description. If +# GENERATE_TREEVIEW is set to NO, this option has no effect. +# The default value is: NO. +# This tag requires that the tag GENERATE_HTML is set to YES. + +FULL_SIDEBAR = NO + # The ENUM_VALUES_PER_LINE tag can be used to set the number of enum values that -# doxygen will group on one line in the generated HTML documentation. +# Doxygen will group on one line in the generated HTML documentation. # # Note that a value of 0 will completely suppress the enum values from appearing # in the overview section. @@ -1598,6 +1857,12 @@ GENERATE_TREEVIEW = YES ENUM_VALUES_PER_LINE = 4 +# When the SHOW_ENUM_VALUES tag is set doxygen will show the specified +# enumeration values besides the enumeration mnemonics. +# The default value is: NO. + +SHOW_ENUM_VALUES = NO + # If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be used # to set the initial width (in pixels) of the frame in which the tree is shown. # Minimum value: 0, maximum value: 1500, default value: 250. @@ -1605,14 +1870,21 @@ ENUM_VALUES_PER_LINE = 4 TREEVIEW_WIDTH = 250 -# If the EXT_LINKS_IN_WINDOW option is set to YES, doxygen will open links to +# If the EXT_LINKS_IN_WINDOW option is set to YES, Doxygen will open links to # external symbols imported via tag files in a separate window. # The default value is: NO. # This tag requires that the tag GENERATE_HTML is set to YES. EXT_LINKS_IN_WINDOW = NO -# If the HTML_FORMULA_FORMAT option is set to svg, doxygen will use the pdf2svg +# If the OBFUSCATE_EMAILS tag is set to YES, Doxygen will obfuscate email +# addresses. +# The default value is: YES. +# This tag requires that the tag GENERATE_HTML is set to YES. + +OBFUSCATE_EMAILS = YES + +# If the HTML_FORMULA_FORMAT option is set to svg, Doxygen will use the pdf2svg # tool (see https://github.com/dawbarton/pdf2svg) or inkscape (see # https://inkscape.org) to generate formulas as SVG images instead of PNGs for # the HTML output. These images will generally look nicer at scaled resolutions. @@ -1621,28 +1893,17 @@ EXT_LINKS_IN_WINDOW = NO # The default value is: png. # This tag requires that the tag GENERATE_HTML is set to YES. -HTML_FORMULA_FORMAT = png +HTML_FORMULA_FORMAT = svg # Use this tag to change the font size of LaTeX formulas included as images in # the HTML documentation. When you change the font size after a successful -# doxygen run you need to manually remove any form_*.png images from the HTML +# Doxygen run you need to manually remove any form_*.png images from the HTML # output directory to force them to be regenerated. # Minimum value: 8, maximum value: 50, default value: 10. # This tag requires that the tag GENERATE_HTML is set to YES. FORMULA_FONTSIZE = 10 -# Use the FORMULA_TRANSPARENT tag to determine whether or not the images -# generated for formulas are transparent PNGs. Transparent PNGs are not -# supported properly for IE 6.0, but are supported on all modern browsers. -# -# Note that when changing this option you need to delete any form_*.png files in -# the HTML output directory before the changes have effect. -# The default value is: YES. -# This tag requires that the tag GENERATE_HTML is set to YES. - -FORMULA_TRANSPARENT = YES - # The FORMULA_MACROFILE can contain LaTeX \newcommand and \renewcommand commands # to create new LaTeX commands to be used in formulas as building blocks. See # the section "Including formulas" for details. @@ -1660,51 +1921,90 @@ FORMULA_MACROFILE = USE_MATHJAX = NO +# With MATHJAX_VERSION it is possible to specify the MathJax version to be used. +# Note that the different versions of MathJax have different requirements with +# regards to the different settings, so it is possible that also other MathJax +# settings have to be changed when switching between the different MathJax +# versions. +# Possible values are: MathJax_2, MathJax_3 and MathJax_4. +# The default value is: MathJax_2. +# This tag requires that the tag USE_MATHJAX is set to YES. + +MATHJAX_VERSION = MathJax_2 + # When MathJax is enabled you can set the default output format to be used for -# the MathJax output. See the MathJax site (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. +# the MathJax output. For more details about the output format see MathJax +# version 2 (see: +# https://docs.mathjax.org/en/v2.7/output.html), MathJax version 3 (see: +# https://docs.mathjax.org/en/v3.2/output/index.html) and MathJax version 4 +# (see: +# https://docs.mathjax.org/en/v4.0/output/index.htm). # Possible values are: HTML-CSS (which is slower, but has the best -# compatibility), NativeMML (i.e. MathML) and SVG. +# compatibility. This is the name for Mathjax version 2, for MathJax version 3 +# this will be translated into chtml), NativeMML (i.e. MathML. Only supported +# for MathJax 2. For MathJax version 3 chtml will be used instead.), chtml (This +# is the name for Mathjax version 3, for MathJax version 2 this will be +# translated into HTML-CSS) and SVG. # The default value is: HTML-CSS. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_FORMAT = HTML-CSS # When MathJax is enabled you need to specify the location relative to the HTML -# output directory using the MATHJAX_RELPATH option. The destination directory -# should contain the MathJax.js script. For instance, if the mathjax directory -# is located at the same level as the HTML output directory, then -# MATHJAX_RELPATH should be ../mathjax. The default value points to the MathJax -# Content Delivery Network so you can quickly see the result without installing -# MathJax. However, it is strongly recommended to install a local copy of -# MathJax from https://www.mathjax.org before deployment. -# The default value is: https://cdn.jsdelivr.net/npm/mathjax@2. +# output directory using the MATHJAX_RELPATH option. For Mathjax version 2 the +# destination directory should contain the MathJax.js script. For instance, if +# the mathjax directory is located at the same level as the HTML output +# directory, then MATHJAX_RELPATH should be ../mathjax.s For Mathjax versions 3 +# and 4 the destination directory should contain the tex-.js script +# (where is either chtml or svg). The default value points to the +# MathJax Content Delivery Network so you can quickly see the result without +# installing MathJax. However, it is strongly recommended to install a local +# copy of MathJax from https://www.mathjax.org before deployment. The default +# value is: +# - in case of MathJax version 2: https://cdn.jsdelivr.net/npm/mathjax@2 +# - in case of MathJax version 3: https://cdn.jsdelivr.net/npm/mathjax@3 +# - in case of MathJax version 4: https://cdn.jsdelivr.net/npm/mathjax@4 # This tag requires that the tag USE_MATHJAX is set to YES. -MATHJAX_RELPATH = https://cdn.jsdelivr.net/npm/mathjax@2 +MATHJAX_RELPATH = # The MATHJAX_EXTENSIONS tag can be used to specify one or more MathJax # extension names that should be enabled during MathJax rendering. For example +# for MathJax version 2 (see https://docs.mathjax.org/en/v2.7/tex.html): # MATHJAX_EXTENSIONS = TeX/AMSmath TeX/AMSsymbols +# For example for MathJax version 3 (see +# https://docs.mathjax.org/en/v3.2/input/tex/extensions/): +# MATHJAX_EXTENSIONS = ams +# For example for MathJax version 4 (see +# https://docs.mathjax.org/en/v4.0/input/tex/extensions/): +# MATHJAX_EXTENSIONS = units +# Note that for Mathjax version 4 quite a few extensions are already +# automatically loaded. To disable a package in Mathjax version 4 one can use +# the package name prepended with a minus sign (- like MATHJAX_EXTENSIONS += +# -textmacros) # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_EXTENSIONS = -# The MATHJAX_CODEFILE tag can be used to specify a file with javascript pieces -# of code that will be used on startup of the MathJax code. See the MathJax site -# (see: -# http://docs.mathjax.org/en/v2.7-latest/output.html) for more details. For an -# example see the documentation. +# The MATHJAX_CODEFILE tag can be used to specify a file with JavaScript pieces +# of code that will be used on startup of the MathJax code. See the Mathjax site +# for more details: +# - MathJax version 2 (see: +# https://docs.mathjax.org/en/v2.7/) +# - MathJax version 3 (see: +# https://docs.mathjax.org/en/v3.2/) +# - MathJax version 4 (see: +# https://docs.mathjax.org/en/v4.0/) For an example see the documentation. # This tag requires that the tag USE_MATHJAX is set to YES. MATHJAX_CODEFILE = -# When the SEARCHENGINE tag is enabled doxygen will generate a search box for -# the HTML output. The underlying search engine uses javascript and DHTML and +# When the SEARCHENGINE tag is enabled Doxygen will generate a search box for +# the HTML output. The underlying search engine uses JavaScript and DHTML and # should work on any modern browser. Note that when using HTML help # (GENERATE_HTMLHELP), Qt help (GENERATE_QHP), or docsets (GENERATE_DOCSET) # there is already a search function so this one should typically be disabled. -# For large projects the javascript based search engine can be slow, then +# For large projects the JavaScript based search engine can be slow, then # enabling SERVER_BASED_SEARCH may provide a better solution. It is possible to # search using the keyboard; to jump to the search box use + S # (what the is depends on the OS and browser, but it is typically @@ -1723,7 +2023,7 @@ SEARCHENGINE = YES # When the SERVER_BASED_SEARCH tag is enabled the search engine will be # implemented using a web server instead of a web client using JavaScript. There # are two flavors of web server based searching depending on the EXTERNAL_SEARCH -# setting. When disabled, doxygen will generate a PHP script for searching and +# setting. When disabled, Doxygen will generate a PHP script for searching and # an index file used by the script. When EXTERNAL_SEARCH is enabled the indexing # and searching needs to be provided by external tools. See the section # "External Indexing and Searching" for details. @@ -1732,7 +2032,7 @@ SEARCHENGINE = YES SERVER_BASED_SEARCH = NO -# When EXTERNAL_SEARCH tag is enabled doxygen will no longer generate the PHP +# When EXTERNAL_SEARCH tag is enabled Doxygen will no longer generate the PHP # script for searching. Instead the search results are written to an XML file # which needs to be processed by an external indexer. Doxygen will invoke an # external search engine pointed to by the SEARCHENGINE_URL option to obtain the @@ -1777,7 +2077,7 @@ SEARCHDATA_FILE = searchdata.xml EXTERNAL_SEARCH_ID = -# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through doxygen +# The EXTRA_SEARCH_MAPPINGS tag can be used to enable searching through Doxygen # projects other than the one defined by this configuration file, but that are # all added to the same external search index. Each project needs to have a # unique id set via EXTERNAL_SEARCH_ID. The search mapping then maps the id of @@ -1791,7 +2091,7 @@ EXTRA_SEARCH_MAPPINGS = # Configuration options related to the LaTeX output #--------------------------------------------------------------------------- -# If the GENERATE_LATEX tag is set to YES, doxygen will generate LaTeX output. +# If the GENERATE_LATEX tag is set to YES, Doxygen will generate LaTeX output. # The default value is: YES. GENERATE_LATEX = NO @@ -1836,7 +2136,7 @@ MAKEINDEX_CMD_NAME = makeindex LATEX_MAKEINDEX_CMD = makeindex -# If the COMPACT_LATEX tag is set to YES, doxygen generates more compact LaTeX +# If the COMPACT_LATEX tag is set to YES, Doxygen generates more compact LaTeX # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -1865,36 +2165,38 @@ PAPER_TYPE = a4 EXTRA_PACKAGES = -# The LATEX_HEADER tag can be used to specify a personal LaTeX header for the -# generated LaTeX document. The header should contain everything until the first -# chapter. If it is left blank doxygen will generate a standard header. See -# section "Doxygen usage" for information on how to let doxygen write the -# default header to a separate file. +# The LATEX_HEADER tag can be used to specify a user-defined LaTeX header for +# the generated LaTeX document. The header should contain everything until the +# first chapter. If it is left blank Doxygen will generate a standard header. It +# is highly recommended to start with a default header using +# doxygen -w latex new_header.tex new_footer.tex new_stylesheet.sty +# and then modify the file new_header.tex. See also section "Doxygen usage" for +# information on how to generate the default header that Doxygen normally uses. # -# Note: Only use a user-defined header if you know what you are doing! The -# following commands have a special meaning inside the header: $title, -# $datetime, $date, $doxygenversion, $projectname, $projectnumber, -# $projectbrief, $projectlogo. Doxygen will replace $title with the empty -# string, for the replacement values of the other commands the user is referred -# to HTML_HEADER. +# Note: Only use a user-defined header if you know what you are doing! +# Note: The header is subject to change so you typically have to regenerate the +# default header when upgrading to a newer version of Doxygen. The following +# commands have a special meaning inside the header (and footer): For a +# description of the possible markers and block names see the documentation. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HEADER = -# The LATEX_FOOTER tag can be used to specify a personal LaTeX footer for the -# generated LaTeX document. The footer should contain everything after the last -# chapter. If it is left blank doxygen will generate a standard footer. See +# The LATEX_FOOTER tag can be used to specify a user-defined LaTeX footer for +# the generated LaTeX document. The footer should contain everything after the +# last chapter. If it is left blank Doxygen will generate a standard footer. See # LATEX_HEADER for more information on how to generate a default footer and what -# special commands can be used inside the footer. -# -# Note: Only use a user-defined footer if you know what you are doing! +# special commands can be used inside the footer. See also section "Doxygen +# usage" for information on how to generate the default footer that Doxygen +# normally uses. Note: Only use a user-defined footer if you know what you are +# doing! # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_FOOTER = # The LATEX_EXTRA_STYLESHEET tag can be used to specify additional user-defined # LaTeX style sheets that are included after the standard style sheets created -# by doxygen. Using this option one can overrule certain style aspects. Doxygen +# by Doxygen. Using this option one can overrule certain style aspects. Doxygen # will copy the style sheet files to the output directory. # Note: The order of the extra style sheet files is of importance (e.g. the last # style sheet in the list overrules the setting of the previous ones in the @@ -1920,7 +2222,7 @@ LATEX_EXTRA_FILES = PDF_HYPERLINKS = YES -# If the USE_PDFLATEX tag is set to YES, doxygen will use the engine as +# If the USE_PDFLATEX tag is set to YES, Doxygen will use the engine as # specified with LATEX_CMD_NAME to generate the PDF file directly from the LaTeX # files. Set this option to YES, to get a higher quality PDF documentation. # @@ -1930,47 +2232,35 @@ PDF_HYPERLINKS = YES USE_PDFLATEX = YES -# If the LATEX_BATCHMODE tag is set to YES, doxygen will add the \batchmode -# command to the generated LaTeX files. This will instruct LaTeX to keep running -# if errors occur, instead of asking the user for help. This option is also used -# when generating formulas in HTML. +# The LATEX_BATCHMODE tag signals the behavior of LaTeX in case of an error. +# Possible values are: NO same as ERROR_STOP, YES same as BATCH, BATCH In batch +# mode nothing is printed on the terminal, errors are scrolled as if is +# hit at every error; missing files that TeX tries to input or request from +# keyboard input (\read on a not open input stream) cause the job to abort, +# NON_STOP In nonstop mode the diagnostic message will appear on the terminal, +# but there is no possibility of user interaction just like in batch mode, +# SCROLL In scroll mode, TeX will stop only for missing files to input or if +# keyboard input is necessary and ERROR_STOP In errorstop mode, TeX will stop at +# each error, asking for user intervention. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_BATCHMODE = NO -# If the LATEX_HIDE_INDICES tag is set to YES then doxygen will not include the +# If the LATEX_HIDE_INDICES tag is set to YES then Doxygen will not include the # index chapters (such as File Index, Compound Index, etc.) in the output. # The default value is: NO. # This tag requires that the tag GENERATE_LATEX is set to YES. LATEX_HIDE_INDICES = NO -# If the LATEX_SOURCE_CODE tag is set to YES then doxygen will include source -# code with syntax highlighting in the LaTeX output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_SOURCE_CODE = NO - # The LATEX_BIB_STYLE tag can be used to specify the style to use for the # bibliography, e.g. plainnat, or ieeetr. See # https://en.wikipedia.org/wiki/BibTeX and \cite for more info. -# The default value is: plain. -# This tag requires that the tag GENERATE_LATEX is set to YES. - -LATEX_BIB_STYLE = plain - -# If the LATEX_TIMESTAMP tag is set to YES then the footer of each generated -# page will contain the date and time when the page was generated. Setting this -# to NO can help when comparing the output of multiple runs. -# The default value is: NO. +# The default value is: plainnat. # This tag requires that the tag GENERATE_LATEX is set to YES. -LATEX_TIMESTAMP = NO +LATEX_BIB_STYLE = plainnat # The LATEX_EMOJI_DIRECTORY tag is used to specify the (relative or absolute) # path from which the emoji images will be read. If a relative path is entered, @@ -1984,7 +2274,7 @@ LATEX_EMOJI_DIRECTORY = # Configuration options related to the RTF output #--------------------------------------------------------------------------- -# If the GENERATE_RTF tag is set to YES, doxygen will generate RTF output. The +# If the GENERATE_RTF tag is set to YES, Doxygen will generate RTF output. The # RTF output is optimized for Word 97 and may not look too pretty with other RTF # readers/editors. # The default value is: NO. @@ -1999,7 +2289,7 @@ GENERATE_RTF = NO RTF_OUTPUT = rtf -# If the COMPACT_RTF tag is set to YES, doxygen generates more compact RTF +# If the COMPACT_RTF tag is set to YES, Doxygen generates more compact RTF # documents. This may be useful for small projects and may help to save some # trees in general. # The default value is: NO. @@ -2019,38 +2309,36 @@ COMPACT_RTF = NO RTF_HYPERLINKS = NO -# Load stylesheet definitions from file. Syntax is similar to doxygen's +# Load stylesheet definitions from file. Syntax is similar to Doxygen's # configuration file, i.e. a series of assignments. You only have to provide # replacements, missing definitions are set to their default value. # # See also section "Doxygen usage" for information on how to generate the -# default style sheet that doxygen normally uses. +# default style sheet that Doxygen normally uses. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_STYLESHEET_FILE = # Set optional variables used in the generation of an RTF document. Syntax is -# similar to doxygen's configuration file. A template extensions file can be +# similar to Doxygen's configuration file. A template extensions file can be # generated using doxygen -e rtf extensionFile. # This tag requires that the tag GENERATE_RTF is set to YES. RTF_EXTENSIONS_FILE = -# If the RTF_SOURCE_CODE tag is set to YES then doxygen will include source code -# with syntax highlighting in the RTF output. -# -# Note that which sources are shown also depends on other settings such as -# SOURCE_BROWSER. -# The default value is: NO. +# The RTF_EXTRA_FILES tag can be used to specify one or more extra images or +# other source files which should be copied to the RTF_OUTPUT output directory. +# Note that the files will be copied as-is; there are no commands or markers +# available. # This tag requires that the tag GENERATE_RTF is set to YES. -RTF_SOURCE_CODE = NO +RTF_EXTRA_FILES = #--------------------------------------------------------------------------- # Configuration options related to the man page output #--------------------------------------------------------------------------- -# If the GENERATE_MAN tag is set to YES, doxygen will generate man pages for +# If the GENERATE_MAN tag is set to YES, Doxygen will generate man pages for # classes and files. # The default value is: NO. @@ -2081,7 +2369,7 @@ MAN_EXTENSION = .3 MAN_SUBDIR = -# If the MAN_LINKS tag is set to YES and doxygen generates man output, then it +# If the MAN_LINKS tag is set to YES and Doxygen generates man output, then it # will generate one additional man file for each entity documented in the real # man page(s). These additional files only source the real man page, but without # them the man command would be unable to find the correct page. @@ -2094,7 +2382,7 @@ MAN_LINKS = NO # Configuration options related to the XML output #--------------------------------------------------------------------------- -# If the GENERATE_XML tag is set to YES, doxygen will generate an XML file that +# If the GENERATE_XML tag is set to YES, Doxygen will generate an XML file that # captures the structure of the code including all documentation. # The default value is: NO. @@ -2108,7 +2396,7 @@ GENERATE_XML = NO XML_OUTPUT = xml -# If the XML_PROGRAMLISTING tag is set to YES, doxygen will dump the program +# If the XML_PROGRAMLISTING tag is set to YES, Doxygen will dump the program # listings (including syntax highlighting and cross-referencing information) to # the XML output. Note that enabling this will significantly increase the size # of the XML output. @@ -2117,7 +2405,7 @@ XML_OUTPUT = xml XML_PROGRAMLISTING = YES -# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, doxygen will include +# If the XML_NS_MEMB_FILE_SCOPE tag is set to YES, Doxygen will include # namespace members in file scope as well, matching the HTML output. # The default value is: NO. # This tag requires that the tag GENERATE_XML is set to YES. @@ -2128,7 +2416,7 @@ XML_NS_MEMB_FILE_SCOPE = NO # Configuration options related to the DOCBOOK output #--------------------------------------------------------------------------- -# If the GENERATE_DOCBOOK tag is set to YES, doxygen will generate Docbook files +# If the GENERATE_DOCBOOK tag is set to YES, Doxygen will generate Docbook files # that can be used to generate PDF. # The default value is: NO. @@ -2142,21 +2430,12 @@ GENERATE_DOCBOOK = NO DOCBOOK_OUTPUT = docbook -# If the DOCBOOK_PROGRAMLISTING tag is set to YES, doxygen will include the -# program listings (including syntax highlighting and cross-referencing -# information) to the DOCBOOK output. Note that enabling this will significantly -# increase the size of the DOCBOOK output. -# The default value is: NO. -# This tag requires that the tag GENERATE_DOCBOOK is set to YES. - -DOCBOOK_PROGRAMLISTING = NO - #--------------------------------------------------------------------------- # Configuration options for the AutoGen Definitions output #--------------------------------------------------------------------------- -# If the GENERATE_AUTOGEN_DEF tag is set to YES, doxygen will generate an -# AutoGen Definitions (see http://autogen.sourceforge.net/) file that captures +# If the GENERATE_AUTOGEN_DEF tag is set to YES, Doxygen will generate an +# AutoGen Definitions (see https://autogen.sourceforge.net/) file that captures # the structure of the code including all documentation. Note that this feature # is still experimental and incomplete at the moment. # The default value is: NO. @@ -2167,11 +2446,33 @@ GENERATE_AUTOGEN_DEF = NO # Configuration options related to Sqlite3 output #--------------------------------------------------------------------------- +# If the GENERATE_SQLITE3 tag is set to YES Doxygen will generate a Sqlite3 +# database with symbols found by Doxygen stored in tables. +# The default value is: NO. + +GENERATE_SQLITE3 = NO + +# The SQLITE3_OUTPUT tag is used to specify where the Sqlite3 database will be +# put. If a relative path is entered the value of OUTPUT_DIRECTORY will be put +# in front of it. +# The default directory is: sqlite3. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_OUTPUT = sqlite3 + +# The SQLITE3_RECREATE_DB tag is set to YES, the existing doxygen_sqlite3.db +# database file will be recreated with each Doxygen run. If set to NO, Doxygen +# will warn if a database file is already found and not modify it. +# The default value is: YES. +# This tag requires that the tag GENERATE_SQLITE3 is set to YES. + +SQLITE3_RECREATE_DB = YES + #--------------------------------------------------------------------------- # Configuration options related to the Perl module output #--------------------------------------------------------------------------- -# If the GENERATE_PERLMOD tag is set to YES, doxygen will generate a Perl module +# If the GENERATE_PERLMOD tag is set to YES, Doxygen will generate a Perl module # file that captures the structure of the code including all documentation. # # Note that this feature is still experimental and incomplete at the moment. @@ -2179,7 +2480,7 @@ GENERATE_AUTOGEN_DEF = NO GENERATE_PERLMOD = NO -# If the PERLMOD_LATEX tag is set to YES, doxygen will generate the necessary +# If the PERLMOD_LATEX tag is set to YES, Doxygen will generate the necessary # Makefile rules, Perl scripts and LaTeX code to be able to generate PDF and DVI # output from the Perl module output. # The default value is: NO. @@ -2209,13 +2510,13 @@ PERLMOD_MAKEVAR_PREFIX = # Configuration options related to the preprocessor #--------------------------------------------------------------------------- -# If the ENABLE_PREPROCESSING tag is set to YES, doxygen will evaluate all +# If the ENABLE_PREPROCESSING tag is set to YES, Doxygen will evaluate all # C-preprocessor directives found in the sources and include files. # The default value is: YES. ENABLE_PREPROCESSING = YES -# If the MACRO_EXPANSION tag is set to YES, doxygen will expand all macro names +# If the MACRO_EXPANSION tag is set to YES, Doxygen will expand all macro names # in the source code. If set to NO, only conditional compilation will be # performed. Macro expansion can be done in a controlled way by setting # EXPAND_ONLY_PREDEF to YES. @@ -2241,7 +2542,8 @@ SEARCH_INCLUDES = YES # The INCLUDE_PATH tag can be used to specify one or more directories that # contain include files that are not input files but should be processed by the -# preprocessor. +# preprocessor. Note that the INCLUDE_PATH is not recursive, so the setting of +# RECURSIVE has no effect here. # This tag requires that the tag SEARCH_INCLUDES is set to YES. INCLUDE_PATH = @@ -2273,7 +2575,7 @@ PREDEFINED = EXPAND_AS_DEFINED = -# If the SKIP_FUNCTION_MACROS tag is set to YES then doxygen's preprocessor will +# If the SKIP_FUNCTION_MACROS tag is set to YES then Doxygen's preprocessor will # remove all references to function-like macros that are alone on a line, have # an all uppercase name, and do not end with a semicolon. Such function macros # are typically used for boiler-plate code, and will confuse the parser if not @@ -2297,26 +2599,26 @@ SKIP_FUNCTION_MACROS = YES # section "Linking to external documentation" for more information about the use # of tag files. # Note: Each tag file must have a unique name (where the name does NOT include -# the path). If a tag file is not located in the directory in which doxygen is +# the path). If a tag file is not located in the directory in which Doxygen is # run, you must also specify the path to the tagfile here. TAGFILES = -# When a file name is specified after GENERATE_TAGFILE, doxygen will create a +# When a file name is specified after GENERATE_TAGFILE, Doxygen will create a # tag file that is based on the input files it reads. See section "Linking to # external documentation" for more information about the usage of tag files. GENERATE_TAGFILE = -# If the ALLEXTERNALS tag is set to YES, all external class will be listed in -# the class index. If set to NO, only the inherited external classes will be -# listed. +# If the ALLEXTERNALS tag is set to YES, all external classes and namespaces +# will be listed in the class and namespace index. If set to NO, only the +# inherited external classes will be listed. # The default value is: NO. ALLEXTERNALS = NO # If the EXTERNAL_GROUPS tag is set to YES, all external groups will be listed -# in the modules index. If set to NO, only the current project's groups will be +# in the topic index. If set to NO, only the current project's groups will be # listed. # The default value is: YES. @@ -2330,99 +2632,111 @@ EXTERNAL_GROUPS = YES EXTERNAL_PAGES = YES #--------------------------------------------------------------------------- -# Configuration options related to the dot tool +# Configuration options related to diagram generator tools #--------------------------------------------------------------------------- -# If the CLASS_DIAGRAMS tag is set to YES, doxygen will generate a class diagram -# (in HTML and LaTeX) for classes with base or super classes. Setting the tag to -# NO turns the diagrams off. Note that this option also works with HAVE_DOT -# disabled, but it is recommended to install and use dot, since it yields more -# powerful graphs. -# The default value is: YES. - -CLASS_DIAGRAMS = YES - -# You can include diagrams made with dia in doxygen documentation. Doxygen will -# then run dia to produce the diagram and insert it in the documentation. The -# DIA_PATH tag allows you to specify the directory where the dia binary resides. -# If left empty dia is assumed to be found in the default search path. - -DIA_PATH = - # If set to YES the inheritance and collaboration graphs will hide inheritance # and usage relations if the target is undocumented or is not a class. # The default value is: YES. HIDE_UNDOC_RELATIONS = YES -# If you set the HAVE_DOT tag to YES then doxygen will assume the dot tool is +# If you set the HAVE_DOT tag to YES then Doxygen will assume the dot tool is # available from the path. This tool is part of Graphviz (see: -# http://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent +# https://www.graphviz.org/), a graph visualization toolkit from AT&T and Lucent # Bell Labs. The other options in this section have no effect if this option is # set to NO # The default value is: NO. -HAVE_DOT = NO +HAVE_DOT = YES -# The DOT_NUM_THREADS specifies the number of dot invocations doxygen is allowed -# to run in parallel. When set to 0 doxygen will base this on the number of +# The DOT_NUM_THREADS specifies the number of dot invocations Doxygen is allowed +# to run in parallel. When set to 0 Doxygen will base this on the number of # processors available in the system. You can set it explicitly to a value # larger than 0 to get control over the balance between CPU load and processing # speed. -# Minimum value: 0, maximum value: 32, default value: 0. +# Minimum value: 0, maximum value: 512, default value: 0. # This tag requires that the tag HAVE_DOT is set to YES. DOT_NUM_THREADS = 0 -# When you want a differently looking font in the dot files that doxygen -# generates you can specify the font name using DOT_FONTNAME. You need to make -# sure dot is able to find the font, which can be done by putting it in a -# standard location or by setting the DOTFONTPATH environment variable or by -# setting DOT_FONTPATH to the directory containing the font. -# The default value is: Helvetica. +# DOT_COMMON_ATTR is common attributes for nodes, edges and labels of +# subgraphs. When you want a differently looking font in the dot files that +# Doxygen generates you can specify fontname, fontcolor and fontsize attributes. +# For details please see Node, +# Edge and Graph Attributes specification You need to make sure dot is able +# to find the font, which can be done by putting it in a standard location or by +# setting the DOTFONTPATH environment variable or by setting DOT_FONTPATH to the +# directory containing the font. Default graphviz fontsize is 14. +# The default value is: fontname=Helvetica,fontsize=10. +# This tag requires that the tag HAVE_DOT is set to YES. + +DOT_COMMON_ATTR = "fontname=Helvetica,fontsize=10" + +# DOT_EDGE_ATTR is concatenated with DOT_COMMON_ATTR. For elegant style you can +# add 'arrowhead=open, arrowtail=open, arrowsize=0.5'. Complete documentation about +# arrows shapes. +# The default value is: labelfontname=Helvetica,labelfontsize=10. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTNAME = Helvetica +DOT_EDGE_ATTR = "labelfontname=Helvetica,labelfontsize=10" -# The DOT_FONTSIZE tag can be used to set the size (in points) of the font of -# dot graphs. -# Minimum value: 4, maximum value: 24, default value: 10. +# DOT_NODE_ATTR is concatenated with DOT_COMMON_ATTR. For view without boxes +# around nodes set 'shape=plain' or 'shape=plaintext' Shapes specification +# The default value is: shape=box,height=0.2,width=0.4. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_FONTSIZE = 10 +DOT_NODE_ATTR = "shape=box,height=0.2,width=0.4" -# By default doxygen will tell dot to use the default font as specified with -# DOT_FONTNAME. If you specify a different font using DOT_FONTNAME you can set -# the path where dot can find it using this tag. +# You can set the path where dot can find font specified with fontname in +# DOT_COMMON_ATTR and others dot attributes. # This tag requires that the tag HAVE_DOT is set to YES. DOT_FONTPATH = -# If the CLASS_GRAPH tag is set to YES then doxygen will generate a graph for -# each documented class showing the direct and indirect inheritance relations. -# Setting this tag to YES will force the CLASS_DIAGRAMS tag to NO. +# If the CLASS_GRAPH tag is set to YES or GRAPH or BUILTIN then Doxygen will +# generate a graph for each documented class showing the direct and indirect +# inheritance relations. In case the CLASS_GRAPH tag is set to YES or GRAPH and +# HAVE_DOT is enabled as well, then dot will be used to draw the graph. In case +# the CLASS_GRAPH tag is set to YES and HAVE_DOT is disabled or if the +# CLASS_GRAPH tag is set to BUILTIN, then the built-in generator will be used. +# If the CLASS_GRAPH tag is set to TEXT the direct and indirect inheritance +# relations will be shown as texts / links. Explicit enabling an inheritance +# graph or choosing a different representation for an inheritance graph of a +# specific class, can be accomplished by means of the command \inheritancegraph. +# Disabling an inheritance graph can be accomplished by means of the command +# \hideinheritancegraph. +# Possible values are: NO, YES, TEXT, GRAPH and BUILTIN. # The default value is: YES. -# This tag requires that the tag HAVE_DOT is set to YES. CLASS_GRAPH = YES -# If the COLLABORATION_GRAPH tag is set to YES then doxygen will generate a +# If the COLLABORATION_GRAPH tag is set to YES then Doxygen will generate a # graph for each documented class showing the direct and indirect implementation # dependencies (inheritance, containment, and class references variables) of the -# class with other documented classes. +# class with other documented classes. Explicit enabling a collaboration graph, +# when COLLABORATION_GRAPH is set to NO, can be accomplished by means of the +# command \collaborationgraph. Disabling a collaboration graph can be +# accomplished by means of the command \hidecollaborationgraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. COLLABORATION_GRAPH = YES -# If the GROUP_GRAPHS tag is set to YES then doxygen will generate a graph for -# groups, showing the direct groups dependencies. +# If the GROUP_GRAPHS tag is set to YES then Doxygen will generate a graph for +# groups, showing the direct groups dependencies. Explicit enabling a group +# dependency graph, when GROUP_GRAPHS is set to NO, can be accomplished by means +# of the command \groupgraph. Disabling a directory graph can be accomplished by +# means of the command \hidegroupgraph. See also the chapter Grouping in the +# manual. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GROUP_GRAPHS = YES -# If the UML_LOOK tag is set to YES, doxygen will generate inheritance and +# If the UML_LOOK tag is set to YES, Doxygen will generate inheritance and # collaboration diagrams in a style similar to the OMG's Unified Modeling # Language. # The default value is: NO. @@ -2443,10 +2757,19 @@ UML_LOOK = NO UML_LIMIT_NUM_FIELDS = 10 -# If the DOT_UML_DETAILS tag is set to NO, doxygen will show attributes and +# If the UML_LOOK tag is enabled, field labels are shown along the edge between +# two class nodes. If there are many fields and many nodes the graph may become +# too cluttered. The UML_MAX_EDGE_LABELS threshold limits the number of items to +# make the size more manageable. Set this to 0 for no limit. +# Minimum value: 0, maximum value: 100, default value: 10. +# This tag requires that the tag UML_LOOK is set to YES. + +UML_MAX_EDGE_LABELS = 10 + +# If the DOT_UML_DETAILS tag is set to NO, Doxygen will show attributes and # methods without types and arguments in the UML graphs. If the DOT_UML_DETAILS -# tag is set to YES, doxygen will add type and arguments for attributes and -# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, doxygen +# tag is set to YES, Doxygen will add type and arguments for attributes and +# methods in the UML graphs. If the DOT_UML_DETAILS tag is set to NONE, Doxygen # will not generate fields with class member information in the UML graphs. The # class diagrams will look similar to the default class diagrams but using UML # notation for the relationships. @@ -2458,8 +2781,8 @@ DOT_UML_DETAILS = NO # The DOT_WRAP_THRESHOLD tag can be used to set the maximum number of characters # to display on a single line. If the actual line length exceeds this threshold -# significantly it will wrapped across multiple lines. Some heuristics are apply -# to avoid ugly line breaks. +# significantly it will be wrapped across multiple lines. Some heuristics are +# applied to avoid ugly line breaks. # Minimum value: 0, maximum value: 1000, default value: 17. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2474,24 +2797,29 @@ DOT_WRAP_THRESHOLD = 17 TEMPLATE_RELATIONS = NO # If the INCLUDE_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are set to -# YES then doxygen will generate a graph for each documented file showing the +# YES then Doxygen will generate a graph for each documented file showing the # direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an include graph, when INCLUDE_GRAPH is is set to NO, +# can be accomplished by means of the command \includegraph. Disabling an +# include graph can be accomplished by means of the command \hideincludegraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. INCLUDE_GRAPH = YES # If the INCLUDED_BY_GRAPH, ENABLE_PREPROCESSING and SEARCH_INCLUDES tags are -# set to YES then doxygen will generate a graph for each documented file showing +# set to YES then Doxygen will generate a graph for each documented file showing # the direct and indirect include dependencies of the file with other documented -# files. +# files. Explicit enabling an included by graph, when INCLUDED_BY_GRAPH is set +# to NO, can be accomplished by means of the command \includedbygraph. Disabling +# an included by graph can be accomplished by means of the command +# \hideincludedbygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. INCLUDED_BY_GRAPH = YES -# If the CALL_GRAPH tag is set to YES then doxygen will generate a call +# If the CALL_GRAPH tag is set to YES then Doxygen will generate a call # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2501,9 +2829,9 @@ INCLUDED_BY_GRAPH = YES # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. -CALL_GRAPH = NO +CALL_GRAPH = YES -# If the CALLER_GRAPH tag is set to YES then doxygen will generate a caller +# If the CALLER_GRAPH tag is set to YES then Doxygen will generate a caller # dependency graph for every global function or class method. # # Note that enabling this option will significantly increase the time of a run. @@ -2515,44 +2843,59 @@ CALL_GRAPH = NO CALLER_GRAPH = NO -# If the GRAPHICAL_HIERARCHY tag is set to YES then doxygen will graphical +# If the GRAPHICAL_HIERARCHY tag is set to YES then Doxygen will graphical # hierarchy of all classes instead of a textual one. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GRAPHICAL_HIERARCHY = YES -# If the DIRECTORY_GRAPH tag is set to YES then doxygen will show the +# If the DIRECTORY_GRAPH tag is set to YES then Doxygen will show the # dependencies a directory has on other directories in a graphical way. The # dependency relations are determined by the #include relations between the -# files in the directories. +# files in the directories. Explicit enabling a directory graph, when +# DIRECTORY_GRAPH is set to NO, can be accomplished by means of the command +# \directorygraph. Disabling a directory graph can be accomplished by means of +# the command \hidedirectorygraph. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. DIRECTORY_GRAPH = YES +# The DIR_GRAPH_MAX_DEPTH tag can be used to limit the maximum number of levels +# of child directories generated in directory dependency graphs by dot. +# Minimum value: 1, maximum value: 25, default value: 1. +# This tag requires that the tag DIRECTORY_GRAPH is set to YES. + +DIR_GRAPH_MAX_DEPTH = 1 + # The DOT_IMAGE_FORMAT tag can be used to set the image format of the images # generated by dot. For an explanation of the image formats see the section # output formats in the documentation of the dot tool (Graphviz (see: -# http://www.graphviz.org/)). -# Note: If you choose svg you need to set HTML_FILE_EXTENSION to xhtml in order -# to make the SVG files visible in IE 9+ (other browsers do not have this -# requirement). +# https://www.graphviz.org/)). +# +# Note the formats svg:cairo and svg:cairo:cairo cannot be used in combination +# with INTERACTIVE_SVG (the INTERACTIVE_SVG will be set to NO). # Possible values are: png, jpg, gif, svg, png:gd, png:gd:gd, png:cairo, -# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus and -# png:gdiplus:gdiplus. +# png:cairo:gd, png:cairo:cairo, png:cairo:gdiplus, png:gdiplus, +# png:gdiplus:gdiplus, svg:cairo, svg:cairo:cairo, svg:svg, svg:svg:core, +# gif:cairo, gif:cairo:gd, gif:cairo:gdiplus, gif:gdiplus, gif:gdiplus:gdiplus, +# gif:gd, gif:gd:gd, jpg:cairo, jpg:cairo:gd, jpg:cairo:gdiplus, jpg:gd, +# jpg:gd:gd, jpg:gdiplus and jpg:gdiplus:gdiplus. # The default value is: png. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_IMAGE_FORMAT = png +DOT_IMAGE_FORMAT = svg -# If DOT_IMAGE_FORMAT is set to svg, then this option can be set to YES to -# enable generation of interactive SVG images that allow zooming and panning. +# If DOT_IMAGE_FORMAT is set to svg or svg:svg or svg:svg:core, then this option +# can be set to YES to enable generation of interactive SVG images that allow +# zooming and panning. # # Note that this requires a modern browser other than Internet Explorer. Tested # and working are Firefox, Chrome, Safari, and Opera. -# Note: For IE 9+ you need to set HTML_FILE_EXTENSION to xhtml in order to make -# the SVG files visible. Older versions of IE do not have SVG support. +# +# Note This option will be automatically disabled when DOT_IMAGE_FORMAT is set +# to svg:cairo or svg:cairo:cairo. # The default value is: NO. # This tag requires that the tag HAVE_DOT is set to YES. @@ -2571,11 +2914,12 @@ DOT_PATH = DOTFILE_DIRS = -# The MSCFILE_DIRS tag can be used to specify one or more directories that -# contain msc files that are included in the documentation (see the \mscfile -# command). +# You can include diagrams made with dia in Doxygen documentation. Doxygen will +# then run dia to produce the diagram and insert it in the documentation. The +# DIA_PATH tag allows you to specify the directory where the dia binary resides. +# If left empty dia is assumed to be found in the default search path. -MSCFILE_DIRS = +DIA_PATH = # The DIAFILE_DIRS tag can be used to specify one or more directories that # contain dia files that are included in the documentation (see the \diafile @@ -2583,35 +2927,41 @@ MSCFILE_DIRS = DIAFILE_DIRS = -# When using plantuml, the PLANTUML_JAR_PATH tag should be used to specify the -# path where java can find the plantuml.jar file. If left blank, it is assumed -# PlantUML is not used or called during a preprocessing step. Doxygen will -# generate a warning when it encounters a \startuml command in this case and -# will not generate output for the diagram. +# When using PlantUML, the PLANTUML_JAR_PATH tag should be used to specify the +# path where java can find the plantuml.jar file or to the filename of jar file +# to be used. If left blank, it is assumed PlantUML is not used or called during +# a preprocessing step. Doxygen will generate a warning when it encounters a +# \startuml command in this case and will not generate output for the diagram. PLANTUML_JAR_PATH = -# When using plantuml, the PLANTUML_CFG_FILE tag can be used to specify a -# configuration file for plantuml. +# When using PlantUML, the PLANTUML_CFG_FILE tag can be used to specify a +# configuration file for PlantUML. PLANTUML_CFG_FILE = -# When using plantuml, the specified paths are searched for files specified by -# the !include statement in a plantuml block. +# When using PlantUML, the specified paths are searched for files specified by +# the !include statement in a PlantUML block. PLANTUML_INCLUDE_PATH = +# The PLANTUMLFILE_DIRS tag can be used to specify one or more directories that +# contain PlantUml files that are included in the documentation (see the +# \plantumlfile command). + +PLANTUMLFILE_DIRS = + # The DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of nodes # that will be shown in the graph. If the number of nodes in a graph becomes -# larger than this value, doxygen will truncate the graph, which is visualized -# by representing a node as a red box. Note that doxygen if the number of direct +# larger than this value, Doxygen will truncate the graph, which is visualized +# by representing a node as a red box. Note that if the number of direct # children of the root node in a graph is already larger than # DOT_GRAPH_MAX_NODES then the graph will not be shown at all. Also note that # the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH. # Minimum value: 0, maximum value: 10000, default value: 50. # This tag requires that the tag HAVE_DOT is set to YES. -DOT_GRAPH_MAX_NODES = 50 +DOT_GRAPH_MAX_NODES = 10000 # The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the graphs # generated by dot. A depth value of 3 means that only nodes reachable from the @@ -2625,18 +2975,6 @@ DOT_GRAPH_MAX_NODES = 50 MAX_DOT_GRAPH_DEPTH = 0 -# Set the DOT_TRANSPARENT tag to YES to generate images with a transparent -# background. This is disabled by default, because dot on Windows does not seem -# to support this out of the box. -# -# Warning: Depending on the platform used, enabling this option may lead to -# badly anti-aliased labels on the edges of a graph (i.e. they become hard to -# read). -# The default value is: NO. -# This tag requires that the tag HAVE_DOT is set to YES. - -DOT_TRANSPARENT = NO - # Set the DOT_MULTI_TARGETS tag to YES to allow dot to generate multiple output # files in one run (i.e. multiple -o and -T options on the command line). This # makes dot run faster, but since only newer versions of dot (>1.8.10) support @@ -2646,19 +2984,37 @@ DOT_TRANSPARENT = NO DOT_MULTI_TARGETS = NO -# If the GENERATE_LEGEND tag is set to YES doxygen will generate a legend page +# If the GENERATE_LEGEND tag is set to YES Doxygen will generate a legend page # explaining the meaning of the various boxes and arrows in the dot generated # graphs. +# Note: This tag requires that UML_LOOK isn't set, i.e. the Doxygen internal +# graphical representation for inheritance and collaboration diagrams is used. # The default value is: YES. # This tag requires that the tag HAVE_DOT is set to YES. GENERATE_LEGEND = YES -# If the DOT_CLEANUP tag is set to YES, doxygen will remove the intermediate +# If the DOT_CLEANUP tag is set to YES, Doxygen will remove the intermediate # files that are used to generate the various graphs. # -# Note: This setting is not only used for dot files but also for msc and -# plantuml temporary files. +# Note: This setting is not only used for dot files but also for msc temporary +# files. # The default value is: YES. DOT_CLEANUP = YES + +# You can define message sequence charts within Doxygen comments using the \msc +# command. If the MSCGEN_TOOL tag is left empty (the default), then Doxygen will +# use a built-in version of mscgen tool to produce the charts. Alternatively, +# the MSCGEN_TOOL tag can also specify the name an external tool. For instance, +# specifying prog as the value, Doxygen will call the tool as prog -T +# -o . The external tool should support +# output file formats "png", "eps", "svg", and "ismap". + +MSCGEN_TOOL = + +# The MSCFILE_DIRS tag can be used to specify one or more directories that +# contain msc files that are included in the documentation (see the \mscfile +# command). + +MSCFILE_DIRS = diff --git a/README.md b/README.md index d55e5e4..00d9e57 100644 --- a/README.md +++ b/README.md @@ -10,7 +10,7 @@ The PCF8563 is a CMOS1 Real-Time Clock (RTC) and calendar optimized for low power consumption. A programmable clock output, interrupt output, and voltage-low detector are also provided. All addresses and data are transferred serially via a two-line bidirectional I2C-bus. Maximum bus speed is 400 kbit/s. The register address is incremented automatically after each written or read data byte. -LibDriver PCF8563 is a full-featured driver of PCF8563 launched by LibDriver.It provides time reading, alarm clock triggering, timer interrupt triggering, square wave output and other functions. LibDriver is MISRA compliant. +LibDriver PCF8563 is a full-featured driver for PCF8563, launched by LibDriver.It provides time reading, alarm clock triggering, timer interrupt triggering, square wave output and additional features. LibDriver is MISRA compliant. ### Table of Contents diff --git a/doc/html/Doxygen.png b/doc/html/Doxygen.png index 94a300ab28944b01433531cdd823a7508963ce94..786d7ac74881bd34b9f9c5a6434a19fe94e04375 100644 GIT binary patch literal 6015 zcmbVP2UJtr(mqIUVxfv?2%r>`kN}|ukRl+2j#R-ALN6f+9chAqil|fp=^dnq(m@3Q z>AfQzK}3q6!Ug3IUa#xDf8AHs%UUPd=j?B0zL{_KtdmGxZ8c_wGYkL#Fl(r*=#zit zjxIVH0H8qce^>+n1{nusWnH4ani5DuRT&AFMj{~yC>#LPBcB*}nHYF+$bXw&dwn$` z=w4ZZb1(qrTjMo|&wsxS&1nenz!S3vZ#~uj9Yw&$<7IceZ9pSEM;M zMzOg&{-{szr9BX&Xa$v(9hl+%5t=|5BsgvS^jOol^X_4KM}j&IP?rLv=t9T+0siv< zf`B`v>VFnUWE@~S+agpg4wa_>hIKb%d;KT!QhKKhUQ<7|rT_}7D^wl`>27KRCTV;e z3_#flK=AEJdLl)c6L2Gzx0jXTMk(8i$4Zt+;C^mIXXt?;kOBevvil!e08>oBDaaCI z<18ceH1v^B(!8w(yQZp80iu#?CdFlWz6nE1M-&T1JT{VwPV0$b7@I2AqSvYCoF(?A zrRVm=^Q?4wJR`ajo;|Co+*is!^xb92*!(KycW$d)EOhw0+SX<+QVf;D3Y zh1uva`>8+pY@c&0N}o^9`F1zJm?*iEB91gs8v&9-W0 zmN5HtF+QJ}xXd%S6-4+np*TBDZ-3s&)l%hyQpUp{=LW%H?Mel@T^!G_Doqv-rNX+q zPcf<>^x_jCrw%WkKE#b%ZTgf@1nKQlByK;woRdI5*8469t4pCdm4pB8HKX(vo<3G@ z($L>aJfu&n-0M}m%NFgd*O4dVY9pQuOL*@uZ%`~S8+@$e6&1RVT3M7*q>R=MPpPvR z2BN!V9}({JD%|ibmC#}n!i1Sxmns<}Yp5tOq{JiMgs~69;?MNF7N}~HD1!4LU*`h}^^^J`h9JKOGK=Pm zf`l_QK|8#X4|#2v_Sk&xS_?AcGG+4V9d8kIVd9)oSC%t{R+LEeNztxKoqcC^KocRU zS6~_6S3rMoK6wRXSzppRU(qDR$-&rss?0{~&eK;6<@&`mPH!g4p=-j(2-NH8Svo12 z`%x85HFL-C74H61N>dC|S1hR4ffDM`$hte+O;HQ-vmd-&>IJ6R&PPNy=gktgsCV@b z5ZO7{Pyet3pN<4f# z5u4&z-(20f8y8uiQQR&Qb1f!3_e^eZuBH~Z)<$A~w_F!{(s1H+v5SesuEB1vB&$kA z$XSR!L>S@=(bK%B`EW_Qv(aJK0Xq0*&@uOVRi>$r>5_?r3A1TMv2yWtvH8=q3C?l; zG3W9R&-QM7v`@yEJNZp&cSGModrRJ}8~ZW(HQvnmEfrVv5)6I`6t-lJxt}t;6j`?|sL< za7c<&k*a*F!o{@g=kqy zP)q%tFOiT)o_iIM=I6YGEJZ9?XW|vLA~ePlMB!~-Jzu5yBJW31M^X~e%g`i0OzKGe zJ)gE^k>2HQg-4+}chH48zHN*P!y*AG?%27{JVU@fvk$CZOR1NIX zOM9cQ58|>|sm1R%xjU4RtdNgTl6C0TSPh$Z1hGA{J>8zJl#Z0q8hDKwdja$mY}L}a z+`DHSfFTzzxiaccJ)j3m&`9H?z6~Pw_RO9!Fm%Lb3?No zSH8f7meRFG;r-Qx+(k61MZ2XAc^Y|FlEryzjF7JK!bYQgbENMnWO8hhp{ij_K5##5 z;6u)^tf1_oEKR3U$3#a|hh)ObBK4;$r8_0gg##rMx?ddgZY;-LPpvys*&iVMQ zk)e^-mAjRVS(nvhC*DmYzpVNZa0vg7jcXf@=15CVd8@FswfHFJbRK_RYKpcrY6|{x z;p^jSu~8X58NVKyG*n>E#?)hIX-UlTyWaD4v%YgHsy!_un%W6wwLEpnf%t=rnzn+x zoY9)9PtQ7+zBY2*yjbFGA$@ard9}tVcoh1jcXfk15rtpyo&WNhJA|9X&34M)Q)GE$ z@sp9)rWeCT;S{7H?`G+Hwe9oCG*4)vS@xJbW}<5Y{Sp-pcJtQKrlS@W(iH@GhPj{m z*&l9>CC-d3sS(db$;Hd1`s;62to9n|bf*S*Idg-#(oWQJC6G+}m1k`xd&r-;y7x zM1G~D$E%wX0RYN(bWwQcD0l(@b)$o!3CRSlC4+TyfnsdjtZ`6p7d#nFeg#$V#$&Kf zI1Et+WPgU7-2aYQ!{0v4z0 zNv6qnlnq`+nSjHP+z5tlZq9!xrTZ6U5CRE>!$E?^4z4zCUPPgPu)wKcNH`SuNHz#u z6oL>pL?C3~5;6#B5m6}_QPDr4Xg3=NTc5v!ii?s({wFB8X>2eg%zp&iU}bFG2rd|M z#ttqRI~)w}Y6k}WuA_{yo3k5%9GJ{b>?aE}T1LZ_NW!>caT+QpFga9D4PjBsXK3%{Xe<+#TUa?I50(-k-YceI$loenR#j5gc}&*Y!~p_~=s&VlF4 z=VWEmEmD%;)MHY*T3<_0G0!W(X?u*Gs(r zF6l#ER#E?kS>ljgcdW%Vb?`1d?0m!9`X)T=u*5Q{Nz7A2I zgIt_=7eJwC#c$xx{7Musc7J)iFE%jbJjzs~Y&_SWRn1#!=1`p4FkzI^o8#3(&n4zH zc72*pbn)mZP7V7Cp|y_M;FBmYKDUP&t8>Zca5q4Ie@?Q0&X+h58OA8ec=@p|{3LiY$fQ5jPuQL8O0 zYNnsjtBj&u6L0&$Frl;kc-?V{#e-DVvzp$oPO@ZM`lt!C?!GrsX}odznetAy)2`KG znLL%+M3_s{w+n1cih)2y?9j=z(#6Z4DVjblCM_5V(XO(0Ts9A?tYkBvY|q2C4Yk^s z^8`7c__X9hOIfgQ!mx1}tu0f=jkc#7)le14|HHctn)YoqfODj0T)i3oX&nMg6Iid&6>zJh-IU*%87p9c} zB!;Y2GrcN0IK0f>)F$kdXPEM4=Yeihw2AP88w$dH;AG|tz;0-7p2aZsY!S}{#k{!% zvzC>ikCEZmLZj3J1@(rzUwzIVCab=9`#LlRYZ_GksDshWVpuCswGD%%n|q-}>j|1`P^Oa<8@9dEYTFiA4rcB;o0j`|HHJN3_S3YS19F+F@ zd#y={YfDls9OewCo%+%0#Ehm2#6%-W>(_h?#?peH zyxz2LZO?F)j1L>*esnxcLN8}S^tPH=MrhOUxfbQ~`0kwW zQu?vd`~0R>Uq-^B<27xMYgKjZrC#Y>Y4p`4l)RGrIX?u)4}(!$VoOZm?$Su)sZ=hR>d!RMyiTthnYdGpEC=eFgGw zyd(6B1?Za(?B8*6D^X|b=Vvs!l!X=9Xwo%@#cqJDys8X4<5uT&Yv9e+o?@_dTBm@p zSA_37)YqrG5^~(xJ8rpWU(C&WecJE=!iSfUt3!LiK54QxBu@i>zby#HHc+)c_T!jH z=!mSSX#a6jRkRrT+4{Y!+*(Fe9}~8&hZ`#QC0{wzudImcN8Iv~%DTB-9gvv$npP) zZLA(e6@VXT0hJ2YV2i{AN0L?oKOmPH3??94O{0;ZLTKf~POv2iL_!d21hf)kE7;WU z(Eb<_V}M?WiBM@u3pIg+pf~b^QhLEo2;b$i_9{wRFuOZ9-oBZ$`|i%{zHiGs$(x(Z ze$3f9JG1AUIWw0;B9TZW5{X12kw_#Gi9{liNF>_lkfCm4V`l)z1M`6sfMb9U1G9i5 zfZf2P`#lFd1w4&byN5vfz8EeA82bU>bHG{dw*WZ2!JRT?`~}zoJcL%ywjga32Co2P z4+YKyE&?t9j%uNn$AI4h>(Odg3-@o#;1p22?Mr~`-0;!`dx1NEm1y9WXS1O0mhyU{2Dm1(|TpH9jp~wXvpr!L+XcV;AHf zKlo%HXJ?JN8TbRR39VjkSm#XObl^PT8^Fi=yz=L6SlZjD-UhU*0Anu&*7adZz7G5n zSlhVKWf?MGVifo;a84grWajJF(CUq-atO4i0Ap_gR#cqzRzCg~4gas!Wcj~Lp8a%WJhXWA4cz5#jp#7_4*7pTzUPXVL2Uw#1050AsHJep_-zX3<=TRxd`aHw0rZcNW@V z!dQzD8&$_q0Nf7D5sr-kSD@9tNOiS?R^z~zfVYMF zuW&w1RKgWtY!*;kC>-7DhMnPV{3*10B=4zyX5^Neu}#9`B4G+Jb~f-c;pi*CVzhcE znzUV@)xFMF@Np7wO-w05dq8IEf6P;!MH?4I_iDT2ht4DRaU;ea6HAij3MhoQN;tX> zt+qD4_n;|;%w@oTJ(6UW($%pf4Cw*a2@%I#xrck8qt!${apUJZ82gbJPuNTW#(og^ zws7>PX!T~0RKvq6z&DI$Ui8u!QqF96-B(?9LNA%HxAk=gV|@X!ooKbQ;k6R|-P4Cw zZ)5Blp(kkImPYrTMpFeW5z1HRLib1JHTSaIy>(Uiu9Y#_JPzaTw;8R*YFzyr=Y$>I zQ+{IZ7ijg@TC(&|e+V*mju6h>=Q0n5l@a%0U5~MEU~E;iwm_>%=jHoY9Qv$Hz5!Pbh!9sQ{gj`6XIq*41exy|VUoKQPg0Y_}5oL#qarH7kMEtr6kn(FLLWJm)!UvGPSMvOD zF`4AcvM!t0ucWR5q|D_`a%dtVIbu~Nsc-m_rZM}Xt^#_!!6~GvykSM^0V5Ui`kr&9 z%k*wUT?HH=l>fV_00W_EY)F35I#YlzK8{P0eLo-#!Hts*>MB6WjcH?5OMCPee(>RY z&b=Yo9(5HUb-|A|6<|O}V||r3?^E1l$RpHMz)M28$2 zAT8$^mK8766vL0?^_KO3`9c(UM~FCe6(BiWr-TU6F)M|kWURtEI#nnSiUQPAK#{}$ z56_W#7#rjfc7n0DmAw6BfjHbeh>s^iL~jy~meNh?%+q#DHivBN10{{W$`eWLMOs}G zlz!7>PB;_vGEe#WB{N6;GV11UV_iGqeq}+n@ydB(aTiZLQWb*sK!Pt2vNyfj3(f9-@K&#i>#v4ACVr)>l#y}}n*RK`kKPKI($|!^` z&{*Zx{q}N5p3Z0Npthq4Wrf>B%E!&_<%>d?0*Z0|dg18Y+)RtSrmA&}{R;2{p_*;6 z4U9PJgpIwwWTD=eTPrsF3-ydW!#P(zQ+l6UH6LtxPAAqf)g{jQ@sXu^{LYQ5!;7(5 z$l}jJy&~=_$?w^g@95aVHU*^JQVzD=Ql?1z1@%qZG0V>ZzGK!DY0tPy(yod7 zbCB(tI7QkwR3z=3`@YyYcRFeB=>15$rw^F){{se0`VSfdCjAeYL?V$$Boc{4B9TZW f5{X2j3xNLtYfLWC+4bhf00000NkvXXu0mjfov-KK diff --git a/doc/html/annotated.html b/doc/html/annotated.html index d3cac14..6923a7b 100644 --- a/doc/html/annotated.html +++ b/doc/html/annotated.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Data Structures + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Data Structures
+
Data Structures
Here are the data structures with brief descriptions:
- + - +
 Cpcf8563_alarm_param_sPcf8563 alarm param structure definition
 Cpcf8563_handle_sPcf8563 handle structure definition
 Cpcf8563_handle_sPcf8563 handle structure definition
 Cpcf8563_info_sPcf8563 information structure definition
 Cpcf8563_time_sPcf8563 time structure definition
 Cpcf8563_time_sPcf8563 time structure definition
+
diff --git a/doc/html/bc_s.png b/doc/html/bc_s.png deleted file mode 100644 index 224b29aa9847d5a4b3902efd602b7ddf7d33e6c2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/bdwn.png b/doc/html/bdwn.png deleted file mode 100644 index 940a0b950443a0bb1b216ac03c45b8a16c955452..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 147 zcmeAS@N?(olHy`uVBq!ia0vp^>_E)H!3HEvS)PKZC{Gv1kP61Pb5HX&C2wk~_T - + - - + + LibDriver PCF8563: Data Structure Index + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
Data Structure Index
+
Data Structure Index
+
diff --git a/doc/html/clipboard.js b/doc/html/clipboard.js new file mode 100644 index 0000000..9da9f3c --- /dev/null +++ b/doc/html/clipboard.js @@ -0,0 +1,61 @@ +/** + +The code below is based on the Doxygen Awesome project, see +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +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. + +*/ + +let clipboard_title = "Copy to clipboard" +let clipboard_icon = `` +let clipboard_successIcon = `` +let clipboard_successDuration = 1000 + +$(function() { + if(navigator.clipboard) { + const fragments = document.getElementsByClassName("fragment") + for(const fragment of fragments) { + const clipboard_div = document.createElement("div") + clipboard_div.classList.add("clipboard") + clipboard_div.innerHTML = clipboard_icon + clipboard_div.title = clipboard_title + $(clipboard_div).click(function() { + const content = this.parentNode.cloneNode(true) + // filter out line number and folded fragments from file listings + content.querySelectorAll(".lineno, .ttc, .foldclosed").forEach((node) => { node.remove() }) + let text = content.textContent + // remove trailing newlines and trailing spaces from empty lines + text = text.replace(/^\s*\n/gm,'\n').replace(/\n*$/,'') + navigator.clipboard.writeText(text); + this.classList.add("success") + this.innerHTML = clipboard_successIcon + window.setTimeout(() => { // switch back to normal icon after timeout + this.classList.remove("success") + this.innerHTML = clipboard_icon + }, clipboard_successDuration); + }) + fragment.insertBefore(clipboard_div, fragment.firstChild) + } + } +}) diff --git a/doc/html/closed.png b/doc/html/closed.png deleted file mode 100644 index 98cc2c909da37a6df914fbf67780eebd99c597f5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/cookie.js b/doc/html/cookie.js new file mode 100644 index 0000000..53ad21d --- /dev/null +++ b/doc/html/cookie.js @@ -0,0 +1,58 @@ +/*! + Cookie helper functions + Copyright (c) 2023 Dimitri van Heesch + Released under MIT license. +*/ +let Cookie = { + cookie_namespace: 'doxygen_', + + readSetting(cookie,defVal) { + if (window.chrome) { + const val = localStorage.getItem(this.cookie_namespace+cookie) || + sessionStorage.getItem(this.cookie_namespace+cookie); + if (val) return val; + } else { + let myCookie = this.cookie_namespace+cookie+"="; + if (document.cookie) { + const index = document.cookie.indexOf(myCookie); + if (index != -1) { + const valStart = index + myCookie.length; + let valEnd = document.cookie.indexOf(";", valStart); + if (valEnd == -1) { + valEnd = document.cookie.length; + } + return document.cookie.substring(valStart, valEnd); + } + } + } + return defVal; + }, + + writeSetting(cookie,val,days=10*365) { // default days='forever', 0=session cookie, -1=delete + if (window.chrome) { + if (days==0) { + sessionStorage.setItem(this.cookie_namespace+cookie,val); + } else { + localStorage.setItem(this.cookie_namespace+cookie,val); + } + } else { + let date = new Date(); + date.setTime(date.getTime()+(days*24*60*60*1000)); + const expiration = days!=0 ? "expires="+date.toGMTString()+";" : ""; + document.cookie = this.cookie_namespace + cookie + "=" + + val + "; SameSite=Lax;" + expiration + "path=/"; + } + }, + + eraseSetting(cookie) { + if (window.chrome) { + if (localStorage.getItem(this.cookie_namespace+cookie)) { + localStorage.removeItem(this.cookie_namespace+cookie); + } else if (sessionStorage.getItem(this.cookie_namespace+cookie)) { + sessionStorage.removeItem(this.cookie_namespace+cookie); + } + } else { + this.writeSetting(cookie,'',-1); + } + }, +} diff --git a/doc/html/darkmode_toggle.js b/doc/html/darkmode_toggle.js new file mode 100644 index 0000000..9c1ca07 --- /dev/null +++ b/doc/html/darkmode_toggle.js @@ -0,0 +1,228 @@ +/** + +The code below is based on the Doxygen Awesome project with some minor modifications +https://github.com/jothepro/doxygen-awesome-css + +MIT License + +Copyright (c) 2021 - 2022 jothepro + +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. + +*/ + +class DarkModeToggle extends HTMLElement { + + static darkmode_cookie_name = ''+'prefers-dark'; + static lightmode_cookie_name = ''+'prefers-light'; + + static icon = ''; + static title = "Toggle Light/Dark Mode" + + static prefersLightModeInDarkModeKey = "prefers-light-mode-in-dark-mode" + static prefersDarkModeInLightModeKey = "prefers-dark-mode-in-light-mode" + + static _staticConstructor = function() { + DarkModeToggle.enableDarkMode(DarkModeToggle.userPreference) + // Update the color scheme when the browsers preference changes + // without user interaction on the website. + window.matchMedia('(prefers-color-scheme: dark)').addEventListener('change', event => { + DarkModeToggle.onSystemPreferenceChanged() + }) + // Update the color scheme when the tab is made visible again. + // It is possible that the appearance was changed in another tab + // while this tab was in the background. + document.addEventListener("visibilitychange", visibilityState => { + if (document.visibilityState === 'visible') { + DarkModeToggle.onSystemPreferenceChanged() + } + }); + }() + + static init() { + $(function() { + $(document).ready(function() { + const toggleButton = document.createElement('dark-mode-toggle') + toggleButton.title = DarkModeToggle.title + toggleButton.innerHTML = DarkModeToggle.icon + toggleButton.tabIndex = 0; + + function addButton() { + const titleArea = document.getElementById("titlearea"); + const searchBox = document.getElementById("MSearchBox"); + const mainMenu = document.getElementById("main-menu"); + const navRow1 = document.getElementById("navrow1"); + let mainMenuVisible = false; + if (mainMenu) { + const menuStyle = window.getComputedStyle(mainMenu); + mainMenuVisible = menuStyle.display!=='none' + } + const searchBoxPos1 = document.getElementById("searchBoxPos1"); + const buttonLi = document.getElementById('toggle-dark-mode'); + if (buttonLi) { + buttonLi.parentNode.removeChild(buttonLi); + } + if (searchBox) { // (1) search box visible + searchBox.parentNode.appendChild(toggleButton) + } else if (navRow1) { // (2) no search box, static menu bar + const li = document.createElement('li'); + li.id = 'toggle-dark-mode'; + li.style = 'float: right;' + li.appendChild(toggleButton); + toggleButton.style = 'width: 24px; height: 25px; padding-top: 11px; float: right;'; + const row = document.querySelector('#navrow1 > ul:first-of-type'); + row.appendChild(li) + } else if (mainMenu && mainMenuVisible) { // (3) no search box + dynamic menu bar expanded + const li = document.createElement('li'); + li.id = 'toggle-dark-mode'; + li.style = 'float: right;' + li.appendChild(toggleButton); + toggleButton.style = 'width: 14px; height: 36px; padding-top: 10px; float: right;'; + mainMenu.appendChild(li) + } else if (searchBoxPos1) { // (4) no search box + dynamic menu bar collapsed + toggleButton.style = 'width: 24px; height: 36px; padding-top: 10px; float: right;'; + searchBoxPos1.style = 'top: 0px;' + searchBoxPos1.appendChild(toggleButton); + } else if (titleArea) { // (5) no search box and no navigation tabs + toggleButton.style = 'width: 24px; height: 24px; position: absolute; right: 0px; top: 34px;'; + titleArea.append(toggleButton); + } + } + + $(document).ready(() => addButton()); + $(window).resize(() => addButton()); + let inFocus = false; + $(document).focusin(() => inFocus = true); + $(document).focusout(() => inFocus = false); + $(document).keyup(function(e) { + if (e.keyCode==27 && !inFocus) { // escape key maps to keycode `27` + e.stopPropagation(); + DarkModeToggle.userPreference = !DarkModeToggle.userPreference + } + }) + DarkModeToggle.setDarkModeVisibility(DarkModeToggle.darkModeEnabled) + }) + }) + } + + constructor() { + super(); + this.onclick=this.toggleDarkMode + this.onkeypress=function(e){if (e.keyCode==13) { this.toggleDarkMode(); }}; + } + + /** + * @returns `true` for dark-mode, `false` for light-mode system preference + */ + static get systemPreference() { + return window.matchMedia('(prefers-color-scheme: dark)').matches + } + + static get prefersDarkModeInLightMode() { + return Cookie.readSetting(DarkModeToggle.darkmode_cookie_name,'0')=='1'; + } + + static set prefersDarkModeInLightMode(preference) { + if (preference) { + Cookie.writeSetting(DarkModeToggle.darkmode_cookie_name,'1'); + } else { + Cookie.eraseSetting(DarkModeToggle.darkmode_cookie_name); + } + } + + static get prefersLightModeInDarkMode() { + return Cookie.readSetting(DarkModeToggle.lightmode_cookie_name,'0')=='1' + } + + static set prefersLightModeInDarkMode(preference) { + if (preference) { + Cookie.writeSetting(DarkModeToggle.lightmode_cookie_name,'1'); + } else { + Cookie.eraseSetting(DarkModeToggle.lightmode_cookie_name); + } + } + + /** + * @returns `true` for dark-mode, `false` for light-mode user preference + */ + static get userPreference() { + return (!DarkModeToggle.systemPreference && DarkModeToggle.prefersDarkModeInLightMode) || + (DarkModeToggle.systemPreference && !DarkModeToggle.prefersLightModeInDarkMode) + } + + static set userPreference(userPreference) { + DarkModeToggle.darkModeEnabled = userPreference + if (!userPreference) { + if (DarkModeToggle.systemPreference) { + DarkModeToggle.prefersLightModeInDarkMode = true + } else { + DarkModeToggle.prefersDarkModeInLightMode = false + } + } else { + if (!DarkModeToggle.systemPreference) { + DarkModeToggle.prefersDarkModeInLightMode = true + } else { + DarkModeToggle.prefersLightModeInDarkMode = false + } + } + DarkModeToggle.onUserPreferenceChanged() + } + + static setDarkModeVisibility(enable) { + let darkModeStyle, lightModeStyle; + if(enable) { + darkModeStyle = 'inline-block'; + lightModeStyle = 'none' + } else { + darkModeStyle = 'none'; + lightModeStyle = 'inline-block' + } + document.querySelectorAll('.dark-mode-visible' ).forEach(el => el.style.display = darkModeStyle); + document.querySelectorAll('.light-mode-visible').forEach(el => el.style.display = lightModeStyle); + } + static enableDarkMode(enable) { + if(enable) { + DarkModeToggle.darkModeEnabled = true + document.documentElement.classList.add("dark-mode") + document.documentElement.classList.remove("light-mode") + } else { + DarkModeToggle.darkModeEnabled = false + document.documentElement.classList.remove("dark-mode") + document.documentElement.classList.add("light-mode") + } + DarkModeToggle.setDarkModeVisibility(enable) + } + + static onSystemPreferenceChanged() { + DarkModeToggle.darkModeEnabled = DarkModeToggle.userPreference + DarkModeToggle.enableDarkMode(DarkModeToggle.darkModeEnabled) + } + + static onUserPreferenceChanged() { + DarkModeToggle.enableDarkMode(DarkModeToggle.darkModeEnabled) + } + + toggleDarkMode() { + DarkModeToggle.userPreference = !DarkModeToggle.userPreference + } +} + +customElements.define("dark-mode-toggle", DarkModeToggle); + +DarkModeToggle.init(); diff --git a/doc/html/dir_000001_000002.html b/doc/html/dir_000001_000002.html new file mode 100644 index 0000000..809023e --- /dev/null +++ b/doc/html/dir_000001_000002.html @@ -0,0 +1,112 @@ + + + + + + + +LibDriver PCF8563: example -> interface Relation + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
LibDriver PCF8563 +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ + +
+ +
+ + + + diff --git a/doc/html/dir_000002_000004.html b/doc/html/dir_000002_000004.html new file mode 100644 index 0000000..41fa5d2 --- /dev/null +++ b/doc/html/dir_000002_000004.html @@ -0,0 +1,112 @@ + + + + + + + +LibDriver PCF8563: interface -> src Relation + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
LibDriver PCF8563 +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+

interface → src Relation

File in interfaceIncludes file in src
driver_pcf8563_interface.hdriver_pcf8563.h
+
+ +
+ + + + diff --git a/doc/html/dir_000005_000002.html b/doc/html/dir_000005_000002.html new file mode 100644 index 0000000..5f3f180 --- /dev/null +++ b/doc/html/dir_000005_000002.html @@ -0,0 +1,112 @@ + + + + + + + +LibDriver PCF8563: test -> interface Relation + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
LibDriver PCF8563 +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+ + +
+ + + + diff --git a/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37.html b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37.html index 78c2df0..3104b72 100644 --- a/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37.html +++ b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: doc/mainpage Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
mainpage Directory Reference
+
mainpage Directory Reference
+
+Directory dependency graph for mainpage:
+
+
+
- - - +

+

Files

file  mainpage.h [code]
 
 
mainpage.h
+ +
diff --git a/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.md5 b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.md5 new file mode 100644 index 0000000..6fdb029 --- /dev/null +++ b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.md5 @@ -0,0 +1 @@ +9a2e53198467ff596c9c299cce3cdb89 \ No newline at end of file diff --git a/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.svg b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.svg new file mode 100644 index 0000000..aec367e --- /dev/null +++ b/doc/html/dir_11ec664f88f5f079ad4de1adb8458c37_dep.svg @@ -0,0 +1,29 @@ + + + + + + +doc/mainpage + +clusterdir_e68e8157741866f444e17edd764ebbae + + +doc + + + + + +dir_11ec664f88f5f079ad4de1adb8458c37 + + +mainpage + + + + + diff --git a/doc/html/dir_13e138d54eb8818da29c3992edef070a.html b/doc/html/dir_13e138d54eb8818da29c3992edef070a.html index 5d9f069..665b0e4 100644 --- a/doc/html/dir_13e138d54eb8818da29c3992edef070a.html +++ b/doc/html/dir_13e138d54eb8818da29c3992edef070a.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
test Directory Reference
+
test Directory Reference
+
+Directory dependency graph for test:
+
+
+
- - + - - + - - + - - + - - + - - + - - + - - + -

+

Files

file  driver_pcf8563_alarm_test.c [code]
 
driver_pcf8563_alarm_test.c
 driver pcf8563 alarm test source file
 
file  driver_pcf8563_alarm_test.h [code]
 
driver_pcf8563_alarm_test.h
 driver pcf8563 alarm test header file
 
file  driver_pcf8563_output_test.c [code]
 
driver_pcf8563_output_test.c
 driver pcf8563 output test source file
 
file  driver_pcf8563_output_test.h [code]
 
driver_pcf8563_output_test.h
 driver pcf8563 output test header file
 
file  driver_pcf8563_register_test.c [code]
 
driver_pcf8563_register_test.c
 driver pcf8563 register test source file
 
file  driver_pcf8563_register_test.h [code]
 
driver_pcf8563_register_test.h
 driver pcf8563 register test header file
 
file  driver_pcf8563_timer_test.c [code]
 
driver_pcf8563_timer_test.c
 driver pcf8563 timer test source file
 
file  driver_pcf8563_timer_test.h [code]
 
driver_pcf8563_timer_test.h
 driver pcf8563 timer test header file
 
+ +
diff --git a/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 b/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 new file mode 100644 index 0000000..7fbf6e9 --- /dev/null +++ b/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.md5 @@ -0,0 +1 @@ +5098d6f7c7b39f9e72f7b78557e27a3e \ No newline at end of file diff --git a/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.svg b/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.svg new file mode 100644 index 0000000..a11bcef --- /dev/null +++ b/doc/html/dir_13e138d54eb8818da29c3992edef070a_dep.svg @@ -0,0 +1,43 @@ + + + + + + +test + + +dir_13e138d54eb8818da29c3992edef070a + + +test + + + + + +dir_b31d54d5631803016a26f28213a41162 + + +interface + + + + + +dir_13e138d54eb8818da29c3992edef070a->dir_b31d54d5631803016a26f28213a41162 + + + + + + +4 + + + + + diff --git a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html index f84b5ee..bccee09 100644 --- a/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html +++ b/doc/html/dir_68267d1309a1af8e8297ef4c3efbcdba.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: src Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
src Directory Reference
+
src Directory Reference
- - + - - + -

+

Files

file  driver_pcf8563.c [code]
 
driver_pcf8563.c
 driver pcf8563 source file
 
file  driver_pcf8563.h [code]
 
driver_pcf8563.h
 driver pcf8563 header file
 
+ +
diff --git a/doc/html/dir_b31d54d5631803016a26f28213a41162.html b/doc/html/dir_b31d54d5631803016a26f28213a41162.html index 97c36fa..13cdea4 100644 --- a/doc/html/dir_b31d54d5631803016a26f28213a41162.html +++ b/doc/html/dir_b31d54d5631803016a26f28213a41162.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: interface Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
interface Directory Reference
+
interface Directory Reference
+
+Directory dependency graph for interface:
+
+
+
- - + - - + -

+

Files

file  driver_pcf8563_interface.h [code]
 
driver_pcf8563_interface.h
 driver pcf8563 interface header file
 
file  driver_pcf8563_interface_template.c [code]
 
driver_pcf8563_interface_template.c
 driver pcf8563 interface template source file
 
+ +
diff --git a/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.md5 b/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.md5 new file mode 100644 index 0000000..0691cd6 --- /dev/null +++ b/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.md5 @@ -0,0 +1 @@ +aafca4c50518e27727ecb11e3972f370 \ No newline at end of file diff --git a/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.svg b/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.svg new file mode 100644 index 0000000..b8eee62 --- /dev/null +++ b/doc/html/dir_b31d54d5631803016a26f28213a41162_dep.svg @@ -0,0 +1,43 @@ + + + + + + +interface + + +dir_b31d54d5631803016a26f28213a41162 + + +interface + + + + + +dir_68267d1309a1af8e8297ef4c3efbcdba + + +src + + + + + +dir_b31d54d5631803016a26f28213a41162->dir_68267d1309a1af8e8297ef4c3efbcdba + + + + + + +1 + + + + + diff --git a/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html index 9d170f1..5c94b13 100644 --- a/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html +++ b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
example Directory Reference
+
example Directory Reference
+
+Directory dependency graph for example:
+
+
+
- - + - - + - - + - - + - - + - - + - - + - - + -

+

Files

file  driver_pcf8563_alarm.c [code]
 
driver_pcf8563_alarm.c
 driver pcf8563 alarm source file
 
file  driver_pcf8563_alarm.h [code]
 
driver_pcf8563_alarm.h
 driver pcf8563 alarm header file
 
file  driver_pcf8563_basic.c [code]
 
driver_pcf8563_basic.c
 driver pcf8563 basic source file
 
file  driver_pcf8563_basic.h [code]
 
driver_pcf8563_basic.h
 driver pcf8563 basic header file
 
file  driver_pcf8563_output.c [code]
 
driver_pcf8563_output.c
 driver pcf8563 output source file
 
file  driver_pcf8563_output.h [code]
 
driver_pcf8563_output.h
 driver pcf8563 output header file
 
file  driver_pcf8563_timer.c [code]
 
driver_pcf8563_timer.c
 driver pcf8563 timer source file
 
file  driver_pcf8563_timer.h [code]
 
driver_pcf8563_timer.h
 driver pcf8563 timer header file
 
+ +
diff --git a/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.md5 b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.md5 new file mode 100644 index 0000000..51e5d4c --- /dev/null +++ b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.md5 @@ -0,0 +1 @@ +fe9591bb679e49e2adb3e15cf88bb486 \ No newline at end of file diff --git a/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.svg b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.svg new file mode 100644 index 0000000..c0afe36 --- /dev/null +++ b/doc/html/dir_cfafba98a580ce4b62f8a6fa96d7cbb0_dep.svg @@ -0,0 +1,43 @@ + + + + + + +example + + +dir_cfafba98a580ce4b62f8a6fa96d7cbb0 + + +example + + + + + +dir_b31d54d5631803016a26f28213a41162 + + +interface + + + + + +dir_cfafba98a580ce4b62f8a6fa96d7cbb0->dir_b31d54d5631803016a26f28213a41162 + + + + + + +4 + + + + + diff --git a/doc/html/dir_e68e8157741866f444e17edd764ebbae.html b/doc/html/dir_e68e8157741866f444e17edd764ebbae.html index 5c45299..b2980e9 100644 --- a/doc/html/dir_e68e8157741866f444e17edd764ebbae.html +++ b/doc/html/dir_e68e8157741866f444e17edd764ebbae.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: doc Directory Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
doc Directory Reference
+
doc Directory Reference
- - - +

+

Directories

directory  mainpage
 
 
mainpage
+ +
diff --git a/doc/html/doc.png b/doc/html/doc.png deleted file mode 100644 index 17edabff95f7b8da13c9516a04efe05493c29501..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 746 zcmV7=@pnbNXRFEm&G8P!&WHG=d)>K?YZ1bzou)2{$)) zumDct!>4SyxL;zgaG>wy`^Hv*+}0kUfCrz~BCOViSb$_*&;{TGGn2^x9K*!Sf0=lV zpP=7O;GA0*Jm*tTYj$IoXvimpnV4S1Z5f$p*f$Db2iq2zrVGQUz~yq`ahn7ck(|CE z7Gz;%OP~J6)tEZWDzjhL9h2hdfoU2)Nd%T<5Kt;Y0XLt&<@6pQx!nw*5`@bq#?l*?3z{Hlzoc=Pr>oB5(9i6~_&-}A(4{Q$>c>%rV&E|a(r&;?i5cQB=} zYSDU5nXG)NS4HEs0it2AHe2>shCyr7`6@4*6{r@8fXRbTA?=IFVWAQJL&H5H{)DpM#{W(GL+Idzf^)uRV@oB8u$ z8v{MfJbTiiRg4bza<41NAzrl{=3fl_D+$t+^!xlQ8S}{UtY`e z;;&9UhyZqQRN%2pot{*Ei0*4~hSF_3AH2@fKU!$NSflS>{@tZpDT4`M2WRTTVH+D? z)GFlEGGHe?koB}i|1w45!BF}N_q&^HJ&-tyR{(afC6H7|aml|tBBbv}55C5DNP8p3 z)~jLEO4Z&2hZmP^i-e%(@d!(E|KRafiU8Q5u(wU((j8un3OR*Hvj+t diff --git a/doc/html/doxygen.css b/doc/html/doxygen.css index ffbff02..2e9a10a 100644 --- a/doc/html/doxygen.css +++ b/doc/html/doxygen.css @@ -1,29 +1,450 @@ -/* The standard CSS for doxygen 1.9.1 */ +/* The standard CSS for doxygen 1.15.0*/ + +html { +/* page base colors */ +--page-background-color: white; +--page-foreground-color: black; +--page-link-color: #3D578C; +--page-visited-link-color: #3D578C; +--page-external-link-color: #334975; + +/* index */ +--index-odd-item-bg-color: #F8F9FC; +--index-even-item-bg-color: white; +--index-header-color: black; +--index-separator-color: #A0A0A0; + +/* header */ +--header-background-color: #F9FAFC; +--header-separator-color: #C4CFE5; +--group-header-separator-color: #D9E0EE; +--group-header-color: #354C7B; +--inherit-header-color: gray; + +--footer-foreground-color: #2A3D61; +--footer-logo-width: 75px; +--citation-label-color: #334975; +--glow-color: cyan; + +--title-background-color: white; +--title-separator-color: #C4CFE5; +--directory-separator-color: #9CAFD4; +--separator-color: #4A6AAA; + +--blockquote-background-color: #F7F8FB; +--blockquote-border-color: #9CAFD4; + +--scrollbar-thumb-color: #C4CFE5; +--scrollbar-background-color: #F9FAFC; + +--icon-background-color: #728DC1; +--icon-foreground-color: white; +/* +--icon-doc-image: url('doc.svg'); +--icon-folder-open-image: url('folderopen.svg'); +--icon-folder-closed-image: url('folderclosed.svg');*/ +--icon-folder-open-fill-color: #C4CFE5; +--icon-folder-fill-color: #D8DFEE; +--icon-folder-border-color: #4665A2; +--icon-doc-fill-color: #D8DFEE; +--icon-doc-border-color: #4665A2; + +/* brief member declaration list */ +--memdecl-background-color: #F9FAFC; +--memdecl-separator-color: #DEE4F0; +--memdecl-foreground-color: #555; +--memdecl-template-color: #4665A2; +--memdecl-border-color: #D5DDEC; + +/* detailed member list */ +--memdef-border-color: #A8B8D9; +--memdef-title-background-color: #E2E8F2; +--memdef-proto-background-color: #EEF1F7; +--memdef-proto-text-color: #253555; +--memdef-doc-background-color: white; +--memdef-param-name-color: #602020; +--memdef-template-color: #4665A2; + +/* tables */ +--table-cell-border-color: #2D4068; +--table-header-background-color: #374F7F; +--table-header-foreground-color: #FFFFFF; + +/* labels */ +--label-background-color: #728DC1; +--label-left-top-border-color: #5373B4; +--label-right-bottom-border-color: #C4CFE5; +--label-foreground-color: white; + +/** navigation bar/tree/menu */ +--nav-background-color: #F9FAFC; +--nav-foreground-color: #364D7C; +--nav-border-color: #C4CFE5; +--nav-breadcrumb-separator-color: #C4CFE5; +--nav-breadcrumb-active-bg: #EEF1F7; +--nav-breadcrumb-color: #354C7B; +--nav-breadcrumb-border-color: #E1E7F2; +--nav-splitbar-bg-color: #DCE2EF; +--nav-splitbar-handle-color: #9CAFD4; +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #283A5D; +--nav-text-hover-color: white; +--nav-text-active-color: white; +--nav-menu-button-color: #364D7C; +--nav-menu-background-color: white; +--nav-menu-foreground-color: #555555; +--nav-menu-active-bg: #DCE2EF; +--nav-menu-active-color: #9CAFD4; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.5); +--nav-arrow-color: #B6C4DF; +--nav-arrow-selected-color: #90A5CE; + +/* sync icon */ +--sync-icon-border-color: #C4CFE5; +--sync-icon-background-color: #F9FAFC; +--sync-icon-selected-background-color: #EEF1F7; +--sync-icon-color: #C4CFE5; +--sync-icon-selected-color: #6884BD; + +/* table of contents */ +--toc-background-color: #F4F6FA; +--toc-border-color: #D8DFEE; +--toc-header-color: #4665A2; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: white; +--search-foreground-color: #909090; +--search-active-color: black; +--search-filter-background-color: rgba(255,255,255,.7); +--search-filter-backdrop-filter: blur(4px); +--search-filter-foreground-color: black; +--search-filter-border-color: rgba(150,150,150,.4); +--search-filter-highlight-text-color: white; +--search-filter-highlight-bg-color: #3D578C; +--search-results-foreground-color: #425E97; +--search-results-background-color: rgba(255,255,255,.8); +--search-results-backdrop-filter: blur(4px); +--search-results-border-color: rgba(150,150,150,.4); +--search-box-border-color: #B6C4DF; +--search-close-icon-bg-color: #A0A0A0; +--search-close-icon-fg-color: white; + +/** code fragments */ +--code-keyword-color: #008000; +--code-type-keyword-color: #604020; +--code-flow-keyword-color: #E08000; +--code-comment-color: #800000; +--code-preprocessor-color: #806020; +--code-string-literal-color: #002080; +--code-char-literal-color: #008080; +--code-xml-cdata-color: black; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #000000; +--code-vhdl-keyword-color: #700070; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #4665A2; +--code-external-link-color: #4665A2; +--fragment-foreground-color: black; +--fragment-background-color: #FBFCFD; +--fragment-border-color: #C4CFE5; +--fragment-lineno-border-color: #00FF00; +--fragment-lineno-background-color: #E8E8E8; +--fragment-lineno-foreground-color: black; +--fragment-lineno-link-fg-color: #4665A2; +--fragment-lineno-link-bg-color: #D8D8D8; +--fragment-lineno-link-hover-fg-color: #4665A2; +--fragment-lineno-link-hover-bg-color: #C8C8C8; +--fragment-copy-ok-color: #2EC82E; +--fragment-highlight-filter: -3; +--tooltip-foreground-color: black; +--tooltip-background-color: rgba(255,255,255,0.8); +--tooltip-arrow-background-color: white; +--tooltip-border-color: rgba(150,150,150,0.7); +--tooltip-backdrop-filter: blur(3px); +--tooltip-doc-color: grey; +--tooltip-declaration-color: #006318; +--tooltip-link-color: #4665A2; +--tooltip-shadow: 0 4px 8px 0 rgba(0,0,0,.25); +--fold-line-color: #808080; + +/** font-family */ +--font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #f8d1cc; +--warning-color-hl: #b61825; +--warning-color-text: #75070f; +--note-color-bg: #faf3d8; +--note-color-hl: #f3a600; +--note-color-text: #5f4204; +--todo-color-bg: #e4f3ff; +--todo-color-hl: #1879C4; +--todo-color-text: #274a5c; +--test-color-bg: #e8e8ff; +--test-color-hl: #3939C4; +--test-color-text: #1a1a5c; +--deprecated-color-bg: #ecf0f3; +--deprecated-color-hl: #5b6269; +--deprecated-color-text: #43454a; +--bug-color-bg: #e4dafd; +--bug-color-hl: #5b2bdd; +--bug-color-text: #2a0d72; +--invariant-color-bg: #d8f1e3; +--invariant-color-hl: #44b86f; +--invariant-color-text: #265532; +} + +html.dark-mode { +/* page base colors */ +--page-background-color: black; +--page-foreground-color: #C9D1D9; +--page-link-color: #90A5CE; +--page-visited-link-color: #90A5CE; +--page-external-link-color: #A3B4D7; + +/* index */ +--index-odd-item-bg-color: #0B101A; +--index-even-item-bg-color: black; +--index-header-color: #C4CFE5; +--index-separator-color: #334975; + +/* header */ +--header-background-color: #070B11; +--header-separator-color: #141C2E; +--group-header-separator-color: #1D2A43; +--group-header-color: #90A5CE; +--inherit-header-color: #A0A0A0; + +--footer-foreground-color: #5B7AB7; +--footer-logo-width: 60px; +--citation-label-color: #90A5CE; +--glow-color: cyan; + +--title-background-color: #090D16; +--title-separator-color: #212F4B; +--directory-separator-color: #283A5D; +--separator-color: #283A5D; + +--blockquote-background-color: #101826; +--blockquote-border-color: #283A5D; + +--scrollbar-thumb-color: #2C3F65; +--scrollbar-background-color: #070B11; + +--icon-background-color: #334975; +--icon-foreground-color: #C4CFE5; +--icon-folder-open-fill-color: #4665A2; +--icon-folder-fill-color: #5373B4; +--icon-folder-border-color: #C4CFE5; +--icon-doc-fill-color: #6884BD; +--icon-doc-border-color: #C4CFE5; + +/* brief member declaration list */ +--memdecl-background-color: #0B101A; +--memdecl-separator-color: #2C3F65; +--memdecl-foreground-color: #BBB; +--memdecl-template-color: #7C95C6; +--memdecl-border-color: #233250; + +/* detailed member list */ +--memdef-border-color: #233250; +--memdef-title-background-color: #1B2840; +--memdef-proto-background-color: #19243A; +--memdef-proto-text-color: #9DB0D4; +--memdef-doc-background-color: black; +--memdef-param-name-color: #D28757; +--memdef-template-color: #7C95C6; + +/* tables */ +--table-cell-border-color: #283A5D; +--table-header-background-color: #283A5D; +--table-header-foreground-color: #C4CFE5; + +/* labels */ +--label-background-color: #354C7B; +--label-left-top-border-color: #4665A2; +--label-right-bottom-border-color: #283A5D; +--label-foreground-color: #CCCCCC; + +/** navigation bar/tree/menu */ +--nav-background-color: #101826; +--nav-foreground-color: #364D7C; +--nav-border-color: #212F4B; +--nav-breadcrumb-separator-color: #212F4B; +--nav-breadcrumb-active-bg: #1D2A43; +--nav-breadcrumb-color: #90A5CE; +--nav-breadcrumb-border-color: #2A3D61; +--nav-splitbar-bg-color: #283A5D; +--nav-splitbar-handle-color: #4665A2; +--nav-font-size-level1: 13px; +--nav-font-size-level2: 10px; +--nav-font-size-level3: 9px; +--nav-text-normal-color: #B6C4DF; +--nav-text-hover-color: #DCE2EF; +--nav-text-active-color: #DCE2EF; +--nav-menu-button-color: #B6C4DF; +--nav-menu-background-color: #05070C; +--nav-menu-foreground-color: #BBBBBB; +--nav-menu-active-bg: #1D2A43; +--nav-menu-active-color: #C9D3E7; +--nav-menu-toggle-color: rgba(255, 255, 255, 0.2); +--nav-arrow-color: #4665A2; +--nav-arrow-selected-color: #6884BD; + +/* sync icon */ +--sync-icon-border-color: #212F4B; +--sync-icon-background-color: #101826; +--sync-icon-selected-background-color: #1D2A43; +--sync-icon-color: #4665A2; +--sync-icon-selected-color: #5373B4; + +/* table of contents */ +--toc-background-color: #151E30; +--toc-border-color: #202E4A; +--toc-header-color: #A3B4D7; +--toc-down-arrow-image: url("data:image/svg+xml;utf8,&%238595;"); + +/** search field */ +--search-background-color: black; +--search-foreground-color: #C5C5C5; +--search-active-color: #F5F5F5; +--search-filter-background-color: #101826; +--search-filter-foreground-color: #90A5CE; +--search-filter-backdrop-filter: none; +--search-filter-border-color: #7C95C6; +--search-filter-highlight-text-color: #BCC9E2; +--search-filter-highlight-bg-color: #283A5D; +--search-results-background-color: black; +--search-results-foreground-color: #90A5CE; +--search-results-backdrop-filter: none; +--search-results-border-color: #334975; +--search-box-border-color: #334975; +--search-close-icon-bg-color: #909090; +--search-close-icon-fg-color: black; + +/** code fragments */ +--code-keyword-color: #CC99CD; +--code-type-keyword-color: #AB99CD; +--code-flow-keyword-color: #E08000; +--code-comment-color: #717790; +--code-preprocessor-color: #65CABE; +--code-string-literal-color: #7EC699; +--code-char-literal-color: #00E0F0; +--code-xml-cdata-color: #C9D1D9; +--code-vhdl-digit-color: #FF00FF; +--code-vhdl-char-color: #C0C0C0; +--code-vhdl-keyword-color: #CF53C9; +--code-vhdl-logic-color: #FF0000; +--code-link-color: #79C0FF; +--code-external-link-color: #79C0FF; +--fragment-foreground-color: #C9D1D9; +--fragment-background-color: #090D16; +--fragment-border-color: #30363D; +--fragment-lineno-border-color: #30363D; +--fragment-lineno-background-color: black; +--fragment-lineno-foreground-color: #6E7681; +--fragment-lineno-link-fg-color: #6E7681; +--fragment-lineno-link-bg-color: #303030; +--fragment-lineno-link-hover-fg-color: #8E96A1; +--fragment-lineno-link-hover-bg-color: #505050; +--fragment-copy-ok-color: #0EA80E; +--fragment-highlight-filter: 5; +--tooltip-foreground-color: #C9D1D9; +--tooltip-background-color: #202020; +--tooltip-arrow-background-color: #202020; +--tooltip-backdrop-filter: none; +--tooltip-border-color: #C9D1D9; +--tooltip-doc-color: #D9E1E9; +--tooltip-declaration-color: #20C348; +--tooltip-link-color: #79C0FF; +--tooltip-shadow: none; +--fold-line-color: #808080; + +/** font-family */ +--font-family-normal: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-monospace: 'JetBrains Mono',Consolas,Monaco,'Andale Mono','Ubuntu Mono',monospace,fixed; +--font-family-nav: 'Lucida Grande',Geneva,Helvetica,Arial,sans-serif; +--font-family-title: system-ui,-apple-system,Segoe UI,Roboto,Ubuntu,Cantarell,Noto Sans,sans-serif,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol"; +--font-family-toc: Verdana,'DejaVu Sans',Geneva,sans-serif; +--font-family-search: Arial,Verdana,sans-serif; +--font-family-icon: Arial,Helvetica; +--font-family-tooltip: Roboto,sans-serif; + +/** special sections */ +--warning-color-bg: #2e1917; +--warning-color-hl: #ad2617; +--warning-color-text: #f5b1aa; +--note-color-bg: #3b2e04; +--note-color-hl: #f1b602; +--note-color-text: #ceb670; +--todo-color-bg: #163750; +--todo-color-hl: #1982D2; +--todo-color-text: #dcf0fa; +--test-color-bg: #121258; +--test-color-hl: #4242cf; +--test-color-text: #c0c0da; +--deprecated-color-bg: #2e323b; +--deprecated-color-hl: #738396; +--deprecated-color-text: #abb0bd; +--bug-color-bg: #2a2536; +--bug-color-hl: #7661b3; +--bug-color-text: #ae9ed6; +--invariant-color-bg: #303a35; +--invariant-color-hl: #76ce96; +--invariant-color-text: #cceed5; +} + +body { + background-color: var(--page-background-color); + color: var(--page-foreground-color); +} body, table, div, p, dl { - font: 400 14px/22px Roboto,sans-serif; + font-weight: 400; + font-size: 14px; + font-family: var(--font-family-normal); + line-height: 22px; +} + +body.resizing { + user-select: none; + -webkit-user-select: none; } -p.reference, p.definition { - font: 400 14px/22px Roboto,sans-serif; +#doc-content { + scrollbar-width: thin; } /* @group Heading Levels */ -h1.groupheader { - font-size: 150%; +.title { + font-family: var(--font-family-normal); + line-height: 28px; + font-size: 160%; + font-weight: 400; + margin: 10px 2px; } -.title { - font: 400 14px/28px Roboto,sans-serif; +h1.groupheader { font-size: 150%; - font-weight: bold; - margin: 10px 2px; } h2.groupheader { - border-bottom: 1px solid #879ECB; - color: #354C7B; + box-shadow: 12px 0 var(--page-background-color), + -12px 0 var(--page-background-color), + 12px 1px var(--group-header-separator-color), + -12px 1px var(--group-header-separator-color); + color: var(--group-header-color); font-size: 150%; font-weight: normal; margin-top: 1.75em; @@ -32,6 +453,13 @@ h2.groupheader { width: 100%; } +td h2.groupheader { + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); +} + h3.groupheader { font-size: 100%; } @@ -46,29 +474,20 @@ h1, h2, h3, h4, h5, h6 { } h1.glow, h2.glow, h3.glow, h4.glow, h5.glow, h6.glow { - text-shadow: 0 0 15px cyan; + text-shadow: 0 0 15px var(--glow-color); } dt { font-weight: bold; } -ul.multicol { - -moz-column-gap: 1em; - -webkit-column-gap: 1em; - column-gap: 1em; - -moz-column-count: 3; - -webkit-column-count: 3; - column-count: 3; -} - p.startli, p.startdd { margin-top: 2px; } th p.starttd, th p.intertd, th p.endtd { - font-size: 100%; - font-weight: 700; + font-size: 100%; + font-weight: 700; } p.starttd { @@ -113,10 +532,11 @@ h3.version { } div.navtab { - border-right: 1px solid #A3B4D7; - padding-right: 15px; + margin-right: 6px; + padding-right: 6px; text-align: right; line-height: 110%; + background-color: var(--nav-background-color); } div.navtab table { @@ -127,20 +547,12 @@ td.navtab { padding-right: 6px; padding-left: 6px; } + td.navtabHL { - background-image: url('tab_a.png'); - background-repeat:repeat-x; padding-right: 6px; padding-left: 6px; -} - -td.navtabHL a, td.navtabHL a:visited { - color: #fff; - text-shadow: 0px 1px 1px rgba(0, 0, 0, 1.0); -} - -a.navtab { - font-weight: bold; + border-radius: 0 6px 6px 0; + background-color: var(--nav-menu-active-bg); } div.qindex{ @@ -148,7 +560,13 @@ div.qindex{ width: 100%; line-height: 140%; font-size: 130%; - color: #A0A0A0; + color: var(--index-separator-color); +} + +#main-menu a:focus { + outline: auto; + z-index: 10; + position: relative; } dt.alphachar{ @@ -157,7 +575,7 @@ dt.alphachar{ } .alphachar a{ - color: black; + color: var(--index-header-color); } .alphachar a:hover, .alphachar a:visited{ @@ -176,8 +594,12 @@ dt.alphachar{ line-height: 1.15em; } +.classindex dl.even { + background-color: var(--index-even-item-bg-color); +} + .classindex dl.odd { - background-color: #F8F9FC; + background-color: var(--index-odd-item-bg-color); } @media(min-width: 1120px) { @@ -196,21 +618,18 @@ dt.alphachar{ /* @group Link Styling */ a { - color: #3D578C; + color: var(--page-link-color); font-weight: normal; text-decoration: none; } .contents a:visited { - color: #4665A2; + color: var(--page-visited-link-color); } -a:hover { - text-decoration: underline; -} - -.contents a.qindexHL:visited { - color: #FFFFFF; +span.label a:hover { + text-decoration: none; + background: linear-gradient(to bottom, transparent 0,transparent calc(100% - 1px), currentColor 100%); } a.el { @@ -220,13 +639,40 @@ a.el { a.elRef { } -a.code, a.code:visited, a.line, a.line:visited { - color: #4665A2; +a.el, a.el:visited, a.code, a.code:visited, a.line, a.line:visited { + color: var(--page-link-color); } a.codeRef, a.codeRef:visited, a.lineRef, a.lineRef:visited { - color: #4665A2; -} + color: var(--page-external-link-color); +} + +a.code.hl_class { /* style for links to class names in code snippets */ } +a.code.hl_struct { /* style for links to struct names in code snippets */ } +a.code.hl_union { /* style for links to union names in code snippets */ } +a.code.hl_interface { /* style for links to interface names in code snippets */ } +a.code.hl_protocol { /* style for links to protocol names in code snippets */ } +a.code.hl_category { /* style for links to category names in code snippets */ } +a.code.hl_exception { /* style for links to exception names in code snippets */ } +a.code.hl_service { /* style for links to service names in code snippets */ } +a.code.hl_singleton { /* style for links to singleton names in code snippets */ } +a.code.hl_concept { /* style for links to concept names in code snippets */ } +a.code.hl_namespace { /* style for links to namespace names in code snippets */ } +a.code.hl_package { /* style for links to package names in code snippets */ } +a.code.hl_define { /* style for links to macro names in code snippets */ } +a.code.hl_function { /* style for links to function names in code snippets */ } +a.code.hl_variable { /* style for links to variable names in code snippets */ } +a.code.hl_typedef { /* style for links to typedef names in code snippets */ } +a.code.hl_enumvalue { /* style for links to enum value names in code snippets */ } +a.code.hl_enumeration { /* style for links to enumeration names in code snippets */ } +a.code.hl_signal { /* style for links to Qt signal names in code snippets */ } +a.code.hl_slot { /* style for links to Qt slot names in code snippets */ } +a.code.hl_friend { /* style for links to friend names in code snippets */ } +a.code.hl_dcop { /* style for links to KDE3 DCOP names in code snippets */ } +a.code.hl_property { /* style for links to property names in code snippets */ } +a.code.hl_event { /* style for links to event names in code snippets */ } +a.code.hl_sequence { /* style for links to sequence names in code snippets */ } +a.code.hl_dictionary { /* style for links to dictionary names in code snippets */ } /* @end */ @@ -234,58 +680,126 @@ dl.el { margin-left: -1cm; } +ul.check { + list-style:none; + text-indent: -16px; + padding-left: 38px; +} +li.unchecked:before { + content: "\2610\A0"; +} +li.checked:before { + content: "\2611\A0"; +} + +ol { + text-indent: 0px; +} + ul { - overflow: hidden; /*Fixed: list item bullets overlap floating elements*/ + text-indent: 0px; + overflow: visible; +} + +ul.multicol { + -moz-column-gap: 1em; + -webkit-column-gap: 1em; + column-gap: 1em; + -moz-column-count: 3; + -webkit-column-count: 3; + column-count: 3; + list-style-type: none; } #side-nav ul { - overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ + overflow: visible; /* reset ul rule for scroll bar in GENERATE_TREEVIEW window */ } #main-nav ul { - overflow: visible; /* reset ul rule for the navigation bar drop down lists */ + overflow: visible; /* reset ul rule for the navigation bar drop down lists */ } .fragment { - text-align: left; - direction: ltr; - overflow-x: auto; /*Fixed: fragment lines overlap floating elements*/ - overflow-y: hidden; + text-align: left; + direction: ltr; + overflow-x: auto; + overflow-y: hidden; + position: relative; + min-height: 12px; + margin: 10px 0px; + padding: 10px 10px; + border: 1px solid var(--fragment-border-color); + border-radius: 4px; + background-color: var(--fragment-background-color); + color: var(--fragment-foreground-color); } 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%; + word-wrap: break-word; + font-size: 10pt; + line-height: 125%; + font-family: var(--font-family-monospace); +} + +span.tt { + white-space: pre; + font-family: var(--font-family-monospace); + background-color: var(--fragment-background-color); +} + +.clipboard { + width: 24px; + height: 24px; + right: 5px; + top: 5px; + opacity: 0; + position: absolute; + display: inline; + overflow: hidden; + justify-content: center; + align-items: center; + cursor: pointer; +} + +.clipboard.success { + border: 1px solid var(--fragment-foreground-color); + border-radius: 4px; } -div.fragment { - padding: 0 0 1px 0; /*Fixed: last line underline overlap border*/ - margin: 4px 8px 4px 2px; - background-color: #FBFCFD; - border: 1px solid #C4CFE5; +.fragment:hover .clipboard, .clipboard.success { + opacity: .4; +} + +.clipboard:hover, .clipboard.success { + opacity: 1 !important; +} + +.clipboard:active:not([class~=success]) svg { + transform: scale(.91); +} + +.clipboard.success svg { + fill: var(--fragment-copy-ok-color); +} + +.clipboard.success { + border-color: var(--fragment-copy-ok-color); } div.line { - font-family: monospace, fixed; - font-size: 13px; + font-family: var(--font-family-monospace); + font-size: 13px; min-height: 13px; - line-height: 1.0; - text-wrap: unrestricted; + line-height: 1.2; + text-wrap: wrap; + word-break: break-all; 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; + text-indent: -62px; + padding-left: 62px; padding-bottom: 0px; margin: 0px; -webkit-transition-property: background-color, box-shadow; @@ -301,29 +815,86 @@ div.line { } div.line:after { - content:"\000A"; - white-space: pre; + content:"\000A"; + white-space: pre; } div.line.glow { - background-color: cyan; - box-shadow: 0 0 10px cyan; + background-color: var(--glow-color); + box-shadow: 0 0 10px var(--glow-color); } +span.fold { + display: inline-block; + width: 12px; + height: 12px; + margin-left: 4px; + margin-right: 1px; +} + +span.foldnone { + display: inline-block; + position: relative; + cursor: pointer; + user-select: none; +} + +span.fold.plus, span.fold.minus { + width: 10px; + height: 10px; + background-color: var(--fragment-background-color); + position: relative; + border: 1px solid var(--fold-line-color); + margin-right: 1px; +} + +span.fold.plus::before, span.fold.minus::before { + content: ''; + position: absolute; + background-color: var(--fold-line-color); +} + +span.fold.plus::before { + width: 2px; + height: 6px; + top: 2px; + left: 4px; +} + +span.fold.plus::after { + content: ''; + position: absolute; + width: 6px; + height: 2px; + top: 4px; + left: 2px; + background-color: var(--fold-line-color); +} + +span.fold.minus::before { + width: 6px; + height: 2px; + top: 4px; + left: 2px; +} span.lineno { padding-right: 4px; + margin-right: 9px; text-align: right; - border-right: 2px solid #0F0; - background-color: #E8E8E8; - white-space: pre; + border-right: 2px solid var(--fragment-lineno-border-color); + color: var(--fragment-lineno-foreground-color); + background-color: var(--fragment-lineno-background-color); + white-space: pre; } -span.lineno a { - background-color: #D8D8D8; +span.lineno a, span.lineno a:visited { + color: var(--fragment-lineno-link-fg-color); + background-color: var(--fragment-lineno-link-bg-color); } span.lineno a:hover { - background-color: #C8C8C8; + color: var(--fragment-lineno-link-hover-fg-color); + background-color: var(--fragment-lineno-link-hover-bg-color); } .lineno { @@ -335,37 +906,28 @@ span.lineno a:hover { 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; + list-style: none; + padding-left: 0; } div.classindex span.ai { - display: inline-block; + display: inline-block; } div.groupHeader { - margin-left: 16px; - margin-top: 12px; - font-weight: bold; + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); + color: var(--group-header-color); + font-size: 110%; + font-weight: 500; + margin-left: 0px; + margin-top: 0em; + margin-bottom: 6px; + padding-top: 8px; + padding-bottom: 4px; } div.groupText { @@ -374,44 +936,25 @@ div.groupText { } body { - background-color: white; - color: black; - margin: 0; + color: var(--page-foreground-color); + 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; + margin-right: 12px; } p.formulaDsp { text-align: center; } -img.formulaDsp { - +img.dark-mode-visible { + display: none; +} +img.light-mode-visible { + display: none; } img.formulaInl, img.inline { @@ -420,9 +963,9 @@ img.formulaInl, img.inline { div.center { text-align: center; - margin-top: 0px; - margin-bottom: 0px; - padding: 0px; + margin-top: 0px; + margin-bottom: 0px; + padding: 0px; } div.center img { @@ -437,89 +980,74 @@ address.footer { img.footer { border: 0px; vertical-align: middle; + width: var(--footer-logo-width); +} + +.compoundTemplParams { + color: var(--memdecl-template-color); + font-size: 80%; + line-height: 120%; } /* @group Code Colorization */ span.keyword { - color: #008000 + color: var(--code-keyword-color); } span.keywordtype { - color: #604020 + color: var(--code-type-keyword-color); } span.keywordflow { - color: #e08000 + color: var(--code-flow-keyword-color); } span.comment { - color: #800000 + color: var(--code-comment-color); } span.preprocessor { - color: #806020 + color: var(--code-preprocessor-color); } span.stringliteral { - color: #002080 + color: var(--code-string-literal-color); } span.charliteral { - color: #008080 + color: var(--code-char-literal-color); +} + +span.xmlcdata { + color: var(--code-xml-cdata-color); } span.vhdldigit { - color: #ff00ff + color: var(--code-vhdl-digit-color); } span.vhdlchar { - color: #000000 + color: var(--code-vhdl-char-color); } span.vhdlkeyword { - color: #700070 + color: var(--code-vhdl-keyword-color); } span.vhdllogic { - color: #ff0000 + color: var(--code-vhdl-logic-color); } blockquote { - background-color: #F7F8FB; - border-left: 2px solid #9CAFD4; - margin: 0 24px 0 4px; - padding: 0 12px 0 16px; -} - -blockquote.DocNodeRTL { - border-left: 0; - border-right: 2px solid #9CAFD4; - margin: 0 4px 0 24px; - padding: 0 16px 0 12px; + background-color: var(--blockquote-background-color); + border-left: 2px solid var(--blockquote-border-color); + 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%; } @@ -527,18 +1055,24 @@ td.tiny { .dirtab { padding: 4px; border-collapse: collapse; - border: 1px solid #A3B4D7; + border: 1px solid var(--table-cell-border-color); } th.dirtab { - background: #EBEFF6; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-weight: bold; } hr { - height: 0px; border: none; - border-top: 1px solid #4A6AAA; + margin-top: 16px; + margin-bottom: 16px; + height: 1px; + box-shadow: 13px 0 var(--page-background-color), + -13px 0 var(--page-background-color), + 13px 1px var(--group-header-separator-color), + -13px 1px var(--group-header-separator-color); } hr.footer { @@ -553,58 +1087,137 @@ table.memberdecls { } .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; + background-color: var(--glow-color); + box-shadow: 0 0 15px var(--glow-color); +} + +.memberdecls tr[class^='memitem'] { + font-family: var(--font-family-monospace); } .mdescLeft, .mdescRight, -.memItemLeft, .memItemRight, -.memTemplItemLeft, .memTemplItemRight, .memTemplParams { - background-color: #F9FAFC; - border: none; - margin: 4px; - padding: 1px 0 0 8px; +.memItemLeft, .memItemRight { + padding-top: 2px; + padding-bottom: 2px; +} + +.memTemplParams { + padding-left: 10px; + padding-top: 5px; +} + +.memItemLeft, .memItemRight, .memTemplParams { + background-color: var(--memdecl-background-color); } .mdescLeft, .mdescRight { padding: 0px 8px 4px 8px; - color: #555; + color: var(--memdecl-foreground-color); } -.memSeparator { - border-bottom: 1px solid #DEE4F0; - line-height: 1px; - margin: 0px; - padding: 0px; +tr[class^='memdesc'] { + box-shadow: inset 0px 1px 3px 0px rgba(0,0,0,.075); } -.memItemLeft, .memTemplItemLeft { - white-space: nowrap; +.mdescLeft { + border-left: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); } -.memItemRight, .memTemplItemRight { - width: 100%; +.mdescRight { + border-right: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); } .memTemplParams { - color: #4665A2; - white-space: nowrap; + color: var(--memdecl-template-color); + white-space: nowrap; font-size: 80%; + border-left: 1px solid var(--memdecl-border-color); + border-right: 1px solid var(--memdecl-border-color); +} + +td.ititle { + border: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; + border-top-right-radius: 4px; + padding-left: 10px; +} + +tr:not(:first-child) > td.ititle { + border-top: 0; + border-radius: 0; +} + +.memItemLeft { + white-space: nowrap; + border-left: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); + padding-left: 10px; + transition: none; +} + +.memItemRight { + width: 100%; + border-right: 1px solid var(--memdecl-border-color); + border-bottom: 1px solid var(--memdecl-border-color); + padding-right: 10px; + transition: none; +} + +tr.heading + tr[class^='memitem'] td.memItemLeft, +tr.groupHeader + tr[class^='memitem'] td.memItemLeft, +tr.inherit_header + tr[class^='memitem'] td.memItemLeft { + border-top: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; +} + +tr.heading + tr[class^='memitem'] td.memItemRight, +tr.groupHeader + tr[class^='memitem'] td.memItemRight, +tr.inherit_header + tr[class^='memitem'] td.memItemRight { + border-top: 1px solid var(--memdecl-border-color); + border-top-right-radius: 4px; +} + +tr.heading + tr[class^='memitem'] td.memTemplParams, +tr.heading + tr td.ititle, +tr.groupHeader + tr[class^='memitem'] td.memTemplParams, +tr.groupHeader + tr td.ititle, +tr.inherit_header + tr[class^='memitem'] td.memTemplParams { + border-top: 1px solid var(--memdecl-border-color); + border-top-left-radius: 4px; + border-top-right-radius: 4px; +} + +table.memberdecls tr:last-child td.memItemLeft, +table.memberdecls tr:last-child td.mdescLeft, +table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemLeft, +table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemLeft, +table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescLeft, +table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescLeft { + border-bottom-left-radius: 4px; } +table.memberdecls tr:last-child td.memItemRight, +table.memberdecls tr:last-child td.mdescRight, +table.memberdecls tr[class^='memitem']:has(+ tr.groupHeader) td.memItemRight, +table.memberdecls tr[class^='memitem']:has(+ tr.inherit_header) td.memItemRight, +table.memberdecls tr[class^='memdesc']:has(+ tr.groupHeader) td.mdescRight, +table.memberdecls tr[class^='memdesc']:has(+ tr.inherit_header) td.mdescRight { + border-bottom-right-radius: 4px; +} + +tr.template .memItemLeft, tr.template .memItemRight { + border-top: none; + padding-top: 0; +} + + /* @end */ /* @group Member Details */ @@ -613,43 +1226,53 @@ table.memberdecls { .memtitle { padding: 8px; - border-top: 1px solid #A8B8D9; - border-left: 1px solid #A8B8D9; - border-right: 1px solid #A8B8D9; + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); 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; + background-color: var(--memdef-proto-background-color); line-height: 1.25; - font-weight: 300; + font-family: var(--font-family-monospace); + font-weight: 500; + font-size: 16px; float:left; + box-shadow: 0 10px 0 -1px var(--memdef-proto-background-color), + 0 2px 8px 0 rgba(0,0,0,.075); + position: relative; +} + +.memtitle:after { + content: ''; + display: block; + background: var(--memdef-proto-background-color); + height: 10px; + bottom: -10px; + left: 0px; + right: -14px; + position: absolute; + border-top-right-radius: 6px; } .permalink { - font-size: 65%; - display: inline-block; - vertical-align: middle; + font-family: var(--font-family-monospace); + font-weight: 500; + line-height: 1.25; + font-size: 16px; + display: inline-block; + vertical-align: middle; } .memtemplate { font-size: 80%; - color: #4665A2; + color: var(--memdef-template-color); + font-family: var(--font-family-monospace); 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%; } @@ -658,22 +1281,21 @@ table.memberdecls { 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%; + display: table !important; + width: 100%; + box-shadow: 0 2px 8px 0 rgba(0,0,0,.075); + border-radius: 4px; } .memitem.glow { - box-shadow: 0 0 15px cyan; + box-shadow: 0 0 15px var(--glow-color); } .memname { - font-weight: 400; - margin-left: 6px; + font-family: var(--font-family-monospace); + font-size: 13px; + font-weight: 400; + margin-left: 6px; } .memname td { @@ -681,62 +1303,39 @@ table.memberdecls { } .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; - + border-top: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 0px 6px 0px; + color: var(--memdef-proto-text-color); + font-weight: bold; + background-color: var(--memdef-proto-background-color); + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); } .overload { - font-family: "courier new",courier,monospace; + font-family: var(--font-family-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); + border-bottom: 1px solid var(--memdef-border-color); + border-left: 1px solid var(--memdef-border-color); + border-right: 1px solid var(--memdef-border-color); + padding: 6px 10px 2px 10px; + border-top-width: 0; + border-bottom-left-radius: 4px; + border-bottom-right-radius: 4px; } dl.reflist dt { - padding: 5px; + padding: 5px; } dl.reflist dd { - margin: 0px 0px 10px 0px; - padding: 5px; + margin: 0px 0px 10px 0px; + padding: 5px; } .paramkey { @@ -745,37 +1344,45 @@ dl.reflist dd { .paramtype { white-space: nowrap; + padding: 0px; + padding-bottom: 1px; } .paramname { - color: #602020; white-space: nowrap; + padding: 0px; + padding-bottom: 1px; + margin-left: 2px; } + .paramname em { + color: var(--memdef-param-name-color); font-style: normal; + margin-right: 1px; } -.paramname code { - line-height: 14px; + +.paramname .paramdefval { + font-family: var(--font-family-monospace); } .params, .retval, .exception, .tparams { - margin-left: 0px; - padding-left: 0px; -} + margin-left: 0px; + padding-left: 0px; +} .params .paramname, .retval .paramname, .tparams .paramname, .exception .paramname { - font-weight: bold; - vertical-align: top; + font-weight: bold; + vertical-align: top; } - + .params .paramtype, .tparams .paramtype { - font-style: italic; - vertical-align: top; -} - + font-style: italic; + vertical-align: top; +} + .params .paramdir, .tparams .paramdir { - font-family: "courier new",courier,monospace; - vertical-align: top; + font-family: var(--font-family-monospace); + vertical-align: top; } table.mlabels { @@ -794,17 +1401,17 @@ td.mlabels-right { } span.mlabels { - margin-left: 8px; + 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; + background-color: var(--label-background-color); + border-top:1px solid var(--label-left-top-border-color); + border-left:1px solid var(--label-left-top-border-color); + border-right:1px solid var(--label-right-bottom-border-color); + border-bottom:1px solid var(--label-right-bottom-border-color); text-shadow: none; - color: white; + color: var(--label-foreground-color); margin-right: 4px; padding: 2px 3px; border-radius: 3px; @@ -820,47 +1427,50 @@ span.mlabel { /* 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%; + margin: 10px 0px; + width: 100%; } .directory table { - border-collapse:collapse; + border-collapse:collapse; } .directory td { - margin: 0px; - padding: 0px; + margin: 0px; + padding: 0px; vertical-align: top; } .directory td.entry { - white-space: nowrap; - padding-right: 6px; + white-space: nowrap; + padding-right: 6px; padding-top: 3px; } .directory td.entry a { - outline:none; + outline:none; } .directory td.entry a img { - border: none; + border: none; } .directory td.desc { - width: 100%; - padding-left: 6px; + width: 100%; + padding-left: 6px; padding-right: 6px; padding-top: 3px; border-left: 1px solid rgba(0,0,0,0.05); } +.directory tr.odd { + padding-left: 6px; + background-color: var(--index-odd-item-bg-color); +} + .directory tr.even { padding-left: 6px; - background-color: #F7F8FB; + background-color: var(--index-even-item-bg-color); } .directory img { @@ -868,95 +1478,178 @@ div.directory { } .directory .levels { - white-space: nowrap; - width: 100%; - text-align: right; - font-size: 9pt; + white-space: nowrap; + width: 100%; + text-align: right; + font-size: 9pt; } .directory .levels span { - cursor: pointer; - padding-left: 2px; - padding-right: 2px; - color: #3D578C; + cursor: pointer; + padding-left: 2px; + padding-right: 2px; + color: var(--page-link-color); } .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; + color: var(--nav-background-color); + -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: 14px; + transition: opacity 0.3s ease; +} + +span.arrowhead { + position: relative; + padding: 0; + margin: 0 0 0 2px; + display: inline-block; + width: 5px; + height: 5px; + border-right: 2px solid var(--nav-arrow-color); + border-bottom: 2px solid var(--nav-arrow-color); + transform: rotate(-45deg); + transition: transform 0.3s ease; +} + +span.arrowhead.opened { + transform: rotate(45deg); +} + +.selected span.arrowhead { + border-right: 2px solid var(--nav-arrow-selected-color); + border-bottom: 2px solid var(--nav-arrow-selected-color); } .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; + font-family: var(--font-family-icon); + line-height: normal; + font-weight: bold; + font-size: 12px; + height: 14px; + width: 16px; + display: inline-block; + background-color: var(--icon-background-color); + color: var(--icon-foreground-color); + text-align: center; + border-radius: 4px; + margin-left: 2px; + margin-right: 2px; } .icona { - width: 24px; - height: 22px; - display: inline-block; + 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; +.iconfolder { + width: 24px; + height: 18px; + margin-top: 6px; + vertical-align:top; + display: inline-block; + position: relative; } -.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-top: 3px; + vertical-align:top; + display: inline-block; + position: relative; } -.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; +.folder-icon { + width: 16px; + height: 11px; + background-color: var(--icon-folder-fill-color); + border: 1px solid var(--icon-folder-border-color); + border-radius: 0 2px 2px 2px; + position: relative; + box-sizing: content-box; } -table.directory { - font: 400 14px Roboto,sans-serif; +.folder-icon::after { + content: ''; + position: absolute; + top: 2px; + left: -1px; + width: 16px; + height: 7px; + background-color: var(--icon-folder-open-fill-color); + border: 1px solid var(--icon-folder-border-color); + border-radius: 7px 7px 2px 2px; + transform-origin: top left; + opacity: 0; + transition: all 0.3s linear; +} + +.folder-icon::before { + content: ''; + position: absolute; + top: -3px; + left: -1px; + width: 6px; + height: 2px; + background-color: var(--icon-folder-fill-color); + border-top: 1px solid var(--icon-folder-border-color); + border-left: 1px solid var(--icon-folder-border-color); + border-right: 1px solid var(--icon-folder-border-color); + border-radius: 2px 2px 0 0; +} + +.folder-icon.open::after { + top: 3px; + opacity: 1; +} + +.doc-icon { + left: 6px; + width: 12px; + height: 16px; + background-color: var(--icon-doc-border-color); + clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); + position: relative; + display: inline-block; +} +.doc-icon::before { + content: ""; + left: 1px; + top: 1px; + width: 10px; + height: 14px; + background-color: var(--icon-doc-fill-color); + clip-path: polygon(0 0, 66% 0, 100% 25%, 100% 100%, 0 100%); + position: absolute; + box-sizing: border-box; +} +.doc-icon::after { + content: ""; + left: 7px; + top: 0px; + width: 3px; + height: 3px; + background-color: transparent; + position: absolute; + border: 1px solid var(--icon-doc-border-color); } + + + /* @end */ div.dynheader { - margin-top: 8px; + margin-top: 8px; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; @@ -965,9 +1658,16 @@ div.dynheader { user-select: none; } +span.dynarrow { + position: relative; + display: inline-block; + width: 12px; + bottom: 1px; +} + address { font-style: normal; - color: #2A3D61; + color: var(--footer-foreground-color); } table.doxtable caption { @@ -976,155 +1676,163 @@ table.doxtable caption { table.doxtable { border-collapse:collapse; - margin-top: 4px; - margin-bottom: 4px; + margin-top: 4px; + margin-bottom: 4px; } table.doxtable td, table.doxtable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } table.doxtable th { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); 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); + margin-bottom: 10px; + border: 1px solid var(--memdef-border-color); + border-spacing: 0px; + border-radius: 4px; + box-shadow: 2px 2px 2px rgba(0, 0, 0, 0.15); } .fieldtable td, .fieldtable th { - padding: 3px 7px 2px; + 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.fieldtype, .fieldtable td.fieldname, .fieldtable td.fieldinit { + white-space: nowrap; + border-right: 1px solid var(--memdef-border-color); + border-bottom: 1px solid var(--memdef-border-color); + vertical-align: top; } .fieldtable td.fieldname { - padding-top: 3px; + padding-top: 3px; } +.fieldtable td.fieldinit { + padding-top: 3px; + text-align: right; +} + + .fieldtable td.fielddoc { - border-bottom: 1px solid #A8B8D9; - /*width: 100%;*/ + border-bottom: 1px solid var(--memdef-border-color); } .fieldtable td.fielddoc p:first-child { - margin-top: 0px; -} - + margin-top: 0px; +} + .fieldtable td.fielddoc p:last-child { - margin-bottom: 2px; + margin-bottom: 2px; } .fieldtable tr:last-child td { - border-bottom: none; + 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; + background-color: var(--memdef-title-background-color); + font-size: 90%; + color: var(--memdef-proto-text-color); + padding-bottom: 4px; + padding-top: 5px; + text-align:left; + font-weight: 400; + border-top-left-radius: 4px; + border-top-right-radius: 4px; + border-bottom: 1px solid var(--memdef-border-color); +} + +/* ----------- navigation breadcrumb styling ----------- */ + +#nav-path ul { + height: 30px; + line-height: 30px; + color: var(--nav-text-normal-color); overflow: hidden; - font-size: 13px; + margin: 0px; + padding-left: 4px; + background-image: none; + background: var(--page-background-color); + border-bottom: 1px solid var(--nav-breadcrumb-separator-color); + font-size: var(--nav-font-size-level1); + font-family: var(--font-family-nav); + position: relative; + z-index: 100; } -.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 -{ +#main-nav { + border-bottom: 1px solid var(--nav-border-color); +} + +.navpath li { list-style-type:none; float:left; + color: var(--nav-foreground-color); +} + +.navpath li.footer { + list-style-type:none; + float:right; padding-left:10px; padding-right:15px; - background-image:url('bc_s.png'); + background-image:none; background-repeat:no-repeat; background-position:right; - color:#364D7C; + font-size: 8pt; + color: var(--footer-foreground-color); } -.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; +#nav-path li.navelem { + background-image: none; + display: flex; + align-items: center; + padding-left: 15px; } -.navpath li.navelem a:hover -{ - color:#6884BD; +.navpath li.navelem a { + text-shadow: none; + display: inline-block; + color: var(--nav-breadcrumb-color); + position: relative; + top: 0px; + height: 30px; + margin-right: -20px; } -.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; +#nav-path li.navelem:after { + content: ''; + display: inline-block; + position: relative; + top: 0; + right: -15px; + width: 30px; + height: 30px; + transform: scaleX(0.5) scale(0.707) rotate(45deg); + z-index: 10; + background: var(--page-background-color); + box-shadow: 2px -2px 0 2px var(--nav-breadcrumb-separator-color); + border-radius: 0 5px 0 50px; +} + +#nav-path li.navelem:first-child { + margin-left: -6px; } +#nav-path li.navelem:hover, +#nav-path li.navelem:hover:after { + background-color: var(--nav-breadcrumb-active-bg); +} + +/* ---------------------- */ div.summary { @@ -1133,7 +1841,7 @@ div.summary padding-right: 5px; width: 50%; text-align: right; -} +} div.summary a { @@ -1142,14 +1850,14 @@ div.summary a table.classindex { - margin: 10px; - white-space: nowrap; - margin-left: 3%; - margin-right: 3%; - width: 94%; - border: 0; - border-spacing: 0; - padding: 0; + margin: 10px; + white-space: nowrap; + margin-left: 3%; + margin-right: 3%; + width: 94%; + border: 0; + border-spacing: 0; + padding: 0; } div.ingroups @@ -1166,11 +1874,9 @@ div.ingroups a div.header { - background-image:url('nav_h.png'); - background-repeat:repeat-x; - background-color: #F9FAFC; margin: 0px; - border-bottom: 1px solid #C4CFE5; + background-color: var(--header-background-color); + border-bottom: 1px solid var(--header-separator-color); } div.headertitle @@ -1178,149 +1884,141 @@ div.headertitle padding: 5px 5px 5px 10px; } -.PageDocRTL-title div.headertitle { - text-align: right; - direction: rtl; -} - dl { - padding: 0 0 0 0; + padding: 0 0 0 0; } -/* dl.note, dl.warning, dl.attention, dl.pre, dl.post, dl.invariant, dl.deprecated, dl.todo, dl.test, dl.bug, dl.examples */ -dl.section { - margin-left: 0px; - padding-left: 0px; +dl.bug dt a, dl.deprecated dt a, dl.todo dt a, dl.test a { + font-weight: bold !important; } -dl.section.DocNodeRTL { - margin-right: 0px; - padding-right: 0px; +dl.warning, dl.attention, dl.important, dl.note, dl.deprecated, dl.bug, +dl.invariant, dl.pre, dl.post, dl.todo, dl.test, dl.remark { + padding: 10px; + margin: 10px 0px; + overflow: hidden; + margin-left: 0; + border-radius: 4px; } -dl.note { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #D0C000; +dl.section dd { + margin-bottom: 2px; } -dl.note.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #D0C000; +dl.warning, dl.attention, dl.important { + background: var(--warning-color-bg); + border-left: 8px solid var(--warning-color-hl); + color: var(--warning-color-text); } -dl.warning, dl.attention { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #FF0000; +dl.warning dt, dl.attention dt, dl.important dt { + color: var(--warning-color-hl); } -dl.warning.DocNodeRTL, dl.attention.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #FF0000; +dl.warning .tt, dl.attention .tt, dl.important .tt { + background-color: hsl(from var(--warning-color-bg) h s calc(l + var(--fragment-highlight-filter))); } -dl.pre, dl.post, dl.invariant { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00D000; +dl.note, dl.remark { + background: var(--note-color-bg); + border-left: 8px solid var(--note-color-hl); + color: var(--note-color-text); } -dl.pre.DocNodeRTL, dl.post.DocNodeRTL, dl.invariant.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00D000; +dl.note dt, dl.remark dt { + color: var(--note-color-hl); } -dl.deprecated { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #505050; +dl.note .tt, dl.remark .tt { + background-color: hsl(from var(--note-color-bg) h s calc(l + var(--fragment-highlight-filter))); } -dl.deprecated.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #505050; +dl.todo { + background: var(--todo-color-bg); + border-left: 8px solid var(--todo-color-hl); + color: var(--todo-color-text); } -dl.todo { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #00C0E0; +dl.todo dt { + color: var(--todo-color-hl); } -dl.todo.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #00C0E0; +dl.todo .tt { + background-color: hsl(from var(--todo-color-bg) h s calc(l + var(--fragment-highlight-filter))); } dl.test { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #3030E0; + background: var(--test-color-bg); + border-left: 8px solid var(--test-color-hl); + color: var(--test-color-text); +} + +dl.test dt { + color: var(--test-color-hl); +} + +dl.test .tt { + background-color: hsl(from var(--test-color-bg) h s calc(l + var(--fragment-highlight-filter))); } -dl.test.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #3030E0; +dl.bug dt a { + color: var(--bug-color-hl) !important; } dl.bug { - margin-left: -7px; - padding-left: 3px; - border-left: 4px solid; - border-color: #C08050; + background: var(--bug-color-bg); + border-left: 8px solid var(--bug-color-hl); + color: var(--bug-color-text); } -dl.bug.DocNodeRTL { - margin-left: 0; - padding-left: 0; - border-left: 0; - margin-right: -7px; - padding-right: 3px; - border-right: 4px solid; - border-color: #C08050; +dl.bug dt a { + color: var(--bug-color-hl) !important; } -dl.section dd { - margin-bottom: 6px; +dl.bug .tt { + background-color: hsl(from var(--bug-color-bg) h s calc(l + var(--fragment-highlight-filter))); } +dl.deprecated { + background: var(--deprecated-color-bg); + border-left: 8px solid var(--deprecated-color-hl); + color: var(--deprecated-color-text); +} + +dl.deprecated dt a { + color: var(--deprecated-color-hl) !important; +} + +dl.deprecated .tt { + background-color: hsl(from var(--deprecated-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + + +dl.invariant, dl.pre, dl.post { + background: var(--invariant-color-bg); + border-left: 8px solid var(--invariant-color-hl); + color: var(--invariant-color-text); +} + +dl.invariant dt, dl.pre dt, dl.post dt { + color: var(--invariant-color-hl); +} + +dl.invariant .tt, dl.pre .tt, dl.post .tt { + background-color: hsl(from var(--invariant-color-bg) h s calc(l + var(--fragment-highlight-filter))); +} + +dl.note dd, dl.warning dd, dl.pre dd, dl.post dd, +dl.remark dd, dl.attention dd, dl.important dd, dl.invariant dd, +dl.bug dd, dl.deprecated dd, dl.todo dd, dl.test dd { + margin-inline-start: 0px; +} + + +#projectrow +{ + height: 56px; +} #projectlogo { @@ -1328,69 +2026,78 @@ dl.section dd { vertical-align: bottom; border-collapse: separate; } - + #projectlogo img -{ +{ border: 0px none; } - + #projectalign { - vertical-align: middle; + vertical-align: middle; + padding-left: 0.5em; } #projectname { - font: 300% Tahoma, Arial,sans-serif; - margin: 0px; - padding: 2px 0px; + font-size: 200%; + font-family: var(--font-family-title); + margin: 0; + padding: 0; +} + +#side-nav #projectname +{ + font-size: 130%; } - + #projectbrief { - font: 120% Tahoma, Arial,sans-serif; + font-size: 90%; + font-family: var(--font-family-title); margin: 0px; padding: 0px; } #projectnumber { - font: 50% Tahoma, Arial,sans-serif; + font-size: 50%; + font-family: var(--font-family-title); margin: 0px; padding: 0px; } #titlearea { - padding: 0px; + padding: 0 0 0 5px; margin: 0px; - width: 100%; - border-bottom: 1px solid #5373B4; + border-bottom: 1px solid var(--title-separator-color); + background-color: var(--title-background-color); } .image { - text-align: center; + text-align: center; } .dotgraph { - text-align: center; + text-align: center; } .mscgraph { - text-align: center; + text-align: center; } .plantumlgraph { - text-align: center; + text-align: center; } .diagraph { - text-align: center; + text-align: center; } .caption @@ -1398,87 +2105,68 @@ dl.section dd { font-weight: bold; } -div.zoom -{ - border: 1px solid #90A5CE; -} - dl.citelist { - margin-bottom:50px; + margin-bottom:50px; } dl.citelist dt { - color:#334975; - float:left; - font-weight:bold; - margin-right:10px; - padding:5px; - text-align:right; - width:52px; + color:var(--citation-label-color); + float:left; + font-weight:bold; + margin-right:10px; + padding:5px; + text-align:right; + width:52px; } dl.citelist dd { - margin:2px 0 2px 72px; - padding:5px 0; + margin:2px 0 2px 72px; + 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; -} - -.PageDocRTL-title div.toc { - float: left !important; - text-align: right; + padding: 14px 25px; + background-color: var(--toc-background-color); + border: 1px solid var(--toc-border-color); + 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; -} - -.PageDocRTL-title div.toc li { - background-position-x: right !important; - padding-left: 0 !important; - padding-right: 10px; + background: var(--toc-down-arrow-image) no-repeat scroll 0 5px transparent; + font: 10px/1.2 var(--font-family-toc); + 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; + font: bold 12px/1.2 var(--font-family-toc); + color: var(--toc-header-color); + 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; + list-style: none outside none; + border: medium none; + padding: 0px; } -div.toc li.level2 { - margin-left: 15px; +div.toc li[class^='level'] { + margin-left: 15px; } -div.toc li.level3 { - margin-left: 30px; +div.toc li.level1 { + margin-left: 0px; } -div.toc li.level4 { - margin-left: 45px; +div.toc li.empty { + background-image: none; + margin-top: 0px; } span.emoji { @@ -1487,30 +2175,13 @@ span.emoji { */ } -.PageDocRTL-title div.toc li.level1 { - margin-left: 0 !important; - margin-right: 0; -} - -.PageDocRTL-title div.toc li.level2 { - margin-left: 0 !important; - margin-right: 15px; -} - -.PageDocRTL-title div.toc li.level3 { - margin-left: 0 !important; - margin-right: 30px; -} - -.PageDocRTL-title div.toc li.level4 { - margin-left: 0 !important; - margin-right: 45px; +span.obfuscator { + display: none; } .inherit_header { - font-weight: bold; - color: gray; - cursor: pointer; + font-weight: 400; + cursor: pointer; -webkit-touch-callout: none; -webkit-user-select: none; -khtml-user-select: none; @@ -1520,62 +2191,69 @@ span.emoji { } .inherit_header td { - padding: 6px 0px 2px 5px; + padding: 6px 0 2px 0; } .inherit { - display: none; + display: none; } tr.heading h2 { - margin-top: 12px; - margin-bottom: 4px; + margin-top: 12px; + margin-bottom: 12px; } /* tooltip related style info */ .ttc { - position: absolute; - display: none; + 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; + color: var(--tooltip-foreground-color); + background-color: var(--tooltip-background-color); + backdrop-filter: var(--tooltip-backdrop-filter); + -webkit-backdrop-filter: var(--tooltip-backdrop-filter); + border: 1px solid var(--tooltip-border-color); + border-radius: 4px; + box-shadow: var(--tooltip-shadow); 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; + color: var(--tooltip-doc-color); font-style: italic; } #powerTip div.ttname a { - font-weight: bold; + font-weight: bold; +} + +#powerTip a { + color: var(--tooltip-link-color); } #powerTip div.ttname { - font-weight: bold; + font-weight: bold; } #powerTip div.ttdeci { - color: #006318; + color: var(--tooltip-declaration-color); } #powerTip div { - margin: 0px; - padding: 0px; - font: 12px/16px Roboto,sans-serif; + margin: 0px; + padding: 0px; + font-size: 12px; + font-family: var(--font-family-tooltip); + line-height: 16px; } #powerTip:before, #powerTip:after { @@ -1620,12 +2298,12 @@ tr.heading h2 { } #powerTip.n:after, #powerTip.ne:after, #powerTip.nw:after { - border-top-color: #FFFFFF; + border-top-color: var(--tooltip-arrow-background-color); border-width: 10px; margin: 0px -10px; } -#powerTip.n:before { - border-top-color: #808080; +#powerTip.n:before, #powerTip.ne:before, #powerTip.nw:before { + border-top-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1648,13 +2326,13 @@ tr.heading h2 { } #powerTip.s:after, #powerTip.se:after, #powerTip.sw:after { - border-bottom-color: #FFFFFF; + border-bottom-color: var(--tooltip-arrow-background-color); border-width: 10px; margin: 0px -10px; } #powerTip.s:before, #powerTip.se:before, #powerTip.sw:before { - border-bottom-color: #808080; + border-bottom-color: var(--tooltip-border-color); border-width: 11px; margin: 0px -11px; } @@ -1675,13 +2353,13 @@ tr.heading h2 { left: 100%; } #powerTip.e:after { - border-left-color: #FFFFFF; + border-left-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.e:before { - border-left-color: #808080; + border-left-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1691,13 +2369,13 @@ tr.heading h2 { right: 100%; } #powerTip.w:after { - border-right-color: #FFFFFF; + border-right-color: var(--tooltip-border-color); border-width: 10px; top: 50%; margin-top: -10px; } #powerTip.w:before { - border-right-color: #808080; + border-right-color: var(--tooltip-border-color); border-width: 11px; top: 50%; margin-top: -11px; @@ -1705,33 +2383,33 @@ tr.heading h2 { @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; - } + #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; + margin-top: 4px; + margin-bottom: 4px; } table.markdownTable td, table.markdownTable th { - border: 1px solid #2D4068; + border: 1px solid var(--table-cell-border-color); padding: 3px 7px 2px; } @@ -1739,8 +2417,8 @@ table.markdownTable tr { } th.markdownTableHeadLeft, th.markdownTableHeadRight, th.markdownTableHeadCenter, th.markdownTableHeadNone { - background-color: #374F7F; - color: #FFFFFF; + background-color: var(--table-header-background-color); + color: var(--table-header-foreground-color); font-size: 110%; padding-bottom: 4px; padding-top: 5px; @@ -1758,36 +2436,56 @@ th.markdownTableHeadCenter, td.markdownTableBodyCenter { text-align: center } -.DocNodeRTL { - text-align: right; - direction: rtl; +tt, code, kbd +{ + display: inline-block; +} +tt, code, kbd +{ + vertical-align: top; +} +/* @end */ + +u { + text-decoration: underline; +} + +details>summary { + list-style-type: none; } -.DocNodeLTR { - text-align: left; - direction: ltr; +details > summary::-webkit-details-marker { + display: none; } -table.DocNodeRTL { - width: auto; - margin-right: 0; - margin-left: auto; +details>summary::before { + content: "\25ba"; + padding-right:4px; + font-size: 80%; } -table.DocNodeLTR { - width: auto; - margin-right: auto; - margin-left: 0; +details[open]>summary::before { + content: "\25bc"; + padding-right:4px; + font-size: 80%; } -tt, code, kbd, samp -{ - display: inline-block; - direction:ltr; +:root { + scrollbar-width: thin; + scrollbar-color: var(--scrollbar-thumb-color) var(--scrollbar-background-color); } -/* @end */ -u { - text-decoration: underline; +::-webkit-scrollbar { + background-color: var(--scrollbar-background-color); + height: 12px; + width: 12px; +} +::-webkit-scrollbar-thumb { + border-radius: 6px; + box-shadow: inset 0 0 12px 12px var(--scrollbar-thumb-color); + border: solid 2px transparent; +} +::-webkit-scrollbar-corner { + background-color: var(--scrollbar-background-color); } diff --git a/doc/html/doxygen.svg b/doc/html/doxygen.svg index d42dad5..79a7635 100644 --- a/doc/html/doxygen.svg +++ b/doc/html/doxygen.svg @@ -1,4 +1,6 @@ + @@ -17,7 +19,7 @@ - + diff --git a/doc/html/doxygen_crawl.html b/doc/html/doxygen_crawl.html new file mode 100644 index 0000000..2553f84 --- /dev/null +++ b/doc/html/doxygen_crawl.html @@ -0,0 +1,287 @@ + + + +Validator / crawler helper + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/doc/html/driver__pcf8563_8c.html b/doc/html/driver__pcf8563_8c.html index b7d8d1b..ac715cf 100644 --- a/doc/html/driver__pcf8563_8c.html +++ b/doc/html/driver__pcf8563_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: src/driver_pcf8563.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563.c File Reference
+
driver_pcf8563.c File Reference

driver pcf8563 source file More...

#include "driver_pcf8563.h"
+
+Include dependency graph for driver_pcf8563.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Macros

#define CHIP_NAME   "NXP PCF8563"
 chip information definition More...
 
#define MANUFACTURER_NAME   "NXP"
 
#define SUPPLY_VOLTAGE_MIN   1.9f
 
#define SUPPLY_VOLTAGE_MAX   5.5f
 
#define MAX_CURRENT   0.80f
 
#define TEMPERATURE_MIN   -40.0f
 
#define TEMPERATURE_MAX   85.0f
 
#define DRIVER_VERSION   1000
 
#define PCF8563_REG_CONTROL_STATUS1   0x00
 chip register definition More...
 
#define PCF8563_REG_CONTROL_STATUS2   0x01
 
#define PCF8563_REG_SECOND   0x02
 
#define PCF8563_REG_MINUTE   0x03
 
#define PCF8563_REG_HOUR   0x04
 
#define PCF8563_REG_DAY   0x05
 
#define PCF8563_REG_WEEK   0x06
 
#define PCF8563_REG_MONTH   0x07
 
#define PCF8563_REG_YEAR   0x08
 
#define PCF8563_REG_MINUTE_ALARM   0x09
 
#define PCF8563_REG_HOUR_ALARM   0x0A
 
#define PCF8563_REG_DAY_ALARM   0x0B
 
#define PCF8563_REG_WEEK_ALARM   0x0C
 
#define PCF8563_REG_CLKOUT_CONTROL   0x0D
 
#define PCF8563_REG_TIMER_CONTROL   0x0E
 
#define PCF8563_REG_TIMER   0x0F
 
#define PCF8563_ADDRESS   0xA2
 chip address definition More...
 
#define CHIP_NAME   "NXP PCF8563"
 chip information definition
#define MANUFACTURER_NAME   "NXP"
#define SUPPLY_VOLTAGE_MIN   1.9f
#define SUPPLY_VOLTAGE_MAX   5.5f
#define MAX_CURRENT   0.80f
#define TEMPERATURE_MIN   -40.0f
#define TEMPERATURE_MAX   85.0f
#define DRIVER_VERSION   1000
#define PCF8563_REG_CONTROL_STATUS1   0x00
 chip register definition
#define PCF8563_REG_CONTROL_STATUS2   0x01
#define PCF8563_REG_SECOND   0x02
#define PCF8563_REG_MINUTE   0x03
#define PCF8563_REG_HOUR   0x04
#define PCF8563_REG_DAY   0x05
#define PCF8563_REG_WEEK   0x06
#define PCF8563_REG_MONTH   0x07
#define PCF8563_REG_YEAR   0x08
#define PCF8563_REG_MINUTE_ALARM   0x09
#define PCF8563_REG_HOUR_ALARM   0x0A
#define PCF8563_REG_DAY_ALARM   0x0B
#define PCF8563_REG_WEEK_ALARM   0x0C
#define PCF8563_REG_CLKOUT_CONTROL   0x0D
#define PCF8563_REG_TIMER_CONTROL   0x0E
#define PCF8563_REG_TIMER   0x0F
#define PCF8563_ADDRESS   0xA2
 chip address definition
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time More...
 
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time More...
 
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode More...
 
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status More...
 
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop More...
 
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status More...
 
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset More...
 
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status More...
 
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm More...
 
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status More...
 
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm More...
 
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm More...
 
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm More...
 
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status More...
 
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm More...
 
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm More...
 
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm More...
 
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status More...
 
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm More...
 
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm More...
 
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm More...
 
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status More...
 
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm More...
 
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm More...
 
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable More...
 
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status More...
 
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out More...
 
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out More...
 
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable More...
 
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status More...
 
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq More...
 
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq More...
 
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value More...
 
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value More...
 
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt More...
 
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status More...
 
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt More...
 
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status More...
 
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode More...
 
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode More...
 
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler More...
 
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status More...
 
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip More...
 
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip More...
 
uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register More...
 
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register More...
 
uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information More...
 
uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip
uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register
uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information
-

Detailed Description

+

Detailed Description

driver pcf8563 source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -317,9 +253,9 @@

history

Definition in file driver_pcf8563.c.

-

Macro Definition Documentation

- -

◆ CHIP_NAME

+

Macro Definition Documentation

+ +

◆ CHIP_NAME

@@ -337,8 +273,8 @@

-

◆ DRIVER_VERSION

+ +

◆ DRIVER_VERSION

@@ -354,8 +290,8 @@

-

◆ MANUFACTURER_NAME

+ +

◆ MANUFACTURER_NAME

@@ -371,8 +307,8 @@

-

◆ MAX_CURRENT

+ +

◆ MAX_CURRENT

@@ -388,8 +324,8 @@

-

◆ PCF8563_ADDRESS

+ +

◆ PCF8563_ADDRESS

@@ -407,8 +343,8 @@

-

◆ PCF8563_REG_CLKOUT_CONTROL

+ +

◆ PCF8563_REG_CLKOUT_CONTROL

@@ -424,8 +360,8 @@

-

◆ PCF8563_REG_CONTROL_STATUS1

+ +

◆ PCF8563_REG_CONTROL_STATUS1

@@ -443,8 +379,8 @@

-

◆ PCF8563_REG_CONTROL_STATUS2

+ +

◆ PCF8563_REG_CONTROL_STATUS2

@@ -460,8 +396,8 @@

-

◆ PCF8563_REG_DAY

+ +

◆ PCF8563_REG_DAY

@@ -477,8 +413,8 @@

-

◆ PCF8563_REG_DAY_ALARM

+ +

◆ PCF8563_REG_DAY_ALARM

@@ -494,8 +430,8 @@

-

◆ PCF8563_REG_HOUR

+ +

◆ PCF8563_REG_HOUR

@@ -511,8 +447,8 @@

-

◆ PCF8563_REG_HOUR_ALARM

+ +

◆ PCF8563_REG_HOUR_ALARM

@@ -528,8 +464,8 @@

-

◆ PCF8563_REG_MINUTE

+ +

◆ PCF8563_REG_MINUTE

@@ -545,8 +481,8 @@

-

◆ PCF8563_REG_MINUTE_ALARM

+ +

◆ PCF8563_REG_MINUTE_ALARM

@@ -562,8 +498,8 @@

-

◆ PCF8563_REG_MONTH

+ +

◆ PCF8563_REG_MONTH

@@ -579,8 +515,8 @@

-

◆ PCF8563_REG_SECOND

+ +

◆ PCF8563_REG_SECOND

@@ -596,8 +532,8 @@

-

◆ PCF8563_REG_TIMER

+ +

◆ PCF8563_REG_TIMER

@@ -613,8 +549,8 @@

-

◆ PCF8563_REG_TIMER_CONTROL

+ +

◆ PCF8563_REG_TIMER_CONTROL

@@ -630,8 +566,8 @@

-

◆ PCF8563_REG_WEEK

+ +

◆ PCF8563_REG_WEEK

@@ -647,8 +583,8 @@

-

◆ PCF8563_REG_WEEK_ALARM

+ +

◆ PCF8563_REG_WEEK_ALARM

@@ -664,8 +600,8 @@

-

◆ PCF8563_REG_YEAR

+ +

◆ PCF8563_REG_YEAR

@@ -681,8 +617,8 @@

-

◆ SUPPLY_VOLTAGE_MAX

+ +

◆ SUPPLY_VOLTAGE_MAX

@@ -698,8 +634,8 @@

-

◆ SUPPLY_VOLTAGE_MIN

+ +

◆ SUPPLY_VOLTAGE_MIN

@@ -715,8 +651,8 @@

-

◆ TEMPERATURE_MAX

+ +

◆ TEMPERATURE_MAX

@@ -732,8 +668,8 @@

-

◆ TEMPERATURE_MIN

+ +

◆ TEMPERATURE_MIN

@@ -751,11 +687,19 @@

+ + +

+
diff --git a/doc/html/driver__pcf8563_8c__incl.md5 b/doc/html/driver__pcf8563_8c__incl.md5 new file mode 100644 index 0000000..46aed8a --- /dev/null +++ b/doc/html/driver__pcf8563_8c__incl.md5 @@ -0,0 +1 @@ +79d1da3a56ae0d9ec8b3f09364acd2e9 \ No newline at end of file diff --git a/doc/html/driver__pcf8563_8c__incl.svg b/doc/html/driver__pcf8563_8c__incl.svg new file mode 100644 index 0000000..a54e552 --- /dev/null +++ b/doc/html/driver__pcf8563_8c__incl.svg @@ -0,0 +1,93 @@ + + + + + + +src/driver_pcf8563.c + + +Node1 + + +src/driver_pcf8563.c + + + + + +Node2 + + +driver_pcf8563.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stdio.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdint.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +string.h + + + + + +Node2->Node5 + + + + + + + + diff --git a/doc/html/driver__pcf8563_8c_source.html b/doc/html/driver__pcf8563_8c_source.html index 8502cbe..c8d5ee6 100644 --- a/doc/html/driver__pcf8563_8c_source.html +++ b/doc/html/driver__pcf8563_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: src/driver_pcf8563.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +

@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563.c
+
driver_pcf8563.c
-Go to the documentation of this file.
1 
-
37 #include "driver_pcf8563.h"
-
38 
-
42 #define CHIP_NAME "NXP PCF8563"
-
43 #define MANUFACTURER_NAME "NXP"
-
44 #define SUPPLY_VOLTAGE_MIN 1.9f
-
45 #define SUPPLY_VOLTAGE_MAX 5.5f
-
46 #define MAX_CURRENT 0.80f
-
47 #define TEMPERATURE_MIN -40.0f
-
48 #define TEMPERATURE_MAX 85.0f
-
49 #define DRIVER_VERSION 1000
-
54 #define PCF8563_REG_CONTROL_STATUS1 0x00
-
55 #define PCF8563_REG_CONTROL_STATUS2 0x01
-
56 #define PCF8563_REG_SECOND 0x02
-
57 #define PCF8563_REG_MINUTE 0x03
-
58 #define PCF8563_REG_HOUR 0x04
-
59 #define PCF8563_REG_DAY 0x05
-
60 #define PCF8563_REG_WEEK 0x06
-
61 #define PCF8563_REG_MONTH 0x07
-
62 #define PCF8563_REG_YEAR 0x08
-
63 #define PCF8563_REG_MINUTE_ALARM 0x09
-
64 #define PCF8563_REG_HOUR_ALARM 0x0A
-
65 #define PCF8563_REG_DAY_ALARM 0x0B
-
66 #define PCF8563_REG_WEEK_ALARM 0x0C
-
67 #define PCF8563_REG_CLKOUT_CONTROL 0x0D
-
68 #define PCF8563_REG_TIMER_CONTROL 0x0E
-
69 #define PCF8563_REG_TIMER 0x0F
-
74 #define PCF8563_ADDRESS 0xA2
-
86 static uint8_t a_pcf8563_iic_write(pcf8563_handle_t *handle, uint8_t reg, uint8_t data)
-
87 {
-
88  if (handle->iic_write(PCF8563_ADDRESS, reg, &data, 1) != 0) /* write data */
-
89  {
-
90  return 1; /* return error */
-
91  }
-
92 
-
93  return 0; /* success return 0 */
-
94 }
-
95 
-
107 static uint8_t a_pcf8563_iic_multiple_read(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len)
-
108 {
-
109  if (handle->iic_read(PCF8563_ADDRESS, reg, buf, len) != 0) /* read data */
-
110  {
-
111  return 1; /* return error */
-
112  }
-
113 
-
114  return 0; /* success return 0 */
-
115 }
-
116 
-
123 static uint8_t a_pcf8563_hex2bcd(uint8_t val)
-
124 {
-
125  uint8_t i, j, k;
-
126 
-
127  i = val / 10; /* get tens place */
-
128  j = val % 10; /* get ones place */
-
129  k = j + (i << 4); /* set bcd */
-
130 
-
131  return k; /* return bcd */
-
132 }
-
133 
-
140 static uint8_t a_pcf8563_bcd2hex(uint8_t val)
-
141 {
-
142  uint8_t temp;
-
143 
-
144  temp = val & 0x0F; /* get ones place */
-
145  val = (val >> 4) & 0x0F; /* get tens place */
-
146  val = val * 10; /* set tens place */
-
147  temp = temp + val; /* get hex */
-
148 
-
149  return temp; /* return hex */
-
150 }
-
151 
- -
165 {
-
166  uint8_t res;
-
167  uint16_t year;
-
168 
-
169  if (handle == NULL) /* check handle */
-
170  {
-
171  return 2; /* return error */
-
172  }
-
173  if (handle->inited != 1) /* check handle initialization */
-
174  {
-
175  return 3; /* return error */
-
176  }
-
177  if (t == NULL) /* check time */
-
178  {
-
179  handle->debug_print("pcf8563: time is null.\n"); /* time is null */
-
180 
-
181  return 2; /* return error */
-
182  }
-
183 
-
184  if ((t->year < 2000) || (t->year > 2199)) /* check year */
-
185  {
-
186  handle->debug_print("pcf8563: year can't be over 2199 or less than 2000.\n"); /* year can't be over 2199 or less than 2000 */
-
187 
-
188  return 4; /* return error */
-
189  }
-
190  if ((t->month == 0) || (t->month > 12)) /* check month */
-
191  {
-
192  handle->debug_print("pcf8563: month can't be zero or over than 12.\n"); /* month can't be zero or over than 12 */
-
193 
-
194  return 4; /* return error */
-
195  }
-
196  if (t->week > 6) /* check week */
-
197  {
-
198  handle->debug_print("pcf8563: week can't be over than 6.\n"); /* week can't be over than 6 */
-
199 
-
200  return 4; /* return error */
-
201  }
-
202  if ((t->date == 0) || (t->date > 31)) /* check data */
-
203  {
-
204  handle->debug_print("pcf8563: date can't be zero or over than 31.\n"); /* date can't be zero or over than 31 */
-
205 
-
206  return 4; /* return error */
-
207  }
-
208  if (t->hour > 23) /* check hour */
-
209  {
-
210  handle->debug_print("pcf8563: hour can't be over than 23.\n"); /* hour can't be over than 23 */
-
211 
-
212  return 4; /* return error */
-
213  }
-
214  if (t->minute > 59) /* check minute */
-
215  {
-
216  handle->debug_print("pcf8563: minute can't be over than 59.\n"); /* minute can't be over than 59 */
-
217 
-
218  return 4; /* return error */
-
219  }
-
220  if (t->second > 59) /* check second */
-
221  {
-
222  handle->debug_print("pcf8563: second can't be over than 59.\n"); /* second can't be over than 59 */
-
223 
-
224  return 4; /* return error */
-
225  }
-
226  res = a_pcf8563_iic_write(handle, PCF8563_REG_SECOND, a_pcf8563_hex2bcd(t->second)); /* write second */
-
227  if (res != 0) /* check result */
-
228  {
-
229  handle->debug_print("pcf8563: write second failed.\n"); /* write second failed */
-
230 
-
231  return 1; /* return error */
-
232  }
-
233  res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE, a_pcf8563_hex2bcd(t->minute)); /* write minute */
-
234  if (res != 0) /* check result */
-
235  {
-
236  handle->debug_print("pcf8563: write minute failed.\n"); /* write minute failed */
-
237 
-
238  return 1; /* return error */
-
239  }
-
240  res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR, a_pcf8563_hex2bcd(t->hour)); /* write hour */
-
241  if (res != 0) /* check result */
-
242  {
-
243  handle->debug_print("pcf8563: write hour failed.\n"); /* write hour failed */
-
244 
-
245  return 1; /* return error */
-
246  }
-
247  res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK, a_pcf8563_hex2bcd(t->week)); /* write week */
-
248  if (res != 0) /* check result */
-
249  {
-
250  handle->debug_print("pcf8563: write week failed.\n"); /* write week failed */
-
251 
-
252  return 1; /* return error */
-
253  }
-
254  res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY, a_pcf8563_hex2bcd(t->date)); /* write day */
-
255  if (res != 0) /* check result */
-
256  {
-
257  handle->debug_print("pcf8563: write day failed.\n"); /* write day failed */
-
258 
-
259  return 1; /* return error */
-
260  }
-
261  year = t->year - 2000; /* convert year */
-
262  if (year >= 100) /* check year */
-
263  {
-
264  res = a_pcf8563_iic_write(handle, PCF8563_REG_MONTH, a_pcf8563_hex2bcd(t->month) | (1 << 7)); /* write month and century */
-
265  if (res != 0) /* check result */
-
266  {
-
267  handle->debug_print("pcf8563: write century and month failed.\n"); /* write century and month failed */
-
268 
-
269  return 1; /* return error */
-
270  }
-
271  year = year - 100; /* year - 100 */
-
272  res = a_pcf8563_iic_write(handle, PCF8563_REG_YEAR, a_pcf8563_hex2bcd((uint8_t)year)); /* write year */
-
273  if (res != 0) /* check result */
-
274  {
-
275  handle->debug_print("pcf8563: write year failed.\n"); /* write year failed */
-
276 
-
277  return 1; /* return error */
-
278  }
-
279  }
-
280  else
-
281  {
-
282  res = a_pcf8563_iic_write(handle, PCF8563_REG_MONTH, a_pcf8563_hex2bcd(t->month)); /* write month and century */
-
283  if (res != 0) /* check result */
-
284  {
-
285  handle->debug_print("pcf8563: write century and month failed.\n"); /* write century and month failed */
-
286 
-
287  return 1; /* return error */
-
288  }
-
289  res = a_pcf8563_iic_write(handle, PCF8563_REG_YEAR, a_pcf8563_hex2bcd((uint8_t)year)); /* write year */
-
290  if (res != 0) /* check result */
-
291  {
-
292  handle->debug_print("pcf8563: write year failed.\n"); /* write year failed */
-
293 
-
294  return 1; /* return error */
-
295  }
-
296  }
-
297 
-
298  return 0; /* success return 0 */
-
299 }
-
300 
- -
314 {
-
315  uint8_t res;
-
316  uint8_t buf[7];
-
317 
-
318  if (handle == NULL) /* check handle */
-
319  {
-
320  return 2; /* return error */
-
321  }
-
322  if (handle->inited != 1) /* check handle initialization */
-
323  {
-
324  return 3; /* return error */
-
325  }
-
326  if (t == NULL) /* check time */
-
327  {
-
328  handle->debug_print("pcf8563: time is null.\n"); /* time is null */
-
329 
-
330  return 2; /* return error */
-
331  }
-
332 
-
333  memset(buf, 0, sizeof(uint8_t) * 7); /* clear the buffer */
-
334  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_SECOND, (uint8_t *)buf, 7); /* multiple_read */
-
335  if (res != 0) /* check result */
-
336  {
-
337  handle->debug_print("pcf8563: multiple read failed.\n"); /* multiple read failed */
-
338 
-
339  return 1; /* return error */
-
340  }
-
341  if (((buf[0] >> 7) & 0x01) != 0) /* check bit */
-
342  {
-
343  handle->debug_print("pcf8563: clock integrity is not guaranteed.\n"); /* clock integrity is not guaranteed */
-
344 
-
345  return 4; /* return error */
-
346  }
-
347  t->year = a_pcf8563_bcd2hex(buf[6]) + 2000; /* get year */
-
348  if (((buf[5] >> 7) & 0x01) != 0) /* check century */
-
349  {
-
350  t->year += 100; /* add 100 */
-
351  buf[5] &= ~(1 << 7); /* clear bit */
-
352  }
-
353  t->month = a_pcf8563_bcd2hex(buf[5] & 0x1F); /* get month */
-
354  t->week = a_pcf8563_bcd2hex(buf[4] & 0x7); /* get week */
-
355  t->date = a_pcf8563_bcd2hex(buf[3] & 0x3F); /* get date */
-
356  t->hour = a_pcf8563_bcd2hex(buf[2] & 0x3F); /* get hour */
-
357  t->minute = a_pcf8563_bcd2hex(buf[1] & 0x7F); /* get minute */
-
358  t->second = a_pcf8563_bcd2hex(buf[0] & 0x7F); /* get second */
-
359 
-
360  return 0; /* success return 0 */
-
361 }
-
362 
- -
375 {
-
376  uint8_t res;
-
377  uint8_t prev;
-
378 
-
379  if (handle == NULL) /* check handle */
-
380  {
-
381  return 2; /* return error */
-
382  }
-
383  if (handle->inited != 1) /* check handle initialization */
-
384  {
-
385  return 3; /* return error */
-
386  }
-
387 
-
388  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
389  if (res != 0) /* check result */
-
390  {
-
391  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
392 
-
393  return 1; /* return error */
-
394  }
-
395  prev &= ~(1 << 7); /* clear config */
-
396  prev |= enable << 7; /* set bool */
-
397  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
-
398  if (res != 0) /* check result */
-
399  {
-
400  handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
-
401 
-
402  return 1; /* return error */
-
403  }
-
404 
-
405  return 0; /* success return 0 */
-
406 }
-
407 
- -
420 {
-
421  uint8_t res;
-
422  uint8_t prev;
-
423 
-
424  if (handle == NULL) /* check handle */
-
425  {
-
426  return 2; /* return error */
-
427  }
-
428  if (handle->inited != 1) /* check handle initialization */
-
429  {
-
430  return 3; /* return error */
-
431  }
-
432 
-
433  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
434  if (res != 0) /* check result */
-
435  {
-
436  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
437 
-
438  return 1; /* return error */
-
439  }
-
440  *enable = (pcf8563_bool_t)(((prev >> 7) & 0x01)); /* get enable */
-
441 
-
442  return 0; /* success return 0 */
-
443 }
-
444 
- -
457 {
-
458  uint8_t res;
-
459  uint8_t prev;
-
460 
-
461  if (handle == NULL) /* check handle */
-
462  {
-
463  return 2; /* return error */
-
464  }
-
465  if (handle->inited != 1) /* check handle initialization */
-
466  {
-
467  return 3; /* return error */
-
468  }
-
469 
-
470  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
471  if (res != 0) /* check result */
-
472  {
-
473  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
474 
-
475  return 1; /* return error */
-
476  }
-
477  prev &= ~(1 << 5); /* clear config */
-
478  prev |= enable << 5; /* set bool */
-
479  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
-
480  if (res != 0) /* check result */
-
481  {
-
482  handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
-
483 
-
484  return 1; /* return error */
-
485  }
-
486 
-
487  return 0; /* success return 0 */
-
488 }
-
489 
- -
502 {
-
503  uint8_t res;
-
504  uint8_t prev;
-
505 
-
506  if (handle == NULL) /* check handle */
-
507  {
-
508  return 2; /* return error */
-
509  }
-
510  if (handle->inited != 1) /* check handle initialization */
-
511  {
-
512  return 3; /* return error */
-
513  }
-
514 
-
515  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
516  if (res != 0) /* check result */
-
517  {
-
518  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
519 
-
520  return 1; /* return error */
-
521  }
-
522  *enable = (pcf8563_bool_t)(((prev >> 5) & 0x01)); /* get enable */
-
523 
-
524  return 0; /* success return 0 */
-
525 }
-
526 
- -
539 {
-
540  uint8_t res;
-
541  uint8_t prev;
-
542 
-
543  if (handle == NULL) /* check handle */
-
544  {
-
545  return 2; /* return error */
-
546  }
-
547  if (handle->inited != 1) /* check handle initialization */
-
548  {
-
549  return 3; /* return error */
-
550  }
-
551 
-
552  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
553  if (res != 0) /* check result */
-
554  {
-
555  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
556 
-
557  return 1; /* return error */
-
558  }
-
559  prev &= ~(1 << 3); /* clear config */
-
560  prev |= enable << 3; /* set bool */
-
561  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
-
562  if (res != 0) /* check result */
-
563  {
-
564  handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
-
565 
-
566  return 1; /* return error */
-
567  }
-
568 
-
569  return 0; /* success return 0 */
-
570 }
-
571 
- -
584 {
-
585  uint8_t res;
-
586  uint8_t prev;
-
587 
-
588  if (handle == NULL) /* check handle */
-
589  {
-
590  return 2; /* return error */
-
591  }
-
592  if (handle->inited != 1) /* check handle initialization */
-
593  {
-
594  return 3; /* return error */
-
595  }
-
596 
-
597  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
-
598  if (res != 0) /* check result */
-
599  {
-
600  handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
-
601 
-
602  return 1; /* return error */
-
603  }
-
604  *enable = (pcf8563_bool_t)(((prev >> 3) & 0x01)); /* get enable */
-
605 
-
606  return 0; /* success return 0 */
-
607 }
-
608 
- -
621 {
-
622  uint8_t res;
-
623  uint8_t prev;
-
624 
-
625  if (handle == NULL) /* check handle */
-
626  {
-
627  return 2; /* return error */
-
628  }
-
629  if (handle->inited != 1) /* check handle initialization */
-
630  {
-
631  return 3; /* return error */
-
632  }
-
633 
-
634  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
-
635  if (res != 0) /* check result */
-
636  {
-
637  handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
-
638 
-
639  return 1; /* return error */
-
640  }
-
641  prev &= ~(1 << 7); /* clear config */
-
642  prev |= (!enable) << 7; /* set bool */
-
643  res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE_ALARM, prev); /* write minute alarm */
-
644  if (res != 0) /* check result */
-
645  {
-
646  handle->debug_print("pcf8563: write minute alarm failed.\n"); /* write minute alarm failed */
-
647 
-
648  return 1; /* return error */
-
649  }
-
650 
-
651  return 0; /* success return 0 */
-
652 }
-
653 
- -
666 {
-
667  uint8_t res;
-
668  uint8_t prev;
-
669 
-
670  if (handle == NULL) /* check handle */
-
671  {
-
672  return 2; /* return error */
-
673  }
-
674  if (handle->inited != 1) /* check handle initialization */
-
675  {
-
676  return 3; /* return error */
-
677  }
-
678 
-
679  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
-
680  if (res != 0) /* check result */
-
681  {
-
682  handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
-
683 
-
684  return 1; /* return error */
-
685  }
-
686  *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
-
687 
-
688  return 0; /* success return 0 */
-
689 }
-
690 
-
703 uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
-
704 {
-
705  uint8_t res;
-
706  uint8_t prev;
-
707 
-
708  if (handle == NULL) /* check handle */
-
709  {
-
710  return 2; /* return error */
-
711  }
-
712  if (handle->inited != 1) /* check handle initialization */
-
713  {
-
714  return 3; /* return error */
-
715  }
-
716  if (minute > 59) /* check minute */
-
717  {
-
718  handle->debug_print("pcf8563: minute can't be over than 59.\n"); /* minute can't be over than 59 */
-
719 
-
720  return 4; /* return error */
-
721  }
-
722 
-
723  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
-
724  if (res != 0) /* check result */
-
725  {
-
726  handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
-
727 
-
728  return 1; /* return error */
-
729  }
-
730  prev &= ~(0x7F << 0); /* clear config */
-
731  prev |= a_pcf8563_hex2bcd(minute); /* set config */
-
732  res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE_ALARM, prev); /* write minute alarm */
-
733  if (res != 0) /* check result */
-
734  {
-
735  handle->debug_print("pcf8563: write minute alarm failed.\n"); /* write minute alarm failed */
-
736 
-
737  return 1; /* return error */
-
738  }
-
739 
-
740  return 0; /* success return 0 */
-
741 }
-
742 
-
754 uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
-
755 {
-
756  uint8_t res;
-
757  uint8_t prev;
-
758 
-
759  if (handle == NULL) /* check handle */
-
760  {
-
761  return 2; /* return error */
-
762  }
-
763  if (handle->inited != 1) /* check handle initialization */
-
764  {
-
765  return 3; /* return error */
-
766  }
-
767 
-
768  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
-
769  if (res != 0) /* check result */
-
770  {
-
771  handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
-
772 
-
773  return 1; /* return error */
-
774  }
-
775  *minute = a_pcf8563_bcd2hex(prev & 0x7F); /* convert */
-
776 
-
777  return 0; /* success return 0 */
-
778 }
-
779 
- -
792 {
-
793  uint8_t res;
-
794  uint8_t prev;
-
795 
-
796  if (handle == NULL) /* check handle */
-
797  {
-
798  return 2; /* return error */
-
799  }
-
800  if (handle->inited != 1) /* check handle initialization */
-
801  {
-
802  return 3; /* return error */
-
803  }
-
804 
-
805  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
-
806  if (res != 0) /* check result */
-
807  {
-
808  handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
-
809 
-
810  return 1; /* return error */
-
811  }
-
812  prev &= ~(1 << 7); /* clear config */
-
813  prev |= (!enable) << 7; /* set bool */
-
814  res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR_ALARM, prev); /* write hour alarm */
-
815  if (res != 0) /* check result */
-
816  {
-
817  handle->debug_print("pcf8563: write hour alarm failed.\n"); /* write hour alarm failed */
-
818 
-
819  return 1; /* return error */
-
820  }
-
821 
-
822  return 0; /* success return 0 */
-
823 }
-
824 
- -
837 {
-
838  uint8_t res;
-
839  uint8_t prev;
-
840 
-
841  if (handle == NULL) /* check handle */
-
842  {
-
843  return 2; /* return error */
-
844  }
-
845  if (handle->inited != 1) /* check handle initialization */
-
846  {
-
847  return 3; /* return error */
-
848  }
-
849 
-
850  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
-
851  if (res != 0) /* check result */
-
852  {
-
853  handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
-
854 
-
855  return 1; /* return error */
-
856  }
-
857  *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
-
858 
-
859  return 0; /* success return 0 */
-
860 }
-
861 
-
874 uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
-
875 {
-
876  uint8_t res;
-
877  uint8_t prev;
-
878 
-
879  if (handle == NULL) /* check handle */
-
880  {
-
881  return 2; /* return error */
-
882  }
-
883  if (handle->inited != 1) /* check handle initialization */
-
884  {
-
885  return 3; /* return error */
-
886  }
-
887  if (hour > 23) /* check hour */
-
888  {
-
889  handle->debug_print("pcf8563: hour can't be over than 23.\n"); /* hour can't be over than 23 */
-
890 
-
891  return 4; /* return error */
-
892  }
-
893 
-
894  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
-
895  if (res != 0) /* check result */
-
896  {
-
897  handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
-
898 
-
899  return 1; /* return error */
-
900  }
-
901  prev &= ~(0x3F << 0); /* clear config */
-
902  prev |= a_pcf8563_hex2bcd(hour); /* set config */
-
903  res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR_ALARM, prev); /* write hour alarm */
-
904  if (res != 0) /* check result */
-
905  {
-
906  handle->debug_print("pcf8563: write hour alarm failed.\n"); /* write hour alarm failed */
-
907 
-
908  return 1; /* return error */
-
909  }
-
910 
-
911  return 0; /* success return 0 */
-
912 }
-
913 
-
925 uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
-
926 {
-
927  uint8_t res;
-
928  uint8_t prev;
-
929 
-
930  if (handle == NULL) /* check handle */
-
931  {
-
932  return 2; /* return error */
-
933  }
-
934  if (handle->inited != 1) /* check handle initialization */
-
935  {
-
936  return 3; /* return error */
-
937  }
-
938 
-
939  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
-
940  if (res != 0) /* check result */
-
941  {
-
942  handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
-
943 
-
944  return 1; /* return error */
-
945  }
-
946  *hour = a_pcf8563_bcd2hex(prev & 0x3F); /* convert */
-
947 
-
948  return 0; /* success return 0 */
-
949 }
-
950 
- -
963 {
-
964  uint8_t res;
-
965  uint8_t prev;
-
966 
-
967  if (handle == NULL) /* check handle */
-
968  {
-
969  return 2; /* return error */
-
970  }
-
971  if (handle->inited != 1) /* check handle initialization */
-
972  {
-
973  return 3; /* return error */
-
974  }
-
975 
-
976  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
-
977  if (res != 0) /* check result */
-
978  {
-
979  handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
-
980 
-
981  return 1; /* return error */
-
982  }
-
983  prev &= ~(1 << 7); /* clear config */
-
984  prev |= (!enable) << 7; /* set bool */
-
985  res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY_ALARM, prev); /* write day alarm */
-
986  if (res != 0) /* check result */
-
987  {
-
988  handle->debug_print("pcf8563: write day alarm failed.\n"); /* write day alarm failed */
-
989 
-
990  return 1; /* return error */
-
991  }
-
992 
-
993  return 0; /* success return 0 */
-
994 }
-
995 
- -
1008 {
-
1009  uint8_t res;
-
1010  uint8_t prev;
-
1011 
-
1012  if (handle == NULL) /* check handle */
-
1013  {
-
1014  return 2; /* return error */
-
1015  }
-
1016  if (handle->inited != 1) /* check handle initialization */
-
1017  {
-
1018  return 3; /* return error */
-
1019  }
-
1020 
-
1021  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
-
1022  if (res != 0) /* check result */
-
1023  {
-
1024  handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
-
1025 
-
1026  return 1; /* return error */
-
1027  }
-
1028  *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
-
1029 
-
1030  return 0; /* success return 0 */
-
1031 }
-
1032 
-
1045 uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
-
1046 {
-
1047  uint8_t res;
-
1048  uint8_t prev;
-
1049 
-
1050  if (handle == NULL) /* check handle */
-
1051  {
-
1052  return 2; /* return error */
-
1053  }
-
1054  if (handle->inited != 1) /* check handle initialization */
-
1055  {
-
1056  return 3; /* return error */
-
1057  }
-
1058  if ((day == 0) || (day > 31)) /* check day */
-
1059  {
-
1060  handle->debug_print("pcf8563: day can't be zero or over than 31.\n"); /* day can't be zero or over than 31 */
-
1061 
-
1062  return 4; /* return error */
-
1063  }
-
1064 
-
1065  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
-
1066  if (res != 0) /* check result */
-
1067  {
-
1068  handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
-
1069 
-
1070  return 1; /* return error */
-
1071  }
-
1072  prev &= ~(0x3F << 0); /* clear config */
-
1073  prev |= a_pcf8563_hex2bcd(day); /* set config */
-
1074  res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY_ALARM, prev); /* write day alarm */
-
1075  if (res != 0) /* check result */
-
1076  {
-
1077  handle->debug_print("pcf8563: write day alarm failed.\n"); /* write day alarm failed */
-
1078 
-
1079  return 1; /* return error */
-
1080  }
-
1081 
-
1082  return 0; /* success return 0 */
-
1083 }
-
1084 
-
1096 uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
-
1097 {
-
1098  uint8_t res;
-
1099  uint8_t prev;
-
1100 
-
1101  if (handle == NULL) /* check handle */
-
1102  {
-
1103  return 2; /* return error */
-
1104  }
-
1105  if (handle->inited != 1) /* check handle initialization */
-
1106  {
-
1107  return 3; /* return error */
-
1108  }
-
1109 
-
1110  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
-
1111  if (res != 0) /* check result */
-
1112  {
-
1113  handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
-
1114 
-
1115  return 1; /* return error */
-
1116  }
-
1117  *day = a_pcf8563_bcd2hex(prev & 0x3F); /* convert */
-
1118 
-
1119  return 0; /* success return 0 */
-
1120 }
-
1121 
- -
1134 {
-
1135  uint8_t res;
-
1136  uint8_t prev;
-
1137 
-
1138  if (handle == NULL) /* check handle */
-
1139  {
-
1140  return 2; /* return error */
-
1141  }
-
1142  if (handle->inited != 1) /* check handle initialization */
-
1143  {
-
1144  return 3; /* return error */
-
1145  }
-
1146 
-
1147  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
-
1148  if (res != 0) /* check result */
-
1149  {
-
1150  handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
-
1151 
-
1152  return 1; /* return error */
-
1153  }
-
1154  prev &= ~(1 << 7); /* clear config */
-
1155  prev |= (!enable) << 7; /* set bool */
-
1156  res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK_ALARM, prev); /* write week alarm */
-
1157  if (res != 0) /* check result */
-
1158  {
-
1159  handle->debug_print("pcf8563: write week alarm failed.\n"); /* write week alarm failed */
-
1160 
-
1161  return 1; /* return error */
-
1162  }
-
1163 
-
1164  return 0; /* success return 0 */
-
1165 }
-
1166 
- -
1179 {
-
1180  uint8_t res;
-
1181  uint8_t prev;
-
1182 
-
1183  if (handle == NULL) /* check handle */
-
1184  {
-
1185  return 2; /* return error */
-
1186  }
-
1187  if (handle->inited != 1) /* check handle initialization */
-
1188  {
-
1189  return 3; /* return error */
-
1190  }
-
1191 
-
1192  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
-
1193  if (res != 0) /* check result */
-
1194  {
-
1195  handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
-
1196 
-
1197  return 1; /* return error */
-
1198  }
-
1199  *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
-
1200 
-
1201  return 0; /* success return 0 */
-
1202 }
-
1203 
-
1216 uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
-
1217 {
-
1218  uint8_t res;
-
1219  uint8_t prev;
-
1220 
-
1221  if (handle == NULL) /* check handle */
-
1222  {
-
1223  return 2; /* return error */
-
1224  }
-
1225  if (handle->inited != 1) /* check handle initialization */
-
1226  {
-
1227  return 3; /* return error */
-
1228  }
-
1229  if (week > 6) /* check week */
-
1230  {
-
1231  handle->debug_print("pcf8563: week can't be over than 6.\n"); /* week can't be over than 6 */
-
1232 
-
1233  return 4; /* return error */
-
1234  }
-
1235 
-
1236  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
-
1237  if (res != 0) /* check result */
-
1238  {
-
1239  handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
-
1240 
-
1241  return 1; /* return error */
-
1242  }
-
1243  prev &= ~(0x7 << 0); /* clear config */
-
1244  prev |= a_pcf8563_hex2bcd(week); /* set config */
-
1245  res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK_ALARM, prev); /* write week alarm */
-
1246  if (res != 0) /* check result */
-
1247  {
-
1248  handle->debug_print("pcf8563: write week alarm failed.\n"); /* write week alarm failed */
-
1249 
-
1250  return 1; /* return error */
-
1251  }
-
1252 
-
1253  return 0; /* success return 0 */
-
1254 }
-
1255 
-
1267 uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
-
1268 {
-
1269  uint8_t res;
-
1270  uint8_t prev;
-
1271 
-
1272  if (handle == NULL) /* check handle */
-
1273  {
-
1274  return 2; /* return error */
-
1275  }
-
1276  if (handle->inited != 1) /* check handle initialization */
-
1277  {
-
1278  return 3; /* return error */
-
1279  }
-
1280 
-
1281  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
-
1282  if (res != 0) /* check result */
-
1283  {
-
1284  handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
-
1285 
-
1286  return 1; /* return error */
-
1287  }
-
1288  *week = a_pcf8563_bcd2hex(prev & 0x07); /* convert */
-
1289 
-
1290  return 0; /* success return 0 */
-
1291 }
-
1292 
- -
1305 {
-
1306  uint8_t res;
-
1307  uint8_t prev;
-
1308 
-
1309  if (handle == NULL) /* check handle */
-
1310  {
-
1311  return 2; /* return error */
-
1312  }
-
1313  if (handle->inited != 1) /* check handle initialization */
-
1314  {
-
1315  return 3; /* return error */
-
1316  }
-
1317 
-
1318  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
-
1319  if (res != 0) /* check result */
-
1320  {
-
1321  handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
-
1322 
-
1323  return 1; /* return error */
-
1324  }
-
1325  prev &= ~(1 << 7); /* clear config */
-
1326  prev |= enable << 7; /* set bool */
-
1327  res = a_pcf8563_iic_write(handle, PCF8563_REG_CLKOUT_CONTROL, prev); /* write clkout control */
-
1328  if (res != 0) /* check result */
-
1329  {
-
1330  handle->debug_print("pcf8563: write clkout control failed.\n"); /* write clkout control failed */
-
1331 
-
1332  return 1; /* return error */
-
1333  }
-
1334 
-
1335  return 0; /* success return 0 */
-
1336 }
-
1337 
- -
1350 {
-
1351  uint8_t res;
-
1352  uint8_t prev;
-
1353 
-
1354  if (handle == NULL) /* check handle */
-
1355  {
-
1356  return 2; /* return error */
-
1357  }
-
1358  if (handle->inited != 1) /* check handle initialization */
-
1359  {
-
1360  return 3; /* return error */
-
1361  }
-
1362 
-
1363  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
-
1364  if (res != 0) /* check result */
-
1365  {
-
1366  handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
-
1367 
-
1368  return 1; /* return error */
-
1369  }
-
1370  *enable = (pcf8563_bool_t)((prev >> 7) & 0x01); /* get bool */
-
1371 
-
1372  return 0; /* success return 0 */
-
1373 }
-
1374 
- -
1387 {
-
1388  uint8_t res;
-
1389  uint8_t prev;
-
1390 
-
1391  if (handle == NULL) /* check handle */
-
1392  {
-
1393  return 2; /* return error */
-
1394  }
-
1395  if (handle->inited != 1) /* check handle initialization */
-
1396  {
-
1397  return 3; /* return error */
-
1398  }
-
1399 
-
1400  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
-
1401  if (res != 0) /* check result */
-
1402  {
-
1403  handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
-
1404 
-
1405  return 1; /* return error */
-
1406  }
-
1407  prev &= ~(3 << 0); /* clear config */
-
1408  prev |= clk << 0; /* set config */
-
1409  res = a_pcf8563_iic_write(handle, PCF8563_REG_CLKOUT_CONTROL, prev); /* write clkout control */
-
1410  if (res != 0) /* check result */
-
1411  {
-
1412  handle->debug_print("pcf8563: write clkout control failed.\n"); /* write clkout control failed */
-
1413 
-
1414  return 1; /* return error */
-
1415  }
-
1416 
-
1417  return 0; /* success return 0 */
-
1418 }
-
1419 
- -
1432 {
-
1433  uint8_t res;
-
1434  uint8_t prev;
-
1435 
-
1436  if (handle == NULL) /* check handle */
-
1437  {
-
1438  return 2; /* return error */
-
1439  }
-
1440  if (handle->inited != 1) /* check handle initialization */
-
1441  {
-
1442  return 3; /* return error */
-
1443  }
-
1444 
-
1445  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
-
1446  if (res != 0) /* check result */
-
1447  {
-
1448  handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
-
1449 
-
1450  return 1; /* return error */
-
1451  }
-
1452  *clk = (pcf8563_clock_out_t)(prev & 0x03); /* get clock */
-
1453 
-
1454  return 0; /* success return 0 */
-
1455 }
-
1456 
- -
1469 {
-
1470  uint8_t res;
-
1471  uint8_t prev;
-
1472 
-
1473  if (handle == NULL) /* check handle */
-
1474  {
-
1475  return 2; /* return error */
-
1476  }
-
1477  if (handle->inited != 1) /* check handle initialization */
-
1478  {
-
1479  return 3; /* return error */
-
1480  }
-
1481 
-
1482  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
-
1483  if (res != 0) /* check result */
-
1484  {
-
1485  handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
-
1486 
-
1487  return 1; /* return error */
-
1488  }
-
1489  prev &= ~(1 << 7); /* clear config */
-
1490  prev |= enable << 7; /* set bool */
-
1491  res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER_CONTROL, prev); /* write timer control */
-
1492  if (res != 0) /* check result */
-
1493  {
-
1494  handle->debug_print("pcf8563: write timer control failed.\n"); /* write timer control failed */
-
1495 
-
1496  return 1; /* return error */
-
1497  }
-
1498 
-
1499  return 0; /* success return 0 */
-
1500 }
-
1501 
- -
1514 {
-
1515  uint8_t res;
-
1516  uint8_t prev;
-
1517 
-
1518  if (handle == NULL) /* check handle */
-
1519  {
-
1520  return 2; /* return error */
-
1521  }
-
1522  if (handle->inited != 1) /* check handle initialization */
-
1523  {
-
1524  return 3; /* return error */
-
1525  }
-
1526 
-
1527  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
-
1528  if (res != 0) /* check result */
-
1529  {
-
1530  handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
-
1531 
-
1532  return 1; /* return error */
-
1533  }
-
1534  *enable = (pcf8563_bool_t)((prev >> 7) & 0x01); /* get bool */
-
1535 
-
1536  return 0; /* success return 0 */
-
1537 }
-
1538 
- -
1551 {
-
1552  uint8_t res;
-
1553  uint8_t prev;
-
1554 
-
1555  if (handle == NULL) /* check handle */
-
1556  {
-
1557  return 2; /* return error */
-
1558  }
-
1559  if (handle->inited != 1) /* check handle initialization */
-
1560  {
-
1561  return 3; /* return error */
-
1562  }
-
1563 
-
1564  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
-
1565  if (res != 0) /* check result */
-
1566  {
-
1567  handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
-
1568 
-
1569  return 1; /* return error */
-
1570  }
-
1571  prev &= ~(3 << 0); /* clear config */
-
1572  prev |= freq << 0; /* set freq */
-
1573  res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER_CONTROL, prev); /* write timer control */
-
1574  if (res != 0) /* check result */
-
1575  {
-
1576  handle->debug_print("pcf8563: write timer control failed.\n"); /* write timer control failed */
-
1577 
-
1578  return 1; /* return error */
-
1579  }
-
1580 
-
1581  return 0; /* success return 0 */
-
1582 }
-
1583 
- -
1596 {
-
1597  uint8_t res;
-
1598  uint8_t prev;
-
1599 
-
1600  if (handle == NULL) /* check handle */
-
1601  {
-
1602  return 2; /* return error */
-
1603  }
-
1604  if (handle->inited != 1) /* check handle initialization */
-
1605  {
-
1606  return 3; /* return error */
-
1607  }
-
1608 
-
1609  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
-
1610  if (res != 0) /* check result */
-
1611  {
-
1612  handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
-
1613 
-
1614  return 1; /* return error */
-
1615  }
-
1616  *freq = (pcf8563_timer_freq_t)(prev & 0x03); /* get freq */
-
1617 
-
1618  return 0; /* success return 0 */
-
1619 }
-
1620 
-
1632 uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
-
1633 {
-
1634  uint8_t res;
-
1635  uint8_t prev;
-
1636 
-
1637  if (handle == NULL) /* check handle */
-
1638  {
-
1639  return 2; /* return error */
-
1640  }
-
1641  if (handle->inited != 1) /* check handle initialization */
-
1642  {
-
1643  return 3; /* return error */
-
1644  }
-
1645 
-
1646  prev = value; /* set value */
-
1647  res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER, prev); /* write timer */
-
1648  if (res != 0) /* check result */
-
1649  {
-
1650  handle->debug_print("pcf8563: write timer failed.\n"); /* write timer failed */
-
1651 
-
1652  return 1; /* return error */
-
1653  }
-
1654 
-
1655  return 0; /* success return 0 */
-
1656 }
-
1657 
-
1669 uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
-
1670 {
-
1671  uint8_t res;
-
1672 
-
1673  if (handle == NULL) /* check handle */
-
1674  {
-
1675  return 2; /* return error */
-
1676  }
-
1677  if (handle->inited != 1) /* check handle initialization */
-
1678  {
-
1679  return 3; /* return error */
-
1680  }
-
1681 
-
1682  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER, value, 1); /* read timer */
-
1683  if (res != 0) /* check result */
-
1684  {
-
1685  handle->debug_print("pcf8563: read timer failed.\n"); /* read timer failed */
-
1686 
-
1687  return 1; /* return error */
-
1688  }
-
1689 
-
1690  return 0; /* success return 0 */
-
1691 }
-
1692 
- -
1705 {
-
1706  uint8_t res;
-
1707  uint8_t prev;
-
1708 
-
1709  if (handle == NULL) /* check handle */
-
1710  {
-
1711  return 2; /* return error */
-
1712  }
-
1713  if (handle->inited != 1) /* check handle initialization */
-
1714  {
-
1715  return 3; /* return error */
-
1716  }
-
1717 
-
1718  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1719  if (res != 0) /* check result */
-
1720  {
-
1721  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1722 
-
1723  return 1; /* return error */
-
1724  }
-
1725  prev &= ~(1 << 0); /* clear config */
-
1726  prev |= enable << 0; /* set bool */
-
1727  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
-
1728  if (res != 0) /* check result */
-
1729  {
-
1730  handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
-
1731 
-
1732  return 1; /* return error */
-
1733  }
-
1734 
-
1735  return 0; /* success return 0 */
-
1736 }
-
1737 
- -
1750 {
-
1751  uint8_t res;
-
1752  uint8_t prev;
-
1753 
-
1754  if (handle == NULL) /* check handle */
-
1755  {
-
1756  return 2; /* return error */
-
1757  }
-
1758  if (handle->inited != 1) /* check handle initialization */
-
1759  {
-
1760  return 3; /* return error */
-
1761  }
-
1762 
-
1763  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1764  if (res != 0) /* check result */
-
1765  {
-
1766  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1767 
-
1768  return 1; /* return error */
-
1769  }
-
1770  *enable = (pcf8563_bool_t)((prev >> 0) & 0x01); /* get bool */
-
1771 
-
1772  return 0; /* success return 0 */
-
1773 }
-
1774 
- -
1787 {
-
1788  uint8_t res;
-
1789  uint8_t prev;
-
1790 
-
1791  if (handle == NULL) /* check handle */
-
1792  {
-
1793  return 2; /* return error */
-
1794  }
-
1795  if (handle->inited != 1) /* check handle initialization */
-
1796  {
-
1797  return 3; /* return error */
-
1798  }
-
1799 
-
1800  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1801  if (res != 0) /* check result */
-
1802  {
-
1803  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1804 
-
1805  return 1; /* return error */
-
1806  }
-
1807  prev &= ~(1 << 1); /* clear config */
-
1808  prev |= enable << 1; /* set bool */
-
1809  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
-
1810  if (res != 0) /* check result */
-
1811  {
-
1812  handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
-
1813 
-
1814  return 1; /* return error */
-
1815  }
-
1816 
-
1817  return 0; /* success return 0 */
-
1818 }
-
1819 
- -
1832 {
-
1833  uint8_t res;
-
1834  uint8_t prev;
-
1835 
-
1836  if (handle == NULL) /* check handle */
-
1837  {
-
1838  return 2; /* return error */
-
1839  }
-
1840  if (handle->inited != 1) /* check handle initialization */
-
1841  {
-
1842  return 3; /* return error */
-
1843  }
-
1844 
-
1845  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1846  if (res != 0) /* check result */
-
1847  {
-
1848  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1849 
-
1850  return 1; /* return error */
-
1851  }
-
1852  *enable = (pcf8563_bool_t)((prev >> 1) & 0x01); /* get bool */
-
1853 
-
1854  return 0; /* success return 0 */
-
1855 }
-
1856 
- -
1869 {
-
1870  uint8_t res;
-
1871  uint8_t prev;
-
1872 
-
1873  if (handle == NULL) /* check handle */
-
1874  {
-
1875  return 2; /* return error */
-
1876  }
-
1877  if (handle->inited != 1) /* check handle initialization */
-
1878  {
-
1879  return 3; /* return error */
-
1880  }
-
1881 
-
1882  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1883  if (res != 0) /* check result */
-
1884  {
-
1885  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1886 
-
1887  return 1; /* return error */
-
1888  }
-
1889  prev &= ~(1 << 4); /* clear config */
-
1890  prev |= mode << 4; /* set mode */
-
1891  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
-
1892  if (res != 0) /* check result */
-
1893  {
-
1894  handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
-
1895 
-
1896  return 1; /* return error */
-
1897  }
-
1898 
-
1899  return 0; /* success return 0 */
-
1900 }
-
1901 
- -
1914 {
-
1915  uint8_t res;
-
1916  uint8_t prev;
-
1917 
-
1918  if (handle == NULL) /* check handle */
-
1919  {
-
1920  return 2; /* return error */
-
1921  }
-
1922  if (handle->inited != 1) /* check handle initialization */
-
1923  {
-
1924  return 3; /* return error */
-
1925  }
-
1926 
-
1927  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1928  if (res != 0) /* check result */
-
1929  {
-
1930  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1931 
-
1932  return 1; /* return error */
-
1933  }
-
1934  *mode = (pcf8563_interrupt_mode_t)((prev >> 4) & 0x1); /* get mode */
-
1935 
-
1936  return 0; /* success return 0 */
-
1937 }
-
1938 
- -
1950 {
-
1951  uint8_t res;
-
1952  uint8_t prev;
-
1953  uint8_t prev2;
-
1954 
-
1955  if (handle == NULL) /* check handle */
-
1956  {
-
1957  return 2; /* return error */
-
1958  }
-
1959  if (handle->inited != 1) /* check handle initialization */
-
1960  {
-
1961  return 3; /* return error */
-
1962  }
-
1963 
-
1964  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
1965  if (res != 0) /* check result */
-
1966  {
-
1967  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
1968 
-
1969  return 1; /* return error */
-
1970  }
-
1971  prev2 = prev; /* save config */
-
1972  prev2 &= ~(3 << 2); /* clear settings */
-
1973  if (((prev >> 2) & 0x1) != 0) /* check timer */
-
1974  {
-
1975  if (handle->receive_callback != NULL) /* if not null */
-
1976  {
-
1977  handle->receive_callback(PCF8563_INTERRUPT_EVENT_TIMER); /* run the callback */
-
1978  }
-
1979  }
-
1980  if (((prev >> 3) & 0x01) != 0) /* check alarm */
-
1981  {
-
1982  if (handle->receive_callback != NULL) /* if not null */
-
1983  {
-
1984  handle->receive_callback(PCF8563_INTERRUPT_EVENT_ALARM); /* run the callback */
-
1985  }
-
1986  }
-
1987  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev2); /* write control status2 */
-
1988  if (res != 0) /* check result */
-
1989  {
-
1990  handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
-
1991 
-
1992  return 1; /* return error */
-
1993  }
-
1994 
-
1995  return 0; /* success return 0 */
-
1996 }
-
1997 
- -
2010 {
-
2011  uint8_t res;
-
2012  uint8_t prev;
-
2013 
-
2014  if (handle == NULL) /* check handle */
-
2015  {
-
2016  return 2; /* return error */
-
2017  }
-
2018  if (handle->inited != 1) /* check handle initialization */
-
2019  {
-
2020  return 3; /* return error */
-
2021  }
-
2022 
-
2023  res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
-
2024  if (res != 0) /* check result */
-
2025  {
-
2026  handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
-
2027 
-
2028  return 1; /* return error */
-
2029  }
-
2030  if (event == PCF8563_INTERRUPT_EVENT_TIMER) /* timer */
-
2031  {
-
2032  prev &= ~(1 << 2); /* clear bit */
-
2033  }
-
2034  else /* alarm */
-
2035  {
-
2036  prev &= ~(1 << 3); /* clear bit */
-
2037  }
-
2038  res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
-
2039  if (res != 0) /* check result */
-
2040  {
-
2041  handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
-
2042 
-
2043  return 1; /* return error */
-
2044  }
-
2045 
-
2046  return 0; /* success return 0 */
-
2047 }
-
2048 
- -
2060 {
-
2061  if (handle == NULL) /* check handle */
-
2062  {
-
2063  return 2; /* return error */
-
2064  }
-
2065  if (handle->debug_print == NULL) /* check debug_print */
-
2066  {
-
2067  return 3; /* return error */
-
2068  }
-
2069  if (handle->iic_init == NULL) /* check iic_init */
-
2070  {
-
2071  handle->debug_print("pcf8563: iic_init is null.\n"); /* iic_init is null */
-
2072 
-
2073  return 3; /* return error */
-
2074  }
-
2075  if (handle->iic_deinit == NULL) /* check iic_deinit */
-
2076  {
-
2077  handle->debug_print("pcf8563: iic_deinit is null.\n"); /* iic_deinit is null */
-
2078 
-
2079  return 3; /* return error */
-
2080  }
-
2081  if (handle->iic_write == NULL) /* check iic_write */
-
2082  {
-
2083  handle->debug_print("pcf8563: iic_write is null.\n"); /* iic_write is null */
-
2084 
-
2085  return 3; /* return error */
-
2086  }
-
2087  if (handle->iic_read == NULL) /* check iic_read */
-
2088  {
-
2089  handle->debug_print("pcf8563: iic_read is null.\n"); /* iic_read is null */
-
2090 
-
2091  return 3; /* return error */
-
2092  }
-
2093  if (handle->delay_ms == NULL) /* check delay_ms */
-
2094  {
-
2095  handle->debug_print("pcf8563: delay_ms is null.\n"); /* delay_ms is null */
-
2096 
-
2097  return 3; /* return error */
-
2098  }
-
2099  if (handle->receive_callback == NULL) /* check receive_callback */
-
2100  {
-
2101  handle->debug_print("pcf8563: receive_callback is null.\n"); /* receive_callback is null */
-
2102 
-
2103  return 3; /* return error */
-
2104  }
-
2105 
-
2106  if (handle->iic_init() != 0) /* iic init */
-
2107  {
-
2108  handle->debug_print("pcf8563: iic init failed.\n"); /* iic init failed */
-
2109 
-
2110  return 1; /* return error */
-
2111  }
-
2112  handle->inited = 1; /* flag finish initialization */
-
2113 
-
2114  return 0; /* success return 0 */
-
2115 }
-
2116 
- -
2128 {
-
2129  if (handle == NULL) /* check handle */
-
2130  {
-
2131  return 2; /* return error */
-
2132  }
-
2133  if (handle->inited != 1) /* check handle initialization */
-
2134  {
-
2135  return 3; /* return error */
-
2136  }
-
2137 
-
2138  if (handle->iic_deinit() != 0) /* iic deinit */
-
2139  {
-
2140  handle->debug_print("pcf8563: iic deinit failed.\n"); /* iic deinit failed */
-
2141 
-
2142  return 1; /* return error */
-
2143  }
-
2144  handle->inited = 0; /* flag close */
-
2145 
-
2146  return 0; /* success return 0 */
-
2147 }
-
2148 
-
2162 uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
-
2163 {
-
2164  if (handle == NULL) /* check handle */
-
2165  {
-
2166  return 2; /* return error */
-
2167  }
-
2168  if (handle->inited != 1) /* check handle initialization */
-
2169  {
-
2170  return 3; /* return error */
-
2171  }
-
2172 
-
2173  if (handle->iic_write(PCF8563_ADDRESS, reg, buf, len) != 0) /* write data */
-
2174  {
-
2175  return 1; /* return error */
-
2176  }
-
2177 
-
2178  return 0; /* success return 0 */
-
2179 }
-
2180 
-
2194 uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
-
2195 {
-
2196  if (handle == NULL) /* check handle */
-
2197  {
-
2198  return 2; /* return error */
-
2199  }
-
2200  if (handle->inited != 1) /* check handle initialization */
-
2201  {
-
2202  return 3; /* return error */
-
2203  }
-
2204 
-
2205  if (handle->iic_read(PCF8563_ADDRESS, reg, buf, len) != 0) /* read data */
-
2206  {
-
2207  return 1; /* return error */
-
2208  }
-
2209 
-
2210  return 0; /* success return 0 */
-
2211 }
-
2212 
- -
2222 {
-
2223  if (info == NULL) /* check handle */
-
2224  {
-
2225  return 2; /* return error */
-
2226  }
-
2227 
-
2228  memset(info, 0, sizeof(pcf8563_info_t)); /* initialize pcf8563 info structure */
-
2229  strncpy(info->chip_name, CHIP_NAME, 32); /* copy chip name */
-
2230  strncpy(info->manufacturer_name, MANUFACTURER_NAME, 32); /* copy manufacturer name */
-
2231  strncpy(info->interface, "IIC", 8); /* copy interface name */
-
2232  info->supply_voltage_min_v = SUPPLY_VOLTAGE_MIN; /* set minimal supply voltage */
-
2233  info->supply_voltage_max_v = SUPPLY_VOLTAGE_MAX; /* set maximum supply voltage */
-
2234  info->max_current_ma = MAX_CURRENT; /* set maximum current */
-
2235  info->temperature_max = TEMPERATURE_MAX; /* set minimal temperature */
-
2236  info->temperature_min = TEMPERATURE_MIN; /* set maximum temperature */
-
2237  info->driver_version = DRIVER_VERSION; /* set driver version */
-
2238 
-
2239  return 0; /* success return 0 */
-
2240 }
-
#define PCF8563_REG_MINUTE_ALARM
-
#define PCF8563_REG_TIMER
-
#define PCF8563_REG_DAY_ALARM
-
#define MAX_CURRENT
-
#define PCF8563_ADDRESS
chip address definition
-
#define PCF8563_REG_CONTROL_STATUS2
-
#define SUPPLY_VOLTAGE_MAX
-
#define PCF8563_REG_MONTH
-
#define PCF8563_REG_YEAR
-
#define TEMPERATURE_MAX
-
#define PCF8563_REG_MINUTE
-
#define PCF8563_REG_CONTROL_STATUS1
chip register definition
-
#define MANUFACTURER_NAME
-
#define TEMPERATURE_MIN
-
#define SUPPLY_VOLTAGE_MIN
-
#define PCF8563_REG_SECOND
-
#define PCF8563_REG_HOUR_ALARM
-
#define PCF8563_REG_HOUR
-
#define PCF8563_REG_DAY
-
#define PCF8563_REG_TIMER_CONTROL
-
#define PCF8563_REG_WEEK
-
#define CHIP_NAME
chip information definition
-
#define PCF8563_REG_CLKOUT_CONTROL
-
#define DRIVER_VERSION
-
#define PCF8563_REG_WEEK_ALARM
+Go to the documentation of this file.
1
+
36
+
37#include "driver_pcf8563.h"
+
38
+
42#define CHIP_NAME "NXP PCF8563"
+
43#define MANUFACTURER_NAME "NXP"
+
44#define SUPPLY_VOLTAGE_MIN 1.9f
+
45#define SUPPLY_VOLTAGE_MAX 5.5f
+
46#define MAX_CURRENT 0.80f
+
47#define TEMPERATURE_MIN -40.0f
+
48#define TEMPERATURE_MAX 85.0f
+
49#define DRIVER_VERSION 1000
+
50
+
54#define PCF8563_REG_CONTROL_STATUS1 0x00
+
55#define PCF8563_REG_CONTROL_STATUS2 0x01
+
56#define PCF8563_REG_SECOND 0x02
+
57#define PCF8563_REG_MINUTE 0x03
+
58#define PCF8563_REG_HOUR 0x04
+
59#define PCF8563_REG_DAY 0x05
+
60#define PCF8563_REG_WEEK 0x06
+
61#define PCF8563_REG_MONTH 0x07
+
62#define PCF8563_REG_YEAR 0x08
+
63#define PCF8563_REG_MINUTE_ALARM 0x09
+
64#define PCF8563_REG_HOUR_ALARM 0x0A
+
65#define PCF8563_REG_DAY_ALARM 0x0B
+
66#define PCF8563_REG_WEEK_ALARM 0x0C
+
67#define PCF8563_REG_CLKOUT_CONTROL 0x0D
+
68#define PCF8563_REG_TIMER_CONTROL 0x0E
+
69#define PCF8563_REG_TIMER 0x0F
+
70
+
74#define PCF8563_ADDRESS 0xA2
+
75
+
86static uint8_t a_pcf8563_iic_write(pcf8563_handle_t *handle, uint8_t reg, uint8_t data)
+
87{
+
88 if (handle->iic_write(PCF8563_ADDRESS, reg, &data, 1) != 0) /* write data */
+
89 {
+
90 return 1; /* return error */
+
91 }
+
92
+
93 return 0; /* success return 0 */
+
94}
+
95
+
107static uint8_t a_pcf8563_iic_multiple_read(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint8_t len)
+
108{
+
109 if (handle->iic_read(PCF8563_ADDRESS, reg, buf, len) != 0) /* read data */
+
110 {
+
111 return 1; /* return error */
+
112 }
+
113
+
114 return 0; /* success return 0 */
+
115}
+
116
+
123static uint8_t a_pcf8563_hex2bcd(uint8_t val)
+
124{
+
125 uint8_t i, j, k;
+
126
+
127 i = val / 10; /* get tens place */
+
128 j = val % 10; /* get ones place */
+
129 k = j + (i << 4); /* set bcd */
+
130
+
131 return k; /* return bcd */
+
132}
+
133
+
140static uint8_t a_pcf8563_bcd2hex(uint8_t val)
+
141{
+
142 uint8_t temp;
+
143
+
144 temp = val & 0x0F; /* get ones place */
+
145 val = (val >> 4) & 0x0F; /* get tens place */
+
146 val = val * 10; /* set tens place */
+
147 temp = temp + val; /* get hex */
+
148
+
149 return temp; /* return hex */
+
150}
+
151
+
+ +
165{
+
166 uint8_t res;
+
167 uint16_t year;
+
168
+
169 if (handle == NULL) /* check handle */
+
170 {
+
171 return 2; /* return error */
+
172 }
+
173 if (handle->inited != 1) /* check handle initialization */
+
174 {
+
175 return 3; /* return error */
+
176 }
+
177 if (t == NULL) /* check time */
+
178 {
+
179 handle->debug_print("pcf8563: time is null.\n"); /* time is null */
+
180
+
181 return 2; /* return error */
+
182 }
+
183
+
184 if ((t->year < 2000) || (t->year > 2199)) /* check year */
+
185 {
+
186 handle->debug_print("pcf8563: year can't be over 2199 or less than 2000.\n"); /* year can't be over 2199 or less than 2000 */
+
187
+
188 return 4; /* return error */
+
189 }
+
190 if ((t->month == 0) || (t->month > 12)) /* check month */
+
191 {
+
192 handle->debug_print("pcf8563: month can't be zero or over than 12.\n"); /* month can't be zero or over than 12 */
+
193
+
194 return 4; /* return error */
+
195 }
+
196 if (t->week > 6) /* check week */
+
197 {
+
198 handle->debug_print("pcf8563: week can't be over than 6.\n"); /* week can't be over than 6 */
+
199
+
200 return 4; /* return error */
+
201 }
+
202 if ((t->date == 0) || (t->date > 31)) /* check data */
+
203 {
+
204 handle->debug_print("pcf8563: date can't be zero or over than 31.\n"); /* date can't be zero or over than 31 */
+
205
+
206 return 4; /* return error */
+
207 }
+
208 if (t->hour > 23) /* check hour */
+
209 {
+
210 handle->debug_print("pcf8563: hour can't be over than 23.\n"); /* hour can't be over than 23 */
+
211
+
212 return 4; /* return error */
+
213 }
+
214 if (t->minute > 59) /* check minute */
+
215 {
+
216 handle->debug_print("pcf8563: minute can't be over than 59.\n"); /* minute can't be over than 59 */
+
217
+
218 return 4; /* return error */
+
219 }
+
220 if (t->second > 59) /* check second */
+
221 {
+
222 handle->debug_print("pcf8563: second can't be over than 59.\n"); /* second can't be over than 59 */
+
223
+
224 return 4; /* return error */
+
225 }
+
226 res = a_pcf8563_iic_write(handle, PCF8563_REG_SECOND, a_pcf8563_hex2bcd(t->second)); /* write second */
+
227 if (res != 0) /* check result */
+
228 {
+
229 handle->debug_print("pcf8563: write second failed.\n"); /* write second failed */
+
230
+
231 return 1; /* return error */
+
232 }
+
233 res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE, a_pcf8563_hex2bcd(t->minute)); /* write minute */
+
234 if (res != 0) /* check result */
+
235 {
+
236 handle->debug_print("pcf8563: write minute failed.\n"); /* write minute failed */
+
237
+
238 return 1; /* return error */
+
239 }
+
240 res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR, a_pcf8563_hex2bcd(t->hour)); /* write hour */
+
241 if (res != 0) /* check result */
+
242 {
+
243 handle->debug_print("pcf8563: write hour failed.\n"); /* write hour failed */
+
244
+
245 return 1; /* return error */
+
246 }
+
247 res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK, a_pcf8563_hex2bcd(t->week)); /* write week */
+
248 if (res != 0) /* check result */
+
249 {
+
250 handle->debug_print("pcf8563: write week failed.\n"); /* write week failed */
+
251
+
252 return 1; /* return error */
+
253 }
+
254 res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY, a_pcf8563_hex2bcd(t->date)); /* write day */
+
255 if (res != 0) /* check result */
+
256 {
+
257 handle->debug_print("pcf8563: write day failed.\n"); /* write day failed */
+
258
+
259 return 1; /* return error */
+
260 }
+
261 year = t->year - 2000; /* convert year */
+
262 if (year >= 100) /* check year */
+
263 {
+
264 res = a_pcf8563_iic_write(handle, PCF8563_REG_MONTH, a_pcf8563_hex2bcd(t->month) | (1 << 7)); /* write month and century */
+
265 if (res != 0) /* check result */
+
266 {
+
267 handle->debug_print("pcf8563: write century and month failed.\n"); /* write century and month failed */
+
268
+
269 return 1; /* return error */
+
270 }
+
271 year = year - 100; /* year - 100 */
+
272 res = a_pcf8563_iic_write(handle, PCF8563_REG_YEAR, a_pcf8563_hex2bcd((uint8_t)year)); /* write year */
+
273 if (res != 0) /* check result */
+
274 {
+
275 handle->debug_print("pcf8563: write year failed.\n"); /* write year failed */
+
276
+
277 return 1; /* return error */
+
278 }
+
279 }
+
280 else
+
281 {
+
282 res = a_pcf8563_iic_write(handle, PCF8563_REG_MONTH, a_pcf8563_hex2bcd(t->month)); /* write month and century */
+
283 if (res != 0) /* check result */
+
284 {
+
285 handle->debug_print("pcf8563: write century and month failed.\n"); /* write century and month failed */
+
286
+
287 return 1; /* return error */
+
288 }
+
289 res = a_pcf8563_iic_write(handle, PCF8563_REG_YEAR, a_pcf8563_hex2bcd((uint8_t)year)); /* write year */
+
290 if (res != 0) /* check result */
+
291 {
+
292 handle->debug_print("pcf8563: write year failed.\n"); /* write year failed */
+
293
+
294 return 1; /* return error */
+
295 }
+
296 }
+
297
+
298 return 0; /* success return 0 */
+
299}
+
+
300
+
+ +
314{
+
315 uint8_t res;
+
316 uint8_t buf[7];
+
317
+
318 if (handle == NULL) /* check handle */
+
319 {
+
320 return 2; /* return error */
+
321 }
+
322 if (handle->inited != 1) /* check handle initialization */
+
323 {
+
324 return 3; /* return error */
+
325 }
+
326 if (t == NULL) /* check time */
+
327 {
+
328 handle->debug_print("pcf8563: time is null.\n"); /* time is null */
+
329
+
330 return 2; /* return error */
+
331 }
+
332
+
333 memset(buf, 0, sizeof(uint8_t) * 7); /* clear the buffer */
+
334 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_SECOND, (uint8_t *)buf, 7); /* multiple_read */
+
335 if (res != 0) /* check result */
+
336 {
+
337 handle->debug_print("pcf8563: multiple read failed.\n"); /* multiple read failed */
+
338
+
339 return 1; /* return error */
+
340 }
+
341 if (((buf[0] >> 7) & 0x01) != 0) /* check bit */
+
342 {
+
343 handle->debug_print("pcf8563: clock integrity is not guaranteed.\n"); /* clock integrity is not guaranteed */
+
344
+
345 return 4; /* return error */
+
346 }
+
347 t->year = a_pcf8563_bcd2hex(buf[6]) + 2000; /* get year */
+
348 if (((buf[5] >> 7) & 0x01) != 0) /* check century */
+
349 {
+
350 t->year += 100; /* add 100 */
+
351 buf[5] &= ~(1 << 7); /* clear bit */
+
352 }
+
353 t->month = a_pcf8563_bcd2hex(buf[5] & 0x1F); /* get month */
+
354 t->week = a_pcf8563_bcd2hex(buf[4] & 0x7); /* get week */
+
355 t->date = a_pcf8563_bcd2hex(buf[3] & 0x3F); /* get date */
+
356 t->hour = a_pcf8563_bcd2hex(buf[2] & 0x3F); /* get hour */
+
357 t->minute = a_pcf8563_bcd2hex(buf[1] & 0x7F); /* get minute */
+
358 t->second = a_pcf8563_bcd2hex(buf[0] & 0x7F); /* get second */
+
359
+
360 return 0; /* success return 0 */
+
361}
+
+
362
+
+ +
375{
+
376 uint8_t res;
+
377 uint8_t prev;
+
378
+
379 if (handle == NULL) /* check handle */
+
380 {
+
381 return 2; /* return error */
+
382 }
+
383 if (handle->inited != 1) /* check handle initialization */
+
384 {
+
385 return 3; /* return error */
+
386 }
+
387
+
388 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
389 if (res != 0) /* check result */
+
390 {
+
391 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
392
+
393 return 1; /* return error */
+
394 }
+
395 prev &= ~(1 << 7); /* clear config */
+
396 prev |= enable << 7; /* set bool */
+
397 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
+
398 if (res != 0) /* check result */
+
399 {
+
400 handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
+
401
+
402 return 1; /* return error */
+
403 }
+
404
+
405 return 0; /* success return 0 */
+
406}
+
+
407
+
+ +
420{
+
421 uint8_t res;
+
422 uint8_t prev;
+
423
+
424 if (handle == NULL) /* check handle */
+
425 {
+
426 return 2; /* return error */
+
427 }
+
428 if (handle->inited != 1) /* check handle initialization */
+
429 {
+
430 return 3; /* return error */
+
431 }
+
432
+
433 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
434 if (res != 0) /* check result */
+
435 {
+
436 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
437
+
438 return 1; /* return error */
+
439 }
+
440 *enable = (pcf8563_bool_t)(((prev >> 7) & 0x01)); /* get enable */
+
441
+
442 return 0; /* success return 0 */
+
443}
+
+
444
+
+ +
457{
+
458 uint8_t res;
+
459 uint8_t prev;
+
460
+
461 if (handle == NULL) /* check handle */
+
462 {
+
463 return 2; /* return error */
+
464 }
+
465 if (handle->inited != 1) /* check handle initialization */
+
466 {
+
467 return 3; /* return error */
+
468 }
+
469
+
470 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
471 if (res != 0) /* check result */
+
472 {
+
473 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
474
+
475 return 1; /* return error */
+
476 }
+
477 prev &= ~(1 << 5); /* clear config */
+
478 prev |= enable << 5; /* set bool */
+
479 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
+
480 if (res != 0) /* check result */
+
481 {
+
482 handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
+
483
+
484 return 1; /* return error */
+
485 }
+
486
+
487 return 0; /* success return 0 */
+
488}
+
+
489
+
+ +
502{
+
503 uint8_t res;
+
504 uint8_t prev;
+
505
+
506 if (handle == NULL) /* check handle */
+
507 {
+
508 return 2; /* return error */
+
509 }
+
510 if (handle->inited != 1) /* check handle initialization */
+
511 {
+
512 return 3; /* return error */
+
513 }
+
514
+
515 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
516 if (res != 0) /* check result */
+
517 {
+
518 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
519
+
520 return 1; /* return error */
+
521 }
+
522 *enable = (pcf8563_bool_t)(((prev >> 5) & 0x01)); /* get enable */
+
523
+
524 return 0; /* success return 0 */
+
525}
+
+
526
+
+ +
539{
+
540 uint8_t res;
+
541 uint8_t prev;
+
542
+
543 if (handle == NULL) /* check handle */
+
544 {
+
545 return 2; /* return error */
+
546 }
+
547 if (handle->inited != 1) /* check handle initialization */
+
548 {
+
549 return 3; /* return error */
+
550 }
+
551
+
552 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
553 if (res != 0) /* check result */
+
554 {
+
555 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
556
+
557 return 1; /* return error */
+
558 }
+
559 prev &= ~(1 << 3); /* clear config */
+
560 prev |= enable << 3; /* set bool */
+
561 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS1, prev); /* write control status1 */
+
562 if (res != 0) /* check result */
+
563 {
+
564 handle->debug_print("pcf8563: write control status1 failed.\n"); /* write control status1 failed */
+
565
+
566 return 1; /* return error */
+
567 }
+
568
+
569 return 0; /* success return 0 */
+
570}
+
+
571
+
+ +
584{
+
585 uint8_t res;
+
586 uint8_t prev;
+
587
+
588 if (handle == NULL) /* check handle */
+
589 {
+
590 return 2; /* return error */
+
591 }
+
592 if (handle->inited != 1) /* check handle initialization */
+
593 {
+
594 return 3; /* return error */
+
595 }
+
596
+
597 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS1, &prev, 1); /* read control status1 */
+
598 if (res != 0) /* check result */
+
599 {
+
600 handle->debug_print("pcf8563: read control status1 failed.\n"); /* read control status1 failed */
+
601
+
602 return 1; /* return error */
+
603 }
+
604 *enable = (pcf8563_bool_t)(((prev >> 3) & 0x01)); /* get enable */
+
605
+
606 return 0; /* success return 0 */
+
607}
+
+
608
+
+ +
621{
+
622 uint8_t res;
+
623 uint8_t prev;
+
624
+
625 if (handle == NULL) /* check handle */
+
626 {
+
627 return 2; /* return error */
+
628 }
+
629 if (handle->inited != 1) /* check handle initialization */
+
630 {
+
631 return 3; /* return error */
+
632 }
+
633
+
634 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
+
635 if (res != 0) /* check result */
+
636 {
+
637 handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
+
638
+
639 return 1; /* return error */
+
640 }
+
641 prev &= ~(1 << 7); /* clear config */
+
642 prev |= (!enable) << 7; /* set bool */
+
643 res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE_ALARM, prev); /* write minute alarm */
+
644 if (res != 0) /* check result */
+
645 {
+
646 handle->debug_print("pcf8563: write minute alarm failed.\n"); /* write minute alarm failed */
+
647
+
648 return 1; /* return error */
+
649 }
+
650
+
651 return 0; /* success return 0 */
+
652}
+
+
653
+
+ +
666{
+
667 uint8_t res;
+
668 uint8_t prev;
+
669
+
670 if (handle == NULL) /* check handle */
+
671 {
+
672 return 2; /* return error */
+
673 }
+
674 if (handle->inited != 1) /* check handle initialization */
+
675 {
+
676 return 3; /* return error */
+
677 }
+
678
+
679 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
+
680 if (res != 0) /* check result */
+
681 {
+
682 handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
+
683
+
684 return 1; /* return error */
+
685 }
+
686 *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
+
687
+
688 return 0; /* success return 0 */
+
689}
+
+
690
+
+
703uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
+
704{
+
705 uint8_t res;
+
706 uint8_t prev;
+
707
+
708 if (handle == NULL) /* check handle */
+
709 {
+
710 return 2; /* return error */
+
711 }
+
712 if (handle->inited != 1) /* check handle initialization */
+
713 {
+
714 return 3; /* return error */
+
715 }
+
716 if (minute > 59) /* check minute */
+
717 {
+
718 handle->debug_print("pcf8563: minute can't be over than 59.\n"); /* minute can't be over than 59 */
+
719
+
720 return 4; /* return error */
+
721 }
+
722
+
723 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
+
724 if (res != 0) /* check result */
+
725 {
+
726 handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
+
727
+
728 return 1; /* return error */
+
729 }
+
730 prev &= ~(0x7F << 0); /* clear config */
+
731 prev |= a_pcf8563_hex2bcd(minute); /* set config */
+
732 res = a_pcf8563_iic_write(handle, PCF8563_REG_MINUTE_ALARM, prev); /* write minute alarm */
+
733 if (res != 0) /* check result */
+
734 {
+
735 handle->debug_print("pcf8563: write minute alarm failed.\n"); /* write minute alarm failed */
+
736
+
737 return 1; /* return error */
+
738 }
+
739
+
740 return 0; /* success return 0 */
+
741}
+
+
742
+
+
754uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
+
755{
+
756 uint8_t res;
+
757 uint8_t prev;
+
758
+
759 if (handle == NULL) /* check handle */
+
760 {
+
761 return 2; /* return error */
+
762 }
+
763 if (handle->inited != 1) /* check handle initialization */
+
764 {
+
765 return 3; /* return error */
+
766 }
+
767
+
768 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_MINUTE_ALARM, &prev, 1); /* read minute alarm */
+
769 if (res != 0) /* check result */
+
770 {
+
771 handle->debug_print("pcf8563: read minute alarm failed.\n"); /* read minute alarm failed */
+
772
+
773 return 1; /* return error */
+
774 }
+
775 *minute = a_pcf8563_bcd2hex(prev & 0x7F); /* convert */
+
776
+
777 return 0; /* success return 0 */
+
778}
+
+
779
+
+ +
792{
+
793 uint8_t res;
+
794 uint8_t prev;
+
795
+
796 if (handle == NULL) /* check handle */
+
797 {
+
798 return 2; /* return error */
+
799 }
+
800 if (handle->inited != 1) /* check handle initialization */
+
801 {
+
802 return 3; /* return error */
+
803 }
+
804
+
805 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
+
806 if (res != 0) /* check result */
+
807 {
+
808 handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
+
809
+
810 return 1; /* return error */
+
811 }
+
812 prev &= ~(1 << 7); /* clear config */
+
813 prev |= (!enable) << 7; /* set bool */
+
814 res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR_ALARM, prev); /* write hour alarm */
+
815 if (res != 0) /* check result */
+
816 {
+
817 handle->debug_print("pcf8563: write hour alarm failed.\n"); /* write hour alarm failed */
+
818
+
819 return 1; /* return error */
+
820 }
+
821
+
822 return 0; /* success return 0 */
+
823}
+
+
824
+
+ +
837{
+
838 uint8_t res;
+
839 uint8_t prev;
+
840
+
841 if (handle == NULL) /* check handle */
+
842 {
+
843 return 2; /* return error */
+
844 }
+
845 if (handle->inited != 1) /* check handle initialization */
+
846 {
+
847 return 3; /* return error */
+
848 }
+
849
+
850 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
+
851 if (res != 0) /* check result */
+
852 {
+
853 handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
+
854
+
855 return 1; /* return error */
+
856 }
+
857 *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
+
858
+
859 return 0; /* success return 0 */
+
860}
+
+
861
+
+
874uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
+
875{
+
876 uint8_t res;
+
877 uint8_t prev;
+
878
+
879 if (handle == NULL) /* check handle */
+
880 {
+
881 return 2; /* return error */
+
882 }
+
883 if (handle->inited != 1) /* check handle initialization */
+
884 {
+
885 return 3; /* return error */
+
886 }
+
887 if (hour > 23) /* check hour */
+
888 {
+
889 handle->debug_print("pcf8563: hour can't be over than 23.\n"); /* hour can't be over than 23 */
+
890
+
891 return 4; /* return error */
+
892 }
+
893
+
894 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
+
895 if (res != 0) /* check result */
+
896 {
+
897 handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
+
898
+
899 return 1; /* return error */
+
900 }
+
901 prev &= ~(0x3F << 0); /* clear config */
+
902 prev |= a_pcf8563_hex2bcd(hour); /* set config */
+
903 res = a_pcf8563_iic_write(handle, PCF8563_REG_HOUR_ALARM, prev); /* write hour alarm */
+
904 if (res != 0) /* check result */
+
905 {
+
906 handle->debug_print("pcf8563: write hour alarm failed.\n"); /* write hour alarm failed */
+
907
+
908 return 1; /* return error */
+
909 }
+
910
+
911 return 0; /* success return 0 */
+
912}
+
+
913
+
+
925uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
+
926{
+
927 uint8_t res;
+
928 uint8_t prev;
+
929
+
930 if (handle == NULL) /* check handle */
+
931 {
+
932 return 2; /* return error */
+
933 }
+
934 if (handle->inited != 1) /* check handle initialization */
+
935 {
+
936 return 3; /* return error */
+
937 }
+
938
+
939 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_HOUR_ALARM, &prev, 1); /* read hour alarm */
+
940 if (res != 0) /* check result */
+
941 {
+
942 handle->debug_print("pcf8563: read hour alarm failed.\n"); /* read hour alarm failed */
+
943
+
944 return 1; /* return error */
+
945 }
+
946 *hour = a_pcf8563_bcd2hex(prev & 0x3F); /* convert */
+
947
+
948 return 0; /* success return 0 */
+
949}
+
+
950
+
+ +
963{
+
964 uint8_t res;
+
965 uint8_t prev;
+
966
+
967 if (handle == NULL) /* check handle */
+
968 {
+
969 return 2; /* return error */
+
970 }
+
971 if (handle->inited != 1) /* check handle initialization */
+
972 {
+
973 return 3; /* return error */
+
974 }
+
975
+
976 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
+
977 if (res != 0) /* check result */
+
978 {
+
979 handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
+
980
+
981 return 1; /* return error */
+
982 }
+
983 prev &= ~(1 << 7); /* clear config */
+
984 prev |= (!enable) << 7; /* set bool */
+
985 res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY_ALARM, prev); /* write day alarm */
+
986 if (res != 0) /* check result */
+
987 {
+
988 handle->debug_print("pcf8563: write day alarm failed.\n"); /* write day alarm failed */
+
989
+
990 return 1; /* return error */
+
991 }
+
992
+
993 return 0; /* success return 0 */
+
994}
+
+
995
+
+ +
1008{
+
1009 uint8_t res;
+
1010 uint8_t prev;
+
1011
+
1012 if (handle == NULL) /* check handle */
+
1013 {
+
1014 return 2; /* return error */
+
1015 }
+
1016 if (handle->inited != 1) /* check handle initialization */
+
1017 {
+
1018 return 3; /* return error */
+
1019 }
+
1020
+
1021 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
+
1022 if (res != 0) /* check result */
+
1023 {
+
1024 handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
+
1025
+
1026 return 1; /* return error */
+
1027 }
+
1028 *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
+
1029
+
1030 return 0; /* success return 0 */
+
1031}
+
+
1032
+
+
1045uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
+
1046{
+
1047 uint8_t res;
+
1048 uint8_t prev;
+
1049
+
1050 if (handle == NULL) /* check handle */
+
1051 {
+
1052 return 2; /* return error */
+
1053 }
+
1054 if (handle->inited != 1) /* check handle initialization */
+
1055 {
+
1056 return 3; /* return error */
+
1057 }
+
1058 if ((day == 0) || (day > 31)) /* check day */
+
1059 {
+
1060 handle->debug_print("pcf8563: day can't be zero or over than 31.\n"); /* day can't be zero or over than 31 */
+
1061
+
1062 return 4; /* return error */
+
1063 }
+
1064
+
1065 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
+
1066 if (res != 0) /* check result */
+
1067 {
+
1068 handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
+
1069
+
1070 return 1; /* return error */
+
1071 }
+
1072 prev &= ~(0x3F << 0); /* clear config */
+
1073 prev |= a_pcf8563_hex2bcd(day); /* set config */
+
1074 res = a_pcf8563_iic_write(handle, PCF8563_REG_DAY_ALARM, prev); /* write day alarm */
+
1075 if (res != 0) /* check result */
+
1076 {
+
1077 handle->debug_print("pcf8563: write day alarm failed.\n"); /* write day alarm failed */
+
1078
+
1079 return 1; /* return error */
+
1080 }
+
1081
+
1082 return 0; /* success return 0 */
+
1083}
+
+
1084
+
+
1096uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
+
1097{
+
1098 uint8_t res;
+
1099 uint8_t prev;
+
1100
+
1101 if (handle == NULL) /* check handle */
+
1102 {
+
1103 return 2; /* return error */
+
1104 }
+
1105 if (handle->inited != 1) /* check handle initialization */
+
1106 {
+
1107 return 3; /* return error */
+
1108 }
+
1109
+
1110 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_DAY_ALARM, &prev, 1); /* read day alarm */
+
1111 if (res != 0) /* check result */
+
1112 {
+
1113 handle->debug_print("pcf8563: read day alarm failed.\n"); /* read day alarm failed */
+
1114
+
1115 return 1; /* return error */
+
1116 }
+
1117 *day = a_pcf8563_bcd2hex(prev & 0x3F); /* convert */
+
1118
+
1119 return 0; /* success return 0 */
+
1120}
+
+
1121
+
+ +
1134{
+
1135 uint8_t res;
+
1136 uint8_t prev;
+
1137
+
1138 if (handle == NULL) /* check handle */
+
1139 {
+
1140 return 2; /* return error */
+
1141 }
+
1142 if (handle->inited != 1) /* check handle initialization */
+
1143 {
+
1144 return 3; /* return error */
+
1145 }
+
1146
+
1147 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
+
1148 if (res != 0) /* check result */
+
1149 {
+
1150 handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
+
1151
+
1152 return 1; /* return error */
+
1153 }
+
1154 prev &= ~(1 << 7); /* clear config */
+
1155 prev |= (!enable) << 7; /* set bool */
+
1156 res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK_ALARM, prev); /* write week alarm */
+
1157 if (res != 0) /* check result */
+
1158 {
+
1159 handle->debug_print("pcf8563: write week alarm failed.\n"); /* write week alarm failed */
+
1160
+
1161 return 1; /* return error */
+
1162 }
+
1163
+
1164 return 0; /* success return 0 */
+
1165}
+
+
1166
+
+ +
1179{
+
1180 uint8_t res;
+
1181 uint8_t prev;
+
1182
+
1183 if (handle == NULL) /* check handle */
+
1184 {
+
1185 return 2; /* return error */
+
1186 }
+
1187 if (handle->inited != 1) /* check handle initialization */
+
1188 {
+
1189 return 3; /* return error */
+
1190 }
+
1191
+
1192 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
+
1193 if (res != 0) /* check result */
+
1194 {
+
1195 handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
+
1196
+
1197 return 1; /* return error */
+
1198 }
+
1199 *enable = (pcf8563_bool_t)(!((prev >> 7) & 0x01)); /* get bool */
+
1200
+
1201 return 0; /* success return 0 */
+
1202}
+
+
1203
+
+
1216uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
+
1217{
+
1218 uint8_t res;
+
1219 uint8_t prev;
+
1220
+
1221 if (handle == NULL) /* check handle */
+
1222 {
+
1223 return 2; /* return error */
+
1224 }
+
1225 if (handle->inited != 1) /* check handle initialization */
+
1226 {
+
1227 return 3; /* return error */
+
1228 }
+
1229 if (week > 6) /* check week */
+
1230 {
+
1231 handle->debug_print("pcf8563: week can't be over than 6.\n"); /* week can't be over than 6 */
+
1232
+
1233 return 4; /* return error */
+
1234 }
+
1235
+
1236 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
+
1237 if (res != 0) /* check result */
+
1238 {
+
1239 handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
+
1240
+
1241 return 1; /* return error */
+
1242 }
+
1243 prev &= ~(0x7 << 0); /* clear config */
+
1244 prev |= a_pcf8563_hex2bcd(week); /* set config */
+
1245 res = a_pcf8563_iic_write(handle, PCF8563_REG_WEEK_ALARM, prev); /* write week alarm */
+
1246 if (res != 0) /* check result */
+
1247 {
+
1248 handle->debug_print("pcf8563: write week alarm failed.\n"); /* write week alarm failed */
+
1249
+
1250 return 1; /* return error */
+
1251 }
+
1252
+
1253 return 0; /* success return 0 */
+
1254}
+
+
1255
+
+
1267uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
+
1268{
+
1269 uint8_t res;
+
1270 uint8_t prev;
+
1271
+
1272 if (handle == NULL) /* check handle */
+
1273 {
+
1274 return 2; /* return error */
+
1275 }
+
1276 if (handle->inited != 1) /* check handle initialization */
+
1277 {
+
1278 return 3; /* return error */
+
1279 }
+
1280
+
1281 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_WEEK_ALARM, &prev, 1); /* read week alarm */
+
1282 if (res != 0) /* check result */
+
1283 {
+
1284 handle->debug_print("pcf8563: read week alarm failed.\n"); /* read week alarm failed */
+
1285
+
1286 return 1; /* return error */
+
1287 }
+
1288 *week = a_pcf8563_bcd2hex(prev & 0x07); /* convert */
+
1289
+
1290 return 0; /* success return 0 */
+
1291}
+
+
1292
+
+ +
1305{
+
1306 uint8_t res;
+
1307 uint8_t prev;
+
1308
+
1309 if (handle == NULL) /* check handle */
+
1310 {
+
1311 return 2; /* return error */
+
1312 }
+
1313 if (handle->inited != 1) /* check handle initialization */
+
1314 {
+
1315 return 3; /* return error */
+
1316 }
+
1317
+
1318 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
+
1319 if (res != 0) /* check result */
+
1320 {
+
1321 handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
+
1322
+
1323 return 1; /* return error */
+
1324 }
+
1325 prev &= ~(1 << 7); /* clear config */
+
1326 prev |= enable << 7; /* set bool */
+
1327 res = a_pcf8563_iic_write(handle, PCF8563_REG_CLKOUT_CONTROL, prev); /* write clkout control */
+
1328 if (res != 0) /* check result */
+
1329 {
+
1330 handle->debug_print("pcf8563: write clkout control failed.\n"); /* write clkout control failed */
+
1331
+
1332 return 1; /* return error */
+
1333 }
+
1334
+
1335 return 0; /* success return 0 */
+
1336}
+
+
1337
+
+ +
1350{
+
1351 uint8_t res;
+
1352 uint8_t prev;
+
1353
+
1354 if (handle == NULL) /* check handle */
+
1355 {
+
1356 return 2; /* return error */
+
1357 }
+
1358 if (handle->inited != 1) /* check handle initialization */
+
1359 {
+
1360 return 3; /* return error */
+
1361 }
+
1362
+
1363 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
+
1364 if (res != 0) /* check result */
+
1365 {
+
1366 handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
+
1367
+
1368 return 1; /* return error */
+
1369 }
+
1370 *enable = (pcf8563_bool_t)((prev >> 7) & 0x01); /* get bool */
+
1371
+
1372 return 0; /* success return 0 */
+
1373}
+
+
1374
+
+ +
1387{
+
1388 uint8_t res;
+
1389 uint8_t prev;
+
1390
+
1391 if (handle == NULL) /* check handle */
+
1392 {
+
1393 return 2; /* return error */
+
1394 }
+
1395 if (handle->inited != 1) /* check handle initialization */
+
1396 {
+
1397 return 3; /* return error */
+
1398 }
+
1399
+
1400 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
+
1401 if (res != 0) /* check result */
+
1402 {
+
1403 handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
+
1404
+
1405 return 1; /* return error */
+
1406 }
+
1407 prev &= ~(3 << 0); /* clear config */
+
1408 prev |= clk << 0; /* set config */
+
1409 res = a_pcf8563_iic_write(handle, PCF8563_REG_CLKOUT_CONTROL, prev); /* write clkout control */
+
1410 if (res != 0) /* check result */
+
1411 {
+
1412 handle->debug_print("pcf8563: write clkout control failed.\n"); /* write clkout control failed */
+
1413
+
1414 return 1; /* return error */
+
1415 }
+
1416
+
1417 return 0; /* success return 0 */
+
1418}
+
+
1419
+
+ +
1432{
+
1433 uint8_t res;
+
1434 uint8_t prev;
+
1435
+
1436 if (handle == NULL) /* check handle */
+
1437 {
+
1438 return 2; /* return error */
+
1439 }
+
1440 if (handle->inited != 1) /* check handle initialization */
+
1441 {
+
1442 return 3; /* return error */
+
1443 }
+
1444
+
1445 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CLKOUT_CONTROL, &prev, 1); /* read clkout control */
+
1446 if (res != 0) /* check result */
+
1447 {
+
1448 handle->debug_print("pcf8563: read clkout control failed.\n"); /* read clkout control failed */
+
1449
+
1450 return 1; /* return error */
+
1451 }
+
1452 *clk = (pcf8563_clock_out_t)(prev & 0x03); /* get clock */
+
1453
+
1454 return 0; /* success return 0 */
+
1455}
+
+
1456
+
+ +
1469{
+
1470 uint8_t res;
+
1471 uint8_t prev;
+
1472
+
1473 if (handle == NULL) /* check handle */
+
1474 {
+
1475 return 2; /* return error */
+
1476 }
+
1477 if (handle->inited != 1) /* check handle initialization */
+
1478 {
+
1479 return 3; /* return error */
+
1480 }
+
1481
+
1482 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
+
1483 if (res != 0) /* check result */
+
1484 {
+
1485 handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
+
1486
+
1487 return 1; /* return error */
+
1488 }
+
1489 prev &= ~(1 << 7); /* clear config */
+
1490 prev |= enable << 7; /* set bool */
+
1491 res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER_CONTROL, prev); /* write timer control */
+
1492 if (res != 0) /* check result */
+
1493 {
+
1494 handle->debug_print("pcf8563: write timer control failed.\n"); /* write timer control failed */
+
1495
+
1496 return 1; /* return error */
+
1497 }
+
1498
+
1499 return 0; /* success return 0 */
+
1500}
+
+
1501
+
+ +
1514{
+
1515 uint8_t res;
+
1516 uint8_t prev;
+
1517
+
1518 if (handle == NULL) /* check handle */
+
1519 {
+
1520 return 2; /* return error */
+
1521 }
+
1522 if (handle->inited != 1) /* check handle initialization */
+
1523 {
+
1524 return 3; /* return error */
+
1525 }
+
1526
+
1527 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
+
1528 if (res != 0) /* check result */
+
1529 {
+
1530 handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
+
1531
+
1532 return 1; /* return error */
+
1533 }
+
1534 *enable = (pcf8563_bool_t)((prev >> 7) & 0x01); /* get bool */
+
1535
+
1536 return 0; /* success return 0 */
+
1537}
+
+
1538
+
+ +
1551{
+
1552 uint8_t res;
+
1553 uint8_t prev;
+
1554
+
1555 if (handle == NULL) /* check handle */
+
1556 {
+
1557 return 2; /* return error */
+
1558 }
+
1559 if (handle->inited != 1) /* check handle initialization */
+
1560 {
+
1561 return 3; /* return error */
+
1562 }
+
1563
+
1564 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
+
1565 if (res != 0) /* check result */
+
1566 {
+
1567 handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
+
1568
+
1569 return 1; /* return error */
+
1570 }
+
1571 prev &= ~(3 << 0); /* clear config */
+
1572 prev |= freq << 0; /* set freq */
+
1573 res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER_CONTROL, prev); /* write timer control */
+
1574 if (res != 0) /* check result */
+
1575 {
+
1576 handle->debug_print("pcf8563: write timer control failed.\n"); /* write timer control failed */
+
1577
+
1578 return 1; /* return error */
+
1579 }
+
1580
+
1581 return 0; /* success return 0 */
+
1582}
+
+
1583
+
+ +
1596{
+
1597 uint8_t res;
+
1598 uint8_t prev;
+
1599
+
1600 if (handle == NULL) /* check handle */
+
1601 {
+
1602 return 2; /* return error */
+
1603 }
+
1604 if (handle->inited != 1) /* check handle initialization */
+
1605 {
+
1606 return 3; /* return error */
+
1607 }
+
1608
+
1609 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER_CONTROL, &prev, 1); /* read timer control */
+
1610 if (res != 0) /* check result */
+
1611 {
+
1612 handle->debug_print("pcf8563: read timer control failed.\n"); /* read timer control failed */
+
1613
+
1614 return 1; /* return error */
+
1615 }
+
1616 *freq = (pcf8563_timer_freq_t)(prev & 0x03); /* get freq */
+
1617
+
1618 return 0; /* success return 0 */
+
1619}
+
+
1620
+
+
1632uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
+
1633{
+
1634 uint8_t res;
+
1635 uint8_t prev;
+
1636
+
1637 if (handle == NULL) /* check handle */
+
1638 {
+
1639 return 2; /* return error */
+
1640 }
+
1641 if (handle->inited != 1) /* check handle initialization */
+
1642 {
+
1643 return 3; /* return error */
+
1644 }
+
1645
+
1646 prev = value; /* set value */
+
1647 res = a_pcf8563_iic_write(handle, PCF8563_REG_TIMER, prev); /* write timer */
+
1648 if (res != 0) /* check result */
+
1649 {
+
1650 handle->debug_print("pcf8563: write timer failed.\n"); /* write timer failed */
+
1651
+
1652 return 1; /* return error */
+
1653 }
+
1654
+
1655 return 0; /* success return 0 */
+
1656}
+
+
1657
+
+
1669uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
+
1670{
+
1671 uint8_t res;
+
1672
+
1673 if (handle == NULL) /* check handle */
+
1674 {
+
1675 return 2; /* return error */
+
1676 }
+
1677 if (handle->inited != 1) /* check handle initialization */
+
1678 {
+
1679 return 3; /* return error */
+
1680 }
+
1681
+
1682 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_TIMER, value, 1); /* read timer */
+
1683 if (res != 0) /* check result */
+
1684 {
+
1685 handle->debug_print("pcf8563: read timer failed.\n"); /* read timer failed */
+
1686
+
1687 return 1; /* return error */
+
1688 }
+
1689
+
1690 return 0; /* success return 0 */
+
1691}
+
+
1692
+
+ +
1705{
+
1706 uint8_t res;
+
1707 uint8_t prev;
+
1708
+
1709 if (handle == NULL) /* check handle */
+
1710 {
+
1711 return 2; /* return error */
+
1712 }
+
1713 if (handle->inited != 1) /* check handle initialization */
+
1714 {
+
1715 return 3; /* return error */
+
1716 }
+
1717
+
1718 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1719 if (res != 0) /* check result */
+
1720 {
+
1721 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1722
+
1723 return 1; /* return error */
+
1724 }
+
1725 prev &= ~(1 << 0); /* clear config */
+
1726 prev |= enable << 0; /* set bool */
+
1727 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
+
1728 if (res != 0) /* check result */
+
1729 {
+
1730 handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
+
1731
+
1732 return 1; /* return error */
+
1733 }
+
1734
+
1735 return 0; /* success return 0 */
+
1736}
+
+
1737
+
+ +
1750{
+
1751 uint8_t res;
+
1752 uint8_t prev;
+
1753
+
1754 if (handle == NULL) /* check handle */
+
1755 {
+
1756 return 2; /* return error */
+
1757 }
+
1758 if (handle->inited != 1) /* check handle initialization */
+
1759 {
+
1760 return 3; /* return error */
+
1761 }
+
1762
+
1763 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1764 if (res != 0) /* check result */
+
1765 {
+
1766 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1767
+
1768 return 1; /* return error */
+
1769 }
+
1770 *enable = (pcf8563_bool_t)((prev >> 0) & 0x01); /* get bool */
+
1771
+
1772 return 0; /* success return 0 */
+
1773}
+
+
1774
+
+ +
1787{
+
1788 uint8_t res;
+
1789 uint8_t prev;
+
1790
+
1791 if (handle == NULL) /* check handle */
+
1792 {
+
1793 return 2; /* return error */
+
1794 }
+
1795 if (handle->inited != 1) /* check handle initialization */
+
1796 {
+
1797 return 3; /* return error */
+
1798 }
+
1799
+
1800 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1801 if (res != 0) /* check result */
+
1802 {
+
1803 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1804
+
1805 return 1; /* return error */
+
1806 }
+
1807 prev &= ~(1 << 1); /* clear config */
+
1808 prev |= enable << 1; /* set bool */
+
1809 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
+
1810 if (res != 0) /* check result */
+
1811 {
+
1812 handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
+
1813
+
1814 return 1; /* return error */
+
1815 }
+
1816
+
1817 return 0; /* success return 0 */
+
1818}
+
+
1819
+
+ +
1832{
+
1833 uint8_t res;
+
1834 uint8_t prev;
+
1835
+
1836 if (handle == NULL) /* check handle */
+
1837 {
+
1838 return 2; /* return error */
+
1839 }
+
1840 if (handle->inited != 1) /* check handle initialization */
+
1841 {
+
1842 return 3; /* return error */
+
1843 }
+
1844
+
1845 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1846 if (res != 0) /* check result */
+
1847 {
+
1848 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1849
+
1850 return 1; /* return error */
+
1851 }
+
1852 *enable = (pcf8563_bool_t)((prev >> 1) & 0x01); /* get bool */
+
1853
+
1854 return 0; /* success return 0 */
+
1855}
+
+
1856
+
+ +
1869{
+
1870 uint8_t res;
+
1871 uint8_t prev;
+
1872
+
1873 if (handle == NULL) /* check handle */
+
1874 {
+
1875 return 2; /* return error */
+
1876 }
+
1877 if (handle->inited != 1) /* check handle initialization */
+
1878 {
+
1879 return 3; /* return error */
+
1880 }
+
1881
+
1882 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1883 if (res != 0) /* check result */
+
1884 {
+
1885 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1886
+
1887 return 1; /* return error */
+
1888 }
+
1889 prev &= ~(1 << 4); /* clear config */
+
1890 prev |= mode << 4; /* set mode */
+
1891 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
+
1892 if (res != 0) /* check result */
+
1893 {
+
1894 handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
+
1895
+
1896 return 1; /* return error */
+
1897 }
+
1898
+
1899 return 0; /* success return 0 */
+
1900}
+
+
1901
+
+ +
1914{
+
1915 uint8_t res;
+
1916 uint8_t prev;
+
1917
+
1918 if (handle == NULL) /* check handle */
+
1919 {
+
1920 return 2; /* return error */
+
1921 }
+
1922 if (handle->inited != 1) /* check handle initialization */
+
1923 {
+
1924 return 3; /* return error */
+
1925 }
+
1926
+
1927 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1928 if (res != 0) /* check result */
+
1929 {
+
1930 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1931
+
1932 return 1; /* return error */
+
1933 }
+
1934 *mode = (pcf8563_interrupt_mode_t)((prev >> 4) & 0x1); /* get mode */
+
1935
+
1936 return 0; /* success return 0 */
+
1937}
+
+
1938
+
+ +
1950{
+
1951 uint8_t res;
+
1952 uint8_t prev;
+
1953 uint8_t prev2;
+
1954
+
1955 if (handle == NULL) /* check handle */
+
1956 {
+
1957 return 2; /* return error */
+
1958 }
+
1959 if (handle->inited != 1) /* check handle initialization */
+
1960 {
+
1961 return 3; /* return error */
+
1962 }
+
1963
+
1964 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
1965 if (res != 0) /* check result */
+
1966 {
+
1967 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
1968
+
1969 return 1; /* return error */
+
1970 }
+
1971 prev2 = prev; /* save config */
+
1972 prev2 &= ~(3 << 2); /* clear settings */
+
1973 if (((prev >> 2) & 0x1) != 0) /* check timer */
+
1974 {
+
1975 if (handle->receive_callback != NULL) /* if not null */
+
1976 {
+
1977 handle->receive_callback(PCF8563_INTERRUPT_EVENT_TIMER); /* run the callback */
+
1978 }
+
1979 }
+
1980 if (((prev >> 3) & 0x01) != 0) /* check alarm */
+
1981 {
+
1982 if (handle->receive_callback != NULL) /* if not null */
+
1983 {
+
1984 handle->receive_callback(PCF8563_INTERRUPT_EVENT_ALARM); /* run the callback */
+
1985 }
+
1986 }
+
1987 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev2); /* write control status2 */
+
1988 if (res != 0) /* check result */
+
1989 {
+
1990 handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
+
1991
+
1992 return 1; /* return error */
+
1993 }
+
1994
+
1995 return 0; /* success return 0 */
+
1996}
+
+
1997
+
+ +
2010{
+
2011 uint8_t res;
+
2012 uint8_t prev;
+
2013
+
2014 if (handle == NULL) /* check handle */
+
2015 {
+
2016 return 2; /* return error */
+
2017 }
+
2018 if (handle->inited != 1) /* check handle initialization */
+
2019 {
+
2020 return 3; /* return error */
+
2021 }
+
2022
+
2023 res = a_pcf8563_iic_multiple_read(handle, PCF8563_REG_CONTROL_STATUS2, &prev, 1); /* read control status2 */
+
2024 if (res != 0) /* check result */
+
2025 {
+
2026 handle->debug_print("pcf8563: read control status2 failed.\n"); /* read control status2 failed */
+
2027
+
2028 return 1; /* return error */
+
2029 }
+
2030 if (event == PCF8563_INTERRUPT_EVENT_TIMER) /* timer */
+
2031 {
+
2032 prev &= ~(1 << 2); /* clear bit */
+
2033 }
+
2034 else /* alarm */
+
2035 {
+
2036 prev &= ~(1 << 3); /* clear bit */
+
2037 }
+
2038 res = a_pcf8563_iic_write(handle, PCF8563_REG_CONTROL_STATUS2, prev); /* write control status2 */
+
2039 if (res != 0) /* check result */
+
2040 {
+
2041 handle->debug_print("pcf8563: write control status2 failed.\n"); /* write control status2 failed */
+
2042
+
2043 return 1; /* return error */
+
2044 }
+
2045
+
2046 return 0; /* success return 0 */
+
2047}
+
+
2048
+
+ +
2060{
+
2061 if (handle == NULL) /* check handle */
+
2062 {
+
2063 return 2; /* return error */
+
2064 }
+
2065 if (handle->debug_print == NULL) /* check debug_print */
+
2066 {
+
2067 return 3; /* return error */
+
2068 }
+
2069 if (handle->iic_init == NULL) /* check iic_init */
+
2070 {
+
2071 handle->debug_print("pcf8563: iic_init is null.\n"); /* iic_init is null */
+
2072
+
2073 return 3; /* return error */
+
2074 }
+
2075 if (handle->iic_deinit == NULL) /* check iic_deinit */
+
2076 {
+
2077 handle->debug_print("pcf8563: iic_deinit is null.\n"); /* iic_deinit is null */
+
2078
+
2079 return 3; /* return error */
+
2080 }
+
2081 if (handle->iic_write == NULL) /* check iic_write */
+
2082 {
+
2083 handle->debug_print("pcf8563: iic_write is null.\n"); /* iic_write is null */
+
2084
+
2085 return 3; /* return error */
+
2086 }
+
2087 if (handle->iic_read == NULL) /* check iic_read */
+
2088 {
+
2089 handle->debug_print("pcf8563: iic_read is null.\n"); /* iic_read is null */
+
2090
+
2091 return 3; /* return error */
+
2092 }
+
2093 if (handle->delay_ms == NULL) /* check delay_ms */
+
2094 {
+
2095 handle->debug_print("pcf8563: delay_ms is null.\n"); /* delay_ms is null */
+
2096
+
2097 return 3; /* return error */
+
2098 }
+
2099 if (handle->receive_callback == NULL) /* check receive_callback */
+
2100 {
+
2101 handle->debug_print("pcf8563: receive_callback is null.\n"); /* receive_callback is null */
+
2102
+
2103 return 3; /* return error */
+
2104 }
+
2105
+
2106 if (handle->iic_init() != 0) /* iic init */
+
2107 {
+
2108 handle->debug_print("pcf8563: iic init failed.\n"); /* iic init failed */
+
2109
+
2110 return 1; /* return error */
+
2111 }
+
2112 handle->inited = 1; /* flag finish initialization */
+
2113
+
2114 return 0; /* success return 0 */
+
2115}
+
+
2116
+
+ +
2128{
+
2129 if (handle == NULL) /* check handle */
+
2130 {
+
2131 return 2; /* return error */
+
2132 }
+
2133 if (handle->inited != 1) /* check handle initialization */
+
2134 {
+
2135 return 3; /* return error */
+
2136 }
+
2137
+
2138 if (handle->iic_deinit() != 0) /* iic deinit */
+
2139 {
+
2140 handle->debug_print("pcf8563: iic deinit failed.\n"); /* iic deinit failed */
+
2141
+
2142 return 1; /* return error */
+
2143 }
+
2144 handle->inited = 0; /* flag close */
+
2145
+
2146 return 0; /* success return 0 */
+
2147}
+
+
2148
+
+
2162uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
+
2163{
+
2164 if (handle == NULL) /* check handle */
+
2165 {
+
2166 return 2; /* return error */
+
2167 }
+
2168 if (handle->inited != 1) /* check handle initialization */
+
2169 {
+
2170 return 3; /* return error */
+
2171 }
+
2172
+
2173 if (handle->iic_write(PCF8563_ADDRESS, reg, buf, len) != 0) /* write data */
+
2174 {
+
2175 return 1; /* return error */
+
2176 }
+
2177
+
2178 return 0; /* success return 0 */
+
2179}
+
+
2180
+
+
2194uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
+
2195{
+
2196 if (handle == NULL) /* check handle */
+
2197 {
+
2198 return 2; /* return error */
+
2199 }
+
2200 if (handle->inited != 1) /* check handle initialization */
+
2201 {
+
2202 return 3; /* return error */
+
2203 }
+
2204
+
2205 if (handle->iic_read(PCF8563_ADDRESS, reg, buf, len) != 0) /* read data */
+
2206 {
+
2207 return 1; /* return error */
+
2208 }
+
2209
+
2210 return 0; /* success return 0 */
+
2211}
+
+
2212
+
+ +
2222{
+
2223 if (info == NULL) /* check handle */
+
2224 {
+
2225 return 2; /* return error */
+
2226 }
+
2227
+
2228 memset(info, 0, sizeof(pcf8563_info_t)); /* initialize pcf8563 info structure */
+
2229 strncpy(info->chip_name, CHIP_NAME, 32); /* copy chip name */
+
2230 strncpy(info->manufacturer_name, MANUFACTURER_NAME, 32); /* copy manufacturer name */
+
2231 strncpy(info->interface, "IIC", 8); /* copy interface name */
+
2232 info->supply_voltage_min_v = SUPPLY_VOLTAGE_MIN; /* set minimal supply voltage */
+
2233 info->supply_voltage_max_v = SUPPLY_VOLTAGE_MAX; /* set maximum supply voltage */
+
2234 info->max_current_ma = MAX_CURRENT; /* set maximum current */
+
2235 info->temperature_max = TEMPERATURE_MAX; /* set minimal temperature */
+
2236 info->temperature_min = TEMPERATURE_MIN; /* set maximum temperature */
+
2237 info->driver_version = DRIVER_VERSION; /* set driver version */
+
2238
+
2239 return 0; /* success return 0 */
+
2240}
+
+
#define PCF8563_REG_MINUTE_ALARM
+
#define PCF8563_REG_TIMER
+
#define PCF8563_REG_DAY_ALARM
+
#define MAX_CURRENT
+
#define PCF8563_ADDRESS
chip address definition
+
#define PCF8563_REG_CONTROL_STATUS2
+
#define SUPPLY_VOLTAGE_MAX
+
#define PCF8563_REG_MONTH
+
#define PCF8563_REG_YEAR
+
#define TEMPERATURE_MAX
+
#define PCF8563_REG_MINUTE
+
#define PCF8563_REG_CONTROL_STATUS1
chip register definition
+
#define MANUFACTURER_NAME
+
#define TEMPERATURE_MIN
+
#define SUPPLY_VOLTAGE_MIN
+
#define PCF8563_REG_SECOND
+
#define PCF8563_REG_HOUR_ALARM
+
#define PCF8563_REG_HOUR
+
#define PCF8563_REG_DAY
+
#define PCF8563_REG_TIMER_CONTROL
+
#define PCF8563_REG_WEEK
+
#define CHIP_NAME
chip information definition
+
#define PCF8563_REG_CLKOUT_CONTROL
+
#define DRIVER_VERSION
+
#define PCF8563_REG_WEEK_ALARM
driver pcf8563 header file
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
-
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
-
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
-
pcf8563_bool_t
pcf8563 bool enumeration definition
-
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
-
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
-
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
-
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
-
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
-
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
-
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
-
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
-
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
-
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
-
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
-
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
-
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
-
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
-
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
-
pcf8563_interrupt_event_t
pcf8563 interrupt event enumeration definition
-
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
-
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
-
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
-
uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
-
pcf8563 handle structure definition
- -
void(* delay_ms)(uint32_t ms)
-
void(* receive_callback)(uint8_t type)
-
void(* debug_print)(const char *const fmt,...)
-
uint8_t(* iic_init)(void)
-
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
uint8_t(* iic_deinit)(void)
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
+
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
+
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
+
pcf8563_bool_t
pcf8563 bool enumeration definition
+
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
+
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
+
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
+
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
+
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
+
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
+
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
+
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
+
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
+
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
+
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
+
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
+
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
+
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
+
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
+
pcf8563_interrupt_event_t
pcf8563 interrupt event enumeration definition
+
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
+
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
+
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
+
uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
+ +
void(* delay_ms)(uint32_t ms)
+
void(* receive_callback)(uint8_t type)
+
void(* debug_print)(const char *const fmt,...)
+
uint8_t(* iic_init)(void)
+
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
uint8_t(* iic_deinit)(void)
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563_8h.html b/doc/html/driver__pcf8563_8h.html index 50523ba..11d0fba 100644 --- a/doc/html/driver__pcf8563_8h.html +++ b/doc/html/driver__pcf8563_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: src/driver_pcf8563.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563.h File Reference
+
driver_pcf8563.h File Reference
@@ -100,237 +100,181 @@
#include <stdio.h>
#include <stdint.h>
#include <string.h>
+
+Include dependency graph for driver_pcf8563.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - + - - + - - + -

+

Data Structures

struct  pcf8563_time_s
struct  pcf8563_time_s
 pcf8563 time structure definition More...
 
struct  pcf8563_handle_s
struct  pcf8563_handle_s
 pcf8563 handle structure definition More...
 
struct  pcf8563_info_s
struct  pcf8563_info_s
 pcf8563 information structure definition More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +

+

Macros

#define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE)   memset(HANDLE, 0, sizeof(STRUCTURE))
 initialize pcf8563_handle_t structure More...
 
#define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC)   (HANDLE)->iic_init = FUC
 link iic_init function More...
 
#define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC)   (HANDLE)->iic_deinit = FUC
 link iic_deinit function More...
 
#define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC)   (HANDLE)->iic_read = FUC
 link iic_read function More...
 
#define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC)   (HANDLE)->iic_write = FUC
 link iic_write function More...
 
#define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC)   (HANDLE)->delay_ms = FUC
 link delay_ms function More...
 
#define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC)   (HANDLE)->debug_print = FUC
 link debug_print function More...
 
#define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC)   (HANDLE)->receive_callback = FUC
 link receive_callback function More...
 
#define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE)
 initialize pcf8563_handle_t structure
#define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC)
 link iic_init function
#define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC)
 link iic_deinit function
#define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC)
 link iic_read function
#define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC)
 link iic_write function
#define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC)
 link delay_ms function
#define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC)
 link debug_print function
#define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC)
 link receive_callback function
- - - - - - - - - - + + + + + +

+

Typedefs

typedef struct pcf8563_time_s pcf8563_time_t
 pcf8563 time structure definition More...
 
typedef struct pcf8563_handle_s pcf8563_handle_t
 pcf8563 handle structure definition More...
 
typedef struct pcf8563_info_s pcf8563_info_t
 pcf8563 information structure definition More...
 
typedef struct pcf8563_time_s pcf8563_time_t
 pcf8563 time structure definition
typedef struct pcf8563_handle_s pcf8563_handle_t
 pcf8563 handle structure definition
typedef struct pcf8563_info_s pcf8563_info_t
 pcf8563 information structure definition
- - - - - - - - - - -

+

Enumerations

enum  pcf8563_bool_t { PCF8563_BOOL_FALSE = 0x00 +
enum  pcf8563_bool_t { PCF8563_BOOL_FALSE = 0x00 , PCF8563_BOOL_TRUE = 0x01 }
 pcf8563 bool enumeration definition More...
 
enum  pcf8563_clock_out_t { PCF8563_CLOCK_OUT_32P768KHZ = 0x00 +
enum  pcf8563_clock_out_t { PCF8563_CLOCK_OUT_32P768KHZ = 0x00 , PCF8563_CLOCK_OUT_1P024KHZ = 0x01 , PCF8563_CLOCK_OUT_32HZ = 0x02 , PCF8563_CLOCK_OUT_1HZ = 0x03 }
 pcf8563 clock out enumeration definition More...
 
enum  pcf8563_timer_freq_t { PCF8563_TIMER_FREQ_4P096KHZ = 0x00 +
enum  pcf8563_timer_freq_t { PCF8563_TIMER_FREQ_4P096KHZ = 0x00 , PCF8563_TIMER_FREQ_64HZ = 0x01 , PCF8563_TIMER_FREQ_1HZ = 0x02 , PCF8563_TIMER_FREQ_1_DIV_60HZ = 0x03 }
 pcf8563 timer freq enumeration definition More...
 
enum  pcf8563_interrupt_mode_t { PCF8563_INTERRUPT_MODE_LEVEL = 0x00 +
enum  pcf8563_interrupt_mode_t { PCF8563_INTERRUPT_MODE_LEVEL = 0x00 , PCF8563_INTERRUPT_MODE_PULSE = 0x01 }
 pcf8563 interrupt mode enumeration definition More...
 
enum  pcf8563_interrupt_event_t { PCF8563_INTERRUPT_EVENT_TIMER = 0x00 +
enum  pcf8563_interrupt_event_t { PCF8563_INTERRUPT_EVENT_TIMER = 0x00 , PCF8563_INTERRUPT_EVENT_ALARM = 0x01 }
 pcf8563 interrupt event enumeration definition More...
 
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information More...
 
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler More...
 
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip More...
 
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip More...
 
uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time More...
 
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time More...
 
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode More...
 
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status More...
 
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop More...
 
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status More...
 
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset More...
 
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status More...
 
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm More...
 
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status More...
 
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm More...
 
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm More...
 
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm More...
 
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status More...
 
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm More...
 
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm More...
 
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm More...
 
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status More...
 
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm More...
 
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm More...
 
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm More...
 
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status More...
 
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm More...
 
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm More...
 
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable More...
 
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status More...
 
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out More...
 
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out More...
 
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable More...
 
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status More...
 
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq More...
 
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq More...
 
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value More...
 
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value More...
 
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt More...
 
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status More...
 
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt More...
 
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status More...
 
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode More...
 
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode More...
 
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status More...
 
uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register More...
 
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register More...
 
uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip
uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status
uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register
-

Detailed Description

+

Detailed Description

driver pcf8563 header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -351,11 +295,19 @@

history

Definition in file driver_pcf8563.h.

+ +
diff --git a/doc/html/driver__pcf8563_8h__dep__incl.md5 b/doc/html/driver__pcf8563_8h__dep__incl.md5 new file mode 100644 index 0000000..8213b49 --- /dev/null +++ b/doc/html/driver__pcf8563_8h__dep__incl.md5 @@ -0,0 +1 @@ +135dae505ab9755f75779f4d063b2c7d \ No newline at end of file diff --git a/doc/html/driver__pcf8563_8h__dep__incl.svg b/doc/html/driver__pcf8563_8h__dep__incl.svg new file mode 100644 index 0000000..9dfbba7 --- /dev/null +++ b/doc/html/driver__pcf8563_8h__dep__incl.svg @@ -0,0 +1,381 @@ + + + + + + +src/driver_pcf8563.h + + +Node1 + + +src/driver_pcf8563.h + + + + + +Node2 + + +interface/driver_pcf8563 +_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node20 + + +src/driver_pcf8563.c + + + + + +Node1->Node20 + + + + + + + + +Node3 + + +example/driver_pcf8563 +_alarm.h + + + + + +Node2->Node3 + + + + + + + + +Node5 + + +example/driver_pcf8563 +_basic.h + + + + + +Node2->Node5 + + + + + + + + +Node7 + + +example/driver_pcf8563 +_output.h + + + + + +Node2->Node7 + + + + + + + + +Node9 + + +example/driver_pcf8563 +_timer.h + + + + + +Node2->Node9 + + + + + + + + +Node11 + + +interface/driver_pcf8563 +_interface_template.c + + + + + +Node2->Node11 + + + + + + + + +Node12 + + +test/driver_pcf8563 +_alarm_test.h + + + + + +Node2->Node12 + + + + + + + + +Node14 + + +test/driver_pcf8563 +_output_test.h + + + + + +Node2->Node14 + + + + + + + + +Node16 + + +test/driver_pcf8563 +_register_test.h + + + + + +Node2->Node16 + + + + + + + + +Node18 + + +test/driver_pcf8563 +_timer_test.h + + + + + +Node2->Node18 + + + + + + + + +Node4 + + +example/driver_pcf8563 +_alarm.c + + + + + +Node3->Node4 + + + + + + + + +Node6 + + +example/driver_pcf8563 +_basic.c + + + + + +Node5->Node6 + + + + + + + + +Node8 + + +example/driver_pcf8563 +_output.c + + + + + +Node7->Node8 + + + + + + + + +Node10 + + +example/driver_pcf8563 +_timer.c + + + + + +Node9->Node10 + + + + + + + + +Node13 + + +test/driver_pcf8563 +_alarm_test.c + + + + + +Node12->Node13 + + + + + + + + +Node15 + + +test/driver_pcf8563 +_output_test.c + + + + + +Node14->Node15 + + + + + + + + +Node17 + + +test/driver_pcf8563 +_register_test.c + + + + + +Node16->Node17 + + + + + + + + +Node19 + + +test/driver_pcf8563 +_timer_test.c + + + + + +Node18->Node19 + + + + + + + + diff --git a/doc/html/driver__pcf8563_8h__incl.md5 b/doc/html/driver__pcf8563_8h__incl.md5 new file mode 100644 index 0000000..31dd641 --- /dev/null +++ b/doc/html/driver__pcf8563_8h__incl.md5 @@ -0,0 +1 @@ +b7ea8368a514880893d8cd606e596dc9 \ No newline at end of file diff --git a/doc/html/driver__pcf8563_8h__incl.svg b/doc/html/driver__pcf8563_8h__incl.svg new file mode 100644 index 0000000..e371334 --- /dev/null +++ b/doc/html/driver__pcf8563_8h__incl.svg @@ -0,0 +1,75 @@ + + + + + + +src/driver_pcf8563.h + + +Node1 + + +src/driver_pcf8563.h + + + + + +Node2 + + +stdio.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stdint.h + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +string.h + + + + + +Node1->Node4 + + + + + + + + diff --git a/doc/html/driver__pcf8563_8h_source.html b/doc/html/driver__pcf8563_8h_source.html index ad4e55b..2993617 100644 --- a/doc/html/driver__pcf8563_8h_source.html +++ b/doc/html/driver__pcf8563_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: src/driver_pcf8563.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563.h
+
driver_pcf8563.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_H
-
38 #define DRIVER_PCF8563_H
-
39 
-
40 #include <stdio.h>
-
41 #include <stdint.h>
-
42 #include <string.h>
-
43 
-
44 #ifdef __cplusplus
-
45 extern "C"{
-
46 #endif
-
47 
-
62 typedef enum
-
63 {
- - - -
67 
-
71 typedef enum
-
72 {
- - - - - -
78 
-
82 typedef enum
-
83 {
- - - - - -
89 
-
93 typedef enum
-
94 {
- - - -
98 
-
102 typedef enum
-
103 {
- - - -
107 
-
111 typedef struct pcf8563_time_s
-
112 {
-
113  uint16_t year;
-
114  uint8_t month;
-
115  uint8_t week;
-
116  uint8_t date;
-
117  uint8_t hour;
-
118  uint8_t minute;
-
119  uint8_t second;
- -
121 
-
125 typedef struct pcf8563_handle_s
-
126 {
-
127  uint8_t (*iic_init)(void);
-
128  uint8_t (*iic_deinit)(void);
-
129  uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
-
130  uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
-
131  void (*debug_print)(const char *const fmt, ...);
-
132  void (*delay_ms)(uint32_t ms);
-
133  void (*receive_callback)(uint8_t type);
-
134  uint8_t inited;
- -
136 
-
140 typedef struct pcf8563_info_s
-
141 {
-
142  char chip_name[32];
-
143  char manufacturer_name[32];
-
144  char interface[8];
- - - - - -
150  uint32_t driver_version;
- -
152 
-
170 #define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
-
171 
-
178 #define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
-
179 
-
186 #define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
-
187 
-
194 #define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
-
195 
-
202 #define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
-
203 
-
210 #define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
-
211 
-
218 #define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
-
219 
-
226 #define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
-
227 
-
247 uint8_t pcf8563_info(pcf8563_info_t *info);
-
248 
-
259 uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle);
-
260 
-
271 uint8_t pcf8563_init(pcf8563_handle_t *handle);
-
272 
-
283 uint8_t pcf8563_deinit(pcf8563_handle_t *handle);
-
284 
- -
298 
- -
312 
-
324 uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable);
-
325 
-
337 uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable);
-
338 
-
350 uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable);
-
351 
-
363 uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable);
-
364 
- -
377 
- -
390 
- -
403 
- -
416 
-
429 uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute);
-
430 
-
442 uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute);
-
443 
- -
456 
- -
469 
-
482 uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour);
-
483 
-
495 uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour);
-
496 
- -
509 
- -
522 
-
535 uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day);
-
536 
-
548 uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day);
-
549 
- -
562 
- -
575 
-
588 uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week);
-
589 
-
601 uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week);
-
602 
- -
615 
- -
628 
- -
641 
- -
654 
- -
667 
- -
680 
- -
693 
- -
706 
-
718 uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value);
-
719 
-
731 uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value);
-
732 
- -
745 
- -
758 
- -
771 
- -
784 
- -
797 
- -
810 
- -
823 
-
848 uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
-
849 
-
863 uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
-
864 
-
873 #ifdef __cplusplus
-
874 }
-
875 #endif
-
876 
-
877 #endif
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
-
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
-
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
-
pcf8563_bool_t
pcf8563 bool enumeration definition
-
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
-
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
-
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
-
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
-
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
-
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
-
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
-
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_H
+
38#define DRIVER_PCF8563_H
+
39
+
40#include <stdio.h>
+
41#include <stdint.h>
+
42#include <string.h>
+
43
+
44#ifdef __cplusplus
+
45extern "C"{
+
46#endif
+
47
+
53
+
58
+
+
62typedef enum
+
63{
+ + + +
+
67
+ +
78
+ +
89
+ +
98
+ +
107
+
+
111typedef struct pcf8563_time_s
+
112{
+
113 uint16_t year;
+
114 uint8_t month;
+
115 uint8_t week;
+
116 uint8_t date;
+
117 uint8_t hour;
+
118 uint8_t minute;
+
119 uint8_t second;
+ +
+
121
+
+
125typedef struct pcf8563_handle_s
+
126{
+
127 uint8_t (*iic_init)(void);
+
128 uint8_t (*iic_deinit)(void);
+
129 uint8_t (*iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
+
130 uint8_t (*iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
+
131 void (*debug_print)(const char *const fmt, ...);
+
132 void (*delay_ms)(uint32_t ms);
+
133 void (*receive_callback)(uint8_t type);
+
134 uint8_t inited;
+ +
+
136
+ +
152
+
156
+
163
+
170#define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE) memset(HANDLE, 0, sizeof(STRUCTURE))
+
171
+
178#define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC) (HANDLE)->iic_init = FUC
+
179
+
186#define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC) (HANDLE)->iic_deinit = FUC
+
187
+
194#define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC) (HANDLE)->iic_read = FUC
+
195
+
202#define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC) (HANDLE)->iic_write = FUC
+
203
+
210#define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC) (HANDLE)->delay_ms = FUC
+
211
+
218#define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC) (HANDLE)->debug_print = FUC
+
219
+
226#define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC) (HANDLE)->receive_callback = FUC
+
227
+
231
+
238
+
247uint8_t pcf8563_info(pcf8563_info_t *info);
+
248
+ +
260
+
271uint8_t pcf8563_init(pcf8563_handle_t *handle);
+
272
+
283uint8_t pcf8563_deinit(pcf8563_handle_t *handle);
+
284
+ +
298
+ +
312
+ +
325
+ +
338
+ +
351
+ +
364
+ +
377
+ +
390
+ +
403
+ +
416
+
429uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute);
+
430
+
442uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute);
+
443
+ +
456
+ +
469
+
482uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour);
+
483
+
495uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour);
+
496
+ +
509
+ +
522
+
535uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day);
+
536
+
548uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day);
+
549
+ +
562
+ +
575
+
588uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week);
+
589
+
601uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week);
+
602
+ +
615
+ +
628
+ +
641
+ +
654
+ +
667
+ +
680
+ +
693
+ +
706
+
718uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value);
+
719
+
731uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value);
+
732
+ +
745
+ +
758
+ +
771
+ +
784
+ +
797
+ +
810
+ +
823
+
827
+
834
+
848uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
+
849
+
863uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len);
+
864
+
868
+
872
+
873#ifdef __cplusplus
+
874}
+
875#endif
+
876
+
877#endif
+
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
+
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
+
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
+
pcf8563_bool_t
pcf8563 bool enumeration definition
+
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
+
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
+
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
+
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
+
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
+
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
+
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
+
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
-
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
-
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
-
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
-
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
-
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
+
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
+
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
+
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
+
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
+
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
-
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
-
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
-
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
+
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
+
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
-
pcf8563_interrupt_event_t
pcf8563 interrupt event enumeration definition
-
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
-
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
-
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_TIMER_FREQ_64HZ
-
@ PCF8563_TIMER_FREQ_1_DIV_60HZ
-
@ PCF8563_TIMER_FREQ_4P096KHZ
-
@ PCF8563_TIMER_FREQ_1HZ
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_MODE_PULSE
-
@ PCF8563_INTERRUPT_MODE_LEVEL
-
@ PCF8563_CLOCK_OUT_32P768KHZ
-
@ PCF8563_CLOCK_OUT_32HZ
-
@ PCF8563_CLOCK_OUT_1P024KHZ
-
@ PCF8563_CLOCK_OUT_1HZ
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
-
uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
-
pcf8563 handle structure definition
- -
void(* delay_ms)(uint32_t ms)
-
void(* receive_callback)(uint8_t type)
-
void(* debug_print)(const char *const fmt,...)
-
uint8_t(* iic_init)(void)
-
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
uint8_t(* iic_deinit)(void)
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
+
pcf8563_interrupt_event_t
pcf8563 interrupt event enumeration definition
+
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
+
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
+
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_TIMER_FREQ_64HZ
+
@ PCF8563_TIMER_FREQ_1_DIV_60HZ
+
@ PCF8563_TIMER_FREQ_4P096KHZ
+
@ PCF8563_TIMER_FREQ_1HZ
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_MODE_PULSE
+
@ PCF8563_INTERRUPT_MODE_LEVEL
+
@ PCF8563_CLOCK_OUT_32P768KHZ
+
@ PCF8563_CLOCK_OUT_32HZ
+
@ PCF8563_CLOCK_OUT_1P024KHZ
+
@ PCF8563_CLOCK_OUT_1HZ
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_get_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
get the chip register
+
uint8_t pcf8563_set_reg(pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
set the chip register
+
pcf8563 handle structure definition
+ +
void(* delay_ms)(uint32_t ms)
+
void(* receive_callback)(uint8_t type)
+
void(* debug_print)(const char *const fmt,...)
+
uint8_t(* iic_init)(void)
+
uint8_t(* iic_write)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
uint8_t(* iic_read)(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
uint8_t(* iic_deinit)(void)
+
pcf8563 information structure definition
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + + +
pcf8563 time structure definition
+ + + + + + +
+
diff --git a/doc/html/driver__pcf8563__alarm_8c.html b/doc/html/driver__pcf8563__alarm_8c.html index c869d77..fc43a2c 100644 --- a/doc/html/driver__pcf8563__alarm_8c.html +++ b/doc/html/driver__pcf8563__alarm_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_alarm.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_alarm.c File Reference
+
driver_pcf8563_alarm.c File Reference

driver pcf8563 alarm source file More...

+Include dependency graph for driver_pcf8563_alarm.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq More...
 
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init More...
 
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit More...
 
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time More...
 
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp More...
 
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone More...
 
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time More...
 
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp More...
 
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone More...
 
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time More...
 
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm More...
 
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm More...
 
uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm
-

Detailed Description

+

Detailed Description

driver pcf8563 alarm source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -157,11 +154,19 @@

history

Definition in file driver_pcf8563_alarm.c.

+ +
diff --git a/doc/html/driver__pcf8563__alarm_8c__incl.md5 b/doc/html/driver__pcf8563__alarm_8c__incl.md5 new file mode 100644 index 0000000..aa1b25a --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8c__incl.md5 @@ -0,0 +1 @@ +98e704605e491a9d901b21437a1daa80 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm_8c__incl.svg b/doc/html/driver__pcf8563__alarm_8c__incl.svg new file mode 100644 index 0000000..9e6167b --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8c__incl.svg @@ -0,0 +1,148 @@ + + + + + + +example/driver_pcf8563_alarm.c + + +Node1 + + +example/driver_pcf8563 +_alarm.c + + + + + +Node2 + + +driver_pcf8563_alarm.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node8 + + +time.h + + + + + +Node2->Node8 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm_8c_source.html b/doc/html/driver__pcf8563__alarm_8c_source.html index c6d3a71..04f498d 100644 --- a/doc/html/driver__pcf8563__alarm_8c_source.html +++ b/doc/html/driver__pcf8563__alarm_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_alarm.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_alarm.c
+
driver_pcf8563_alarm.c
-Go to the documentation of this file.
1 
-
37 #include "driver_pcf8563_alarm.h"
-
38 
-
39 static pcf8563_handle_t gs_handle;
-
40 static int8_t gs_time_zone = 0;
- -
50 {
-
51  if (pcf8563_irq_handler(&gs_handle) != 0)
-
52  {
-
53  return 1;
-
54  }
-
55 
-
56  return 0;
-
57 }
-
58 
-
67 uint8_t pcf8563_alarm_init(void (*callback)(uint8_t type))
-
68 {
-
69  uint8_t res;
-
70 
-
71  /* link functions */
- - - - - - - -
79  DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
-
80 
-
81  /* init pcf8563 */
-
82  res = pcf8563_init(&gs_handle);
-
83  if (res != 0)
-
84  {
-
85  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
86 
-
87  return 1;
-
88  }
-
89 
-
90  /* disable rtc stop */
-
91  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
92  if (res != 0)
-
93  {
-
94  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
95  (void)pcf8563_deinit(&gs_handle);
-
96 
-
97  return 1;
-
98  }
-
99 
-
100  /* disable test mode */
-
101  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
102  if (res != 0)
-
103  {
-
104  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
105  (void)pcf8563_deinit(&gs_handle);
-
106 
-
107  return 1;
-
108  }
-
109 
-
110  /* disable power on reset */
- -
112  if (res != 0)
-
113  {
-
114  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
115  (void)pcf8563_deinit(&gs_handle);
-
116 
-
117  return 1;
-
118  }
-
119 
-
120  /* disable timer */
-
121  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
122  if (res != 0)
-
123  {
-
124  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
125  (void)pcf8563_deinit(&gs_handle);
-
126 
-
127  return 1;
-
128  }
-
129 
-
130  /* disable minute alarm */
- -
132  if (res != 0)
-
133  {
-
134  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
135  (void)pcf8563_deinit(&gs_handle);
-
136 
-
137  return 1;
-
138  }
-
139 
-
140  /* disable hour alarm */
- -
142  if (res != 0)
-
143  {
-
144  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
145  (void)pcf8563_deinit(&gs_handle);
-
146 
-
147  return 1;
-
148  }
-
149 
-
150  /* disable day alarm */
- -
152  if (res != 0)
-
153  {
-
154  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
155  (void)pcf8563_deinit(&gs_handle);
-
156 
-
157  return 1;
-
158  }
-
159 
-
160  /* disable week alarm */
- -
162  if (res != 0)
-
163  {
-
164  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
165  (void)pcf8563_deinit(&gs_handle);
-
166 
-
167  return 1;
-
168  }
-
169 
-
170  /* disable timer interrupt */
- -
172  if (res != 0)
-
173  {
-
174  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
175  (void)pcf8563_deinit(&gs_handle);
-
176 
-
177  return 1;
-
178  }
-
179 
-
180  /* disable alarm interrupt */
- -
182  if (res != 0)
-
183  {
-
184  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
185  (void)pcf8563_deinit(&gs_handle);
-
186 
-
187  return 1;
-
188  }
-
189 
-
190  /* disable clock out */
- -
192  if (res != 0)
-
193  {
-
194  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
195  (void)pcf8563_deinit(&gs_handle);
-
196 
-
197  return 1;
-
198  }
-
199 
-
200  return 0;
-
201 }
-
202 
-
210 uint8_t pcf8563_alarm_deinit(void)
-
211 {
-
212  if (pcf8563_deinit(&gs_handle) != 0)
-
213  {
-
214  return 1;
-
215  }
-
216 
-
217  return 0;
-
218 }
-
219 
- -
229 {
-
230  /* set time */
-
231  if (pcf8563_set_time(&gs_handle, t) != 0)
-
232  {
-
233  return 1;
-
234  }
-
235 
-
236  return 0;
-
237 }
-
238 
-
247 uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
-
248 {
-
249  pcf8563_time_t t;
-
250  struct tm *timeptr;
-
251 
-
252  /* convert times */
-
253  timestamp += (time_t)(gs_time_zone * 3600);
-
254  timeptr = localtime(&timestamp);
-
255  t.date = (uint8_t)timeptr->tm_mday;
-
256  t.hour = (uint8_t)timeptr->tm_hour;
-
257  t.minute = (uint8_t)timeptr->tm_min;
-
258  t.month = (uint8_t)timeptr->tm_mon + 1;
-
259  t.second = (uint8_t)timeptr->tm_sec;
-
260  t.week = (uint8_t)timeptr->tm_wday;
-
261  t.year = (uint16_t)(timeptr->tm_year + 1900);
-
262 
-
263  /* set time */
-
264  if (pcf8563_set_time(&gs_handle, &t) != 0)
-
265  {
-
266  return 1;
-
267  }
-
268 
-
269  return 0;
-
270 }
-
271 
- -
280 {
-
281  gs_time_zone = zone;
-
282 
-
283  return 0;
-
284 }
-
285 
- -
295 {
-
296  /* get time */
-
297  if (pcf8563_get_time(&gs_handle, t) != 0)
-
298  {
-
299  return 1;
-
300  }
-
301 
-
302  return 0;
-
303 }
-
304 
-
313 uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
-
314 {
-
315  pcf8563_time_t t;
-
316  struct tm timeptr;
-
317 
-
318  /* get time */
-
319  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
320  {
-
321  return 1;
-
322  }
-
323  timeptr.tm_year = t.year - 1900;
-
324  timeptr.tm_mon = t.month - 1;
-
325  timeptr.tm_wday = t.week;
-
326  timeptr.tm_mday = t.date;
-
327  timeptr.tm_hour = t.hour;
-
328  timeptr.tm_min = t.minute;
-
329  timeptr.tm_sec = t.second;
-
330 
-
331  /* make time */
-
332  *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
-
333 
-
334  return 0;
-
335 }
-
336 
- -
345 {
-
346  *zone = gs_time_zone;
-
347 
-
348  return 0;
-
349 }
-
350 
-
360 uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
-
361 {
-
362  pcf8563_time_t t;
-
363 
-
364  /* get time */
-
365  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
366  {
-
367  return 1;
-
368  }
-
369 
-
370  (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
-
371 
-
372  return 0;
-
373 }
-
374 
- -
384 {
-
385  uint8_t res;
-
386 
-
387  /* set minute alarm */
-
388  res = pcf8563_set_minute_alarm_enable(&gs_handle, param->minute_enable);
-
389  if (res != 0)
-
390  {
-
391  return 1;
-
392  }
-
393 
-
394  /* set minute */
-
395  res = pcf8563_set_minute_alarm(&gs_handle, param->minute);
-
396  if (res != 0)
-
397  {
-
398  return 1;
-
399  }
-
400 
-
401  /* set hour alarm */
-
402  res = pcf8563_set_hour_alarm_enable(&gs_handle, param->hour_enable);
-
403  if (res != 0)
-
404  {
-
405  return 1;
-
406  }
-
407 
-
408  /* set hour */
-
409  res = pcf8563_set_hour_alarm(&gs_handle, param->hour);
-
410  if (res != 0)
-
411  {
-
412  return 1;
-
413  }
-
414 
-
415  /* set day alarm */
-
416  res = pcf8563_set_day_alarm_enable(&gs_handle, param->day_enable);
-
417  if (res != 0)
-
418  {
-
419  return 1;
-
420  }
-
421 
-
422  /* set day */
-
423  res = pcf8563_set_day_alarm(&gs_handle, param->day);
-
424  if (res != 0)
-
425  {
-
426  return 1;
-
427  }
-
428 
-
429  /* set week alarm */
-
430  res = pcf8563_set_week_alarm_enable(&gs_handle, param->week_enable);
-
431  if (res != 0)
-
432  {
-
433  return 1;
-
434  }
-
435 
-
436  /* set week */
-
437  res = pcf8563_set_week_alarm(&gs_handle, param->week);
-
438  if (res != 0)
-
439  {
-
440  return 1;
-
441  }
-
442 
-
443  /* set interrupt mode */
-
444  res = pcf8563_set_interrupt_mode(&gs_handle, param->mode);
-
445  if (res != 0)
-
446  {
-
447  return 1;
-
448  }
-
449 
-
450  /* clear status */
- -
452  if (res != 0)
-
453  {
-
454  pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
-
455  (void)pcf8563_deinit(&gs_handle);
-
456 
-
457  return 1;
-
458  }
-
459 
-
460  /* enable alarm interrupt */
- -
462  if (res != 0)
-
463  {
-
464  return 1;
-
465  }
-
466 
-
467  return 0;
-
468 }
-
469 
- -
478 {
-
479  uint8_t res;
-
480 
-
481  /* disable minute alarm */
- -
483  if (res != 0)
-
484  {
-
485  return 1;
-
486  }
-
487 
-
488  /* disable hour alarm */
- -
490  if (res != 0)
-
491  {
-
492  return 1;
-
493  }
-
494 
-
495  /* disable day alarm */
- -
497  if (res != 0)
-
498  {
-
499  return 1;
-
500  }
-
501 
-
502  /* disable week alarm */
- -
504  if (res != 0)
-
505  {
-
506  return 1;
-
507  }
-
508 
-
509  /* disable alarm interrupt */
- -
511  if (res != 0)
-
512  {
-
513  return 1;
-
514  }
-
515 
-
516  return 0;
-
517 }
+Go to the documentation of this file.
1
+
36
+ +
38
+
39static pcf8563_handle_t gs_handle;
+
40static int8_t gs_time_zone = 0;
+
41
+
+ +
50{
+
51 if (pcf8563_irq_handler(&gs_handle) != 0)
+
52 {
+
53 return 1;
+
54 }
+
55
+
56 return 0;
+
57}
+
+
58
+
+
67uint8_t pcf8563_alarm_init(void (*callback)(uint8_t type))
+
68{
+
69 uint8_t res;
+
70
+
71 /* link functions */
+ + + + + + + +
79 DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
+
80
+
81 /* init pcf8563 */
+
82 res = pcf8563_init(&gs_handle);
+
83 if (res != 0)
+
84 {
+
85 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
86
+
87 return 1;
+
88 }
+
89
+
90 /* disable rtc stop */
+ +
92 if (res != 0)
+
93 {
+
94 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
95 (void)pcf8563_deinit(&gs_handle);
+
96
+
97 return 1;
+
98 }
+
99
+
100 /* disable test mode */
+
101 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
102 if (res != 0)
+
103 {
+
104 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
105 (void)pcf8563_deinit(&gs_handle);
+
106
+
107 return 1;
+
108 }
+
109
+
110 /* disable power on reset */
+ +
112 if (res != 0)
+
113 {
+
114 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
115 (void)pcf8563_deinit(&gs_handle);
+
116
+
117 return 1;
+
118 }
+
119
+
120 /* disable timer */
+ +
122 if (res != 0)
+
123 {
+
124 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
125 (void)pcf8563_deinit(&gs_handle);
+
126
+
127 return 1;
+
128 }
+
129
+
130 /* disable minute alarm */
+ +
132 if (res != 0)
+
133 {
+
134 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
135 (void)pcf8563_deinit(&gs_handle);
+
136
+
137 return 1;
+
138 }
+
139
+
140 /* disable hour alarm */
+ +
142 if (res != 0)
+
143 {
+
144 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
145 (void)pcf8563_deinit(&gs_handle);
+
146
+
147 return 1;
+
148 }
+
149
+
150 /* disable day alarm */
+ +
152 if (res != 0)
+
153 {
+
154 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
155 (void)pcf8563_deinit(&gs_handle);
+
156
+
157 return 1;
+
158 }
+
159
+
160 /* disable week alarm */
+ +
162 if (res != 0)
+
163 {
+
164 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
165 (void)pcf8563_deinit(&gs_handle);
+
166
+
167 return 1;
+
168 }
+
169
+
170 /* disable timer interrupt */
+ +
172 if (res != 0)
+
173 {
+
174 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
175 (void)pcf8563_deinit(&gs_handle);
+
176
+
177 return 1;
+
178 }
+
179
+
180 /* disable alarm interrupt */
+ +
182 if (res != 0)
+
183 {
+
184 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
185 (void)pcf8563_deinit(&gs_handle);
+
186
+
187 return 1;
+
188 }
+
189
+
190 /* disable clock out */
+ +
192 if (res != 0)
+
193 {
+
194 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
195 (void)pcf8563_deinit(&gs_handle);
+
196
+
197 return 1;
+
198 }
+
199
+
200 return 0;
+
201}
+
+
202
+
+ +
211{
+
212 if (pcf8563_deinit(&gs_handle) != 0)
+
213 {
+
214 return 1;
+
215 }
+
216
+
217 return 0;
+
218}
+
+
219
+
+ +
229{
+
230 /* set time */
+
231 if (pcf8563_set_time(&gs_handle, t) != 0)
+
232 {
+
233 return 1;
+
234 }
+
235
+
236 return 0;
+
237}
+
+
238
+
+
247uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
+
248{
+ +
250 struct tm *timeptr;
+
251
+
252 /* convert times */
+
253 timestamp += (time_t)(gs_time_zone * 3600);
+
254 timeptr = localtime(&timestamp);
+
255 t.date = (uint8_t)timeptr->tm_mday;
+
256 t.hour = (uint8_t)timeptr->tm_hour;
+
257 t.minute = (uint8_t)timeptr->tm_min;
+
258 t.month = (uint8_t)timeptr->tm_mon + 1;
+
259 t.second = (uint8_t)timeptr->tm_sec;
+
260 t.week = (uint8_t)timeptr->tm_wday;
+
261 t.year = (uint16_t)(timeptr->tm_year + 1900);
+
262
+
263 /* set time */
+
264 if (pcf8563_set_time(&gs_handle, &t) != 0)
+
265 {
+
266 return 1;
+
267 }
+
268
+
269 return 0;
+
270}
+
+
271
+
+ +
280{
+
281 gs_time_zone = zone;
+
282
+
283 return 0;
+
284}
+
+
285
+
+ +
295{
+
296 /* get time */
+
297 if (pcf8563_get_time(&gs_handle, t) != 0)
+
298 {
+
299 return 1;
+
300 }
+
301
+
302 return 0;
+
303}
+
+
304
+
+
313uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
+
314{
+ +
316 struct tm timeptr;
+
317
+
318 /* get time */
+
319 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
320 {
+
321 return 1;
+
322 }
+
323 timeptr.tm_year = t.year - 1900;
+
324 timeptr.tm_mon = t.month - 1;
+
325 timeptr.tm_wday = t.week;
+
326 timeptr.tm_mday = t.date;
+
327 timeptr.tm_hour = t.hour;
+
328 timeptr.tm_min = t.minute;
+
329 timeptr.tm_sec = t.second;
+
330
+
331 /* make time */
+
332 *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
+
333
+
334 return 0;
+
335}
+
+
336
+
+ +
345{
+
346 *zone = gs_time_zone;
+
347
+
348 return 0;
+
349}
+
+
350
+
+
360uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
+
361{
+ +
363
+
364 /* get time */
+
365 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
366 {
+
367 return 1;
+
368 }
+
369
+
370 (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
+
371
+
372 return 0;
+
373}
+
+
374
+
+ +
384{
+
385 uint8_t res;
+
386
+
387 /* set minute alarm */
+
388 res = pcf8563_set_minute_alarm_enable(&gs_handle, param->minute_enable);
+
389 if (res != 0)
+
390 {
+
391 return 1;
+
392 }
+
393
+
394 /* set minute */
+
395 res = pcf8563_set_minute_alarm(&gs_handle, param->minute);
+
396 if (res != 0)
+
397 {
+
398 return 1;
+
399 }
+
400
+
401 /* set hour alarm */
+
402 res = pcf8563_set_hour_alarm_enable(&gs_handle, param->hour_enable);
+
403 if (res != 0)
+
404 {
+
405 return 1;
+
406 }
+
407
+
408 /* set hour */
+
409 res = pcf8563_set_hour_alarm(&gs_handle, param->hour);
+
410 if (res != 0)
+
411 {
+
412 return 1;
+
413 }
+
414
+
415 /* set day alarm */
+
416 res = pcf8563_set_day_alarm_enable(&gs_handle, param->day_enable);
+
417 if (res != 0)
+
418 {
+
419 return 1;
+
420 }
+
421
+
422 /* set day */
+
423 res = pcf8563_set_day_alarm(&gs_handle, param->day);
+
424 if (res != 0)
+
425 {
+
426 return 1;
+
427 }
+
428
+
429 /* set week alarm */
+
430 res = pcf8563_set_week_alarm_enable(&gs_handle, param->week_enable);
+
431 if (res != 0)
+
432 {
+
433 return 1;
+
434 }
+
435
+
436 /* set week */
+
437 res = pcf8563_set_week_alarm(&gs_handle, param->week);
+
438 if (res != 0)
+
439 {
+
440 return 1;
+
441 }
+
442
+
443 /* set interrupt mode */
+
444 res = pcf8563_set_interrupt_mode(&gs_handle, param->mode);
+
445 if (res != 0)
+
446 {
+
447 return 1;
+
448 }
+
449
+
450 /* clear status */
+ +
452 if (res != 0)
+
453 {
+
454 pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
+
455 (void)pcf8563_deinit(&gs_handle);
+
456
+
457 return 1;
+
458 }
+
459
+
460 /* enable alarm interrupt */
+ +
462 if (res != 0)
+
463 {
+
464 return 1;
+
465 }
+
466
+
467 return 0;
+
468}
+
+
469
+
+ +
478{
+
479 uint8_t res;
+
480
+
481 /* disable minute alarm */
+ +
483 if (res != 0)
+
484 {
+
485 return 1;
+
486 }
+
487
+
488 /* disable hour alarm */
+ +
490 if (res != 0)
+
491 {
+
492 return 1;
+
493 }
+
494
+
495 /* disable day alarm */
+ +
497 if (res != 0)
+
498 {
+
499 return 1;
+
500 }
+
501
+
502 /* disable week alarm */
+ +
504 if (res != 0)
+
505 {
+
506 return 1;
+
507 }
+
508
+
509 /* disable alarm interrupt */
+ +
511 if (res != 0)
+
512 {
+
513 return 1;
+
514 }
+
515
+
516 return 0;
+
517}
+
driver pcf8563 alarm header file
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
alarm example set the time by a unix timestamp
-
uint8_t pcf8563_alarm_disable(void)
alarm example disable the alarm
-
uint8_t pcf8563_alarm_enable(pcf8563_alarm_param_t *param)
alarm example enable the alarm
-
uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone)
alarm example get the local time zone
-
uint8_t pcf8563_alarm_set_time(pcf8563_time_t *t)
alarm example set the time
-
uint8_t pcf8563_alarm_irq_handler(void)
alarm example irq
-
uint8_t pcf8563_alarm_init(void(*callback)(uint8_t type))
alarm example init
-
uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone)
alarm example set the local time zone
-
uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
alarm example get the ascii time
-
uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
alarm example get the time in a unix timestamp
-
uint8_t pcf8563_alarm_deinit(void)
alarm example deinit
-
uint8_t pcf8563_alarm_get_time(pcf8563_time_t *t)
alarm example get the time
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
pcf8563 alarm param structure definition
- - - - - - -
pcf8563_interrupt_mode_t mode
- - -
pcf8563 handle structure definition
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
alarm example set the time by a unix timestamp
+
struct pcf8563_alarm_param_s pcf8563_alarm_param_t
pcf8563 alarm param structure definition
+
uint8_t pcf8563_alarm_disable(void)
alarm example disable the alarm
+
uint8_t pcf8563_alarm_enable(pcf8563_alarm_param_t *param)
alarm example enable the alarm
+
uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone)
alarm example get the local time zone
+
uint8_t pcf8563_alarm_set_time(pcf8563_time_t *t)
alarm example set the time
+
uint8_t pcf8563_alarm_irq_handler(void)
alarm example irq
+
uint8_t pcf8563_alarm_init(void(*callback)(uint8_t type))
alarm example init
+
uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone)
alarm example set the local time zone
+
uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
alarm example get the ascii time
+
uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
alarm example get the time in a unix timestamp
+
uint8_t pcf8563_alarm_deinit(void)
alarm example deinit
+
uint8_t pcf8563_alarm_get_time(pcf8563_time_t *t)
alarm example get the time
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + + + + + + + +
pcf8563_interrupt_mode_t mode
+ + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__alarm_8h.html b/doc/html/driver__pcf8563__alarm_8h.html index 732cd7d..d92ad27 100644 --- a/doc/html/driver__pcf8563__alarm_8h.html +++ b/doc/html/driver__pcf8563__alarm_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_alarm.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_alarm.h File Reference
+
driver_pcf8563_alarm.h File Reference
@@ -97,61 +99,57 @@ More...

#include "driver_pcf8563_interface.h"
#include <time.h>
+
+Include dependency graph for driver_pcf8563_alarm.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - + -

+

Data Structures

struct  pcf8563_alarm_param_s
struct  pcf8563_alarm_param_s
 pcf8563 alarm param structure definition More...
 
- - - - + +

+

Typedefs

typedef struct pcf8563_alarm_param_s pcf8563_alarm_param_t
 pcf8563 alarm param structure definition More...
 
typedef struct pcf8563_alarm_param_s pcf8563_alarm_param_t
 pcf8563 alarm param structure definition
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq More...
 
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init More...
 
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit More...
 
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm More...
 
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm More...
 
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time More...
 
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp More...
 
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone More...
 
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time More...
 
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp More...
 
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone More...
 
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time More...
 
uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time
-

Detailed Description

+

Detailed Description

driver pcf8563 alarm header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -172,11 +170,19 @@

history

Definition in file driver_pcf8563_alarm.h.

+ +
diff --git a/doc/html/driver__pcf8563__alarm_8h__dep__incl.md5 b/doc/html/driver__pcf8563__alarm_8h__dep__incl.md5 new file mode 100644 index 0000000..fd282e1 --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8h__dep__incl.md5 @@ -0,0 +1 @@ +76dbcfaf24edfb5147c93039eedc69dd \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm_8h__dep__incl.svg b/doc/html/driver__pcf8563__alarm_8h__dep__incl.svg new file mode 100644 index 0000000..50f2d6d --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +example/driver_pcf8563_alarm.h + + +Node1 + + +example/driver_pcf8563 +_alarm.h + + + + + +Node2 + + +example/driver_pcf8563 +_alarm.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm_8h__incl.md5 b/doc/html/driver__pcf8563__alarm_8h__incl.md5 new file mode 100644 index 0000000..e17cdaf --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8h__incl.md5 @@ -0,0 +1 @@ +ed10852a58184e4ee6fe2cc41292b3e4 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm_8h__incl.svg b/doc/html/driver__pcf8563__alarm_8h__incl.svg new file mode 100644 index 0000000..6b47c21 --- /dev/null +++ b/doc/html/driver__pcf8563__alarm_8h__incl.svg @@ -0,0 +1,130 @@ + + + + + + +example/driver_pcf8563_alarm.h + + +Node1 + + +example/driver_pcf8563 +_alarm.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node7 + + +time.h + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm_8h_source.html b/doc/html/driver__pcf8563__alarm_8h_source.html index c5158cf..2bdaa2e 100644 --- a/doc/html/driver__pcf8563__alarm_8h_source.html +++ b/doc/html/driver__pcf8563__alarm_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_alarm.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_alarm.h
+
driver_pcf8563_alarm.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_ALARM_H
-
38 #define DRIVER_PCF8563_ALARM_H
-
39 
- -
41 #include <time.h>
-
42 
-
43 #ifdef __cplusplus
-
44 extern "C"{
-
45 #endif
-
46 
-
57 typedef struct pcf8563_alarm_param_s
-
58 {
- -
60  uint8_t minute;
- -
62  uint8_t hour;
- -
64  uint8_t day;
- -
66  uint8_t week;
- - -
69 
-
77 uint8_t pcf8563_alarm_irq_handler(void);
-
78 
-
87 uint8_t pcf8563_alarm_init(void (*callback)(uint8_t type));
-
88 
-
96 uint8_t pcf8563_alarm_deinit(void);
-
97 
- -
107 
-
115 uint8_t pcf8563_alarm_disable(void);
-
116 
- -
126 
-
135 uint8_t pcf8563_alarm_set_timestamp(time_t timestamp);
-
136 
-
144 uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone);
-
145 
- -
155 
-
164 uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp);
-
165 
-
173 uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone);
-
174 
-
184 uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len);
-
185 
-
190 #ifdef __cplusplus
-
191 }
-
192 #endif
-
193 
-
194 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_ALARM_H
+
38#define DRIVER_PCF8563_ALARM_H
+
39
+ +
41#include <time.h>
+
42
+
43#ifdef __cplusplus
+
44extern "C"{
+
45#endif
+
46
+
53
+ +
69
+
77uint8_t pcf8563_alarm_irq_handler(void);
+
78
+
87uint8_t pcf8563_alarm_init(void (*callback)(uint8_t type));
+
88
+
96uint8_t pcf8563_alarm_deinit(void);
+
97
+ +
107
+
115uint8_t pcf8563_alarm_disable(void);
+
116
+ +
126
+
135uint8_t pcf8563_alarm_set_timestamp(time_t timestamp);
+
136
+
144uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone);
+
145
+ +
155
+
164uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp);
+
165
+
173uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone);
+
174
+
184uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len);
+
185
+
189
+
190#ifdef __cplusplus
+
191}
+
192#endif
+
193
+
194#endif
driver pcf8563 interface header file
-
pcf8563_bool_t
pcf8563 bool enumeration definition
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
alarm example set the time by a unix timestamp
+
pcf8563_bool_t
pcf8563 bool enumeration definition
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_alarm_set_timestamp(time_t timestamp)
alarm example set the time by a unix timestamp
struct pcf8563_alarm_param_s pcf8563_alarm_param_t
pcf8563 alarm param structure definition
-
uint8_t pcf8563_alarm_disable(void)
alarm example disable the alarm
-
uint8_t pcf8563_alarm_enable(pcf8563_alarm_param_t *param)
alarm example enable the alarm
-
uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone)
alarm example get the local time zone
-
uint8_t pcf8563_alarm_set_time(pcf8563_time_t *t)
alarm example set the time
-
uint8_t pcf8563_alarm_irq_handler(void)
alarm example irq
-
uint8_t pcf8563_alarm_init(void(*callback)(uint8_t type))
alarm example init
-
uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone)
alarm example set the local time zone
-
uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
alarm example get the ascii time
-
uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
alarm example get the time in a unix timestamp
-
uint8_t pcf8563_alarm_deinit(void)
alarm example deinit
-
uint8_t pcf8563_alarm_get_time(pcf8563_time_t *t)
alarm example get the time
-
pcf8563 alarm param structure definition
- - - - - - -
pcf8563_interrupt_mode_t mode
- - -
pcf8563 time structure definition
+
uint8_t pcf8563_alarm_disable(void)
alarm example disable the alarm
+
uint8_t pcf8563_alarm_enable(pcf8563_alarm_param_t *param)
alarm example enable the alarm
+
uint8_t pcf8563_alarm_get_timestamp_time_zone(int8_t *zone)
alarm example get the local time zone
+
uint8_t pcf8563_alarm_set_time(pcf8563_time_t *t)
alarm example set the time
+
uint8_t pcf8563_alarm_irq_handler(void)
alarm example irq
+
uint8_t pcf8563_alarm_init(void(*callback)(uint8_t type))
alarm example init
+
uint8_t pcf8563_alarm_set_timestamp_time_zone(int8_t zone)
alarm example set the local time zone
+
uint8_t pcf8563_alarm_get_ascii_time(char *buf, uint8_t len)
alarm example get the ascii time
+
uint8_t pcf8563_alarm_get_timestamp(time_t *timestamp)
alarm example get the time in a unix timestamp
+
uint8_t pcf8563_alarm_deinit(void)
alarm example deinit
+
uint8_t pcf8563_alarm_get_time(pcf8563_time_t *t)
alarm example get the time
+
pcf8563 alarm param structure definition
+ + + + + + +
pcf8563_interrupt_mode_t mode
+ +
+
diff --git a/doc/html/driver__pcf8563__alarm__test_8c.html b/doc/html/driver__pcf8563__alarm__test_8c.html index a09e624..b112418 100644 --- a/doc/html/driver__pcf8563__alarm__test_8c.html +++ b/doc/html/driver__pcf8563__alarm__test_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_alarm_test.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_alarm_test.c File Reference
+
driver_pcf8563_alarm_test.c File Reference
@@ -95,19 +99,22 @@ More...

#include "driver_pcf8563_alarm_test.h"
#include <stdlib.h>
+
+Include dependency graph for driver_pcf8563_alarm_test.c:
+
+
+

Go to the source code of this file.

- - - - - - - + + + +

+

Functions

uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq More...
 
uint8_t pcf8563_alarm_test (void)
 alarm test More...
 
uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq
uint8_t pcf8563_alarm_test (void)
 alarm test
-

Detailed Description

+

Detailed Description

driver pcf8563 alarm test source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -128,11 +135,19 @@

history

Definition in file driver_pcf8563_alarm_test.c.

+ +
diff --git a/doc/html/driver__pcf8563__alarm__test_8c__incl.md5 b/doc/html/driver__pcf8563__alarm__test_8c__incl.md5 new file mode 100644 index 0000000..f83a121 --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8c__incl.md5 @@ -0,0 +1 @@ +5cd635b9a9320401529081482d63eb7b \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm__test_8c__incl.svg b/doc/html/driver__pcf8563__alarm__test_8c__incl.svg new file mode 100644 index 0000000..24e113f --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8c__incl.svg @@ -0,0 +1,149 @@ + + + + + + +test/driver_pcf8563_alarm_test.c + + +Node1 + + +test/driver_pcf8563 +_alarm_test.c + + + + + +Node2 + + +driver_pcf8563_alarm +_test.h + + + + + +Node1->Node2 + + + + + + + + +Node8 + + +stdlib.h + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm__test_8c_source.html b/doc/html/driver__pcf8563__alarm__test_8c_source.html index 0946a1f..c52e2d6 100644 --- a/doc/html/driver__pcf8563__alarm__test_8c_source.html +++ b/doc/html/driver__pcf8563__alarm__test_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_alarm_test.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_alarm_test.c
+
driver_pcf8563_alarm_test.c
-Go to the documentation of this file.
1 
- -
38 #include <stdlib.h>
-
39 
-
40 static pcf8563_handle_t gs_handle;
-
41 static volatile uint8_t gs_flag;
-
48 static void a_receive_callback(uint8_t type)
-
49 {
-
50  switch (type)
-
51  {
- -
53  {
-
54  pcf8563_interface_debug_print("pcf8563: irq timer.\n");
-
55 
-
56  break;
-
57  }
- -
59  {
-
60  gs_flag = 1;
-
61  pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
-
62 
-
63  break;
-
64  }
-
65  default :
-
66  {
-
67  pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
-
68 
-
69  break;
-
70  }
-
71  }
-
72 }
-
73 
- -
82 {
-
83  if (pcf8563_irq_handler(&gs_handle) != 0)
-
84  {
-
85  return 1;
-
86  }
-
87 
-
88  return 0;
-
89 }
-
90 
-
98 uint8_t pcf8563_alarm_test(void)
-
99 {
-
100  uint8_t res;
-
101  uint32_t i;
-
102  pcf8563_info_t info;
-
103  pcf8563_time_t time_in;
-
104  pcf8563_time_t time_out;
-
105 
-
106  /* link functions */
- - - - - - - -
114  DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, a_receive_callback);
-
115 
-
116  /* get pcf8563 info */
-
117  res = pcf8563_info(&info);
-
118  if (res != 0)
-
119  {
-
120  pcf8563_interface_debug_print("pcf8563: get info failed.\n");
-
121 
-
122  return 1;
-
123  }
-
124  else
-
125  {
-
126  /* print pcf8563 info */
-
127  pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
-
128  pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
-
129  pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
-
130  pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
-
131  pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
-
132  pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
-
133  pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
-
134  pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
-
135  pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
-
136  }
-
137 
-
138  /* start alarm test */
-
139  pcf8563_interface_debug_print("pcf8563: start alarm test.\n");
-
140 
-
141  /* init pcf8563 */
-
142  res = pcf8563_init(&gs_handle);
-
143  if (res != 0)
-
144  {
-
145  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
146 
-
147  return 1;
-
148  }
-
149 
-
150  /* disable rtc stop */
-
151  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
152  if (res != 0)
-
153  {
-
154  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
155  (void)pcf8563_deinit(&gs_handle);
-
156 
-
157  return 1;
-
158  }
-
159 
-
160  /* disable test mode */
-
161  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
162  if (res != 0)
-
163  {
-
164  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
165  (void)pcf8563_deinit(&gs_handle);
-
166 
-
167  return 1;
-
168  }
-
169 
-
170  /* disable power on reset */
- -
172  if (res != 0)
-
173  {
-
174  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
175  (void)pcf8563_deinit(&gs_handle);
-
176 
-
177  return 1;
-
178  }
-
179 
-
180  /* disable clock out */
- -
182  if (res != 0)
-
183  {
-
184  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
185  (void)pcf8563_deinit(&gs_handle);
-
186 
-
187  return 1;
-
188  }
-
189 
-
190  /* disable timer interrupt */
- -
192  if (res != 0)
-
193  {
-
194  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
195  (void)pcf8563_deinit(&gs_handle);
-
196 
-
197  return 1;
-
198  }
-
199 
-
200  /* set interrupt mode pulse */
- -
202  if (res != 0)
-
203  {
-
204  pcf8563_interface_debug_print("pcf8563: set interrupt pin mode failed.\n");
-
205  (void)pcf8563_deinit(&gs_handle);
-
206 
-
207  return 1;
-
208  }
-
209 
-
210  /* disable hour alarm */
- -
212  if (res != 0)
-
213  {
-
214  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
215  (void)pcf8563_deinit(&gs_handle);
-
216 
-
217  return 1;
-
218  }
-
219 
-
220  /* disable day alarm */
- -
222  if (res != 0)
-
223  {
-
224  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
225  (void)pcf8563_deinit(&gs_handle);
-
226 
-
227  return 1;
-
228  }
-
229 
-
230  /* disable week alarm */
- -
232  if (res != 0)
-
233  {
-
234  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
235  (void)pcf8563_deinit(&gs_handle);
-
236 
-
237  return 1;
-
238  }
-
239 
-
240  /* set time */
-
241  time_in.year = rand() % 100 + 2000;
-
242  time_in.month = rand() % 12 + 1;
-
243  time_in.date = rand() % 20 + 1;
-
244  time_in.week = rand() % 7;
-
245  time_in.hour = rand() % 11 + 1;
-
246  time_in.minute = 0;
-
247  time_in.second = 0;
-
248  res = pcf8563_set_time(&gs_handle, &time_in);
-
249  if (res != 0)
-
250  {
-
251  pcf8563_interface_debug_print("pcf8563: set time failed.\n");
-
252  (void)pcf8563_deinit(&gs_handle);
-
253 
-
254  return 1;
-
255  }
-
256 
-
257  /* set minute */
-
258  res = pcf8563_set_minute_alarm(&gs_handle, 1);
-
259  if (res != 0)
-
260  {
-
261  pcf8563_interface_debug_print("pcf8563: set minute alarm failed.\n");
-
262  (void)pcf8563_deinit(&gs_handle);
-
263 
-
264  return 1;
-
265  }
-
266 
-
267  /* enable minute alarm */
- -
269  if (res != 0)
-
270  {
-
271  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
272  (void)pcf8563_deinit(&gs_handle);
-
273 
-
274  return 1;
-
275  }
-
276 
-
277  /* clear status */
- -
279  if (res != 0)
-
280  {
-
281  pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
-
282  (void)pcf8563_deinit(&gs_handle);
-
283 
-
284  return 1;
-
285  }
-
286 
-
287  /* enable alarm interrupt */
- -
289  if (res != 0)
-
290  {
-
291  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
292  (void)pcf8563_deinit(&gs_handle);
-
293 
-
294  return 1;
-
295  }
-
296 
-
297  /* wait for trigger */
-
298  gs_flag = 0;
-
299  for (i = 0; i < 180; i++)
-
300  {
-
301  if (gs_flag != 0)
-
302  {
-
303  break;
-
304  }
- -
306  res = pcf8563_get_time(&gs_handle, &time_out);
-
307  if (res != 0)
-
308  {
-
309  pcf8563_interface_debug_print("pcf8563: get time failed.\n");
-
310  (void)pcf8563_deinit(&gs_handle);
-
311 
-
312  return 1;
-
313  }
-
314  pcf8563_interface_debug_print("pcf8563: time is %02d:%02d:%02d.\n",
-
315  time_out.hour, time_out.minute, time_out.second
-
316  );
-
317  }
-
318 
-
319  /* check flag */
-
320  if (gs_flag == 0)
-
321  {
-
322  pcf8563_interface_debug_print("pcf8563: not found alarm.\n");
-
323  }
-
324 
-
325  /* disable minute alarm */
- -
327  if (res != 0)
-
328  {
-
329  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
330  (void)pcf8563_deinit(&gs_handle);
-
331 
-
332  return 1;
-
333  }
-
334 
-
335  /* disable alarm interrupt */
- -
337  if (res != 0)
-
338  {
-
339  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
340  (void)pcf8563_deinit(&gs_handle);
-
341 
-
342  return 1;
-
343  }
-
344 
-
345  /* finish alarm test */
-
346  pcf8563_interface_debug_print("pcf8563: finish alarm test.\n");
-
347  (void)pcf8563_deinit(&gs_handle);
-
348 
-
349  return 0;
-
350 }
+Go to the documentation of this file.
1
+
36
+ +
38#include <stdlib.h>
+
39
+
40static pcf8563_handle_t gs_handle;
+
41static volatile uint8_t gs_flag;
+
42
+
48static void a_receive_callback(uint8_t type)
+
49{
+
50 switch (type)
+
51 {
+ +
53 {
+
54 pcf8563_interface_debug_print("pcf8563: irq timer.\n");
+
55
+
56 break;
+
57 }
+ +
59 {
+
60 gs_flag = 1;
+
61 pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
+
62
+
63 break;
+
64 }
+
65 default :
+
66 {
+
67 pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
+
68
+
69 break;
+
70 }
+
71 }
+
72}
+
73
+
+ +
82{
+
83 if (pcf8563_irq_handler(&gs_handle) != 0)
+
84 {
+
85 return 1;
+
86 }
+
87
+
88 return 0;
+
89}
+
+
90
+
+
98uint8_t pcf8563_alarm_test(void)
+
99{
+
100 uint8_t res;
+
101 uint32_t i;
+
102 pcf8563_info_t info;
+
103 pcf8563_time_t time_in;
+
104 pcf8563_time_t time_out;
+
105
+
106 /* link functions */
+ + + + + + + +
114 DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, a_receive_callback);
+
115
+
116 /* get pcf8563 info */
+
117 res = pcf8563_info(&info);
+
118 if (res != 0)
+
119 {
+
120 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
+
121
+
122 return 1;
+
123 }
+
124 else
+
125 {
+
126 /* print pcf8563 info */
+
127 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
+
128 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
+
129 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
+
130 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
+
131 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
+
132 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
+
133 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
+
134 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
+
135 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
+
136 }
+
137
+
138 /* start alarm test */
+
139 pcf8563_interface_debug_print("pcf8563: start alarm test.\n");
+
140
+
141 /* init pcf8563 */
+
142 res = pcf8563_init(&gs_handle);
+
143 if (res != 0)
+
144 {
+
145 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
146
+
147 return 1;
+
148 }
+
149
+
150 /* disable rtc stop */
+
151 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
+
152 if (res != 0)
+
153 {
+
154 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
155 (void)pcf8563_deinit(&gs_handle);
+
156
+
157 return 1;
+
158 }
+
159
+
160 /* disable test mode */
+
161 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
162 if (res != 0)
+
163 {
+
164 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
165 (void)pcf8563_deinit(&gs_handle);
+
166
+
167 return 1;
+
168 }
+
169
+
170 /* disable power on reset */
+ +
172 if (res != 0)
+
173 {
+
174 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
175 (void)pcf8563_deinit(&gs_handle);
+
176
+
177 return 1;
+
178 }
+
179
+
180 /* disable clock out */
+ +
182 if (res != 0)
+
183 {
+
184 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
185 (void)pcf8563_deinit(&gs_handle);
+
186
+
187 return 1;
+
188 }
+
189
+
190 /* disable timer interrupt */
+ +
192 if (res != 0)
+
193 {
+
194 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
195 (void)pcf8563_deinit(&gs_handle);
+
196
+
197 return 1;
+
198 }
+
199
+
200 /* set interrupt mode pulse */
+ +
202 if (res != 0)
+
203 {
+
204 pcf8563_interface_debug_print("pcf8563: set interrupt pin mode failed.\n");
+
205 (void)pcf8563_deinit(&gs_handle);
+
206
+
207 return 1;
+
208 }
+
209
+
210 /* disable hour alarm */
+ +
212 if (res != 0)
+
213 {
+
214 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
215 (void)pcf8563_deinit(&gs_handle);
+
216
+
217 return 1;
+
218 }
+
219
+
220 /* disable day alarm */
+ +
222 if (res != 0)
+
223 {
+
224 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
225 (void)pcf8563_deinit(&gs_handle);
+
226
+
227 return 1;
+
228 }
+
229
+
230 /* disable week alarm */
+ +
232 if (res != 0)
+
233 {
+
234 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
235 (void)pcf8563_deinit(&gs_handle);
+
236
+
237 return 1;
+
238 }
+
239
+
240 /* set time */
+
241 time_in.year = rand() % 100 + 2000;
+
242 time_in.month = rand() % 12 + 1;
+
243 time_in.date = rand() % 20 + 1;
+
244 time_in.week = rand() % 7;
+
245 time_in.hour = rand() % 11 + 1;
+
246 time_in.minute = 0;
+
247 time_in.second = 0;
+
248 res = pcf8563_set_time(&gs_handle, &time_in);
+
249 if (res != 0)
+
250 {
+
251 pcf8563_interface_debug_print("pcf8563: set time failed.\n");
+
252 (void)pcf8563_deinit(&gs_handle);
+
253
+
254 return 1;
+
255 }
+
256
+
257 /* set minute */
+
258 res = pcf8563_set_minute_alarm(&gs_handle, 1);
+
259 if (res != 0)
+
260 {
+
261 pcf8563_interface_debug_print("pcf8563: set minute alarm failed.\n");
+
262 (void)pcf8563_deinit(&gs_handle);
+
263
+
264 return 1;
+
265 }
+
266
+
267 /* enable minute alarm */
+ +
269 if (res != 0)
+
270 {
+
271 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
272 (void)pcf8563_deinit(&gs_handle);
+
273
+
274 return 1;
+
275 }
+
276
+
277 /* clear status */
+ +
279 if (res != 0)
+
280 {
+
281 pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
+
282 (void)pcf8563_deinit(&gs_handle);
+
283
+
284 return 1;
+
285 }
+
286
+
287 /* enable alarm interrupt */
+ +
289 if (res != 0)
+
290 {
+
291 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
292 (void)pcf8563_deinit(&gs_handle);
+
293
+
294 return 1;
+
295 }
+
296
+
297 /* wait for trigger */
+
298 gs_flag = 0;
+
299 for (i = 0; i < 180; i++)
+
300 {
+
301 if (gs_flag != 0)
+
302 {
+
303 break;
+
304 }
+ +
306 res = pcf8563_get_time(&gs_handle, &time_out);
+
307 if (res != 0)
+
308 {
+
309 pcf8563_interface_debug_print("pcf8563: get time failed.\n");
+
310 (void)pcf8563_deinit(&gs_handle);
+
311
+
312 return 1;
+
313 }
+
314 pcf8563_interface_debug_print("pcf8563: time is %02d:%02d:%02d.\n",
+
315 time_out.hour, time_out.minute, time_out.second
+
316 );
+
317 }
+
318
+
319 /* check flag */
+
320 if (gs_flag == 0)
+
321 {
+
322 pcf8563_interface_debug_print("pcf8563: not found alarm.\n");
+
323 }
+
324
+
325 /* disable minute alarm */
+ +
327 if (res != 0)
+
328 {
+
329 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
330 (void)pcf8563_deinit(&gs_handle);
+
331
+
332 return 1;
+
333 }
+
334
+
335 /* disable alarm interrupt */
+ +
337 if (res != 0)
+
338 {
+
339 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
340 (void)pcf8563_deinit(&gs_handle);
+
341
+
342 return 1;
+
343 }
+
344
+
345 /* finish alarm test */
+
346 pcf8563_interface_debug_print("pcf8563: finish alarm test.\n");
+
347 (void)pcf8563_deinit(&gs_handle);
+
348
+
349 return 0;
+
350}
+
driver pcf8563 alarm test header file
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_MODE_PULSE
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
uint8_t pcf8563_alarm_test(void)
alarm test
-
uint8_t pcf8563_alarm_test_irq_handler(void)
alarm test irq
-
pcf8563 handle structure definition
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_MODE_PULSE
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + +
uint8_t pcf8563_alarm_test(void)
alarm test
+
uint8_t pcf8563_alarm_test_irq_handler(void)
alarm test irq
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__alarm__test_8h.html b/doc/html/driver__pcf8563__alarm__test_8h.html index 2535604..3536d6f 100644 --- a/doc/html/driver__pcf8563__alarm__test_8h.html +++ b/doc/html/driver__pcf8563__alarm__test_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_alarm_test.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_alarm_test.h File Reference
+
driver_pcf8563_alarm_test.h File Reference

driver pcf8563 alarm test header file More...

+Include dependency graph for driver_pcf8563_alarm_test.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - + + + +

+

Functions

uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq More...
 
uint8_t pcf8563_alarm_test (void)
 alarm test More...
 
uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq
uint8_t pcf8563_alarm_test (void)
 alarm test
-

Detailed Description

+

Detailed Description

driver pcf8563 alarm test header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -127,11 +139,19 @@

history

Definition in file driver_pcf8563_alarm_test.h.

+ +
diff --git a/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.md5 b/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.md5 new file mode 100644 index 0000000..76306fd --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.md5 @@ -0,0 +1 @@ +855f3d8067aef00cbaf7b83946b1b0a2 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.svg b/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.svg new file mode 100644 index 0000000..032d033 --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +test/driver_pcf8563_alarm_test.h + + +Node1 + + +test/driver_pcf8563 +_alarm_test.h + + + + + +Node2 + + +test/driver_pcf8563 +_alarm_test.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm__test_8h__incl.md5 b/doc/html/driver__pcf8563__alarm__test_8h__incl.md5 new file mode 100644 index 0000000..7874a98 --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8h__incl.md5 @@ -0,0 +1 @@ +21e4839bb2831bbd7ffb6e0afe532c93 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__alarm__test_8h__incl.svg b/doc/html/driver__pcf8563__alarm__test_8h__incl.svg new file mode 100644 index 0000000..3dd161a --- /dev/null +++ b/doc/html/driver__pcf8563__alarm__test_8h__incl.svg @@ -0,0 +1,112 @@ + + + + + + +test/driver_pcf8563_alarm_test.h + + +Node1 + + +test/driver_pcf8563 +_alarm_test.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__alarm__test_8h_source.html b/doc/html/driver__pcf8563__alarm__test_8h_source.html index 10711dc..778de24 100644 --- a/doc/html/driver__pcf8563__alarm__test_8h_source.html +++ b/doc/html/driver__pcf8563__alarm__test_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_alarm_test.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_alarm_test.h
+
driver_pcf8563_alarm_test.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_ALARM_TEST_H
-
38 #define DRIVER_PCF8563_ALARM_TEST_H
-
39 
- -
41 
-
42 #ifdef __cplusplus
-
43 extern "C"{
-
44 #endif
-
45 
-
58 uint8_t pcf8563_alarm_test_irq_handler(void);
-
59 
-
67 uint8_t pcf8563_alarm_test(void);
-
68 
-
73 #ifdef __cplusplus
-
74 }
-
75 #endif
-
76 
-
77 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_ALARM_TEST_H
+
38#define DRIVER_PCF8563_ALARM_TEST_H
+
39
+ +
41
+
42#ifdef __cplusplus
+
43extern "C"{
+
44#endif
+
45
+
50
+ +
59
+
67uint8_t pcf8563_alarm_test(void);
+
68
+
72
+
73#ifdef __cplusplus
+
74}
+
75#endif
+
76
+
77#endif
driver pcf8563 interface header file
-
uint8_t pcf8563_alarm_test(void)
alarm test
-
uint8_t pcf8563_alarm_test_irq_handler(void)
alarm test irq
+
uint8_t pcf8563_alarm_test(void)
alarm test
+
uint8_t pcf8563_alarm_test_irq_handler(void)
alarm test irq
+
diff --git a/doc/html/driver__pcf8563__basic_8c.html b/doc/html/driver__pcf8563__basic_8c.html index d09ed49..edfa2a9 100644 --- a/doc/html/driver__pcf8563__basic_8c.html +++ b/doc/html/driver__pcf8563__basic_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_basic.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_basic.c File Reference
+
driver_pcf8563_basic.c File Reference

driver pcf8563 basic source file More...

+Include dependency graph for driver_pcf8563_basic.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_basic_init (void)
 basic example init More...
 
uint8_t pcf8563_basic_deinit (void)
 basic example deinit More...
 
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time More...
 
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp More...
 
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone More...
 
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time More...
 
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp More...
 
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone More...
 
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time More...
 
uint8_t pcf8563_basic_init (void)
 basic example init
uint8_t pcf8563_basic_deinit (void)
 basic example deinit
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time
-

Detailed Description

+

Detailed Description

driver pcf8563 basic source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -148,11 +148,19 @@

history

Definition in file driver_pcf8563_basic.c.

+ +
diff --git a/doc/html/driver__pcf8563__basic_8c__incl.md5 b/doc/html/driver__pcf8563__basic_8c__incl.md5 new file mode 100644 index 0000000..c89ef18 --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8c__incl.md5 @@ -0,0 +1 @@ +a8bc512f8163bd69edd559e12d7959f4 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__basic_8c__incl.svg b/doc/html/driver__pcf8563__basic_8c__incl.svg new file mode 100644 index 0000000..da88224 --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8c__incl.svg @@ -0,0 +1,148 @@ + + + + + + +example/driver_pcf8563_basic.c + + +Node1 + + +example/driver_pcf8563 +_basic.c + + + + + +Node2 + + +driver_pcf8563_basic.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node8 + + +time.h + + + + + +Node2->Node8 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__basic_8c_source.html b/doc/html/driver__pcf8563__basic_8c_source.html index 260a7eb..78b7c38 100644 --- a/doc/html/driver__pcf8563__basic_8c_source.html +++ b/doc/html/driver__pcf8563__basic_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_basic.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_basic.c
+
driver_pcf8563_basic.c
-Go to the documentation of this file.
1 
-
37 #include "driver_pcf8563_basic.h"
-
38 
-
39 static pcf8563_handle_t gs_handle;
-
40 static int8_t gs_time_zone = 0;
-
49 uint8_t pcf8563_basic_init(void)
-
50 {
-
51  uint8_t res;
-
52 
-
53  /* link functions */
- - - - - - - - -
62 
-
63  /* init pcf8563 */
-
64  res = pcf8563_init(&gs_handle);
-
65  if (res != 0)
-
66  {
-
67  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
68 
-
69  return 1;
-
70  }
-
71 
-
72  /* disable rtc stop */
-
73  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
74  if (res != 0)
-
75  {
-
76  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
77  (void)pcf8563_deinit(&gs_handle);
-
78 
-
79  return 1;
-
80  }
-
81 
-
82  /* disable test mode */
-
83  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
84  if (res != 0)
-
85  {
-
86  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
87  (void)pcf8563_deinit(&gs_handle);
-
88 
-
89  return 1;
-
90  }
-
91 
-
92  /* disable power on reset */
- -
94  if (res != 0)
-
95  {
-
96  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
97  (void)pcf8563_deinit(&gs_handle);
-
98 
-
99  return 1;
-
100  }
-
101 
-
102  /* disable timer */
-
103  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
104  if (res != 0)
-
105  {
-
106  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
107  (void)pcf8563_deinit(&gs_handle);
-
108 
-
109  return 1;
-
110  }
-
111 
-
112  /* disable minute alarm */
- -
114  if (res != 0)
-
115  {
-
116  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
117  (void)pcf8563_deinit(&gs_handle);
-
118 
-
119  return 1;
-
120  }
-
121 
-
122  /* disable hour alarm */
- -
124  if (res != 0)
-
125  {
-
126  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
127  (void)pcf8563_deinit(&gs_handle);
-
128 
-
129  return 1;
-
130  }
-
131 
-
132  /* disable day alarm */
- -
134  if (res != 0)
-
135  {
-
136  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
137  (void)pcf8563_deinit(&gs_handle);
-
138 
-
139  return 1;
-
140  }
-
141 
-
142  /* disable week alarm */
- -
144  if (res != 0)
-
145  {
-
146  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
147  (void)pcf8563_deinit(&gs_handle);
-
148 
-
149  return 1;
-
150  }
-
151 
-
152  /* disable timer interrupt */
- -
154  if (res != 0)
-
155  {
-
156  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
157  (void)pcf8563_deinit(&gs_handle);
-
158 
-
159  return 1;
-
160  }
-
161 
-
162  /* disable alarm interrupt */
- -
164  if (res != 0)
-
165  {
-
166  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
167  (void)pcf8563_deinit(&gs_handle);
-
168 
-
169  return 1;
-
170  }
-
171 
-
172  /* disable clock out */
- -
174  if (res != 0)
-
175  {
-
176  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
177  (void)pcf8563_deinit(&gs_handle);
-
178 
-
179  return 1;
-
180  }
-
181 
-
182  return 0;
-
183 }
-
184 
-
192 uint8_t pcf8563_basic_deinit(void)
-
193 {
-
194  if (pcf8563_deinit(&gs_handle) != 0)
-
195  {
-
196  return 1;
-
197  }
-
198 
-
199  return 0;
-
200 }
-
201 
- -
211 {
-
212  /* set time */
-
213  if (pcf8563_set_time(&gs_handle, t) != 0)
-
214  {
-
215  return 1;
-
216  }
-
217 
-
218  return 0;
-
219 }
-
220 
-
229 uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
-
230 {
-
231  pcf8563_time_t t;
-
232  struct tm *timeptr;
-
233 
-
234  /* convert times */
-
235  timestamp += (time_t)(gs_time_zone * 3600);
-
236  timeptr = localtime(&timestamp);
-
237  t.date = (uint8_t)timeptr->tm_mday;
-
238  t.hour = (uint8_t)timeptr->tm_hour;
-
239  t.minute = (uint8_t)timeptr->tm_min;
-
240  t.month = (uint8_t)timeptr->tm_mon + 1;
-
241  t.second = (uint8_t)timeptr->tm_sec;
-
242  t.week = (uint8_t)timeptr->tm_wday;
-
243  t.year = (uint16_t)(timeptr->tm_year + 1900);
-
244 
-
245  /* set time */
-
246  if (pcf8563_set_time(&gs_handle, &t) != 0)
-
247  {
-
248  return 1;
-
249  }
-
250 
-
251  return 0;
-
252 }
-
253 
- -
262 {
-
263  gs_time_zone = zone;
-
264 
-
265  return 0;
-
266 }
-
267 
- -
277 {
-
278  /* get time */
-
279  if (pcf8563_get_time(&gs_handle, t) != 0)
-
280  {
-
281  return 1;
-
282  }
-
283 
-
284  return 0;
-
285 }
-
286 
-
295 uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
-
296 {
-
297  pcf8563_time_t t;
-
298  struct tm timeptr;
-
299 
-
300  /* get time */
-
301  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
302  {
-
303  return 1;
-
304  }
-
305  timeptr.tm_year = t.year - 1900;
-
306  timeptr.tm_mon = t.month - 1;
-
307  timeptr.tm_wday = t.week;
-
308  timeptr.tm_mday = t.date;
-
309  timeptr.tm_hour = t.hour;
-
310  timeptr.tm_min = t.minute;
-
311  timeptr.tm_sec = t.second;
-
312 
-
313  /* make time */
-
314  *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
-
315 
-
316  return 0;
-
317 }
-
318 
- -
327 {
-
328  *zone = gs_time_zone;
-
329 
-
330  return 0;
-
331 }
-
332 
-
342 uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
-
343 {
-
344  pcf8563_time_t t;
-
345 
-
346  /* get time */
-
347  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
348  {
-
349  return 1;
-
350  }
-
351 
-
352  (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
-
353 
-
354  return 0;
-
355 }
+Go to the documentation of this file.
1
+
36
+ +
38
+
39static pcf8563_handle_t gs_handle;
+
40static int8_t gs_time_zone = 0;
+
41
+
+
49uint8_t pcf8563_basic_init(void)
+
50{
+
51 uint8_t res;
+
52
+
53 /* link functions */
+ + + + + + + + +
62
+
63 /* init pcf8563 */
+
64 res = pcf8563_init(&gs_handle);
+
65 if (res != 0)
+
66 {
+
67 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
68
+
69 return 1;
+
70 }
+
71
+
72 /* disable rtc stop */
+ +
74 if (res != 0)
+
75 {
+
76 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
77 (void)pcf8563_deinit(&gs_handle);
+
78
+
79 return 1;
+
80 }
+
81
+
82 /* disable test mode */
+ +
84 if (res != 0)
+
85 {
+
86 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
87 (void)pcf8563_deinit(&gs_handle);
+
88
+
89 return 1;
+
90 }
+
91
+
92 /* disable power on reset */
+ +
94 if (res != 0)
+
95 {
+
96 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
97 (void)pcf8563_deinit(&gs_handle);
+
98
+
99 return 1;
+
100 }
+
101
+
102 /* disable timer */
+ +
104 if (res != 0)
+
105 {
+
106 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
107 (void)pcf8563_deinit(&gs_handle);
+
108
+
109 return 1;
+
110 }
+
111
+
112 /* disable minute alarm */
+ +
114 if (res != 0)
+
115 {
+
116 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
117 (void)pcf8563_deinit(&gs_handle);
+
118
+
119 return 1;
+
120 }
+
121
+
122 /* disable hour alarm */
+ +
124 if (res != 0)
+
125 {
+
126 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
127 (void)pcf8563_deinit(&gs_handle);
+
128
+
129 return 1;
+
130 }
+
131
+
132 /* disable day alarm */
+ +
134 if (res != 0)
+
135 {
+
136 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
137 (void)pcf8563_deinit(&gs_handle);
+
138
+
139 return 1;
+
140 }
+
141
+
142 /* disable week alarm */
+ +
144 if (res != 0)
+
145 {
+
146 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
147 (void)pcf8563_deinit(&gs_handle);
+
148
+
149 return 1;
+
150 }
+
151
+
152 /* disable timer interrupt */
+ +
154 if (res != 0)
+
155 {
+
156 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
157 (void)pcf8563_deinit(&gs_handle);
+
158
+
159 return 1;
+
160 }
+
161
+
162 /* disable alarm interrupt */
+ +
164 if (res != 0)
+
165 {
+
166 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
167 (void)pcf8563_deinit(&gs_handle);
+
168
+
169 return 1;
+
170 }
+
171
+
172 /* disable clock out */
+ +
174 if (res != 0)
+
175 {
+
176 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
177 (void)pcf8563_deinit(&gs_handle);
+
178
+
179 return 1;
+
180 }
+
181
+
182 return 0;
+
183}
+
+
184
+
+ +
193{
+
194 if (pcf8563_deinit(&gs_handle) != 0)
+
195 {
+
196 return 1;
+
197 }
+
198
+
199 return 0;
+
200}
+
+
201
+
+ +
211{
+
212 /* set time */
+
213 if (pcf8563_set_time(&gs_handle, t) != 0)
+
214 {
+
215 return 1;
+
216 }
+
217
+
218 return 0;
+
219}
+
+
220
+
+
229uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
+
230{
+ +
232 struct tm *timeptr;
+
233
+
234 /* convert times */
+
235 timestamp += (time_t)(gs_time_zone * 3600);
+
236 timeptr = localtime(&timestamp);
+
237 t.date = (uint8_t)timeptr->tm_mday;
+
238 t.hour = (uint8_t)timeptr->tm_hour;
+
239 t.minute = (uint8_t)timeptr->tm_min;
+
240 t.month = (uint8_t)timeptr->tm_mon + 1;
+
241 t.second = (uint8_t)timeptr->tm_sec;
+
242 t.week = (uint8_t)timeptr->tm_wday;
+
243 t.year = (uint16_t)(timeptr->tm_year + 1900);
+
244
+
245 /* set time */
+
246 if (pcf8563_set_time(&gs_handle, &t) != 0)
+
247 {
+
248 return 1;
+
249 }
+
250
+
251 return 0;
+
252}
+
+
253
+
+ +
262{
+
263 gs_time_zone = zone;
+
264
+
265 return 0;
+
266}
+
+
267
+
+ +
277{
+
278 /* get time */
+
279 if (pcf8563_get_time(&gs_handle, t) != 0)
+
280 {
+
281 return 1;
+
282 }
+
283
+
284 return 0;
+
285}
+
+
286
+
+
295uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
+
296{
+ +
298 struct tm timeptr;
+
299
+
300 /* get time */
+
301 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
302 {
+
303 return 1;
+
304 }
+
305 timeptr.tm_year = t.year - 1900;
+
306 timeptr.tm_mon = t.month - 1;
+
307 timeptr.tm_wday = t.week;
+
308 timeptr.tm_mday = t.date;
+
309 timeptr.tm_hour = t.hour;
+
310 timeptr.tm_min = t.minute;
+
311 timeptr.tm_sec = t.second;
+
312
+
313 /* make time */
+
314 *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
+
315
+
316 return 0;
+
317}
+
+
318
+
+ +
327{
+
328 *zone = gs_time_zone;
+
329
+
330 return 0;
+
331}
+
+
332
+
+
342uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
+
343{
+ +
345
+
346 /* get time */
+
347 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
348 {
+
349 return 1;
+
350 }
+
351
+
352 (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
+
353
+
354 return 0;
+
355}
+
driver pcf8563 basic header file
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_FALSE
-
uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
basic example get the time in a unix timestamp
-
uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone)
basic example get the local time zone
-
uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
basic example get the ascii time
-
uint8_t pcf8563_basic_deinit(void)
basic example deinit
-
uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone)
basic example set the local time zone
-
uint8_t pcf8563_basic_get_time(pcf8563_time_t *t)
basic example get the time
-
uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
basic example set the time by a unix timestamp
-
uint8_t pcf8563_basic_set_time(pcf8563_time_t *t)
basic example set the time
-
uint8_t pcf8563_basic_init(void)
basic example init
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
pcf8563 handle structure definition
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_FALSE
+
uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
basic example get the time in a unix timestamp
+
uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone)
basic example get the local time zone
+
uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
basic example get the ascii time
+
uint8_t pcf8563_basic_deinit(void)
basic example deinit
+
uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone)
basic example set the local time zone
+
uint8_t pcf8563_basic_get_time(pcf8563_time_t *t)
basic example get the time
+
uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
basic example set the time by a unix timestamp
+
uint8_t pcf8563_basic_set_time(pcf8563_time_t *t)
basic example set the time
+
uint8_t pcf8563_basic_init(void)
basic example init
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__basic_8h.html b/doc/html/driver__pcf8563__basic_8h.html index b5b09c7..a1fe0b4 100644 --- a/doc/html/driver__pcf8563__basic_8h.html +++ b/doc/html/driver__pcf8563__basic_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_basic.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_basic.h File Reference
+
driver_pcf8563_basic.h File Reference
@@ -95,40 +99,41 @@ More...

#include "driver_pcf8563_interface.h"
#include <time.h>
+
+Include dependency graph for driver_pcf8563_basic.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_basic_init (void)
 basic example init More...
 
uint8_t pcf8563_basic_deinit (void)
 basic example deinit More...
 
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time More...
 
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp More...
 
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone More...
 
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time More...
 
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp More...
 
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone More...
 
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time More...
 
uint8_t pcf8563_basic_init (void)
 basic example init
uint8_t pcf8563_basic_deinit (void)
 basic example deinit
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time
-

Detailed Description

+

Detailed Description

driver pcf8563 basic header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -149,11 +154,19 @@

history

Definition in file driver_pcf8563_basic.h.

+ +
diff --git a/doc/html/driver__pcf8563__basic_8h__dep__incl.md5 b/doc/html/driver__pcf8563__basic_8h__dep__incl.md5 new file mode 100644 index 0000000..d44790b --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8h__dep__incl.md5 @@ -0,0 +1 @@ +15e4e3a00449a074105849418b26f510 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__basic_8h__dep__incl.svg b/doc/html/driver__pcf8563__basic_8h__dep__incl.svg new file mode 100644 index 0000000..5892493 --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +example/driver_pcf8563_basic.h + + +Node1 + + +example/driver_pcf8563 +_basic.h + + + + + +Node2 + + +example/driver_pcf8563 +_basic.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__basic_8h__incl.md5 b/doc/html/driver__pcf8563__basic_8h__incl.md5 new file mode 100644 index 0000000..6fb291b --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8h__incl.md5 @@ -0,0 +1 @@ +3d47ef51a2cb101428612ef3eafa806d \ No newline at end of file diff --git a/doc/html/driver__pcf8563__basic_8h__incl.svg b/doc/html/driver__pcf8563__basic_8h__incl.svg new file mode 100644 index 0000000..5678d55 --- /dev/null +++ b/doc/html/driver__pcf8563__basic_8h__incl.svg @@ -0,0 +1,130 @@ + + + + + + +example/driver_pcf8563_basic.h + + +Node1 + + +example/driver_pcf8563 +_basic.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node7 + + +time.h + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__basic_8h_source.html b/doc/html/driver__pcf8563__basic_8h_source.html index 5687d8c..618687b 100644 --- a/doc/html/driver__pcf8563__basic_8h_source.html +++ b/doc/html/driver__pcf8563__basic_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_basic.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_basic.h
+
driver_pcf8563_basic.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_BASIC_H
-
38 #define DRIVER_PCF8563_BASIC_H
-
39 
- -
41 #include <time.h>
-
42 
-
43 #ifdef __cplusplus
-
44 extern "C"{
-
45 #endif
-
46 
-
61 uint8_t pcf8563_basic_init(void);
-
62 
-
70 uint8_t pcf8563_basic_deinit(void);
-
71 
- -
81 
-
90 uint8_t pcf8563_basic_set_timestamp(time_t timestamp);
-
91 
-
99 uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone);
-
100 
- -
110 
-
119 uint8_t pcf8563_basic_get_timestamp(time_t *timestamp);
-
120 
-
128 uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone);
-
129 
-
139 uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len);
-
140 
-
145 #ifdef __cplusplus
-
146 }
-
147 #endif
-
148 
-
149 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_BASIC_H
+
38#define DRIVER_PCF8563_BASIC_H
+
39
+ +
41#include <time.h>
+
42
+
43#ifdef __cplusplus
+
44extern "C"{
+
45#endif
+
46
+
53
+
61uint8_t pcf8563_basic_init(void);
+
62
+
70uint8_t pcf8563_basic_deinit(void);
+
71
+ +
81
+
90uint8_t pcf8563_basic_set_timestamp(time_t timestamp);
+
91
+
99uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone);
+
100
+ +
110
+
119uint8_t pcf8563_basic_get_timestamp(time_t *timestamp);
+
120
+
128uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone);
+
129
+
139uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len);
+
140
+
144
+
145#ifdef __cplusplus
+
146}
+
147#endif
+
148
+
149#endif
driver pcf8563 interface header file
-
uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
basic example get the time in a unix timestamp
-
uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone)
basic example get the local time zone
-
uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
basic example get the ascii time
-
uint8_t pcf8563_basic_deinit(void)
basic example deinit
-
uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone)
basic example set the local time zone
-
uint8_t pcf8563_basic_get_time(pcf8563_time_t *t)
basic example get the time
-
uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
basic example set the time by a unix timestamp
-
uint8_t pcf8563_basic_set_time(pcf8563_time_t *t)
basic example set the time
-
uint8_t pcf8563_basic_init(void)
basic example init
-
pcf8563 time structure definition
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_basic_get_timestamp(time_t *timestamp)
basic example get the time in a unix timestamp
+
uint8_t pcf8563_basic_get_timestamp_time_zone(int8_t *zone)
basic example get the local time zone
+
uint8_t pcf8563_basic_get_ascii_time(char *buf, uint8_t len)
basic example get the ascii time
+
uint8_t pcf8563_basic_deinit(void)
basic example deinit
+
uint8_t pcf8563_basic_set_timestamp_time_zone(int8_t zone)
basic example set the local time zone
+
uint8_t pcf8563_basic_get_time(pcf8563_time_t *t)
basic example get the time
+
uint8_t pcf8563_basic_set_timestamp(time_t timestamp)
basic example set the time by a unix timestamp
+
uint8_t pcf8563_basic_set_time(pcf8563_time_t *t)
basic example set the time
+
uint8_t pcf8563_basic_init(void)
basic example init
+
diff --git a/doc/html/driver__pcf8563__interface_8h.html b/doc/html/driver__pcf8563__interface_8h.html index 10126cc..c53ba30 100644 --- a/doc/html/driver__pcf8563__interface_8h.html +++ b/doc/html/driver__pcf8563__interface_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: interface/driver_pcf8563_interface.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_interface.h File Reference
+
driver_pcf8563_interface.h File Reference

driver pcf8563 interface header file More...

#include "driver_pcf8563.h"
+
+Include dependency graph for driver_pcf8563_interface.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init More...
 
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit More...
 
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read More...
 
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write More...
 
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms More...
 
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data More...
 
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback More...
 
uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback
-

Detailed Description

+

Detailed Description

driver pcf8563 interface header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -142,11 +149,19 @@

history

Definition in file driver_pcf8563_interface.h.

+ +
diff --git a/doc/html/driver__pcf8563__interface_8h__dep__incl.md5 b/doc/html/driver__pcf8563__interface_8h__dep__incl.md5 new file mode 100644 index 0000000..6906579 --- /dev/null +++ b/doc/html/driver__pcf8563__interface_8h__dep__incl.md5 @@ -0,0 +1 @@ +823f96b53c8857367b977a94a4fa7736 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__interface_8h__dep__incl.svg b/doc/html/driver__pcf8563__interface_8h__dep__incl.svg new file mode 100644 index 0000000..a06956f --- /dev/null +++ b/doc/html/driver__pcf8563__interface_8h__dep__incl.svg @@ -0,0 +1,345 @@ + + + + + + +interface/driver_pcf8563_interface.h + + +Node1 + + +interface/driver_pcf8563 +_interface.h + + + + + +Node2 + + +example/driver_pcf8563 +_alarm.h + + + + + +Node1->Node2 + + + + + + + + +Node4 + + +example/driver_pcf8563 +_basic.h + + + + + +Node1->Node4 + + + + + + + + +Node6 + + +example/driver_pcf8563 +_output.h + + + + + +Node1->Node6 + + + + + + + + +Node8 + + +example/driver_pcf8563 +_timer.h + + + + + +Node1->Node8 + + + + + + + + +Node10 + + +interface/driver_pcf8563 +_interface_template.c + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +test/driver_pcf8563 +_alarm_test.h + + + + + +Node1->Node11 + + + + + + + + +Node13 + + +test/driver_pcf8563 +_output_test.h + + + + + +Node1->Node13 + + + + + + + + +Node15 + + +test/driver_pcf8563 +_register_test.h + + + + + +Node1->Node15 + + + + + + + + +Node17 + + +test/driver_pcf8563 +_timer_test.h + + + + + +Node1->Node17 + + + + + + + + +Node3 + + +example/driver_pcf8563 +_alarm.c + + + + + +Node2->Node3 + + + + + + + + +Node5 + + +example/driver_pcf8563 +_basic.c + + + + + +Node4->Node5 + + + + + + + + +Node7 + + +example/driver_pcf8563 +_output.c + + + + + +Node6->Node7 + + + + + + + + +Node9 + + +example/driver_pcf8563 +_timer.c + + + + + +Node8->Node9 + + + + + + + + +Node12 + + +test/driver_pcf8563 +_alarm_test.c + + + + + +Node11->Node12 + + + + + + + + +Node14 + + +test/driver_pcf8563 +_output_test.c + + + + + +Node13->Node14 + + + + + + + + +Node16 + + +test/driver_pcf8563 +_register_test.c + + + + + +Node15->Node16 + + + + + + + + +Node18 + + +test/driver_pcf8563 +_timer_test.c + + + + + +Node17->Node18 + + + + + + + + diff --git a/doc/html/driver__pcf8563__interface_8h__incl.md5 b/doc/html/driver__pcf8563__interface_8h__incl.md5 new file mode 100644 index 0000000..176e7aa --- /dev/null +++ b/doc/html/driver__pcf8563__interface_8h__incl.md5 @@ -0,0 +1 @@ +e3c2652c5cdb95d154b9c4995c0d1684 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__interface_8h__incl.svg b/doc/html/driver__pcf8563__interface_8h__incl.svg new file mode 100644 index 0000000..ab3f9b1 --- /dev/null +++ b/doc/html/driver__pcf8563__interface_8h__incl.svg @@ -0,0 +1,94 @@ + + + + + + +interface/driver_pcf8563_interface.h + + +Node1 + + +interface/driver_pcf8563 +_interface.h + + + + + +Node2 + + +driver_pcf8563.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +stdio.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdint.h + + + + + +Node2->Node4 + + + + + + + + +Node5 + + +string.h + + + + + +Node2->Node5 + + + + + + + + diff --git a/doc/html/driver__pcf8563__interface_8h_source.html b/doc/html/driver__pcf8563__interface_8h_source.html index 53bfae1..8b66e95 100644 --- a/doc/html/driver__pcf8563__interface_8h_source.html +++ b/doc/html/driver__pcf8563__interface_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: interface/driver_pcf8563_interface.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_interface.h
+
driver_pcf8563_interface.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_INTERFACE_H
-
38 #define DRIVER_PCF8563_INTERFACE_H
-
39 
-
40 #include "driver_pcf8563.h"
-
41 
-
42 #ifdef __cplusplus
-
43 extern "C"{
-
44 #endif
-
45 
-
60 uint8_t pcf8563_interface_iic_init(void);
-
61 
-
69 uint8_t pcf8563_interface_iic_deinit(void);
-
70 
-
82 uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
-
83 
-
95 uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
-
96 
-
102 void pcf8563_interface_delay_ms(uint32_t ms);
-
103 
-
109 void pcf8563_interface_debug_print(const char *const fmt, ...);
-
110 
-
116 void pcf8563_interface_receive_callback(uint8_t type);
-
117 
-
122 #ifdef __cplusplus
-
123 }
-
124 #endif
-
125 
-
126 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_INTERFACE_H
+
38#define DRIVER_PCF8563_INTERFACE_H
+
39
+
40#include "driver_pcf8563.h"
+
41
+
42#ifdef __cplusplus
+
43extern "C"{
+
44#endif
+
45
+
52
+
60uint8_t pcf8563_interface_iic_init(void);
+
61
+ +
70
+
82uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
+
83
+
95uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len);
+
96
+
102void pcf8563_interface_delay_ms(uint32_t ms);
+
103
+
109void pcf8563_interface_debug_print(const char *const fmt, ...);
+
110
+
116void pcf8563_interface_receive_callback(uint8_t type);
+
117
+
121
+
122#ifdef __cplusplus
+
123}
+
124#endif
+
125
+
126#endif
driver pcf8563 header file
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+
diff --git a/doc/html/driver__pcf8563__interface__template_8c.html b/doc/html/driver__pcf8563__interface__template_8c.html index fe6f65c..1f3a0b3 100644 --- a/doc/html/driver__pcf8563__interface__template_8c.html +++ b/doc/html/driver__pcf8563__interface__template_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: interface/driver_pcf8563_interface_template.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_interface_template.c File Reference
+
driver_pcf8563_interface_template.c File Reference

driver pcf8563 interface template source file More...

+Include dependency graph for driver_pcf8563_interface_template.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init More...
 
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit More...
 
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read More...
 
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write More...
 
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms More...
 
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data More...
 
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback More...
 
uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback
-

Detailed Description

+

Detailed Description

driver pcf8563 interface template source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -142,11 +144,19 @@

history

Definition in file driver_pcf8563_interface_template.c.

+ +
diff --git a/doc/html/driver__pcf8563__interface__template_8c__incl.md5 b/doc/html/driver__pcf8563__interface__template_8c__incl.md5 new file mode 100644 index 0000000..b2aa4e3 --- /dev/null +++ b/doc/html/driver__pcf8563__interface__template_8c__incl.md5 @@ -0,0 +1 @@ +6a5f02d862ff0fa50ec781f12bb9212f \ No newline at end of file diff --git a/doc/html/driver__pcf8563__interface__template_8c__incl.svg b/doc/html/driver__pcf8563__interface__template_8c__incl.svg new file mode 100644 index 0000000..61fe9b4 --- /dev/null +++ b/doc/html/driver__pcf8563__interface__template_8c__incl.svg @@ -0,0 +1,112 @@ + + + + + + +interface/driver_pcf8563_interface_template.c + + +Node1 + + +interface/driver_pcf8563 +_interface_template.c + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__interface__template_8c_source.html b/doc/html/driver__pcf8563__interface__template_8c_source.html index 761d409..7a940ad 100644 --- a/doc/html/driver__pcf8563__interface__template_8c_source.html +++ b/doc/html/driver__pcf8563__interface__template_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: interface/driver_pcf8563_interface_template.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_interface_template.c
+
driver_pcf8563_interface_template.c
-Go to the documentation of this file.
1 
- -
38 
- -
47 {
-
48  return 0;
-
49 }
-
50 
- -
59 {
-
60  return 0;
-
61 }
-
62 
-
74 uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
75 {
-
76  return 0;
-
77 }
-
78 
-
90 uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
-
91 {
-
92  return 0;
-
93 }
-
94 
-
100 void pcf8563_interface_delay_ms(uint32_t ms)
-
101 {
-
102 
-
103 }
-
104 
-
110 void pcf8563_interface_debug_print(const char *const fmt, ...)
-
111 {
-
112 
-
113 }
-
114 
- -
121 {
-
122  switch (type)
-
123  {
- -
125  {
-
126  pcf8563_interface_debug_print("pcf8563: irq timer.\n");
-
127 
-
128  break;
-
129  }
- -
131  {
-
132  pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
-
133 
-
134  break;
-
135  }
-
136  default :
-
137  {
-
138  pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
-
139 
-
140  break;
-
141  }
-
142  }
-
143 }
+Go to the documentation of this file.
1
+
36
+ +
38
+
+ +
47{
+
48 return 0;
+
49}
+
+
50
+
+ +
59{
+
60 return 0;
+
61}
+
+
62
+
+
74uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
75{
+
76 return 0;
+
77}
+
+
78
+
+
90uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
+
91{
+
92 return 0;
+
93}
+
+
94
+
+ +
101{
+
102
+
103}
+
+
104
+
+
110void pcf8563_interface_debug_print(const char *const fmt, ...)
+
111{
+
112
+
113}
+
+
114
+
+ +
121{
+
122 switch (type)
+
123 {
+ +
125 {
+
126 pcf8563_interface_debug_print("pcf8563: irq timer.\n");
+
127
+
128 break;
+
129 }
+ +
131 {
+
132 pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
+
133
+
134 break;
+
135 }
+
136 default :
+
137 {
+
138 pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
+
139
+
140 break;
+
141 }
+
142 }
+
143}
+
driver pcf8563 interface header file
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+
diff --git a/doc/html/driver__pcf8563__output_8c.html b/doc/html/driver__pcf8563__output_8c.html index 0945096..e7b4989 100644 --- a/doc/html/driver__pcf8563__output_8c.html +++ b/doc/html/driver__pcf8563__output_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_output.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_output.c File Reference
+
driver_pcf8563_output.c File Reference

driver pcf8563 output source file More...

+Include dependency graph for driver_pcf8563_output.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_output_init (void)
 output example init More...
 
uint8_t pcf8563_output_deinit (void)
 output example deinit More...
 
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time More...
 
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp More...
 
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone More...
 
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time More...
 
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp More...
 
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone More...
 
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time More...
 
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output More...
 
uint8_t pcf8563_output_disable (void)
 output example disable the output More...
 
uint8_t pcf8563_output_init (void)
 output example init
uint8_t pcf8563_output_deinit (void)
 output example deinit
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output
uint8_t pcf8563_output_disable (void)
 output example disable the output
-

Detailed Description

+

Detailed Description

driver pcf8563 output source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -154,11 +152,19 @@

history

Definition in file driver_pcf8563_output.c.

+ +
diff --git a/doc/html/driver__pcf8563__output_8c__incl.md5 b/doc/html/driver__pcf8563__output_8c__incl.md5 new file mode 100644 index 0000000..f05cbe9 --- /dev/null +++ b/doc/html/driver__pcf8563__output_8c__incl.md5 @@ -0,0 +1 @@ +74222e97d951c62d3aea27b995221712 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output_8c__incl.svg b/doc/html/driver__pcf8563__output_8c__incl.svg new file mode 100644 index 0000000..3220b3f --- /dev/null +++ b/doc/html/driver__pcf8563__output_8c__incl.svg @@ -0,0 +1,148 @@ + + + + + + +example/driver_pcf8563_output.c + + +Node1 + + +example/driver_pcf8563 +_output.c + + + + + +Node2 + + +driver_pcf8563_output.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node8 + + +time.h + + + + + +Node2->Node8 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output_8c_source.html b/doc/html/driver__pcf8563__output_8c_source.html index 1e73b15..90d3034 100644 --- a/doc/html/driver__pcf8563__output_8c_source.html +++ b/doc/html/driver__pcf8563__output_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_output.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_output.c
+
driver_pcf8563_output.c
-Go to the documentation of this file.
1 
-
37 #include "driver_pcf8563_output.h"
-
38 
-
39 static pcf8563_handle_t gs_handle;
-
40 static int8_t gs_time_zone = 0;
-
49 uint8_t pcf8563_output_init(void)
-
50 {
-
51  uint8_t res;
-
52 
-
53  /* link functions */
- - - - - - - - -
62 
-
63  /* init pcf8563 */
-
64  res = pcf8563_init(&gs_handle);
-
65  if (res != 0)
-
66  {
-
67  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
68 
-
69  return 1;
-
70  }
-
71 
-
72  /* disable rtc stop */
-
73  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
74  if (res != 0)
-
75  {
-
76  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
77  (void)pcf8563_deinit(&gs_handle);
-
78 
-
79  return 1;
-
80  }
-
81 
-
82  /* disable test mode */
-
83  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
84  if (res != 0)
-
85  {
-
86  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
87  (void)pcf8563_deinit(&gs_handle);
-
88 
-
89  return 1;
-
90  }
-
91 
-
92  /* disable power on reset */
- -
94  if (res != 0)
-
95  {
-
96  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
97  (void)pcf8563_deinit(&gs_handle);
-
98 
-
99  return 1;
-
100  }
-
101 
-
102  /* disable timer */
-
103  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
104  if (res != 0)
-
105  {
-
106  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
107  (void)pcf8563_deinit(&gs_handle);
-
108 
-
109  return 1;
-
110  }
-
111 
-
112  /* disable minute alarm */
- -
114  if (res != 0)
-
115  {
-
116  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
117  (void)pcf8563_deinit(&gs_handle);
-
118 
-
119  return 1;
-
120  }
-
121 
-
122  /* disable hour alarm */
- -
124  if (res != 0)
-
125  {
-
126  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
127  (void)pcf8563_deinit(&gs_handle);
-
128 
-
129  return 1;
-
130  }
-
131 
-
132  /* disable day alarm */
- -
134  if (res != 0)
-
135  {
-
136  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
137  (void)pcf8563_deinit(&gs_handle);
-
138 
-
139  return 1;
-
140  }
-
141 
-
142  /* disable week alarm */
- -
144  if (res != 0)
-
145  {
-
146  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
147  (void)pcf8563_deinit(&gs_handle);
-
148 
-
149  return 1;
-
150  }
-
151 
-
152  /* disable timer interrupt */
- -
154  if (res != 0)
-
155  {
-
156  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
157  (void)pcf8563_deinit(&gs_handle);
-
158 
-
159  return 1;
-
160  }
-
161 
-
162  /* disable alarm interrupt */
- -
164  if (res != 0)
-
165  {
-
166  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
167  (void)pcf8563_deinit(&gs_handle);
-
168 
-
169  return 1;
-
170  }
-
171 
-
172  /* disable clock out */
- -
174  if (res != 0)
-
175  {
-
176  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
177  (void)pcf8563_deinit(&gs_handle);
-
178 
-
179  return 1;
-
180  }
-
181 
-
182  return 0;
-
183 }
-
184 
- -
193 {
-
194  if (pcf8563_deinit(&gs_handle) != 0)
-
195  {
-
196  return 1;
-
197  }
-
198 
-
199  return 0;
-
200 }
-
201 
- -
211 {
-
212  /* set time */
-
213  if (pcf8563_set_time(&gs_handle, t) != 0)
-
214  {
-
215  return 1;
-
216  }
-
217 
-
218  return 0;
-
219 }
-
220 
-
229 uint8_t pcf8563_output_set_timestamp(time_t timestamp)
-
230 {
-
231  pcf8563_time_t t;
-
232  struct tm *timeptr;
-
233 
-
234  /* convert times */
-
235  timestamp += (time_t)(gs_time_zone * 3600);
-
236  timeptr = localtime(&timestamp);
-
237  t.date = (uint8_t)timeptr->tm_mday;
-
238  t.hour = (uint8_t)timeptr->tm_hour;
-
239  t.minute = (uint8_t)timeptr->tm_min;
-
240  t.month = (uint8_t)timeptr->tm_mon + 1;
-
241  t.second = (uint8_t)timeptr->tm_sec;
-
242  t.week = (uint8_t)timeptr->tm_wday;
-
243  t.year = (uint16_t)(timeptr->tm_year + 1900);
-
244 
-
245  /* set time */
-
246  if (pcf8563_set_time(&gs_handle, &t) != 0)
-
247  {
-
248  return 1;
-
249  }
-
250 
-
251  return 0;
-
252 }
-
253 
- -
262 {
-
263  gs_time_zone = zone;
-
264 
-
265  return 0;
-
266 }
-
267 
- -
277 {
-
278  /* get time */
-
279  if (pcf8563_get_time(&gs_handle, t) != 0)
-
280  {
-
281  return 1;
-
282  }
-
283 
-
284  return 0;
-
285 }
-
286 
-
295 uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
-
296 {
-
297  pcf8563_time_t t;
-
298  struct tm timeptr;
-
299 
-
300  /* get time */
-
301  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
302  {
-
303  return 1;
-
304  }
-
305  timeptr.tm_year = t.year - 1900;
-
306  timeptr.tm_mon = t.month - 1;
-
307  timeptr.tm_wday = t.week;
-
308  timeptr.tm_mday = t.date;
-
309  timeptr.tm_hour = t.hour;
-
310  timeptr.tm_min = t.minute;
-
311  timeptr.tm_sec = t.second;
-
312 
-
313  /* make time */
-
314  *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
-
315 
-
316  return 0;
-
317 }
-
318 
- -
327 {
-
328  *zone = gs_time_zone;
-
329 
-
330  return 0;
-
331 }
-
332 
-
342 uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
-
343 {
-
344  pcf8563_time_t t;
-
345 
-
346  /* get time */
-
347  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
348  {
-
349  return 1;
-
350  }
-
351 
-
352  (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
-
353 
-
354  return 0;
-
355 }
-
356 
- -
366 {
-
367  uint8_t res;
-
368 
-
369  /* set the clock out */
-
370  res = pcf8563_set_clock_out(&gs_handle, clk);
-
371  if (res != 0)
-
372  {
-
373  return 1;
-
374  }
-
375 
-
376  /* enable clock out */
- -
378  if (res != 0)
-
379  {
-
380  return 1;
-
381  }
-
382 
-
383  return 0;
-
384 }
-
385 
- -
394 {
-
395  uint8_t res;
-
396 
-
397  /* disable clock out */
- -
399  if (res != 0)
-
400  {
-
401  return 1;
-
402  }
-
403 
-
404  return 0;
-
405 }
+Go to the documentation of this file.
1
+
36
+ +
38
+
39static pcf8563_handle_t gs_handle;
+
40static int8_t gs_time_zone = 0;
+
41
+
+ +
50{
+
51 uint8_t res;
+
52
+
53 /* link functions */
+ + + + + + + + +
62
+
63 /* init pcf8563 */
+
64 res = pcf8563_init(&gs_handle);
+
65 if (res != 0)
+
66 {
+
67 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
68
+
69 return 1;
+
70 }
+
71
+
72 /* disable rtc stop */
+ +
74 if (res != 0)
+
75 {
+
76 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
77 (void)pcf8563_deinit(&gs_handle);
+
78
+
79 return 1;
+
80 }
+
81
+
82 /* disable test mode */
+ +
84 if (res != 0)
+
85 {
+
86 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
87 (void)pcf8563_deinit(&gs_handle);
+
88
+
89 return 1;
+
90 }
+
91
+
92 /* disable power on reset */
+ +
94 if (res != 0)
+
95 {
+
96 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
97 (void)pcf8563_deinit(&gs_handle);
+
98
+
99 return 1;
+
100 }
+
101
+
102 /* disable timer */
+ +
104 if (res != 0)
+
105 {
+
106 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
107 (void)pcf8563_deinit(&gs_handle);
+
108
+
109 return 1;
+
110 }
+
111
+
112 /* disable minute alarm */
+ +
114 if (res != 0)
+
115 {
+
116 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
117 (void)pcf8563_deinit(&gs_handle);
+
118
+
119 return 1;
+
120 }
+
121
+
122 /* disable hour alarm */
+ +
124 if (res != 0)
+
125 {
+
126 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
127 (void)pcf8563_deinit(&gs_handle);
+
128
+
129 return 1;
+
130 }
+
131
+
132 /* disable day alarm */
+ +
134 if (res != 0)
+
135 {
+
136 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
137 (void)pcf8563_deinit(&gs_handle);
+
138
+
139 return 1;
+
140 }
+
141
+
142 /* disable week alarm */
+ +
144 if (res != 0)
+
145 {
+
146 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
147 (void)pcf8563_deinit(&gs_handle);
+
148
+
149 return 1;
+
150 }
+
151
+
152 /* disable timer interrupt */
+ +
154 if (res != 0)
+
155 {
+
156 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
157 (void)pcf8563_deinit(&gs_handle);
+
158
+
159 return 1;
+
160 }
+
161
+
162 /* disable alarm interrupt */
+ +
164 if (res != 0)
+
165 {
+
166 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
167 (void)pcf8563_deinit(&gs_handle);
+
168
+
169 return 1;
+
170 }
+
171
+
172 /* disable clock out */
+ +
174 if (res != 0)
+
175 {
+
176 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
177 (void)pcf8563_deinit(&gs_handle);
+
178
+
179 return 1;
+
180 }
+
181
+
182 return 0;
+
183}
+
+
184
+
+ +
193{
+
194 if (pcf8563_deinit(&gs_handle) != 0)
+
195 {
+
196 return 1;
+
197 }
+
198
+
199 return 0;
+
200}
+
+
201
+
+ +
211{
+
212 /* set time */
+
213 if (pcf8563_set_time(&gs_handle, t) != 0)
+
214 {
+
215 return 1;
+
216 }
+
217
+
218 return 0;
+
219}
+
+
220
+
+
229uint8_t pcf8563_output_set_timestamp(time_t timestamp)
+
230{
+ +
232 struct tm *timeptr;
+
233
+
234 /* convert times */
+
235 timestamp += (time_t)(gs_time_zone * 3600);
+
236 timeptr = localtime(&timestamp);
+
237 t.date = (uint8_t)timeptr->tm_mday;
+
238 t.hour = (uint8_t)timeptr->tm_hour;
+
239 t.minute = (uint8_t)timeptr->tm_min;
+
240 t.month = (uint8_t)timeptr->tm_mon + 1;
+
241 t.second = (uint8_t)timeptr->tm_sec;
+
242 t.week = (uint8_t)timeptr->tm_wday;
+
243 t.year = (uint16_t)(timeptr->tm_year + 1900);
+
244
+
245 /* set time */
+
246 if (pcf8563_set_time(&gs_handle, &t) != 0)
+
247 {
+
248 return 1;
+
249 }
+
250
+
251 return 0;
+
252}
+
+
253
+
+ +
262{
+
263 gs_time_zone = zone;
+
264
+
265 return 0;
+
266}
+
+
267
+
+ +
277{
+
278 /* get time */
+
279 if (pcf8563_get_time(&gs_handle, t) != 0)
+
280 {
+
281 return 1;
+
282 }
+
283
+
284 return 0;
+
285}
+
+
286
+
+
295uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
+
296{
+ +
298 struct tm timeptr;
+
299
+
300 /* get time */
+
301 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
302 {
+
303 return 1;
+
304 }
+
305 timeptr.tm_year = t.year - 1900;
+
306 timeptr.tm_mon = t.month - 1;
+
307 timeptr.tm_wday = t.week;
+
308 timeptr.tm_mday = t.date;
+
309 timeptr.tm_hour = t.hour;
+
310 timeptr.tm_min = t.minute;
+
311 timeptr.tm_sec = t.second;
+
312
+
313 /* make time */
+
314 *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
+
315
+
316 return 0;
+
317}
+
+
318
+
+ +
327{
+
328 *zone = gs_time_zone;
+
329
+
330 return 0;
+
331}
+
+
332
+
+
342uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
+
343{
+ +
345
+
346 /* get time */
+
347 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
348 {
+
349 return 1;
+
350 }
+
351
+
352 (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
+
353
+
354 return 0;
+
355}
+
+
356
+
+ +
366{
+
367 uint8_t res;
+
368
+
369 /* set the clock out */
+
370 res = pcf8563_set_clock_out(&gs_handle, clk);
+
371 if (res != 0)
+
372 {
+
373 return 1;
+
374 }
+
375
+
376 /* enable clock out */
+ +
378 if (res != 0)
+
379 {
+
380 return 1;
+
381 }
+
382
+
383 return 0;
+
384}
+
+
385
+
+ +
394{
+
395 uint8_t res;
+
396
+
397 /* disable clock out */
+ +
399 if (res != 0)
+
400 {
+
401 return 1;
+
402 }
+
403
+
404 return 0;
+
405}
+
driver pcf8563 output header file
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
uint8_t pcf8563_output_enable(pcf8563_clock_out_t clk)
output example enable the output
-
uint8_t pcf8563_output_set_time(pcf8563_time_t *t)
output example set the time
-
uint8_t pcf8563_output_set_timestamp_time_zone(int8_t zone)
output example set the local time zone
-
uint8_t pcf8563_output_disable(void)
output example disable the output
-
uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
output example get the ascii time
-
uint8_t pcf8563_output_set_timestamp(time_t timestamp)
output example set the time by a unix timestamp
-
uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone)
output example get the local time zone
-
uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
output example get the time in a unix timestamp
-
uint8_t pcf8563_output_get_time(pcf8563_time_t *t)
output example get the time
-
uint8_t pcf8563_output_init(void)
output example init
-
uint8_t pcf8563_output_deinit(void)
output example deinit
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
pcf8563 handle structure definition
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
uint8_t pcf8563_output_enable(pcf8563_clock_out_t clk)
output example enable the output
+
uint8_t pcf8563_output_set_time(pcf8563_time_t *t)
output example set the time
+
uint8_t pcf8563_output_set_timestamp_time_zone(int8_t zone)
output example set the local time zone
+
uint8_t pcf8563_output_disable(void)
output example disable the output
+
uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
output example get the ascii time
+
uint8_t pcf8563_output_set_timestamp(time_t timestamp)
output example set the time by a unix timestamp
+
uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone)
output example get the local time zone
+
uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
output example get the time in a unix timestamp
+
uint8_t pcf8563_output_get_time(pcf8563_time_t *t)
output example get the time
+
uint8_t pcf8563_output_init(void)
output example init
+
uint8_t pcf8563_output_deinit(void)
output example deinit
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__output_8h.html b/doc/html/driver__pcf8563__output_8h.html index dd14a22..9c98b60 100644 --- a/doc/html/driver__pcf8563__output_8h.html +++ b/doc/html/driver__pcf8563__output_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_output.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_output.h File Reference
+
driver_pcf8563_output.h File Reference
@@ -95,46 +99,45 @@ More...

#include "driver_pcf8563_interface.h"
#include <time.h>
+
+Include dependency graph for driver_pcf8563_output.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_output_init (void)
 output example init More...
 
uint8_t pcf8563_output_deinit (void)
 output example deinit More...
 
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time More...
 
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp More...
 
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone More...
 
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time More...
 
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp More...
 
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone More...
 
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time More...
 
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output More...
 
uint8_t pcf8563_output_disable (void)
 output example disable the output More...
 
uint8_t pcf8563_output_init (void)
 output example init
uint8_t pcf8563_output_deinit (void)
 output example deinit
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output
uint8_t pcf8563_output_disable (void)
 output example disable the output
-

Detailed Description

+

Detailed Description

driver pcf8563 output header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -155,11 +158,19 @@

history

Definition in file driver_pcf8563_output.h.

+ +
diff --git a/doc/html/driver__pcf8563__output_8h__dep__incl.md5 b/doc/html/driver__pcf8563__output_8h__dep__incl.md5 new file mode 100644 index 0000000..69103b5 --- /dev/null +++ b/doc/html/driver__pcf8563__output_8h__dep__incl.md5 @@ -0,0 +1 @@ +4518cecf2f96cb5a04519b781735c40a \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output_8h__dep__incl.svg b/doc/html/driver__pcf8563__output_8h__dep__incl.svg new file mode 100644 index 0000000..ea53a82 --- /dev/null +++ b/doc/html/driver__pcf8563__output_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +example/driver_pcf8563_output.h + + +Node1 + + +example/driver_pcf8563 +_output.h + + + + + +Node2 + + +example/driver_pcf8563 +_output.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output_8h__incl.md5 b/doc/html/driver__pcf8563__output_8h__incl.md5 new file mode 100644 index 0000000..18298b2 --- /dev/null +++ b/doc/html/driver__pcf8563__output_8h__incl.md5 @@ -0,0 +1 @@ +8e13b2a4af0c9a1da6f9d02a141a9f88 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output_8h__incl.svg b/doc/html/driver__pcf8563__output_8h__incl.svg new file mode 100644 index 0000000..cc981be --- /dev/null +++ b/doc/html/driver__pcf8563__output_8h__incl.svg @@ -0,0 +1,130 @@ + + + + + + +example/driver_pcf8563_output.h + + +Node1 + + +example/driver_pcf8563 +_output.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node7 + + +time.h + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output_8h_source.html b/doc/html/driver__pcf8563__output_8h_source.html index 368ab5e..d64aa25 100644 --- a/doc/html/driver__pcf8563__output_8h_source.html +++ b/doc/html/driver__pcf8563__output_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_output.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_output.h
+
driver_pcf8563_output.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_OUTPUT_H
-
38 #define DRIVER_PCF8563_OUTPUT_H
-
39 
- -
41 #include <time.h>
-
42 
-
43 #ifdef __cplusplus
-
44 extern "C"{
-
45 #endif
-
46 
-
59 uint8_t pcf8563_output_init(void);
-
60 
-
68 uint8_t pcf8563_output_deinit(void);
-
69 
- -
79 
-
88 uint8_t pcf8563_output_set_timestamp(time_t timestamp);
-
89 
-
97 uint8_t pcf8563_output_set_timestamp_time_zone(int8_t zone);
-
98 
- -
108 
-
117 uint8_t pcf8563_output_get_timestamp(time_t *timestamp);
-
118 
-
126 uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone);
-
127 
-
137 uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len);
-
138 
- -
148 
-
156 uint8_t pcf8563_output_disable(void);
-
157 
-
162 #ifdef __cplusplus
-
163 }
-
164 #endif
-
165 
-
166 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_OUTPUT_H
+
38#define DRIVER_PCF8563_OUTPUT_H
+
39
+ +
41#include <time.h>
+
42
+
43#ifdef __cplusplus
+
44extern "C"{
+
45#endif
+
46
+
51
+
59uint8_t pcf8563_output_init(void);
+
60
+
68uint8_t pcf8563_output_deinit(void);
+
69
+ +
79
+
88uint8_t pcf8563_output_set_timestamp(time_t timestamp);
+
89
+ +
98
+ +
108
+
117uint8_t pcf8563_output_get_timestamp(time_t *timestamp);
+
118
+
126uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone);
+
127
+
137uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len);
+
138
+ +
148
+
156uint8_t pcf8563_output_disable(void);
+
157
+
161
+
162#ifdef __cplusplus
+
163}
+
164#endif
+
165
+
166#endif
driver pcf8563 interface header file
-
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
-
uint8_t pcf8563_output_enable(pcf8563_clock_out_t clk)
output example enable the output
-
uint8_t pcf8563_output_set_time(pcf8563_time_t *t)
output example set the time
-
uint8_t pcf8563_output_set_timestamp_time_zone(int8_t zone)
output example set the local time zone
-
uint8_t pcf8563_output_disable(void)
output example disable the output
-
uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
output example get the ascii time
-
uint8_t pcf8563_output_set_timestamp(time_t timestamp)
output example set the time by a unix timestamp
-
uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone)
output example get the local time zone
-
uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
output example get the time in a unix timestamp
-
uint8_t pcf8563_output_get_time(pcf8563_time_t *t)
output example get the time
-
uint8_t pcf8563_output_init(void)
output example init
-
uint8_t pcf8563_output_deinit(void)
output example deinit
-
pcf8563 time structure definition
+
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_output_enable(pcf8563_clock_out_t clk)
output example enable the output
+
uint8_t pcf8563_output_set_time(pcf8563_time_t *t)
output example set the time
+
uint8_t pcf8563_output_set_timestamp_time_zone(int8_t zone)
output example set the local time zone
+
uint8_t pcf8563_output_disable(void)
output example disable the output
+
uint8_t pcf8563_output_get_ascii_time(char *buf, uint8_t len)
output example get the ascii time
+
uint8_t pcf8563_output_set_timestamp(time_t timestamp)
output example set the time by a unix timestamp
+
uint8_t pcf8563_output_get_timestamp_time_zone(int8_t *zone)
output example get the local time zone
+
uint8_t pcf8563_output_get_timestamp(time_t *timestamp)
output example get the time in a unix timestamp
+
uint8_t pcf8563_output_get_time(pcf8563_time_t *t)
output example get the time
+
uint8_t pcf8563_output_init(void)
output example init
+
uint8_t pcf8563_output_deinit(void)
output example deinit
+
diff --git a/doc/html/driver__pcf8563__output__test_8c.html b/doc/html/driver__pcf8563__output__test_8c.html index c787ec2..112648f 100644 --- a/doc/html/driver__pcf8563__output__test_8c.html +++ b/doc/html/driver__pcf8563__output__test_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_output_test.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_output_test.c File Reference
+
driver_pcf8563_output_test.c File Reference
@@ -95,16 +99,20 @@ More...

#include "driver_pcf8563_output_test.h"
#include <stdlib.h>
+
+Include dependency graph for driver_pcf8563_output_test.c:
+
+
+

Go to the source code of this file.

- - - - + +

+

Functions

uint8_t pcf8563_output_test (uint32_t times)
 output test More...
 
uint8_t pcf8563_output_test (uint32_t times)
 output test
-

Detailed Description

+

Detailed Description

driver pcf8563 output test source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -125,11 +133,19 @@

history

Definition in file driver_pcf8563_output_test.c.

+ +
diff --git a/doc/html/driver__pcf8563__output__test_8c__incl.md5 b/doc/html/driver__pcf8563__output__test_8c__incl.md5 new file mode 100644 index 0000000..c30ea2e --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8c__incl.md5 @@ -0,0 +1 @@ +05c714403924a8a49bfb2d1121d48ae7 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output__test_8c__incl.svg b/doc/html/driver__pcf8563__output__test_8c__incl.svg new file mode 100644 index 0000000..8ee7c96 --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8c__incl.svg @@ -0,0 +1,149 @@ + + + + + + +test/driver_pcf8563_output_test.c + + +Node1 + + +test/driver_pcf8563 +_output_test.c + + + + + +Node2 + + +driver_pcf8563_output +_test.h + + + + + +Node1->Node2 + + + + + + + + +Node8 + + +stdlib.h + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output__test_8c_source.html b/doc/html/driver__pcf8563__output__test_8c_source.html index 3a3321b..643e21b 100644 --- a/doc/html/driver__pcf8563__output__test_8c_source.html +++ b/doc/html/driver__pcf8563__output__test_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_output_test.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_output_test.c
+
driver_pcf8563_output_test.c
-Go to the documentation of this file.
1 
- -
38 #include <stdlib.h>
-
39 
-
40 static pcf8563_handle_t gs_handle;
-
50 uint8_t pcf8563_output_test(uint32_t times)
-
51 {
-
52  uint8_t res;
-
53  uint32_t i;
-
54  pcf8563_info_t info;
-
55 
-
56  /* link functions */
- - - - - - - - -
65 
-
66  /* get pcf8563 info */
-
67  res = pcf8563_info(&info);
-
68  if (res != 0)
-
69  {
-
70  pcf8563_interface_debug_print("pcf8563: get info failed.\n");
-
71 
-
72  return 1;
-
73  }
-
74  else
-
75  {
-
76  /* print pcf8563 info */
-
77  pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
-
78  pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
-
79  pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
-
80  pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
-
81  pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
-
82  pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
-
83  pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
-
84  pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
-
85  pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
-
86  }
-
87 
-
88  /* start output test */
-
89  pcf8563_interface_debug_print("pcf8563: start output test.\n");
-
90 
-
91  /* init pcf8563 */
-
92  res = pcf8563_init(&gs_handle);
-
93  if (res != 0)
-
94  {
-
95  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
96 
-
97  return 1;
-
98  }
-
99 
-
100  /* disable rtc stop */
-
101  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
102  if (res != 0)
-
103  {
-
104  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
105  (void)pcf8563_deinit(&gs_handle);
-
106 
-
107  return 1;
-
108  }
-
109 
-
110  /* disable test mode */
-
111  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
112  if (res != 0)
-
113  {
-
114  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
115  (void)pcf8563_deinit(&gs_handle);
-
116 
-
117  return 1;
-
118  }
-
119 
-
120  /* disable power on reset */
- -
122  if (res != 0)
-
123  {
-
124  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
125  (void)pcf8563_deinit(&gs_handle);
-
126 
-
127  return 1;
-
128  }
-
129 
-
130  /* disable minute alarm */
- -
132  if (res != 0)
-
133  {
-
134  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
135  (void)pcf8563_deinit(&gs_handle);
-
136 
-
137  return 1;
-
138  }
-
139 
-
140  /* disable hour alarm */
- -
142  if (res != 0)
-
143  {
-
144  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
145  (void)pcf8563_deinit(&gs_handle);
-
146 
-
147  return 1;
-
148  }
-
149 
-
150  /* disable day alarm */
- -
152  if (res != 0)
-
153  {
-
154  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
155  (void)pcf8563_deinit(&gs_handle);
-
156 
-
157  return 1;
-
158  }
-
159 
-
160  /* disable week alarm */
- -
162  if (res != 0)
-
163  {
-
164  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
165  (void)pcf8563_deinit(&gs_handle);
-
166 
-
167  return 1;
-
168  }
-
169 
-
170  /* disable timer interrupt */
- -
172  if (res != 0)
-
173  {
-
174  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
175  (void)pcf8563_deinit(&gs_handle);
-
176 
-
177  return 1;
-
178  }
-
179 
-
180  /* disable alarm interrupt */
- -
182  if (res != 0)
-
183  {
-
184  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
185  (void)pcf8563_deinit(&gs_handle);
-
186 
-
187  return 1;
-
188  }
-
189 
-
190  /* set interrupt mode pulse */
- -
192  if (res != 0)
-
193  {
-
194  pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
-
195  (void)pcf8563_deinit(&gs_handle);
-
196 
-
197  return 1;
-
198  }
-
199 
-
200  /* enable clock out */
- -
202  if (res != 0)
-
203  {
-
204  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
205  (void)pcf8563_deinit(&gs_handle);
-
206 
-
207  return 1;
-
208  }
-
209 
-
210  /* set clock out 32.768khz */
- -
212  if (res != 0)
-
213  {
-
214  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
215  (void)pcf8563_deinit(&gs_handle);
-
216 
-
217  return 1;
-
218  }
-
219 
-
220  /* output */
-
221  pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
-
222 
-
223  /* loop */
-
224  for (i = 0; i < times; i++)
-
225  {
-
226  /* delay 1000ms */
- -
228 
-
229  /* output */
-
230  pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
-
231  }
-
232 
-
233  /* set clock out 1.024khz */
- -
235  if (res != 0)
-
236  {
-
237  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
238  (void)pcf8563_deinit(&gs_handle);
-
239 
-
240  return 1;
-
241  }
-
242 
-
243  /* output */
-
244  pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
-
245 
-
246  /* loop */
-
247  for (i = 0; i < times; i++)
-
248  {
-
249  /* delay 1000ms */
- -
251 
-
252  /* output */
-
253  pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
-
254  }
-
255 
-
256  /* set clock out 32hz */
- -
258  if (res != 0)
-
259  {
-
260  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
261  (void)pcf8563_deinit(&gs_handle);
-
262 
-
263  return 1;
-
264  }
-
265 
-
266  /* output */
-
267  pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
-
268 
-
269  /* loop */
-
270  for (i = 0; i < times; i++)
-
271  {
-
272  /* delay 1000ms */
- -
274 
-
275  /* output */
-
276  pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
-
277  }
-
278 
-
279  /* set clock out 1hz */
-
280  res = pcf8563_set_clock_out(&gs_handle, PCF8563_CLOCK_OUT_1HZ);
-
281  if (res != 0)
-
282  {
-
283  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
284  (void)pcf8563_deinit(&gs_handle);
-
285 
-
286  return 1;
-
287  }
-
288 
-
289  /* output */
-
290  pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
-
291 
-
292  /* loop */
-
293  for (i = 0; i < times; i++)
-
294  {
-
295  /* delay 1000ms */
- -
297 
-
298  /* output */
-
299  pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
-
300  }
-
301 
-
302  /* disable clock out */
- -
304  if (res != 0)
-
305  {
-
306  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
307  (void)pcf8563_deinit(&gs_handle);
-
308 
-
309  return 1;
-
310  }
-
311 
-
312  /* finish output test */
-
313  pcf8563_interface_debug_print("pcf8563: finish output test.\n");
-
314  (void)pcf8563_deinit(&gs_handle);
-
315 
-
316  return 0;
-
317 }
+Go to the documentation of this file.
1
+
36
+ +
38#include <stdlib.h>
+
39
+
40static pcf8563_handle_t gs_handle;
+
41
+
+
50uint8_t pcf8563_output_test(uint32_t times)
+
51{
+
52 uint8_t res;
+
53 uint32_t i;
+
54 pcf8563_info_t info;
+
55
+
56 /* link functions */
+ + + + + + + + +
65
+
66 /* get pcf8563 info */
+
67 res = pcf8563_info(&info);
+
68 if (res != 0)
+
69 {
+
70 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
+
71
+
72 return 1;
+
73 }
+
74 else
+
75 {
+
76 /* print pcf8563 info */
+
77 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
+
78 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
+
79 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
+
80 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
+
81 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
+
82 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
+
83 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
+
84 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
+
85 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
+
86 }
+
87
+
88 /* start output test */
+
89 pcf8563_interface_debug_print("pcf8563: start output test.\n");
+
90
+
91 /* init pcf8563 */
+
92 res = pcf8563_init(&gs_handle);
+
93 if (res != 0)
+
94 {
+
95 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
96
+
97 return 1;
+
98 }
+
99
+
100 /* disable rtc stop */
+
101 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
+
102 if (res != 0)
+
103 {
+
104 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
105 (void)pcf8563_deinit(&gs_handle);
+
106
+
107 return 1;
+
108 }
+
109
+
110 /* disable test mode */
+
111 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
112 if (res != 0)
+
113 {
+
114 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
115 (void)pcf8563_deinit(&gs_handle);
+
116
+
117 return 1;
+
118 }
+
119
+
120 /* disable power on reset */
+ +
122 if (res != 0)
+
123 {
+
124 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
125 (void)pcf8563_deinit(&gs_handle);
+
126
+
127 return 1;
+
128 }
+
129
+
130 /* disable minute alarm */
+ +
132 if (res != 0)
+
133 {
+
134 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
135 (void)pcf8563_deinit(&gs_handle);
+
136
+
137 return 1;
+
138 }
+
139
+
140 /* disable hour alarm */
+ +
142 if (res != 0)
+
143 {
+
144 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
145 (void)pcf8563_deinit(&gs_handle);
+
146
+
147 return 1;
+
148 }
+
149
+
150 /* disable day alarm */
+ +
152 if (res != 0)
+
153 {
+
154 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
155 (void)pcf8563_deinit(&gs_handle);
+
156
+
157 return 1;
+
158 }
+
159
+
160 /* disable week alarm */
+ +
162 if (res != 0)
+
163 {
+
164 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
165 (void)pcf8563_deinit(&gs_handle);
+
166
+
167 return 1;
+
168 }
+
169
+
170 /* disable timer interrupt */
+ +
172 if (res != 0)
+
173 {
+
174 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
175 (void)pcf8563_deinit(&gs_handle);
+
176
+
177 return 1;
+
178 }
+
179
+
180 /* disable alarm interrupt */
+ +
182 if (res != 0)
+
183 {
+
184 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
185 (void)pcf8563_deinit(&gs_handle);
+
186
+
187 return 1;
+
188 }
+
189
+
190 /* set interrupt mode pulse */
+ +
192 if (res != 0)
+
193 {
+
194 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
+
195 (void)pcf8563_deinit(&gs_handle);
+
196
+
197 return 1;
+
198 }
+
199
+
200 /* enable clock out */
+ +
202 if (res != 0)
+
203 {
+
204 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
205 (void)pcf8563_deinit(&gs_handle);
+
206
+
207 return 1;
+
208 }
+
209
+
210 /* set clock out 32.768khz */
+ +
212 if (res != 0)
+
213 {
+
214 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
215 (void)pcf8563_deinit(&gs_handle);
+
216
+
217 return 1;
+
218 }
+
219
+
220 /* output */
+
221 pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
+
222
+
223 /* loop */
+
224 for (i = 0; i < times; i++)
+
225 {
+
226 /* delay 1000ms */
+ +
228
+
229 /* output */
+
230 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
+
231 }
+
232
+
233 /* set clock out 1.024khz */
+ +
235 if (res != 0)
+
236 {
+
237 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
238 (void)pcf8563_deinit(&gs_handle);
+
239
+
240 return 1;
+
241 }
+
242
+
243 /* output */
+
244 pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
+
245
+
246 /* loop */
+
247 for (i = 0; i < times; i++)
+
248 {
+
249 /* delay 1000ms */
+ +
251
+
252 /* output */
+
253 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
+
254 }
+
255
+
256 /* set clock out 32hz */
+ +
258 if (res != 0)
+
259 {
+
260 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
261 (void)pcf8563_deinit(&gs_handle);
+
262
+
263 return 1;
+
264 }
+
265
+
266 /* output */
+
267 pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
+
268
+
269 /* loop */
+
270 for (i = 0; i < times; i++)
+
271 {
+
272 /* delay 1000ms */
+ +
274
+
275 /* output */
+
276 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
+
277 }
+
278
+
279 /* set clock out 1hz */
+ +
281 if (res != 0)
+
282 {
+
283 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
284 (void)pcf8563_deinit(&gs_handle);
+
285
+
286 return 1;
+
287 }
+
288
+
289 /* output */
+
290 pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
+
291
+
292 /* loop */
+
293 for (i = 0; i < times; i++)
+
294 {
+
295 /* delay 1000ms */
+ +
297
+
298 /* output */
+
299 pcf8563_interface_debug_print("pcf8563: run %ds.\n", i + 1);
+
300 }
+
301
+
302 /* disable clock out */
+ +
304 if (res != 0)
+
305 {
+
306 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
307 (void)pcf8563_deinit(&gs_handle);
+
308
+
309 return 1;
+
310 }
+
311
+
312 /* finish output test */
+
313 pcf8563_interface_debug_print("pcf8563: finish output test.\n");
+
314 (void)pcf8563_deinit(&gs_handle);
+
315
+
316 return 0;
+
317}
+
driver pcf8563 output test header file
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_MODE_PULSE
-
@ PCF8563_CLOCK_OUT_32P768KHZ
-
@ PCF8563_CLOCK_OUT_32HZ
-
@ PCF8563_CLOCK_OUT_1P024KHZ
-
@ PCF8563_CLOCK_OUT_1HZ
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
uint8_t pcf8563_output_test(uint32_t times)
output test
-
pcf8563 handle structure definition
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
+
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_MODE_PULSE
+
@ PCF8563_CLOCK_OUT_32P768KHZ
+
@ PCF8563_CLOCK_OUT_32HZ
+
@ PCF8563_CLOCK_OUT_1P024KHZ
+
@ PCF8563_CLOCK_OUT_1HZ
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + +
uint8_t pcf8563_output_test(uint32_t times)
output test
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + +
+
diff --git a/doc/html/driver__pcf8563__output__test_8h.html b/doc/html/driver__pcf8563__output__test_8h.html index ab3b3da..59a0151 100644 --- a/doc/html/driver__pcf8563__output__test_8h.html +++ b/doc/html/driver__pcf8563__output__test_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_output_test.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_output_test.h File Reference
+
driver_pcf8563_output_test.h File Reference

driver pcf8563 output test header file More...

+Include dependency graph for driver_pcf8563_output_test.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - + +

+

Functions

uint8_t pcf8563_output_test (uint32_t times)
 output test More...
 
uint8_t pcf8563_output_test (uint32_t times)
 output test
-

Detailed Description

+

Detailed Description

driver pcf8563 output test header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -124,11 +137,19 @@

history

Definition in file driver_pcf8563_output_test.h.

+ +
diff --git a/doc/html/driver__pcf8563__output__test_8h__dep__incl.md5 b/doc/html/driver__pcf8563__output__test_8h__dep__incl.md5 new file mode 100644 index 0000000..b584cef --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8h__dep__incl.md5 @@ -0,0 +1 @@ +5004a345a79c6392f693f2eaeaed96bb \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output__test_8h__dep__incl.svg b/doc/html/driver__pcf8563__output__test_8h__dep__incl.svg new file mode 100644 index 0000000..6f308ae --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +test/driver_pcf8563_output_test.h + + +Node1 + + +test/driver_pcf8563 +_output_test.h + + + + + +Node2 + + +test/driver_pcf8563 +_output_test.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output__test_8h__incl.md5 b/doc/html/driver__pcf8563__output__test_8h__incl.md5 new file mode 100644 index 0000000..04135d1 --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8h__incl.md5 @@ -0,0 +1 @@ +2f863c80d00473cd242cf12ed46a6584 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__output__test_8h__incl.svg b/doc/html/driver__pcf8563__output__test_8h__incl.svg new file mode 100644 index 0000000..fc1fd96 --- /dev/null +++ b/doc/html/driver__pcf8563__output__test_8h__incl.svg @@ -0,0 +1,112 @@ + + + + + + +test/driver_pcf8563_output_test.h + + +Node1 + + +test/driver_pcf8563 +_output_test.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__output__test_8h_source.html b/doc/html/driver__pcf8563__output__test_8h_source.html index c8cde4f..91290bd 100644 --- a/doc/html/driver__pcf8563__output__test_8h_source.html +++ b/doc/html/driver__pcf8563__output__test_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_output_test.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_output_test.h
+
driver_pcf8563_output_test.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_OUTPUT_TEST_H
-
38 #define DRIVER_PCF8563_OUTPUT_TEST_H
-
39 
- -
41 
-
42 #ifdef __cplusplus
-
43 extern "C"{
-
44 #endif
-
45 
-
59 uint8_t pcf8563_output_test(uint32_t times);
-
60 
-
65 #ifdef __cplusplus
-
66 }
-
67 #endif
-
68 
-
69 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_OUTPUT_TEST_H
+
38#define DRIVER_PCF8563_OUTPUT_TEST_H
+
39
+ +
41
+
42#ifdef __cplusplus
+
43extern "C"{
+
44#endif
+
45
+
50
+
59uint8_t pcf8563_output_test(uint32_t times);
+
60
+
64
+
65#ifdef __cplusplus
+
66}
+
67#endif
+
68
+
69#endif
driver pcf8563 interface header file
-
uint8_t pcf8563_output_test(uint32_t times)
output test
+
uint8_t pcf8563_output_test(uint32_t times)
output test
+
diff --git a/doc/html/driver__pcf8563__register__test_8c.html b/doc/html/driver__pcf8563__register__test_8c.html index 5665180..17ae926 100644 --- a/doc/html/driver__pcf8563__register__test_8c.html +++ b/doc/html/driver__pcf8563__register__test_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_register_test.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_register_test.c File Reference
+
driver_pcf8563_register_test.c File Reference
@@ -95,16 +99,20 @@ More...

#include "driver_pcf8563_register_test.h"
#include <stdlib.h>
+
+Include dependency graph for driver_pcf8563_register_test.c:
+
+
+

Go to the source code of this file.

- - - - + +

+

Functions

uint8_t pcf8563_register_test (void)
 register test More...
 
uint8_t pcf8563_register_test (void)
 register test
-

Detailed Description

+

Detailed Description

driver pcf8563 register test source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -125,11 +133,19 @@

history

Definition in file driver_pcf8563_register_test.c.

+ +
diff --git a/doc/html/driver__pcf8563__register__test_8c__incl.md5 b/doc/html/driver__pcf8563__register__test_8c__incl.md5 new file mode 100644 index 0000000..faae425 --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8c__incl.md5 @@ -0,0 +1 @@ +721ba9efe3c53eba81a38bb53d7a3b81 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__register__test_8c__incl.svg b/doc/html/driver__pcf8563__register__test_8c__incl.svg new file mode 100644 index 0000000..8e11e73 --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8c__incl.svg @@ -0,0 +1,149 @@ + + + + + + +test/driver_pcf8563_register_test.c + + +Node1 + + +test/driver_pcf8563 +_register_test.c + + + + + +Node2 + + +driver_pcf8563_register +_test.h + + + + + +Node1->Node2 + + + + + + + + +Node8 + + +stdlib.h + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__register__test_8c_source.html b/doc/html/driver__pcf8563__register__test_8c_source.html index d00dcc6..ad79b0d 100644 --- a/doc/html/driver__pcf8563__register__test_8c_source.html +++ b/doc/html/driver__pcf8563__register__test_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_register_test.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_register_test.c
+
driver_pcf8563_register_test.c
-Go to the documentation of this file.
1 
- -
38 #include <stdlib.h>
-
39 
-
40 static pcf8563_handle_t gs_handle;
-
49 uint8_t pcf8563_register_test(void)
-
50 {
-
51  uint8_t res;
-
52  uint8_t reg;
-
53  uint8_t reg_check;
-
54  pcf8563_info_t info;
-
55  pcf8563_bool_t enable;
-
56  pcf8563_time_t time_in;
-
57  pcf8563_time_t time_out;
- - - -
61 
-
62  /* link functions */
- - - - - - - - -
71 
-
72  /* get pcf8563 info */
-
73  res = pcf8563_info(&info);
-
74  if (res != 0)
-
75  {
-
76  pcf8563_interface_debug_print("pcf8563: get info failed.\n");
-
77 
-
78  return 1;
-
79  }
-
80  else
-
81  {
-
82  /* print pcf8563 info */
-
83  pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
-
84  pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
-
85  pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
-
86  pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
-
87  pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
-
88  pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
-
89  pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
-
90  pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
-
91  pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
-
92  }
-
93 
-
94  /* start register test */
-
95  pcf8563_interface_debug_print("pcf8563: start register test.\n");
-
96 
-
97  /* init pcf8563 */
-
98  res = pcf8563_init(&gs_handle);
-
99  if (res != 0)
-
100  {
-
101  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
102 
-
103  return 1;
-
104  }
-
105 
-
106  /* pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test */
-
107  pcf8563_interface_debug_print("pcf8563: pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test.\n");
-
108 
-
109  /* enable rtc stop */
-
110  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_TRUE);
-
111  if (res != 0)
-
112  {
-
113  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
114  (void)pcf8563_deinit(&gs_handle);
-
115 
-
116  return 1;
-
117  }
-
118  pcf8563_interface_debug_print("pcf8563: enable rtc stop.\n");
-
119  res = pcf8563_get_rtc_stop(&gs_handle, &enable);
-
120  if (res != 0)
-
121  {
-
122  pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
-
123  (void)pcf8563_deinit(&gs_handle);
-
124 
-
125  return 1;
-
126  }
-
127  pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
128 
-
129  /* disable rtc stop */
-
130  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
131  if (res != 0)
-
132  {
-
133  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
134  (void)pcf8563_deinit(&gs_handle);
-
135 
-
136  return 1;
-
137  }
-
138  pcf8563_interface_debug_print("pcf8563: disable rtc stop.\n");
-
139  res = pcf8563_get_rtc_stop(&gs_handle, &enable);
-
140  if (res != 0)
-
141  {
-
142  pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
-
143  (void)pcf8563_deinit(&gs_handle);
-
144 
-
145  return 1;
-
146  }
-
147  pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
148 
-
149  /* pcf8563_set_test_mode/pcf8563_get_test_mode test */
-
150  pcf8563_interface_debug_print("pcf8563: pcf8563_set_test_mode/pcf8563_get_test_mode test.\n");
-
151 
-
152  /* enable test mode */
-
153  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_TRUE);
-
154  if (res != 0)
-
155  {
-
156  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
157  (void)pcf8563_deinit(&gs_handle);
-
158 
-
159  return 1;
-
160  }
-
161  pcf8563_interface_debug_print("pcf8563: enable test mode.\n");
-
162  res = pcf8563_get_test_mode(&gs_handle, &enable);
-
163  if (res != 0)
-
164  {
-
165  pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
-
166  (void)pcf8563_deinit(&gs_handle);
-
167 
-
168  return 1;
-
169  }
-
170  pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
171 
-
172  /* disable test mode */
-
173  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
174  if (res != 0)
-
175  {
-
176  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
177  (void)pcf8563_deinit(&gs_handle);
-
178 
-
179  return 1;
-
180  }
-
181  pcf8563_interface_debug_print("pcf8563: disable test mode.\n");
-
182  res = pcf8563_get_test_mode(&gs_handle, &enable);
-
183  if (res != 0)
-
184  {
-
185  pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
-
186  (void)pcf8563_deinit(&gs_handle);
-
187 
-
188  return 1;
-
189  }
-
190  pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
191 
-
192  /* pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test */
-
193  pcf8563_interface_debug_print("pcf8563: pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test.\n");
-
194 
-
195  /* enable power on reset */
- -
197  if (res != 0)
-
198  {
-
199  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
200  (void)pcf8563_deinit(&gs_handle);
-
201 
-
202  return 1;
-
203  }
-
204  pcf8563_interface_debug_print("pcf8563: enable power on reset.\n");
-
205  res = pcf8563_get_power_on_reset(&gs_handle, &enable);
-
206  if (res != 0)
-
207  {
-
208  pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
-
209  (void)pcf8563_deinit(&gs_handle);
-
210 
-
211  return 1;
-
212  }
-
213  pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
214 
-
215  /* disable power on reset */
- -
217  if (res != 0)
-
218  {
-
219  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
220  (void)pcf8563_deinit(&gs_handle);
-
221 
-
222  return 1;
-
223  }
-
224  pcf8563_interface_debug_print("pcf8563: disable power on reset.\n");
-
225  res = pcf8563_get_power_on_reset(&gs_handle, &enable);
-
226  if (res != 0)
-
227  {
-
228  pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
-
229  (void)pcf8563_deinit(&gs_handle);
-
230 
-
231  return 1;
-
232  }
-
233  pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
234 
-
235  /* pcf8563_set_time/pcf8563_get_time test */
-
236  pcf8563_interface_debug_print("pcf8563: pcf8563_set_time/pcf8563_get_time test.\n");
-
237 
-
238  /* set time */
-
239  time_in.year = rand() % 100 + 2000;
-
240  time_in.month = rand() % 12 + 1;
-
241  time_in.date = rand() % 20 + 1;
-
242  time_in.week = rand() % 7;
-
243  time_in.hour = rand() % 11 + 1;
-
244  time_in.minute = rand() % 60;
-
245  time_in.second = rand() % 60;
-
246  res = pcf8563_set_time(&gs_handle, &time_in);
-
247  if (res != 0)
-
248  {
-
249  pcf8563_interface_debug_print("pcf8563: set time failed.\n");
-
250  (void)pcf8563_deinit(&gs_handle);
-
251 
-
252  return 1;
-
253  }
-
254  pcf8563_interface_debug_print("pcf8563: set time %04d-%02d-%02d %02d:%02d:%02d %d.\n",
-
255  time_in.year, time_in.month, time_in.date,
-
256  time_in.hour, time_in.minute, time_in.second, time_in.week
-
257  );
-
258  res = pcf8563_get_time(&gs_handle, &time_out);
-
259  if (res != 0)
-
260  {
-
261  pcf8563_interface_debug_print("pcf8563: get time failed.\n");
-
262  (void)pcf8563_deinit(&gs_handle);
-
263 
-
264  return 1;
-
265  }
-
266  pcf8563_interface_debug_print("pcf8563: check time %s.\n", (memcmp((uint8_t *)&time_in, (uint8_t *)&time_out, sizeof(pcf8563_time_t)) == 0) ? "ok" : "error");
-
267 
-
268  /* pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test */
-
269  pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test.\n");
-
270 
-
271  /* enable minute alarm */
- -
273  if (res != 0)
-
274  {
-
275  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
276  (void)pcf8563_deinit(&gs_handle);
-
277 
-
278  return 1;
-
279  }
-
280  pcf8563_interface_debug_print("pcf8563: enable minute alarm.\n");
-
281  res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
-
282  if (res != 0)
-
283  {
-
284  pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
-
285  (void)pcf8563_deinit(&gs_handle);
-
286 
-
287  return 1;
-
288  }
-
289  pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
290 
-
291  /* disable minute alarm */
- -
293  if (res != 0)
-
294  {
-
295  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
296  (void)pcf8563_deinit(&gs_handle);
-
297 
-
298  return 1;
-
299  }
-
300  pcf8563_interface_debug_print("pcf8563: disable minute alarm.\n");
-
301  res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
-
302  if (res != 0)
-
303  {
-
304  pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
-
305  (void)pcf8563_deinit(&gs_handle);
-
306 
-
307  return 1;
-
308  }
-
309  pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
310 
-
311  /* pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test */
-
312  pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test.\n");
-
313 
-
314  reg = rand() % 60 + 1;
-
315  res = pcf8563_set_minute_alarm(&gs_handle, reg);
-
316  if (res != 0)
-
317  {
-
318  pcf8563_interface_debug_print("pcf8563: set minute alarm failed.\n");
-
319  (void)pcf8563_deinit(&gs_handle);
-
320 
-
321  return 1;
-
322  }
-
323  pcf8563_interface_debug_print("pcf8563: set minute alarm %d.\n", reg);
-
324  res = pcf8563_get_minute_alarm(&gs_handle, &reg_check);
-
325  if (res != 0)
-
326  {
-
327  pcf8563_interface_debug_print("pcf8563: get minute alarm failed.\n");
-
328  (void)pcf8563_deinit(&gs_handle);
-
329 
-
330  return 1;
-
331  }
-
332  pcf8563_interface_debug_print("pcf8563: check minute alarm %s.\n", (reg == reg_check) ? "ok" : "error");
-
333 
-
334  /* pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test */
-
335  pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test.\n");
-
336 
-
337  /* enable hour alarm */
- -
339  if (res != 0)
-
340  {
-
341  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
342  (void)pcf8563_deinit(&gs_handle);
-
343 
-
344  return 1;
-
345  }
-
346  pcf8563_interface_debug_print("pcf8563: enable hour alarm.\n");
-
347  res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
-
348  if (res != 0)
-
349  {
-
350  pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
-
351  (void)pcf8563_deinit(&gs_handle);
-
352 
-
353  return 1;
-
354  }
-
355  pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
356 
-
357  /* disable hour alarm */
- -
359  if (res != 0)
-
360  {
-
361  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
362  (void)pcf8563_deinit(&gs_handle);
-
363 
-
364  return 1;
-
365  }
-
366  pcf8563_interface_debug_print("pcf8563: disable hour alarm.\n");
-
367  res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
-
368  if (res != 0)
-
369  {
-
370  pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
-
371  (void)pcf8563_deinit(&gs_handle);
-
372 
-
373  return 1;
-
374  }
-
375  pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
376 
-
377  /* pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test */
-
378  pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test.\n");
-
379 
-
380  reg = rand() % 23 + 1;
-
381  res = pcf8563_set_hour_alarm(&gs_handle, reg);
-
382  if (res != 0)
-
383  {
-
384  pcf8563_interface_debug_print("pcf8563: set hour alarm failed.\n");
-
385  (void)pcf8563_deinit(&gs_handle);
-
386 
-
387  return 1;
-
388  }
-
389  pcf8563_interface_debug_print("pcf8563: set hour alarm %d.\n", reg);
-
390  res = pcf8563_get_hour_alarm(&gs_handle, &reg_check);
-
391  if (res != 0)
-
392  {
-
393  pcf8563_interface_debug_print("pcf8563: get hour alarm failed.\n");
-
394  (void)pcf8563_deinit(&gs_handle);
-
395 
-
396  return 1;
-
397  }
-
398  pcf8563_interface_debug_print("pcf8563: check hour alarm %s.\n", (reg == reg_check) ? "ok" : "error");
-
399 
-
400  /* pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test */
-
401  pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test.\n");
-
402 
-
403  /* enable day alarm */
- -
405  if (res != 0)
-
406  {
-
407  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
408  (void)pcf8563_deinit(&gs_handle);
-
409 
-
410  return 1;
-
411  }
-
412  pcf8563_interface_debug_print("pcf8563: enable day alarm.\n");
-
413  res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
-
414  if (res != 0)
-
415  {
-
416  pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
-
417  (void)pcf8563_deinit(&gs_handle);
-
418 
-
419  return 1;
-
420  }
-
421  pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
422 
-
423  /* disable day alarm */
- -
425  if (res != 0)
-
426  {
-
427  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
428  (void)pcf8563_deinit(&gs_handle);
-
429 
-
430  return 1;
-
431  }
-
432  pcf8563_interface_debug_print("pcf8563: disable day alarm.\n");
-
433  res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
-
434  if (res != 0)
-
435  {
-
436  pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
-
437  (void)pcf8563_deinit(&gs_handle);
-
438 
-
439  return 1;
-
440  }
-
441  pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
442 
-
443  /* pcf8563_set_day_alarm/pcf8563_get_day_alarm test */
-
444  pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm/pcf8563_get_day_alarm test.\n");
-
445 
-
446  reg = rand() % 30 + 1;
-
447  res = pcf8563_set_day_alarm(&gs_handle, reg);
-
448  if (res != 0)
-
449  {
-
450  pcf8563_interface_debug_print("pcf8563: set day alarm failed.\n");
-
451  (void)pcf8563_deinit(&gs_handle);
-
452 
-
453  return 1;
-
454  }
-
455  pcf8563_interface_debug_print("pcf8563: set day alarm %d.\n", reg);
-
456  res = pcf8563_get_day_alarm(&gs_handle, &reg_check);
-
457  if (res != 0)
-
458  {
-
459  pcf8563_interface_debug_print("pcf8563: get day alarm failed.\n");
-
460  (void)pcf8563_deinit(&gs_handle);
-
461 
-
462  return 1;
-
463  }
-
464  pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (reg == reg_check) ? "ok" : "error");
-
465 
-
466  /* pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test */
-
467  pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test.\n");
-
468 
-
469  /* enable week alarm */
- -
471  if (res != 0)
-
472  {
-
473  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
474  (void)pcf8563_deinit(&gs_handle);
-
475 
-
476  return 1;
-
477  }
-
478  pcf8563_interface_debug_print("pcf8563: enable week alarm.\n");
-
479  res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
-
480  if (res != 0)
-
481  {
-
482  pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
-
483  (void)pcf8563_deinit(&gs_handle);
-
484 
-
485  return 1;
-
486  }
-
487  pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
488 
-
489  /* disable week alarm */
- -
491  if (res != 0)
-
492  {
-
493  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
494  (void)pcf8563_deinit(&gs_handle);
-
495 
-
496  return 1;
-
497  }
-
498  pcf8563_interface_debug_print("pcf8563: disable week alarm.\n");
-
499  res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
-
500  if (res != 0)
-
501  {
-
502  pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
-
503  (void)pcf8563_deinit(&gs_handle);
-
504 
-
505  return 1;
-
506  }
-
507  pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
508 
-
509  /* pcf8563_set_week_alarm/pcf8563_get_week_alarm test */
-
510  pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm/pcf8563_get_week_alarm test.\n");
-
511 
-
512  reg = rand() % 7;
-
513  res = pcf8563_set_week_alarm(&gs_handle, reg);
-
514  if (res != 0)
-
515  {
-
516  pcf8563_interface_debug_print("pcf8563: set week alarm failed.\n");
-
517  (void)pcf8563_deinit(&gs_handle);
-
518 
-
519  return 1;
-
520  }
-
521  pcf8563_interface_debug_print("pcf8563: set week alarm %d.\n", reg);
-
522  res = pcf8563_get_week_alarm(&gs_handle, &reg_check);
-
523  if (res != 0)
-
524  {
-
525  pcf8563_interface_debug_print("pcf8563: get week alarm failed.\n");
-
526  (void)pcf8563_deinit(&gs_handle);
-
527 
-
528  return 1;
-
529  }
-
530  pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (reg == reg_check) ? "ok" : "error");
-
531 
-
532  /* pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test */
-
533  pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test.\n");
-
534 
-
535  /* enable clock out */
- -
537  if (res != 0)
-
538  {
-
539  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
540  (void)pcf8563_deinit(&gs_handle);
-
541 
-
542  return 1;
-
543  }
-
544  pcf8563_interface_debug_print("pcf8563: enable clock out.\n");
-
545  res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
-
546  if (res != 0)
-
547  {
-
548  pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
-
549  (void)pcf8563_deinit(&gs_handle);
-
550 
-
551  return 1;
-
552  }
-
553  pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
554 
-
555  /* disable clock out */
- -
557  if (res != 0)
-
558  {
-
559  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
560  (void)pcf8563_deinit(&gs_handle);
-
561 
-
562  return 1;
-
563  }
-
564  pcf8563_interface_debug_print("pcf8563: disable clock out.\n");
-
565  res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
-
566  if (res != 0)
-
567  {
-
568  pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
-
569  (void)pcf8563_deinit(&gs_handle);
-
570 
-
571  return 1;
-
572  }
-
573  pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
574 
-
575  /* pcf8563_set_clock_out/pcf8563_get_clock_out test */
-
576  pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out/pcf8563_get_clock_out test.\n");
-
577 
-
578  /* set clock out 32.768khz */
- -
580  if (res != 0)
-
581  {
-
582  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
583  (void)pcf8563_deinit(&gs_handle);
-
584 
-
585  return 1;
-
586  }
-
587  pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
-
588  res = pcf8563_get_clock_out(&gs_handle, &clk);
-
589  if (res != 0)
-
590  {
-
591  pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
-
592  (void)pcf8563_deinit(&gs_handle);
-
593 
-
594  return 1;
-
595  }
-
596  pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32P768KHZ) ? "ok" : "error");
-
597 
-
598  /* set clock out 1.024khz */
- -
600  if (res != 0)
-
601  {
-
602  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
603  (void)pcf8563_deinit(&gs_handle);
-
604 
-
605  return 1;
-
606  }
-
607  pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
-
608  res = pcf8563_get_clock_out(&gs_handle, &clk);
-
609  if (res != 0)
-
610  {
-
611  pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
-
612  (void)pcf8563_deinit(&gs_handle);
-
613 
-
614  return 1;
-
615  }
-
616  pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1P024KHZ) ? "ok" : "error");
-
617 
-
618  /* set clock out 32hz */
- -
620  if (res != 0)
-
621  {
-
622  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
623  (void)pcf8563_deinit(&gs_handle);
-
624 
-
625  return 1;
-
626  }
-
627  pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
-
628  res = pcf8563_get_clock_out(&gs_handle, &clk);
-
629  if (res != 0)
-
630  {
-
631  pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
-
632  (void)pcf8563_deinit(&gs_handle);
-
633 
-
634  return 1;
-
635  }
-
636  pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32HZ) ? "ok" : "error");
-
637 
-
638  /* set clock out 1hz */
-
639  res = pcf8563_set_clock_out(&gs_handle, PCF8563_CLOCK_OUT_1HZ);
-
640  if (res != 0)
-
641  {
-
642  pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
-
643  (void)pcf8563_deinit(&gs_handle);
-
644 
-
645  return 1;
-
646  }
-
647  pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
-
648  res = pcf8563_get_clock_out(&gs_handle, &clk);
-
649  if (res != 0)
-
650  {
-
651  pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
-
652  (void)pcf8563_deinit(&gs_handle);
-
653 
-
654  return 1;
-
655  }
-
656  pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1HZ) ? "ok" : "error");
-
657 
-
658  /* pcf8563_set_timer_enable/pcf8563_get_timer_enable test */
-
659  pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_enable/pcf8563_get_timer_enable test.\n");
-
660 
-
661  /* enable timer */
-
662  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_TRUE);
-
663  if (res != 0)
-
664  {
-
665  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
666  (void)pcf8563_deinit(&gs_handle);
-
667 
-
668  return 1;
-
669  }
-
670  pcf8563_interface_debug_print("pcf8563: enable timer.\n");
-
671  res = pcf8563_get_timer_enable(&gs_handle, &enable);
-
672  if (res != 0)
-
673  {
-
674  pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
-
675  (void)pcf8563_deinit(&gs_handle);
-
676 
-
677  return 1;
-
678  }
-
679  pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
680 
-
681  /* disable timer */
-
682  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
683  if (res != 0)
-
684  {
-
685  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
686  (void)pcf8563_deinit(&gs_handle);
-
687 
-
688  return 1;
-
689  }
-
690  pcf8563_interface_debug_print("pcf8563: disable timer.\n");
-
691  res = pcf8563_get_timer_enable(&gs_handle, &enable);
-
692  if (res != 0)
-
693  {
-
694  pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
-
695  (void)pcf8563_deinit(&gs_handle);
-
696 
-
697  return 1;
-
698  }
-
699  pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
700 
-
701  /* pcf8563_set_timer_freq/pcf8563_get_timer_freq test */
-
702  pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_freq/pcf8563_get_timer_freq test.\n");
-
703 
-
704  /* timer freq 4.096khz */
- -
706  if (res != 0)
-
707  {
-
708  pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
-
709  (void)pcf8563_deinit(&gs_handle);
-
710 
-
711  return 1;
-
712  }
-
713  pcf8563_interface_debug_print("pcf8563: set timer freq 4.096khz.\n");
-
714  res = pcf8563_get_timer_freq(&gs_handle, &freq);
-
715  if (res != 0)
-
716  {
-
717  pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
-
718  (void)pcf8563_deinit(&gs_handle);
-
719 
-
720  return 1;
-
721  }
-
722  pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_4P096KHZ) ? "ok" : "error");
-
723 
-
724  /* timer freq 64hz */
- -
726  if (res != 0)
-
727  {
-
728  pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
-
729  (void)pcf8563_deinit(&gs_handle);
-
730 
-
731  return 1;
-
732  }
-
733  pcf8563_interface_debug_print("pcf8563: set timer freq 64hz.\n");
-
734  res = pcf8563_get_timer_freq(&gs_handle, &freq);
-
735  if (res != 0)
-
736  {
-
737  pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
-
738  (void)pcf8563_deinit(&gs_handle);
-
739 
-
740  return 1;
-
741  }
-
742  pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_64HZ) ? "ok" : "error");
-
743 
-
744  /* timer freq 1hz */
- -
746  if (res != 0)
-
747  {
-
748  pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
-
749  (void)pcf8563_deinit(&gs_handle);
-
750 
-
751  return 1;
-
752  }
-
753  pcf8563_interface_debug_print("pcf8563: set timer freq 1hz.\n");
-
754  res = pcf8563_get_timer_freq(&gs_handle, &freq);
-
755  if (res != 0)
-
756  {
-
757  pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
-
758  (void)pcf8563_deinit(&gs_handle);
-
759 
-
760  return 1;
-
761  }
-
762  pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1HZ) ? "ok" : "error");
-
763 
-
764  /* timer freq 1/60hz */
- -
766  if (res != 0)
-
767  {
-
768  pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
-
769  (void)pcf8563_deinit(&gs_handle);
-
770 
-
771  return 1;
-
772  }
-
773  pcf8563_interface_debug_print("pcf8563: set timer freq 1/60hz.\n");
-
774  res = pcf8563_get_timer_freq(&gs_handle, &freq);
-
775  if (res != 0)
-
776  {
-
777  pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
-
778  (void)pcf8563_deinit(&gs_handle);
-
779 
-
780  return 1;
-
781  }
-
782  pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1_DIV_60HZ) ? "ok" : "error");
-
783 
-
784  /* pcf8563_set_timer_value/pcf8563_get_timer_value test */
-
785  pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_value/pcf8563_get_timer_value test.\n");
-
786 
-
787  reg = rand() % 256;
-
788  res = pcf8563_set_timer_value(&gs_handle, reg);
-
789  if (res != 0)
-
790  {
-
791  pcf8563_interface_debug_print("pcf8563: set timer value failed.\n");
-
792  (void)pcf8563_deinit(&gs_handle);
-
793 
-
794  return 1;
-
795  }
-
796  pcf8563_interface_debug_print("pcf8563: set timer value %d.\n", reg);
-
797  res = pcf8563_get_timer_value(&gs_handle, &reg_check);
-
798  if (res != 0)
-
799  {
-
800  pcf8563_interface_debug_print("pcf8563: get timer value failed.\n");
-
801  (void)pcf8563_deinit(&gs_handle);
-
802 
-
803  return 1;
-
804  }
-
805  pcf8563_interface_debug_print("pcf8563: check timer value %s.\n", (reg == reg_check) ? "ok" : "error");
-
806 
-
807  /* pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test */
-
808  pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test.\n");
-
809 
-
810  /* enable timer interrupt */
- -
812  if (res != 0)
-
813  {
-
814  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
815  (void)pcf8563_deinit(&gs_handle);
-
816 
-
817  return 1;
-
818  }
-
819  pcf8563_interface_debug_print("pcf8563: enable timer interrupt.\n");
-
820  res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
-
821  if (res != 0)
-
822  {
-
823  pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
-
824  (void)pcf8563_deinit(&gs_handle);
-
825 
-
826  return 1;
-
827  }
-
828  pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
829 
-
830  /* disable timer interrupt */
- -
832  if (res != 0)
-
833  {
-
834  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
835  (void)pcf8563_deinit(&gs_handle);
-
836 
-
837  return 1;
-
838  }
-
839  pcf8563_interface_debug_print("pcf8563: disable timer interrupt.\n");
-
840  res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
-
841  if (res != 0)
-
842  {
-
843  pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
-
844  (void)pcf8563_deinit(&gs_handle);
-
845 
-
846  return 1;
-
847  }
-
848  pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
849 
-
850  /* pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test */
-
851  pcf8563_interface_debug_print("pcf8563: pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test.\n");
-
852 
-
853  /* enable alarm interrupt */
- -
855  if (res != 0)
-
856  {
-
857  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
858  (void)pcf8563_deinit(&gs_handle);
-
859 
-
860  return 1;
-
861  }
-
862  pcf8563_interface_debug_print("pcf8563: enable alarm interrupt.\n");
-
863  res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
-
864  if (res != 0)
-
865  {
-
866  pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
-
867  (void)pcf8563_deinit(&gs_handle);
-
868 
-
869  return 1;
-
870  }
-
871  pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
-
872 
-
873  /* disable alarm interrupt */
- -
875  if (res != 0)
-
876  {
-
877  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
878  (void)pcf8563_deinit(&gs_handle);
-
879 
-
880  return 1;
-
881  }
-
882  pcf8563_interface_debug_print("pcf8563: disable alarm interrupt.\n");
-
883  res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
-
884  if (res != 0)
-
885  {
-
886  pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
-
887  (void)pcf8563_deinit(&gs_handle);
-
888 
-
889  return 1;
-
890  }
-
891  pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
-
892 
-
893  /* pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test */
-
894  pcf8563_interface_debug_print("pcf8563: pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test.\n");
-
895 
-
896  /* set interrupt mode event */
- -
898  if (res != 0)
-
899  {
-
900  pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
-
901  (void)pcf8563_deinit(&gs_handle);
-
902 
-
903  return 1;
-
904  }
-
905  pcf8563_interface_debug_print("pcf8563: set interrupt mode level.\n");
-
906  res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
-
907  if (res != 0)
-
908  {
-
909  pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
-
910  (void)pcf8563_deinit(&gs_handle);
-
911 
-
912  return 1;
-
913  }
-
914  pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_LEVEL) ? "ok" : "error");
-
915 
-
916  /* set interrupt mode pulse */
- -
918  if (res != 0)
-
919  {
-
920  pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
-
921  (void)pcf8563_deinit(&gs_handle);
-
922 
-
923  return 1;
-
924  }
-
925  pcf8563_interface_debug_print("pcf8563: set interrupt mode pulse.\n");
-
926  res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
-
927  if (res != 0)
-
928  {
-
929  pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
-
930  (void)pcf8563_deinit(&gs_handle);
-
931 
-
932  return 1;
-
933  }
-
934  pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_PULSE) ? "ok" : "error");
-
935 
-
936  /* finish register test */
-
937  pcf8563_interface_debug_print("pcf8563: finish register test.\n");
-
938  (void)pcf8563_deinit(&gs_handle);
-
939 
-
940  return 0;
-
941 }
+Go to the documentation of this file.
1
+
36
+ +
38#include <stdlib.h>
+
39
+
40static pcf8563_handle_t gs_handle;
+
41
+
+ +
50{
+
51 uint8_t res;
+
52 uint8_t reg;
+
53 uint8_t reg_check;
+
54 pcf8563_info_t info;
+
55 pcf8563_bool_t enable;
+
56 pcf8563_time_t time_in;
+
57 pcf8563_time_t time_out;
+ + + +
61
+
62 /* link functions */
+ + + + + + + + +
71
+
72 /* get pcf8563 info */
+
73 res = pcf8563_info(&info);
+
74 if (res != 0)
+
75 {
+
76 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
+
77
+
78 return 1;
+
79 }
+
80 else
+
81 {
+
82 /* print pcf8563 info */
+
83 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
+
84 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
+
85 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
+
86 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
+
87 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
+
88 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
+
89 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
+
90 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
+
91 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
+
92 }
+
93
+
94 /* start register test */
+
95 pcf8563_interface_debug_print("pcf8563: start register test.\n");
+
96
+
97 /* init pcf8563 */
+
98 res = pcf8563_init(&gs_handle);
+
99 if (res != 0)
+
100 {
+
101 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
102
+
103 return 1;
+
104 }
+
105
+
106 /* pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test */
+
107 pcf8563_interface_debug_print("pcf8563: pcf8563_set_rtc_stop/pcf8563_get_rtc_stop test.\n");
+
108
+
109 /* enable rtc stop */
+
110 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_TRUE);
+
111 if (res != 0)
+
112 {
+
113 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
114 (void)pcf8563_deinit(&gs_handle);
+
115
+
116 return 1;
+
117 }
+
118 pcf8563_interface_debug_print("pcf8563: enable rtc stop.\n");
+
119 res = pcf8563_get_rtc_stop(&gs_handle, &enable);
+
120 if (res != 0)
+
121 {
+
122 pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
+
123 (void)pcf8563_deinit(&gs_handle);
+
124
+
125 return 1;
+
126 }
+
127 pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
128
+
129 /* disable rtc stop */
+
130 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
+
131 if (res != 0)
+
132 {
+
133 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
134 (void)pcf8563_deinit(&gs_handle);
+
135
+
136 return 1;
+
137 }
+
138 pcf8563_interface_debug_print("pcf8563: disable rtc stop.\n");
+
139 res = pcf8563_get_rtc_stop(&gs_handle, &enable);
+
140 if (res != 0)
+
141 {
+
142 pcf8563_interface_debug_print("pcf8563: get rtc stop failed.\n");
+
143 (void)pcf8563_deinit(&gs_handle);
+
144
+
145 return 1;
+
146 }
+
147 pcf8563_interface_debug_print("pcf8563: check rtc stop %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
148
+
149 /* pcf8563_set_test_mode/pcf8563_get_test_mode test */
+
150 pcf8563_interface_debug_print("pcf8563: pcf8563_set_test_mode/pcf8563_get_test_mode test.\n");
+
151
+
152 /* enable test mode */
+
153 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_TRUE);
+
154 if (res != 0)
+
155 {
+
156 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
157 (void)pcf8563_deinit(&gs_handle);
+
158
+
159 return 1;
+
160 }
+
161 pcf8563_interface_debug_print("pcf8563: enable test mode.\n");
+
162 res = pcf8563_get_test_mode(&gs_handle, &enable);
+
163 if (res != 0)
+
164 {
+
165 pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
+
166 (void)pcf8563_deinit(&gs_handle);
+
167
+
168 return 1;
+
169 }
+
170 pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
171
+
172 /* disable test mode */
+
173 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
174 if (res != 0)
+
175 {
+
176 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
177 (void)pcf8563_deinit(&gs_handle);
+
178
+
179 return 1;
+
180 }
+
181 pcf8563_interface_debug_print("pcf8563: disable test mode.\n");
+
182 res = pcf8563_get_test_mode(&gs_handle, &enable);
+
183 if (res != 0)
+
184 {
+
185 pcf8563_interface_debug_print("pcf8563: get test mode failed.\n");
+
186 (void)pcf8563_deinit(&gs_handle);
+
187
+
188 return 1;
+
189 }
+
190 pcf8563_interface_debug_print("pcf8563: check test mode %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
191
+
192 /* pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test */
+
193 pcf8563_interface_debug_print("pcf8563: pcf8563_set_power_on_reset/pcf8563_get_power_on_reset test.\n");
+
194
+
195 /* enable power on reset */
+ +
197 if (res != 0)
+
198 {
+
199 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
200 (void)pcf8563_deinit(&gs_handle);
+
201
+
202 return 1;
+
203 }
+
204 pcf8563_interface_debug_print("pcf8563: enable power on reset.\n");
+
205 res = pcf8563_get_power_on_reset(&gs_handle, &enable);
+
206 if (res != 0)
+
207 {
+
208 pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
+
209 (void)pcf8563_deinit(&gs_handle);
+
210
+
211 return 1;
+
212 }
+
213 pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
214
+
215 /* disable power on reset */
+ +
217 if (res != 0)
+
218 {
+
219 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
220 (void)pcf8563_deinit(&gs_handle);
+
221
+
222 return 1;
+
223 }
+
224 pcf8563_interface_debug_print("pcf8563: disable power on reset.\n");
+
225 res = pcf8563_get_power_on_reset(&gs_handle, &enable);
+
226 if (res != 0)
+
227 {
+
228 pcf8563_interface_debug_print("pcf8563: get power on reset failed.\n");
+
229 (void)pcf8563_deinit(&gs_handle);
+
230
+
231 return 1;
+
232 }
+
233 pcf8563_interface_debug_print("pcf8563: check power on reset %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
234
+
235 /* pcf8563_set_time/pcf8563_get_time test */
+
236 pcf8563_interface_debug_print("pcf8563: pcf8563_set_time/pcf8563_get_time test.\n");
+
237
+
238 /* set time */
+
239 time_in.year = rand() % 100 + 2000;
+
240 time_in.month = rand() % 12 + 1;
+
241 time_in.date = rand() % 20 + 1;
+
242 time_in.week = rand() % 7;
+
243 time_in.hour = rand() % 11 + 1;
+
244 time_in.minute = rand() % 60;
+
245 time_in.second = rand() % 60;
+
246 res = pcf8563_set_time(&gs_handle, &time_in);
+
247 if (res != 0)
+
248 {
+
249 pcf8563_interface_debug_print("pcf8563: set time failed.\n");
+
250 (void)pcf8563_deinit(&gs_handle);
+
251
+
252 return 1;
+
253 }
+
254 pcf8563_interface_debug_print("pcf8563: set time %04d-%02d-%02d %02d:%02d:%02d %d.\n",
+
255 time_in.year, time_in.month, time_in.date,
+
256 time_in.hour, time_in.minute, time_in.second, time_in.week
+
257 );
+
258 res = pcf8563_get_time(&gs_handle, &time_out);
+
259 if (res != 0)
+
260 {
+
261 pcf8563_interface_debug_print("pcf8563: get time failed.\n");
+
262 (void)pcf8563_deinit(&gs_handle);
+
263
+
264 return 1;
+
265 }
+
266 pcf8563_interface_debug_print("pcf8563: check time %s.\n", (memcmp((uint8_t *)&time_in, (uint8_t *)&time_out, sizeof(pcf8563_time_t)) == 0) ? "ok" : "error");
+
267
+
268 /* pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test */
+
269 pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm_enable/pcf8563_get_minute_alarm_enable test.\n");
+
270
+
271 /* enable minute alarm */
+ +
273 if (res != 0)
+
274 {
+
275 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
276 (void)pcf8563_deinit(&gs_handle);
+
277
+
278 return 1;
+
279 }
+
280 pcf8563_interface_debug_print("pcf8563: enable minute alarm.\n");
+
281 res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
+
282 if (res != 0)
+
283 {
+
284 pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
+
285 (void)pcf8563_deinit(&gs_handle);
+
286
+
287 return 1;
+
288 }
+
289 pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
290
+
291 /* disable minute alarm */
+ +
293 if (res != 0)
+
294 {
+
295 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
296 (void)pcf8563_deinit(&gs_handle);
+
297
+
298 return 1;
+
299 }
+
300 pcf8563_interface_debug_print("pcf8563: disable minute alarm.\n");
+
301 res = pcf8563_get_minute_alarm_enable(&gs_handle, &enable);
+
302 if (res != 0)
+
303 {
+
304 pcf8563_interface_debug_print("pcf8563: get minute alarm enable failed.\n");
+
305 (void)pcf8563_deinit(&gs_handle);
+
306
+
307 return 1;
+
308 }
+
309 pcf8563_interface_debug_print("pcf8563: check minute alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
310
+
311 /* pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test */
+
312 pcf8563_interface_debug_print("pcf8563: pcf8563_set_minute_alarm/pcf8563_get_minute_alarm test.\n");
+
313
+
314 reg = rand() % 60 + 1;
+
315 res = pcf8563_set_minute_alarm(&gs_handle, reg);
+
316 if (res != 0)
+
317 {
+
318 pcf8563_interface_debug_print("pcf8563: set minute alarm failed.\n");
+
319 (void)pcf8563_deinit(&gs_handle);
+
320
+
321 return 1;
+
322 }
+
323 pcf8563_interface_debug_print("pcf8563: set minute alarm %d.\n", reg);
+
324 res = pcf8563_get_minute_alarm(&gs_handle, &reg_check);
+
325 if (res != 0)
+
326 {
+
327 pcf8563_interface_debug_print("pcf8563: get minute alarm failed.\n");
+
328 (void)pcf8563_deinit(&gs_handle);
+
329
+
330 return 1;
+
331 }
+
332 pcf8563_interface_debug_print("pcf8563: check minute alarm %s.\n", (reg == reg_check) ? "ok" : "error");
+
333
+
334 /* pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test */
+
335 pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm_enable/pcf8563_get_hour_alarm_enable test.\n");
+
336
+
337 /* enable hour alarm */
+ +
339 if (res != 0)
+
340 {
+
341 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
342 (void)pcf8563_deinit(&gs_handle);
+
343
+
344 return 1;
+
345 }
+
346 pcf8563_interface_debug_print("pcf8563: enable hour alarm.\n");
+
347 res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
+
348 if (res != 0)
+
349 {
+
350 pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
+
351 (void)pcf8563_deinit(&gs_handle);
+
352
+
353 return 1;
+
354 }
+
355 pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
356
+
357 /* disable hour alarm */
+ +
359 if (res != 0)
+
360 {
+
361 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
362 (void)pcf8563_deinit(&gs_handle);
+
363
+
364 return 1;
+
365 }
+
366 pcf8563_interface_debug_print("pcf8563: disable hour alarm.\n");
+
367 res = pcf8563_get_hour_alarm_enable(&gs_handle, &enable);
+
368 if (res != 0)
+
369 {
+
370 pcf8563_interface_debug_print("pcf8563: get hour alarm enable failed.\n");
+
371 (void)pcf8563_deinit(&gs_handle);
+
372
+
373 return 1;
+
374 }
+
375 pcf8563_interface_debug_print("pcf8563: check hour alarm enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
376
+
377 /* pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test */
+
378 pcf8563_interface_debug_print("pcf8563: pcf8563_set_hour_alarm/pcf8563_get_hour_alarm test.\n");
+
379
+
380 reg = rand() % 23 + 1;
+
381 res = pcf8563_set_hour_alarm(&gs_handle, reg);
+
382 if (res != 0)
+
383 {
+
384 pcf8563_interface_debug_print("pcf8563: set hour alarm failed.\n");
+
385 (void)pcf8563_deinit(&gs_handle);
+
386
+
387 return 1;
+
388 }
+
389 pcf8563_interface_debug_print("pcf8563: set hour alarm %d.\n", reg);
+
390 res = pcf8563_get_hour_alarm(&gs_handle, &reg_check);
+
391 if (res != 0)
+
392 {
+
393 pcf8563_interface_debug_print("pcf8563: get hour alarm failed.\n");
+
394 (void)pcf8563_deinit(&gs_handle);
+
395
+
396 return 1;
+
397 }
+
398 pcf8563_interface_debug_print("pcf8563: check hour alarm %s.\n", (reg == reg_check) ? "ok" : "error");
+
399
+
400 /* pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test */
+
401 pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm_enable/pcf8563_get_day_alarm_enable test.\n");
+
402
+
403 /* enable day alarm */
+ +
405 if (res != 0)
+
406 {
+
407 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
408 (void)pcf8563_deinit(&gs_handle);
+
409
+
410 return 1;
+
411 }
+
412 pcf8563_interface_debug_print("pcf8563: enable day alarm.\n");
+
413 res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
+
414 if (res != 0)
+
415 {
+
416 pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
+
417 (void)pcf8563_deinit(&gs_handle);
+
418
+
419 return 1;
+
420 }
+
421 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
422
+
423 /* disable day alarm */
+ +
425 if (res != 0)
+
426 {
+
427 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
428 (void)pcf8563_deinit(&gs_handle);
+
429
+
430 return 1;
+
431 }
+
432 pcf8563_interface_debug_print("pcf8563: disable day alarm.\n");
+
433 res = pcf8563_get_day_alarm_enable(&gs_handle, &enable);
+
434 if (res != 0)
+
435 {
+
436 pcf8563_interface_debug_print("pcf8563: get day alarm enable failed.\n");
+
437 (void)pcf8563_deinit(&gs_handle);
+
438
+
439 return 1;
+
440 }
+
441 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
442
+
443 /* pcf8563_set_day_alarm/pcf8563_get_day_alarm test */
+
444 pcf8563_interface_debug_print("pcf8563: pcf8563_set_day_alarm/pcf8563_get_day_alarm test.\n");
+
445
+
446 reg = rand() % 30 + 1;
+
447 res = pcf8563_set_day_alarm(&gs_handle, reg);
+
448 if (res != 0)
+
449 {
+
450 pcf8563_interface_debug_print("pcf8563: set day alarm failed.\n");
+
451 (void)pcf8563_deinit(&gs_handle);
+
452
+
453 return 1;
+
454 }
+
455 pcf8563_interface_debug_print("pcf8563: set day alarm %d.\n", reg);
+
456 res = pcf8563_get_day_alarm(&gs_handle, &reg_check);
+
457 if (res != 0)
+
458 {
+
459 pcf8563_interface_debug_print("pcf8563: get day alarm failed.\n");
+
460 (void)pcf8563_deinit(&gs_handle);
+
461
+
462 return 1;
+
463 }
+
464 pcf8563_interface_debug_print("pcf8563: check day alarm %s.\n", (reg == reg_check) ? "ok" : "error");
+
465
+
466 /* pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test */
+
467 pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm_enable/pcf8563_get_week_alarm_enable test.\n");
+
468
+
469 /* enable week alarm */
+ +
471 if (res != 0)
+
472 {
+
473 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
474 (void)pcf8563_deinit(&gs_handle);
+
475
+
476 return 1;
+
477 }
+
478 pcf8563_interface_debug_print("pcf8563: enable week alarm.\n");
+
479 res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
+
480 if (res != 0)
+
481 {
+
482 pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
+
483 (void)pcf8563_deinit(&gs_handle);
+
484
+
485 return 1;
+
486 }
+
487 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
488
+
489 /* disable week alarm */
+ +
491 if (res != 0)
+
492 {
+
493 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
494 (void)pcf8563_deinit(&gs_handle);
+
495
+
496 return 1;
+
497 }
+
498 pcf8563_interface_debug_print("pcf8563: disable week alarm.\n");
+
499 res = pcf8563_get_week_alarm_enable(&gs_handle, &enable);
+
500 if (res != 0)
+
501 {
+
502 pcf8563_interface_debug_print("pcf8563: get week alarm enable failed.\n");
+
503 (void)pcf8563_deinit(&gs_handle);
+
504
+
505 return 1;
+
506 }
+
507 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
508
+
509 /* pcf8563_set_week_alarm/pcf8563_get_week_alarm test */
+
510 pcf8563_interface_debug_print("pcf8563: pcf8563_set_week_alarm/pcf8563_get_week_alarm test.\n");
+
511
+
512 reg = rand() % 7;
+
513 res = pcf8563_set_week_alarm(&gs_handle, reg);
+
514 if (res != 0)
+
515 {
+
516 pcf8563_interface_debug_print("pcf8563: set week alarm failed.\n");
+
517 (void)pcf8563_deinit(&gs_handle);
+
518
+
519 return 1;
+
520 }
+
521 pcf8563_interface_debug_print("pcf8563: set week alarm %d.\n", reg);
+
522 res = pcf8563_get_week_alarm(&gs_handle, &reg_check);
+
523 if (res != 0)
+
524 {
+
525 pcf8563_interface_debug_print("pcf8563: get week alarm failed.\n");
+
526 (void)pcf8563_deinit(&gs_handle);
+
527
+
528 return 1;
+
529 }
+
530 pcf8563_interface_debug_print("pcf8563: check week alarm %s.\n", (reg == reg_check) ? "ok" : "error");
+
531
+
532 /* pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test */
+
533 pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out_enable/pcf8563_get_clock_out_enable test.\n");
+
534
+
535 /* enable clock out */
+ +
537 if (res != 0)
+
538 {
+
539 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
540 (void)pcf8563_deinit(&gs_handle);
+
541
+
542 return 1;
+
543 }
+
544 pcf8563_interface_debug_print("pcf8563: enable clock out.\n");
+
545 res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
+
546 if (res != 0)
+
547 {
+
548 pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
+
549 (void)pcf8563_deinit(&gs_handle);
+
550
+
551 return 1;
+
552 }
+
553 pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
554
+
555 /* disable clock out */
+ +
557 if (res != 0)
+
558 {
+
559 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
560 (void)pcf8563_deinit(&gs_handle);
+
561
+
562 return 1;
+
563 }
+
564 pcf8563_interface_debug_print("pcf8563: disable clock out.\n");
+
565 res = pcf8563_get_clock_out_enable(&gs_handle, &enable);
+
566 if (res != 0)
+
567 {
+
568 pcf8563_interface_debug_print("pcf8563: get clock out enable failed.\n");
+
569 (void)pcf8563_deinit(&gs_handle);
+
570
+
571 return 1;
+
572 }
+
573 pcf8563_interface_debug_print("pcf8563: check clock out enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
574
+
575 /* pcf8563_set_clock_out/pcf8563_get_clock_out test */
+
576 pcf8563_interface_debug_print("pcf8563: pcf8563_set_clock_out/pcf8563_get_clock_out test.\n");
+
577
+
578 /* set clock out 32.768khz */
+ +
580 if (res != 0)
+
581 {
+
582 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
583 (void)pcf8563_deinit(&gs_handle);
+
584
+
585 return 1;
+
586 }
+
587 pcf8563_interface_debug_print("pcf8563: set clock out 32.768khz.\n");
+
588 res = pcf8563_get_clock_out(&gs_handle, &clk);
+
589 if (res != 0)
+
590 {
+
591 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
+
592 (void)pcf8563_deinit(&gs_handle);
+
593
+
594 return 1;
+
595 }
+
596 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32P768KHZ) ? "ok" : "error");
+
597
+
598 /* set clock out 1.024khz */
+ +
600 if (res != 0)
+
601 {
+
602 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
603 (void)pcf8563_deinit(&gs_handle);
+
604
+
605 return 1;
+
606 }
+
607 pcf8563_interface_debug_print("pcf8563: set clock out 1.024khz.\n");
+
608 res = pcf8563_get_clock_out(&gs_handle, &clk);
+
609 if (res != 0)
+
610 {
+
611 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
+
612 (void)pcf8563_deinit(&gs_handle);
+
613
+
614 return 1;
+
615 }
+
616 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1P024KHZ) ? "ok" : "error");
+
617
+
618 /* set clock out 32hz */
+ +
620 if (res != 0)
+
621 {
+
622 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
623 (void)pcf8563_deinit(&gs_handle);
+
624
+
625 return 1;
+
626 }
+
627 pcf8563_interface_debug_print("pcf8563: set clock out 32hz.\n");
+
628 res = pcf8563_get_clock_out(&gs_handle, &clk);
+
629 if (res != 0)
+
630 {
+
631 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
+
632 (void)pcf8563_deinit(&gs_handle);
+
633
+
634 return 1;
+
635 }
+
636 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_32HZ) ? "ok" : "error");
+
637
+
638 /* set clock out 1hz */
+ +
640 if (res != 0)
+
641 {
+
642 pcf8563_interface_debug_print("pcf8563: set clock out failed.\n");
+
643 (void)pcf8563_deinit(&gs_handle);
+
644
+
645 return 1;
+
646 }
+
647 pcf8563_interface_debug_print("pcf8563: set clock out 1hz.\n");
+
648 res = pcf8563_get_clock_out(&gs_handle, &clk);
+
649 if (res != 0)
+
650 {
+
651 pcf8563_interface_debug_print("pcf8563: get clock out failed.\n");
+
652 (void)pcf8563_deinit(&gs_handle);
+
653
+
654 return 1;
+
655 }
+
656 pcf8563_interface_debug_print("pcf8563: check clock out %s.\n", (clk == PCF8563_CLOCK_OUT_1HZ) ? "ok" : "error");
+
657
+
658 /* pcf8563_set_timer_enable/pcf8563_get_timer_enable test */
+
659 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_enable/pcf8563_get_timer_enable test.\n");
+
660
+
661 /* enable timer */
+ +
663 if (res != 0)
+
664 {
+
665 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
666 (void)pcf8563_deinit(&gs_handle);
+
667
+
668 return 1;
+
669 }
+
670 pcf8563_interface_debug_print("pcf8563: enable timer.\n");
+
671 res = pcf8563_get_timer_enable(&gs_handle, &enable);
+
672 if (res != 0)
+
673 {
+
674 pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
+
675 (void)pcf8563_deinit(&gs_handle);
+
676
+
677 return 1;
+
678 }
+
679 pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
680
+
681 /* disable timer */
+ +
683 if (res != 0)
+
684 {
+
685 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
686 (void)pcf8563_deinit(&gs_handle);
+
687
+
688 return 1;
+
689 }
+
690 pcf8563_interface_debug_print("pcf8563: disable timer.\n");
+
691 res = pcf8563_get_timer_enable(&gs_handle, &enable);
+
692 if (res != 0)
+
693 {
+
694 pcf8563_interface_debug_print("pcf8563: get timer enable failed.\n");
+
695 (void)pcf8563_deinit(&gs_handle);
+
696
+
697 return 1;
+
698 }
+
699 pcf8563_interface_debug_print("pcf8563: check timer enable %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
700
+
701 /* pcf8563_set_timer_freq/pcf8563_get_timer_freq test */
+
702 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_freq/pcf8563_get_timer_freq test.\n");
+
703
+
704 /* timer freq 4.096khz */
+ +
706 if (res != 0)
+
707 {
+
708 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
+
709 (void)pcf8563_deinit(&gs_handle);
+
710
+
711 return 1;
+
712 }
+
713 pcf8563_interface_debug_print("pcf8563: set timer freq 4.096khz.\n");
+
714 res = pcf8563_get_timer_freq(&gs_handle, &freq);
+
715 if (res != 0)
+
716 {
+
717 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
+
718 (void)pcf8563_deinit(&gs_handle);
+
719
+
720 return 1;
+
721 }
+
722 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_4P096KHZ) ? "ok" : "error");
+
723
+
724 /* timer freq 64hz */
+ +
726 if (res != 0)
+
727 {
+
728 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
+
729 (void)pcf8563_deinit(&gs_handle);
+
730
+
731 return 1;
+
732 }
+
733 pcf8563_interface_debug_print("pcf8563: set timer freq 64hz.\n");
+
734 res = pcf8563_get_timer_freq(&gs_handle, &freq);
+
735 if (res != 0)
+
736 {
+
737 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
+
738 (void)pcf8563_deinit(&gs_handle);
+
739
+
740 return 1;
+
741 }
+
742 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_64HZ) ? "ok" : "error");
+
743
+
744 /* timer freq 1hz */
+ +
746 if (res != 0)
+
747 {
+
748 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
+
749 (void)pcf8563_deinit(&gs_handle);
+
750
+
751 return 1;
+
752 }
+
753 pcf8563_interface_debug_print("pcf8563: set timer freq 1hz.\n");
+
754 res = pcf8563_get_timer_freq(&gs_handle, &freq);
+
755 if (res != 0)
+
756 {
+
757 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
+
758 (void)pcf8563_deinit(&gs_handle);
+
759
+
760 return 1;
+
761 }
+
762 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1HZ) ? "ok" : "error");
+
763
+
764 /* timer freq 1/60hz */
+ +
766 if (res != 0)
+
767 {
+
768 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
+
769 (void)pcf8563_deinit(&gs_handle);
+
770
+
771 return 1;
+
772 }
+
773 pcf8563_interface_debug_print("pcf8563: set timer freq 1/60hz.\n");
+
774 res = pcf8563_get_timer_freq(&gs_handle, &freq);
+
775 if (res != 0)
+
776 {
+
777 pcf8563_interface_debug_print("pcf8563: get timer freq failed.\n");
+
778 (void)pcf8563_deinit(&gs_handle);
+
779
+
780 return 1;
+
781 }
+
782 pcf8563_interface_debug_print("pcf8563: check timer freq %s.\n", (freq == PCF8563_TIMER_FREQ_1_DIV_60HZ) ? "ok" : "error");
+
783
+
784 /* pcf8563_set_timer_value/pcf8563_get_timer_value test */
+
785 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_value/pcf8563_get_timer_value test.\n");
+
786
+
787 reg = rand() % 256;
+
788 res = pcf8563_set_timer_value(&gs_handle, reg);
+
789 if (res != 0)
+
790 {
+
791 pcf8563_interface_debug_print("pcf8563: set timer value failed.\n");
+
792 (void)pcf8563_deinit(&gs_handle);
+
793
+
794 return 1;
+
795 }
+
796 pcf8563_interface_debug_print("pcf8563: set timer value %d.\n", reg);
+
797 res = pcf8563_get_timer_value(&gs_handle, &reg_check);
+
798 if (res != 0)
+
799 {
+
800 pcf8563_interface_debug_print("pcf8563: get timer value failed.\n");
+
801 (void)pcf8563_deinit(&gs_handle);
+
802
+
803 return 1;
+
804 }
+
805 pcf8563_interface_debug_print("pcf8563: check timer value %s.\n", (reg == reg_check) ? "ok" : "error");
+
806
+
807 /* pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test */
+
808 pcf8563_interface_debug_print("pcf8563: pcf8563_set_timer_interrupt/pcf8563_get_timer_interrupt test.\n");
+
809
+
810 /* enable timer interrupt */
+ +
812 if (res != 0)
+
813 {
+
814 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
815 (void)pcf8563_deinit(&gs_handle);
+
816
+
817 return 1;
+
818 }
+
819 pcf8563_interface_debug_print("pcf8563: enable timer interrupt.\n");
+
820 res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
+
821 if (res != 0)
+
822 {
+
823 pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
+
824 (void)pcf8563_deinit(&gs_handle);
+
825
+
826 return 1;
+
827 }
+
828 pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
829
+
830 /* disable timer interrupt */
+ +
832 if (res != 0)
+
833 {
+
834 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
835 (void)pcf8563_deinit(&gs_handle);
+
836
+
837 return 1;
+
838 }
+
839 pcf8563_interface_debug_print("pcf8563: disable timer interrupt.\n");
+
840 res = pcf8563_get_timer_interrupt(&gs_handle, &enable);
+
841 if (res != 0)
+
842 {
+
843 pcf8563_interface_debug_print("pcf8563: get timer interrupt failed.\n");
+
844 (void)pcf8563_deinit(&gs_handle);
+
845
+
846 return 1;
+
847 }
+
848 pcf8563_interface_debug_print("pcf8563: check timer interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
849
+
850 /* pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test */
+
851 pcf8563_interface_debug_print("pcf8563: pcf8563_set_alarm_interrupt/pcf8563_get_alarm_interrupt test.\n");
+
852
+
853 /* enable alarm interrupt */
+ +
855 if (res != 0)
+
856 {
+
857 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
858 (void)pcf8563_deinit(&gs_handle);
+
859
+
860 return 1;
+
861 }
+
862 pcf8563_interface_debug_print("pcf8563: enable alarm interrupt.\n");
+
863 res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
+
864 if (res != 0)
+
865 {
+
866 pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
+
867 (void)pcf8563_deinit(&gs_handle);
+
868
+
869 return 1;
+
870 }
+
871 pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_TRUE) ? "ok" : "error");
+
872
+
873 /* disable alarm interrupt */
+ +
875 if (res != 0)
+
876 {
+
877 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
878 (void)pcf8563_deinit(&gs_handle);
+
879
+
880 return 1;
+
881 }
+
882 pcf8563_interface_debug_print("pcf8563: disable alarm interrupt.\n");
+
883 res = pcf8563_get_alarm_interrupt(&gs_handle, &enable);
+
884 if (res != 0)
+
885 {
+
886 pcf8563_interface_debug_print("pcf8563: get alarm interrupt failed.\n");
+
887 (void)pcf8563_deinit(&gs_handle);
+
888
+
889 return 1;
+
890 }
+
891 pcf8563_interface_debug_print("pcf8563: check alarm interrupt %s.\n", (enable == PCF8563_BOOL_FALSE) ? "ok" : "error");
+
892
+
893 /* pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test */
+
894 pcf8563_interface_debug_print("pcf8563: pcf8563_set_interrupt_mode/pcf8563_get_interrupt_mode test.\n");
+
895
+
896 /* set interrupt mode event */
+ +
898 if (res != 0)
+
899 {
+
900 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
+
901 (void)pcf8563_deinit(&gs_handle);
+
902
+
903 return 1;
+
904 }
+
905 pcf8563_interface_debug_print("pcf8563: set interrupt mode level.\n");
+
906 res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
+
907 if (res != 0)
+
908 {
+
909 pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
+
910 (void)pcf8563_deinit(&gs_handle);
+
911
+
912 return 1;
+
913 }
+
914 pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_LEVEL) ? "ok" : "error");
+
915
+
916 /* set interrupt mode pulse */
+ +
918 if (res != 0)
+
919 {
+
920 pcf8563_interface_debug_print("pcf8563: set interrupt mode failed.\n");
+
921 (void)pcf8563_deinit(&gs_handle);
+
922
+
923 return 1;
+
924 }
+
925 pcf8563_interface_debug_print("pcf8563: set interrupt mode pulse.\n");
+
926 res = pcf8563_get_interrupt_mode(&gs_handle, &mode);
+
927 if (res != 0)
+
928 {
+
929 pcf8563_interface_debug_print("pcf8563: get interrupt mode failed.\n");
+
930 (void)pcf8563_deinit(&gs_handle);
+
931
+
932 return 1;
+
933 }
+
934 pcf8563_interface_debug_print("pcf8563: check interrupt mode %s.\n", (mode == PCF8563_INTERRUPT_MODE_PULSE) ? "ok" : "error");
+
935
+
936 /* finish register test */
+
937 pcf8563_interface_debug_print("pcf8563: finish register test.\n");
+
938 (void)pcf8563_deinit(&gs_handle);
+
939
+
940 return 0;
+
941}
+
driver pcf8563 register test header file
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
-
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
-
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
-
pcf8563_bool_t
pcf8563 bool enumeration definition
-
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
-
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
-
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
-
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
-
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
-
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
-
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
-
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
-
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
-
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
-
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
-
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
-
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
-
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
-
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
-
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
-
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
-
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_TIMER_FREQ_64HZ
-
@ PCF8563_TIMER_FREQ_1_DIV_60HZ
-
@ PCF8563_TIMER_FREQ_4P096KHZ
-
@ PCF8563_TIMER_FREQ_1HZ
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_MODE_PULSE
-
@ PCF8563_INTERRUPT_MODE_LEVEL
-
@ PCF8563_CLOCK_OUT_32P768KHZ
-
@ PCF8563_CLOCK_OUT_32HZ
-
@ PCF8563_CLOCK_OUT_1P024KHZ
-
@ PCF8563_CLOCK_OUT_1HZ
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
uint8_t pcf8563_register_test(void)
register test
-
pcf8563 handle structure definition
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
+
uint8_t pcf8563_set_day_alarm(pcf8563_handle_t *handle, uint8_t day)
set day alarm
+
uint8_t pcf8563_get_week_alarm(pcf8563_handle_t *handle, uint8_t *week)
get week alarm
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_get_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the minute alarm status
+
pcf8563_bool_t
pcf8563 bool enumeration definition
+
uint8_t pcf8563_get_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the rtc stop status
+
uint8_t pcf8563_set_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
set clock out
+
uint8_t pcf8563_set_hour_alarm(pcf8563_handle_t *handle, uint8_t hour)
set hour alarm
+
uint8_t pcf8563_get_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
get the interrupt mode
+
uint8_t pcf8563_get_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the hour alarm status
+
uint8_t pcf8563_get_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get alarm interrupt status
+
uint8_t pcf8563_get_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
get timer freq
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_minute_alarm(pcf8563_handle_t *handle, uint8_t minute)
set minute alarm
+
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
+
uint8_t pcf8563_get_hour_alarm(pcf8563_handle_t *handle, uint8_t *hour)
get hour alarm
+
uint8_t pcf8563_get_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get clock out enable status
+
pcf8563_clock_out_t
pcf8563 clock out enumeration definition
+
uint8_t pcf8563_get_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer interrupt status
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
uint8_t pcf8563_get_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the day alarm status
+
uint8_t pcf8563_get_minute_alarm(pcf8563_handle_t *handle, uint8_t *minute)
get minute alarm
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_get_day_alarm(pcf8563_handle_t *handle, uint8_t *day)
get day alarm
+
uint8_t pcf8563_get_clock_out(pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
get clock out
+
uint8_t pcf8563_get_timer_value(pcf8563_handle_t *handle, uint8_t *value)
get timer value
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_week_alarm(pcf8563_handle_t *handle, uint8_t week)
set week alarm
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_get_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the power on reset status
+
uint8_t pcf8563_get_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get timer enable status
+
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
+
uint8_t pcf8563_get_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the week alarm status
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_get_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t *enable)
get the test mode status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_TIMER_FREQ_64HZ
+
@ PCF8563_TIMER_FREQ_1_DIV_60HZ
+
@ PCF8563_TIMER_FREQ_4P096KHZ
+
@ PCF8563_TIMER_FREQ_1HZ
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_MODE_PULSE
+
@ PCF8563_INTERRUPT_MODE_LEVEL
+
@ PCF8563_CLOCK_OUT_32P768KHZ
+
@ PCF8563_CLOCK_OUT_32HZ
+
@ PCF8563_CLOCK_OUT_1P024KHZ
+
@ PCF8563_CLOCK_OUT_1HZ
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
void pcf8563_interface_receive_callback(uint8_t type)
interface receive callback
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + +
uint8_t pcf8563_register_test(void)
register test
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__register__test_8h.html b/doc/html/driver__pcf8563__register__test_8h.html index a902d83..f16ab4f 100644 --- a/doc/html/driver__pcf8563__register__test_8h.html +++ b/doc/html/driver__pcf8563__register__test_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_register_test.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_register_test.h File Reference
+
driver_pcf8563_register_test.h File Reference

driver pcf8563 register test header file More...

+Include dependency graph for driver_pcf8563_register_test.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - + +

+

Functions

uint8_t pcf8563_register_test (void)
 register test More...
 
uint8_t pcf8563_register_test (void)
 register test
-

Detailed Description

+

Detailed Description

driver pcf8563 register test header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -124,11 +137,19 @@

history

Definition in file driver_pcf8563_register_test.h.

+ +
diff --git a/doc/html/driver__pcf8563__register__test_8h__dep__incl.md5 b/doc/html/driver__pcf8563__register__test_8h__dep__incl.md5 new file mode 100644 index 0000000..dcea9a6 --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8h__dep__incl.md5 @@ -0,0 +1 @@ +6b07b77aa5b76cadd34d2d7d7426a1d7 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__register__test_8h__dep__incl.svg b/doc/html/driver__pcf8563__register__test_8h__dep__incl.svg new file mode 100644 index 0000000..82b1871 --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +test/driver_pcf8563_register_test.h + + +Node1 + + +test/driver_pcf8563 +_register_test.h + + + + + +Node2 + + +test/driver_pcf8563 +_register_test.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__register__test_8h__incl.md5 b/doc/html/driver__pcf8563__register__test_8h__incl.md5 new file mode 100644 index 0000000..325a890 --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8h__incl.md5 @@ -0,0 +1 @@ +622e9c217800113df14bb894a9db5ccf \ No newline at end of file diff --git a/doc/html/driver__pcf8563__register__test_8h__incl.svg b/doc/html/driver__pcf8563__register__test_8h__incl.svg new file mode 100644 index 0000000..12d678e --- /dev/null +++ b/doc/html/driver__pcf8563__register__test_8h__incl.svg @@ -0,0 +1,112 @@ + + + + + + +test/driver_pcf8563_register_test.h + + +Node1 + + +test/driver_pcf8563 +_register_test.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__register__test_8h_source.html b/doc/html/driver__pcf8563__register__test_8h_source.html index 03485b5..4b568c8 100644 --- a/doc/html/driver__pcf8563__register__test_8h_source.html +++ b/doc/html/driver__pcf8563__register__test_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_register_test.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_register_test.h
+
driver_pcf8563_register_test.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_REGISTER_TEST_H
-
38 #define DRIVER_PCF8563_REGISTER_TEST_H
-
39 
- -
41 
-
42 #ifdef __cplusplus
-
43 extern "C"{
-
44 #endif
-
45 
-
60 uint8_t pcf8563_register_test(void);
-
61 
-
66 #ifdef __cplusplus
-
67 }
-
68 #endif
-
69 
-
70 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_REGISTER_TEST_H
+
38#define DRIVER_PCF8563_REGISTER_TEST_H
+
39
+ +
41
+
42#ifdef __cplusplus
+
43extern "C"{
+
44#endif
+
45
+
52
+
60uint8_t pcf8563_register_test(void);
+
61
+
65
+
66#ifdef __cplusplus
+
67}
+
68#endif
+
69
+
70#endif
driver pcf8563 interface header file
-
uint8_t pcf8563_register_test(void)
register test
+
uint8_t pcf8563_register_test(void)
register test
+
diff --git a/doc/html/driver__pcf8563__timer_8c.html b/doc/html/driver__pcf8563__timer_8c.html index ce96d30..7decbab 100644 --- a/doc/html/driver__pcf8563__timer_8c.html +++ b/doc/html/driver__pcf8563__timer_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_timer.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_timer.c File Reference
+
driver_pcf8563_timer.c File Reference

driver pcf8563 timer source file More...

+Include dependency graph for driver_pcf8563_timer.c:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_timer_irq_handler (void)
 timer example irq More...
 
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init More...
 
uint8_t pcf8563_timer_deinit (void)
 timer example deinit More...
 
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time More...
 
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp More...
 
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone More...
 
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time More...
 
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp More...
 
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone More...
 
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time More...
 
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer More...
 
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer More...
 
uint8_t pcf8563_timer_irq_handler (void)
 timer example irq
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init
uint8_t pcf8563_timer_deinit (void)
 timer example deinit
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer
-

Detailed Description

+

Detailed Description

driver pcf8563 timer source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -157,11 +154,19 @@

history

Definition in file driver_pcf8563_timer.c.

+ +
diff --git a/doc/html/driver__pcf8563__timer_8c__incl.md5 b/doc/html/driver__pcf8563__timer_8c__incl.md5 new file mode 100644 index 0000000..3836f83 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8c__incl.md5 @@ -0,0 +1 @@ +d559e8957c7bdcdbd7c0cc8623336870 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer_8c__incl.svg b/doc/html/driver__pcf8563__timer_8c__incl.svg new file mode 100644 index 0000000..1023351 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8c__incl.svg @@ -0,0 +1,148 @@ + + + + + + +example/driver_pcf8563_timer.c + + +Node1 + + +example/driver_pcf8563 +_timer.c + + + + + +Node2 + + +driver_pcf8563_timer.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node8 + + +time.h + + + + + +Node2->Node8 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer_8c_source.html b/doc/html/driver__pcf8563__timer_8c_source.html index 641cb47..a32c61a 100644 --- a/doc/html/driver__pcf8563__timer_8c_source.html +++ b/doc/html/driver__pcf8563__timer_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_timer.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_timer.c
+
driver_pcf8563_timer.c
-Go to the documentation of this file.
1 
-
37 #include "driver_pcf8563_timer.h"
-
38 
-
39 static pcf8563_handle_t gs_handle;
-
40 static int8_t gs_time_zone = 0;
- -
50 {
-
51  if (pcf8563_irq_handler(&gs_handle) != 0)
-
52  {
-
53  return 1;
-
54  }
-
55 
-
56  return 0;
-
57 }
-
58 
-
67 uint8_t pcf8563_timer_init(void (*callback)(uint8_t type))
-
68 {
-
69  uint8_t res;
-
70 
-
71  /* link functions */
- - - - - - - -
79  DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
-
80 
-
81  /* init pcf8563 */
-
82  res = pcf8563_init(&gs_handle);
-
83  if (res != 0)
-
84  {
-
85  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
86 
-
87  return 1;
-
88  }
-
89 
-
90  /* disable rtc stop */
-
91  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
92  if (res != 0)
-
93  {
-
94  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
95  (void)pcf8563_deinit(&gs_handle);
-
96 
-
97  return 1;
-
98  }
-
99 
-
100  /* disable test mode */
-
101  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
102  if (res != 0)
-
103  {
-
104  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
105  (void)pcf8563_deinit(&gs_handle);
-
106 
-
107  return 1;
-
108  }
-
109 
-
110  /* disable power on reset */
- -
112  if (res != 0)
-
113  {
-
114  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
115  (void)pcf8563_deinit(&gs_handle);
-
116 
-
117  return 1;
-
118  }
-
119 
-
120  /* disable timer */
-
121  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
122  if (res != 0)
-
123  {
-
124  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
125  (void)pcf8563_deinit(&gs_handle);
-
126 
-
127  return 1;
-
128  }
-
129 
-
130  /* disable minute alarm */
- -
132  if (res != 0)
-
133  {
-
134  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
135  (void)pcf8563_deinit(&gs_handle);
-
136 
-
137  return 1;
-
138  }
-
139 
-
140  /* disable hour alarm */
- -
142  if (res != 0)
-
143  {
-
144  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
145  (void)pcf8563_deinit(&gs_handle);
-
146 
-
147  return 1;
-
148  }
-
149 
-
150  /* disable day alarm */
- -
152  if (res != 0)
-
153  {
-
154  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
155  (void)pcf8563_deinit(&gs_handle);
-
156 
-
157  return 1;
-
158  }
-
159 
-
160  /* disable week alarm */
- -
162  if (res != 0)
-
163  {
-
164  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
165  (void)pcf8563_deinit(&gs_handle);
-
166 
-
167  return 1;
-
168  }
-
169 
-
170  /* disable timer interrupt */
- -
172  if (res != 0)
-
173  {
-
174  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
175  (void)pcf8563_deinit(&gs_handle);
-
176 
-
177  return 1;
-
178  }
-
179 
-
180  /* disable alarm interrupt */
- -
182  if (res != 0)
-
183  {
-
184  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
185  (void)pcf8563_deinit(&gs_handle);
-
186 
-
187  return 1;
-
188  }
-
189 
-
190  /* disable clock out */
- -
192  if (res != 0)
-
193  {
-
194  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
195  (void)pcf8563_deinit(&gs_handle);
-
196 
-
197  return 1;
-
198  }
-
199 
-
200  return 0;
-
201 }
-
202 
-
210 uint8_t pcf8563_timer_deinit(void)
-
211 {
-
212  if (pcf8563_deinit(&gs_handle) != 0)
-
213  {
-
214  return 1;
-
215  }
-
216 
-
217  return 0;
-
218 }
-
219 
- -
229 {
-
230  /* set time */
-
231  if (pcf8563_set_time(&gs_handle, t) != 0)
-
232  {
-
233  return 1;
-
234  }
-
235 
-
236  return 0;
-
237 }
-
238 
-
247 uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
-
248 {
-
249  pcf8563_time_t t;
-
250  struct tm *timeptr;
-
251 
-
252  /* convert times */
-
253  timestamp += (time_t)(gs_time_zone * 3600);
-
254  timeptr = localtime(&timestamp);
-
255  t.date = (uint8_t)timeptr->tm_mday;
-
256  t.hour = (uint8_t)timeptr->tm_hour;
-
257  t.minute = (uint8_t)timeptr->tm_min;
-
258  t.month = (uint8_t)timeptr->tm_mon + 1;
-
259  t.second = (uint8_t)timeptr->tm_sec;
-
260  t.week = (uint8_t)timeptr->tm_wday;
-
261  t.year = (uint16_t)(timeptr->tm_year + 1900);
-
262 
-
263  /* set time */
-
264  if (pcf8563_set_time(&gs_handle, &t) != 0)
-
265  {
-
266  return 1;
-
267  }
-
268 
-
269  return 0;
-
270 }
-
271 
- -
280 {
-
281  gs_time_zone = zone;
-
282 
-
283  return 0;
-
284 }
-
285 
- -
295 {
-
296  /* get time */
-
297  if (pcf8563_get_time(&gs_handle, t) != 0)
-
298  {
-
299  return 1;
-
300  }
-
301 
-
302  return 0;
-
303 }
-
304 
-
313 uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
-
314 {
-
315  pcf8563_time_t t;
-
316  struct tm timeptr;
-
317 
-
318  /* get time */
-
319  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
320  {
-
321  return 1;
-
322  }
-
323  timeptr.tm_year = t.year - 1900;
-
324  timeptr.tm_mon = t.month - 1;
-
325  timeptr.tm_wday = t.week;
-
326  timeptr.tm_mday = t.date;
-
327  timeptr.tm_hour = t.hour;
-
328  timeptr.tm_min = t.minute;
-
329  timeptr.tm_sec = t.second;
-
330 
-
331  /* make time */
-
332  *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
-
333 
-
334  return 0;
-
335 }
-
336 
- -
345 {
-
346  *zone = gs_time_zone;
-
347 
-
348  return 0;
-
349 }
-
350 
-
360 uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
-
361 {
-
362  pcf8563_time_t t;
-
363 
-
364  /* get time */
-
365  if (pcf8563_get_time(&gs_handle, &t) != 0)
-
366  {
-
367  return 1;
-
368  }
-
369 
-
370  (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
-
371 
-
372  return 0;
-
373 }
-
374 
- -
386 {
-
387  uint8_t res;
-
388 
-
389  /* set timer freq */
-
390  res = pcf8563_set_timer_freq(&gs_handle, freq);
-
391  if (res != 0)
-
392  {
-
393  return 1;
-
394  }
-
395 
-
396  /* set timer value */
-
397  res = pcf8563_set_timer_value(&gs_handle, value);
-
398  if (res != 0)
-
399  {
-
400  return 1;
-
401  }
-
402 
-
403  /* clear status */
- -
405  if (res != 0)
-
406  {
-
407  pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
-
408  (void)pcf8563_deinit(&gs_handle);
-
409 
-
410  return 1;
-
411  }
-
412 
-
413  /* enable timer interrupt */
- -
415  if (res != 0)
-
416  {
-
417  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
418  (void)pcf8563_deinit(&gs_handle);
-
419 
-
420  return 1;
-
421  }
-
422 
-
423  /* enable timer */
-
424  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_TRUE);
-
425  if (res != 0)
-
426  {
-
427  return 1;
-
428  }
-
429 
-
430  return 0;
-
431 }
-
432 
- -
441 {
-
442  uint8_t res;
-
443 
-
444  /* disable timer interrupt */
- -
446  if (res != 0)
-
447  {
-
448  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
449  (void)pcf8563_deinit(&gs_handle);
-
450 
-
451  return 1;
-
452  }
-
453 
-
454  /* disable timer */
-
455  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
456  if (res != 0)
-
457  {
-
458  return 1;
-
459  }
-
460 
-
461  return 0;
-
462 }
+Go to the documentation of this file.
1
+
36
+ +
38
+
39static pcf8563_handle_t gs_handle;
+
40static int8_t gs_time_zone = 0;
+
41
+
+ +
50{
+
51 if (pcf8563_irq_handler(&gs_handle) != 0)
+
52 {
+
53 return 1;
+
54 }
+
55
+
56 return 0;
+
57}
+
+
58
+
+
67uint8_t pcf8563_timer_init(void (*callback)(uint8_t type))
+
68{
+
69 uint8_t res;
+
70
+
71 /* link functions */
+ + + + + + + +
79 DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, callback);
+
80
+
81 /* init pcf8563 */
+
82 res = pcf8563_init(&gs_handle);
+
83 if (res != 0)
+
84 {
+
85 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
86
+
87 return 1;
+
88 }
+
89
+
90 /* disable rtc stop */
+ +
92 if (res != 0)
+
93 {
+
94 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
95 (void)pcf8563_deinit(&gs_handle);
+
96
+
97 return 1;
+
98 }
+
99
+
100 /* disable test mode */
+
101 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
102 if (res != 0)
+
103 {
+
104 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
105 (void)pcf8563_deinit(&gs_handle);
+
106
+
107 return 1;
+
108 }
+
109
+
110 /* disable power on reset */
+ +
112 if (res != 0)
+
113 {
+
114 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
115 (void)pcf8563_deinit(&gs_handle);
+
116
+
117 return 1;
+
118 }
+
119
+
120 /* disable timer */
+ +
122 if (res != 0)
+
123 {
+
124 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
125 (void)pcf8563_deinit(&gs_handle);
+
126
+
127 return 1;
+
128 }
+
129
+
130 /* disable minute alarm */
+ +
132 if (res != 0)
+
133 {
+
134 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
135 (void)pcf8563_deinit(&gs_handle);
+
136
+
137 return 1;
+
138 }
+
139
+
140 /* disable hour alarm */
+ +
142 if (res != 0)
+
143 {
+
144 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
145 (void)pcf8563_deinit(&gs_handle);
+
146
+
147 return 1;
+
148 }
+
149
+
150 /* disable day alarm */
+ +
152 if (res != 0)
+
153 {
+
154 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
155 (void)pcf8563_deinit(&gs_handle);
+
156
+
157 return 1;
+
158 }
+
159
+
160 /* disable week alarm */
+ +
162 if (res != 0)
+
163 {
+
164 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
165 (void)pcf8563_deinit(&gs_handle);
+
166
+
167 return 1;
+
168 }
+
169
+
170 /* disable timer interrupt */
+ +
172 if (res != 0)
+
173 {
+
174 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
175 (void)pcf8563_deinit(&gs_handle);
+
176
+
177 return 1;
+
178 }
+
179
+
180 /* disable alarm interrupt */
+ +
182 if (res != 0)
+
183 {
+
184 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
185 (void)pcf8563_deinit(&gs_handle);
+
186
+
187 return 1;
+
188 }
+
189
+
190 /* disable clock out */
+ +
192 if (res != 0)
+
193 {
+
194 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
195 (void)pcf8563_deinit(&gs_handle);
+
196
+
197 return 1;
+
198 }
+
199
+
200 return 0;
+
201}
+
+
202
+
+ +
211{
+
212 if (pcf8563_deinit(&gs_handle) != 0)
+
213 {
+
214 return 1;
+
215 }
+
216
+
217 return 0;
+
218}
+
+
219
+
+ +
229{
+
230 /* set time */
+
231 if (pcf8563_set_time(&gs_handle, t) != 0)
+
232 {
+
233 return 1;
+
234 }
+
235
+
236 return 0;
+
237}
+
+
238
+
+
247uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
+
248{
+ +
250 struct tm *timeptr;
+
251
+
252 /* convert times */
+
253 timestamp += (time_t)(gs_time_zone * 3600);
+
254 timeptr = localtime(&timestamp);
+
255 t.date = (uint8_t)timeptr->tm_mday;
+
256 t.hour = (uint8_t)timeptr->tm_hour;
+
257 t.minute = (uint8_t)timeptr->tm_min;
+
258 t.month = (uint8_t)timeptr->tm_mon + 1;
+
259 t.second = (uint8_t)timeptr->tm_sec;
+
260 t.week = (uint8_t)timeptr->tm_wday;
+
261 t.year = (uint16_t)(timeptr->tm_year + 1900);
+
262
+
263 /* set time */
+
264 if (pcf8563_set_time(&gs_handle, &t) != 0)
+
265 {
+
266 return 1;
+
267 }
+
268
+
269 return 0;
+
270}
+
+
271
+
+ +
280{
+
281 gs_time_zone = zone;
+
282
+
283 return 0;
+
284}
+
+
285
+
+ +
295{
+
296 /* get time */
+
297 if (pcf8563_get_time(&gs_handle, t) != 0)
+
298 {
+
299 return 1;
+
300 }
+
301
+
302 return 0;
+
303}
+
+
304
+
+
313uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
+
314{
+ +
316 struct tm timeptr;
+
317
+
318 /* get time */
+
319 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
320 {
+
321 return 1;
+
322 }
+
323 timeptr.tm_year = t.year - 1900;
+
324 timeptr.tm_mon = t.month - 1;
+
325 timeptr.tm_wday = t.week;
+
326 timeptr.tm_mday = t.date;
+
327 timeptr.tm_hour = t.hour;
+
328 timeptr.tm_min = t.minute;
+
329 timeptr.tm_sec = t.second;
+
330
+
331 /* make time */
+
332 *timestamp = mktime(&timeptr) - gs_time_zone * 3600;
+
333
+
334 return 0;
+
335}
+
+
336
+
+ +
345{
+
346 *zone = gs_time_zone;
+
347
+
348 return 0;
+
349}
+
+
350
+
+
360uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
+
361{
+ +
363
+
364 /* get time */
+
365 if (pcf8563_get_time(&gs_handle, &t) != 0)
+
366 {
+
367 return 1;
+
368 }
+
369
+
370 (void)snprintf(buf, len, "%04d-%02d-%02d %02d:%02d:%02d %d.\n", t.year, t.month, t.date, t.hour, t.minute, t.second, t.week);
+
371
+
372 return 0;
+
373}
+
+
374
+
+ +
386{
+
387 uint8_t res;
+
388
+
389 /* set timer freq */
+
390 res = pcf8563_set_timer_freq(&gs_handle, freq);
+
391 if (res != 0)
+
392 {
+
393 return 1;
+
394 }
+
395
+
396 /* set timer value */
+
397 res = pcf8563_set_timer_value(&gs_handle, value);
+
398 if (res != 0)
+
399 {
+
400 return 1;
+
401 }
+
402
+
403 /* clear status */
+ +
405 if (res != 0)
+
406 {
+
407 pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
+
408 (void)pcf8563_deinit(&gs_handle);
+
409
+
410 return 1;
+
411 }
+
412
+
413 /* enable timer interrupt */
+ +
415 if (res != 0)
+
416 {
+
417 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
418 (void)pcf8563_deinit(&gs_handle);
+
419
+
420 return 1;
+
421 }
+
422
+
423 /* enable timer */
+ +
425 if (res != 0)
+
426 {
+
427 return 1;
+
428 }
+
429
+
430 return 0;
+
431}
+
+
432
+
+ +
441{
+
442 uint8_t res;
+
443
+
444 /* disable timer interrupt */
+ +
446 if (res != 0)
+
447 {
+
448 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
449 (void)pcf8563_deinit(&gs_handle);
+
450
+
451 return 1;
+
452 }
+
453
+
454 /* disable timer */
+ +
456 if (res != 0)
+
457 {
+
458 return 1;
+
459 }
+
460
+
461 return 0;
+
462}
+
driver pcf8563 timer header file
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
-
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
timer example get the ascii time
-
uint8_t pcf8563_timer_get_time(pcf8563_time_t *t)
timer example get the time
-
uint8_t pcf8563_timer_set_time(pcf8563_time_t *t)
timer example set the time
-
uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
timer example get the time in a unix timestamp
-
uint8_t pcf8563_timer_enable(pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
timer example enable the timer
-
uint8_t pcf8563_timer_disable(void)
timer example disable the timer
-
uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone)
timer example set the local time zone
-
uint8_t pcf8563_timer_deinit(void)
timer example deinit
-
uint8_t pcf8563_timer_irq_handler(void)
timer example irq
-
uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
timer example set the time by a unix timestamp
-
uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone)
timer example get the local time zone
-
uint8_t pcf8563_timer_init(void(*callback)(uint8_t type))
timer example init
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
pcf8563 handle structure definition
-
pcf8563 time structure definition
- - - - - - - +
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
uint8_t pcf8563_set_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
set the current time
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
+
uint8_t pcf8563_get_time(pcf8563_handle_t *handle, pcf8563_time_t *t)
get the current time
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
timer example get the ascii time
+
uint8_t pcf8563_timer_get_time(pcf8563_time_t *t)
timer example get the time
+
uint8_t pcf8563_timer_set_time(pcf8563_time_t *t)
timer example set the time
+
uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
timer example get the time in a unix timestamp
+
uint8_t pcf8563_timer_enable(pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
timer example enable the timer
+
uint8_t pcf8563_timer_disable(void)
timer example disable the timer
+
uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone)
timer example set the local time zone
+
uint8_t pcf8563_timer_deinit(void)
timer example deinit
+
uint8_t pcf8563_timer_irq_handler(void)
timer example irq
+
uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
timer example set the time by a unix timestamp
+
uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone)
timer example get the local time zone
+
uint8_t pcf8563_timer_init(void(*callback)(uint8_t type))
timer example init
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + + + + + + + +
+
diff --git a/doc/html/driver__pcf8563__timer_8h.html b/doc/html/driver__pcf8563__timer_8h.html index f4d1e20..f90f330 100644 --- a/doc/html/driver__pcf8563__timer_8h.html +++ b/doc/html/driver__pcf8563__timer_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_timer.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_timer.h File Reference
+
driver_pcf8563_timer.h File Reference
@@ -95,49 +99,47 @@ More...

#include "driver_pcf8563_interface.h"
#include <time.h>
+
+Include dependency graph for driver_pcf8563_timer.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_timer_irq_handler (void)
 timer example irq More...
 
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init More...
 
uint8_t pcf8563_timer_deinit (void)
 timer example deinit More...
 
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer More...
 
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer More...
 
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time More...
 
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp More...
 
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone More...
 
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time More...
 
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp More...
 
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone More...
 
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time More...
 
uint8_t pcf8563_timer_irq_handler (void)
 timer example irq
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init
uint8_t pcf8563_timer_deinit (void)
 timer example deinit
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time
-

Detailed Description

+

Detailed Description

driver pcf8563 timer header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -158,11 +160,19 @@

history

Definition in file driver_pcf8563_timer.h.

+ +
diff --git a/doc/html/driver__pcf8563__timer_8h__dep__incl.md5 b/doc/html/driver__pcf8563__timer_8h__dep__incl.md5 new file mode 100644 index 0000000..a5f1618 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8h__dep__incl.md5 @@ -0,0 +1 @@ +3177910c3ead0f00204f4ce960338f24 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer_8h__dep__incl.svg b/doc/html/driver__pcf8563__timer_8h__dep__incl.svg new file mode 100644 index 0000000..cd204d7 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +example/driver_pcf8563_timer.h + + +Node1 + + +example/driver_pcf8563 +_timer.h + + + + + +Node2 + + +example/driver_pcf8563 +_timer.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer_8h__incl.md5 b/doc/html/driver__pcf8563__timer_8h__incl.md5 new file mode 100644 index 0000000..b634d14 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8h__incl.md5 @@ -0,0 +1 @@ +05597d77f0f0af8f8bfa749d645ff285 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer_8h__incl.svg b/doc/html/driver__pcf8563__timer_8h__incl.svg new file mode 100644 index 0000000..2df0ca8 --- /dev/null +++ b/doc/html/driver__pcf8563__timer_8h__incl.svg @@ -0,0 +1,130 @@ + + + + + + +example/driver_pcf8563_timer.h + + +Node1 + + +example/driver_pcf8563 +_timer.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node7 + + +time.h + + + + + +Node1->Node7 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer_8h_source.html b/doc/html/driver__pcf8563__timer_8h_source.html index 282c326..16e3461 100644 --- a/doc/html/driver__pcf8563__timer_8h_source.html +++ b/doc/html/driver__pcf8563__timer_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: example/driver_pcf8563_timer.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_timer.h
+
driver_pcf8563_timer.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_TIMER_H
-
38 #define DRIVER_PCF8563_TIMER_H
-
39 
- -
41 #include <time.h>
-
42 
-
43 #ifdef __cplusplus
-
44 extern "C"{
-
45 #endif
-
46 
-
61 uint8_t pcf8563_timer_irq_handler(void);
-
62 
-
71 uint8_t pcf8563_timer_init(void (*callback)(uint8_t type));
-
72 
-
80 uint8_t pcf8563_timer_deinit(void);
-
81 
-
92 uint8_t pcf8563_timer_enable(pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode);
-
93 
-
101 uint8_t pcf8563_timer_disable(void);
-
102 
- -
112 
-
121 uint8_t pcf8563_timer_set_timestamp(time_t timestamp);
-
122 
-
130 uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone);
-
131 
- -
141 
-
150 uint8_t pcf8563_timer_get_timestamp(time_t *timestamp);
-
151 
-
159 uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone);
-
160 
-
170 uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len);
-
171 
-
176 #ifdef __cplusplus
-
177 }
-
178 #endif
-
179 
-
180 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_TIMER_H
+
38#define DRIVER_PCF8563_TIMER_H
+
39
+ +
41#include <time.h>
+
42
+
43#ifdef __cplusplus
+
44extern "C"{
+
45#endif
+
46
+
53
+
61uint8_t pcf8563_timer_irq_handler(void);
+
62
+
71uint8_t pcf8563_timer_init(void (*callback)(uint8_t type));
+
72
+
80uint8_t pcf8563_timer_deinit(void);
+
81
+ +
93
+
101uint8_t pcf8563_timer_disable(void);
+
102
+ +
112
+
121uint8_t pcf8563_timer_set_timestamp(time_t timestamp);
+
122
+
130uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone);
+
131
+ +
141
+
150uint8_t pcf8563_timer_get_timestamp(time_t *timestamp);
+
151
+
159uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone);
+
160
+
170uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len);
+
171
+
175
+
176#ifdef __cplusplus
+
177}
+
178#endif
+
179
+
180#endif
driver pcf8563 interface header file
-
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
-
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
-
uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
timer example get the ascii time
-
uint8_t pcf8563_timer_get_time(pcf8563_time_t *t)
timer example get the time
-
uint8_t pcf8563_timer_set_time(pcf8563_time_t *t)
timer example set the time
-
uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
timer example get the time in a unix timestamp
-
uint8_t pcf8563_timer_enable(pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
timer example enable the timer
-
uint8_t pcf8563_timer_disable(void)
timer example disable the timer
-
uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone)
timer example set the local time zone
-
uint8_t pcf8563_timer_deinit(void)
timer example deinit
-
uint8_t pcf8563_timer_irq_handler(void)
timer example irq
-
uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
timer example set the time by a unix timestamp
-
uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone)
timer example get the local time zone
-
uint8_t pcf8563_timer_init(void(*callback)(uint8_t type))
timer example init
-
pcf8563 time structure definition
+
pcf8563_timer_freq_t
pcf8563 timer freq enumeration definition
+
pcf8563_interrupt_mode_t
pcf8563 interrupt mode enumeration definition
+
struct pcf8563_time_s pcf8563_time_t
pcf8563 time structure definition
+
uint8_t pcf8563_timer_get_ascii_time(char *buf, uint8_t len)
timer example get the ascii time
+
uint8_t pcf8563_timer_get_time(pcf8563_time_t *t)
timer example get the time
+
uint8_t pcf8563_timer_set_time(pcf8563_time_t *t)
timer example set the time
+
uint8_t pcf8563_timer_get_timestamp(time_t *timestamp)
timer example get the time in a unix timestamp
+
uint8_t pcf8563_timer_enable(pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
timer example enable the timer
+
uint8_t pcf8563_timer_disable(void)
timer example disable the timer
+
uint8_t pcf8563_timer_set_timestamp_time_zone(int8_t zone)
timer example set the local time zone
+
uint8_t pcf8563_timer_deinit(void)
timer example deinit
+
uint8_t pcf8563_timer_irq_handler(void)
timer example irq
+
uint8_t pcf8563_timer_set_timestamp(time_t timestamp)
timer example set the time by a unix timestamp
+
uint8_t pcf8563_timer_get_timestamp_time_zone(int8_t *zone)
timer example get the local time zone
+
uint8_t pcf8563_timer_init(void(*callback)(uint8_t type))
timer example init
+
diff --git a/doc/html/driver__pcf8563__timer__test_8c.html b/doc/html/driver__pcf8563__timer__test_8c.html index 8e2babb..807339e 100644 --- a/doc/html/driver__pcf8563__timer__test_8c.html +++ b/doc/html/driver__pcf8563__timer__test_8c.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_timer_test.c File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_timer_test.c File Reference
+
driver_pcf8563_timer_test.c File Reference
@@ -95,19 +99,22 @@ More...

#include "driver_pcf8563_timer_test.h"
#include <stdlib.h>
+
+Include dependency graph for driver_pcf8563_timer_test.c:
+
+
+

Go to the source code of this file.

- - - - - - - + + + +

+

Functions

uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq More...
 
uint8_t pcf8563_timer_test (void)
 timer test More...
 
uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq
uint8_t pcf8563_timer_test (void)
 timer test
-

Detailed Description

+

Detailed Description

driver pcf8563 timer test source file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -128,11 +135,19 @@

history

Definition in file driver_pcf8563_timer_test.c.

+ +
diff --git a/doc/html/driver__pcf8563__timer__test_8c__incl.md5 b/doc/html/driver__pcf8563__timer__test_8c__incl.md5 new file mode 100644 index 0000000..1e683c9 --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8c__incl.md5 @@ -0,0 +1 @@ +4bf49cf6cb40f68d6d10221c2fdb1888 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer__test_8c__incl.svg b/doc/html/driver__pcf8563__timer__test_8c__incl.svg new file mode 100644 index 0000000..8fd64f1 --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8c__incl.svg @@ -0,0 +1,149 @@ + + + + + + +test/driver_pcf8563_timer_test.c + + +Node1 + + +test/driver_pcf8563 +_timer_test.c + + + + + +Node2 + + +driver_pcf8563_timer +_test.h + + + + + +Node1->Node2 + + + + + + + + +Node8 + + +stdlib.h + + + + + +Node1->Node8 + + + + + + + + +Node3 + + +driver_pcf8563_interface.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +driver_pcf8563.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdio.h + + + + + +Node4->Node5 + + + + + + + + +Node6 + + +stdint.h + + + + + +Node4->Node6 + + + + + + + + +Node7 + + +string.h + + + + + +Node4->Node7 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer__test_8c_source.html b/doc/html/driver__pcf8563__timer__test_8c_source.html index 94d67cb..cf7adaf 100644 --- a/doc/html/driver__pcf8563__timer__test_8c_source.html +++ b/doc/html/driver__pcf8563__timer__test_8c_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_timer_test.c Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_timer_test.c
+
driver_pcf8563_timer_test.c
-Go to the documentation of this file.
1 
- -
38 #include <stdlib.h>
-
39 
-
40 static pcf8563_handle_t gs_handle;
-
41 static volatile uint8_t gs_flag;
-
48 static void a_receive_callback(uint8_t type)
-
49 {
-
50  switch (type)
-
51  {
- -
53  {
-
54  gs_flag = 1;
-
55  pcf8563_interface_debug_print("pcf8563: irq timer.\n");
-
56 
-
57  break;
-
58  }
- -
60  {
-
61  pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
-
62 
-
63  break;
-
64  }
-
65  default :
-
66  {
-
67  pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
-
68 
-
69  break;
-
70  }
-
71  }
-
72 }
-
73 
- -
82 {
-
83  if (pcf8563_irq_handler(&gs_handle) != 0)
-
84  {
-
85  return 1;
-
86  }
-
87 
-
88  return 0;
-
89 }
-
90 
-
98 uint8_t pcf8563_timer_test(void)
-
99 {
-
100  uint8_t res;
-
101  uint32_t i;
-
102  pcf8563_info_t info;
-
103 
-
104  /* link functions */
- - - - - - - -
112  DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, a_receive_callback);
-
113 
-
114  /* get pcf8563 info */
-
115  res = pcf8563_info(&info);
-
116  if (res != 0)
-
117  {
-
118  pcf8563_interface_debug_print("pcf8563: get info failed.\n");
-
119 
-
120  return 1;
-
121  }
-
122  else
-
123  {
-
124  /* print pcf8563 info */
-
125  pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
-
126  pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
-
127  pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
-
128  pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
-
129  pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
-
130  pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
-
131  pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
-
132  pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
-
133  pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
-
134  }
-
135 
-
136  /* start timer test */
-
137  pcf8563_interface_debug_print("pcf8563: start timer test.\n");
-
138 
-
139  /* init pcf8563 */
-
140  res = pcf8563_init(&gs_handle);
-
141  if (res != 0)
-
142  {
-
143  pcf8563_interface_debug_print("pcf8563: init failed.\n");
-
144 
-
145  return 1;
-
146  }
-
147 
-
148  /* disable rtc stop */
-
149  res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
-
150  if (res != 0)
-
151  {
-
152  pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
-
153  (void)pcf8563_deinit(&gs_handle);
-
154 
-
155  return 1;
-
156  }
-
157 
-
158  /* disable test mode */
-
159  res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
-
160  if (res != 0)
-
161  {
-
162  pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
-
163  (void)pcf8563_deinit(&gs_handle);
-
164 
-
165  return 1;
-
166  }
-
167 
-
168  /* disable power on reset */
- -
170  if (res != 0)
-
171  {
-
172  pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
-
173  (void)pcf8563_deinit(&gs_handle);
-
174 
-
175  return 1;
-
176  }
-
177 
-
178  /* disable minute alarm */
- -
180  if (res != 0)
-
181  {
-
182  pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
-
183  (void)pcf8563_deinit(&gs_handle);
-
184 
-
185  return 1;
-
186  }
-
187 
-
188  /* disable hour alarm */
- -
190  if (res != 0)
-
191  {
-
192  pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
-
193  (void)pcf8563_deinit(&gs_handle);
-
194 
-
195  return 1;
-
196  }
-
197 
-
198  /* disable day alarm */
- -
200  if (res != 0)
-
201  {
-
202  pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
-
203  (void)pcf8563_deinit(&gs_handle);
-
204 
-
205  return 1;
-
206  }
-
207 
-
208  /* disable week alarm */
- -
210  if (res != 0)
-
211  {
-
212  pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
-
213  (void)pcf8563_deinit(&gs_handle);
-
214 
-
215  return 1;
-
216  }
-
217 
-
218  /* disable alarm interrupt */
- -
220  if (res != 0)
-
221  {
-
222  pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
-
223  (void)pcf8563_deinit(&gs_handle);
-
224 
-
225  return 1;
-
226  }
-
227 
-
228  /* disable clock out */
- -
230  if (res != 0)
-
231  {
-
232  pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
-
233  (void)pcf8563_deinit(&gs_handle);
-
234 
-
235  return 1;
-
236  }
-
237 
-
238  /* set interrupt mode pulse */
- -
240  if (res != 0)
-
241  {
-
242  pcf8563_interface_debug_print("pcf8563: set interrupt pin mode failed.\n");
-
243  (void)pcf8563_deinit(&gs_handle);
-
244 
-
245  return 1;
-
246  }
-
247 
-
248  /* timer freq 1hz */
- -
250  if (res != 0)
-
251  {
-
252  pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
-
253  (void)pcf8563_deinit(&gs_handle);
-
254 
-
255  return 1;
-
256  }
-
257 
-
258  /* set 10s */
-
259  res = pcf8563_set_timer_value(&gs_handle, 10);
-
260  if (res != 0)
-
261  {
-
262  pcf8563_interface_debug_print("pcf8563: set timer value failed.\n");
-
263  (void)pcf8563_deinit(&gs_handle);
-
264 
-
265  return 1;
-
266  }
-
267 
-
268  /* clear status */
- -
270  if (res != 0)
-
271  {
-
272  pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
-
273  (void)pcf8563_deinit(&gs_handle);
-
274 
-
275  return 1;
-
276  }
-
277 
-
278  /* enable timer interrupt */
- -
280  if (res != 0)
-
281  {
-
282  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
283  (void)pcf8563_deinit(&gs_handle);
-
284 
-
285  return 1;
-
286  }
-
287 
-
288  /* enable timer */
-
289  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_TRUE);
-
290  if (res != 0)
-
291  {
-
292  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
293  (void)pcf8563_deinit(&gs_handle);
-
294 
-
295  return 1;
-
296  }
-
297 
-
298  /* wait for trigger */
-
299  gs_flag = 0;
-
300  for (i = 0; i < 200; i++)
-
301  {
-
302  if (gs_flag != 0)
-
303  {
-
304  break;
-
305  }
- -
307  pcf8563_interface_debug_print("pcf8563: %ds.\n", i + 1);
-
308  }
-
309 
-
310  /* check flag */
-
311  if (gs_flag == 0)
-
312  {
-
313  pcf8563_interface_debug_print("pcf8563: not found timer event.\n");
-
314  }
-
315 
-
316  /* disable timer */
-
317  res = pcf8563_set_timer_enable(&gs_handle, PCF8563_BOOL_FALSE);
-
318  if (res != 0)
-
319  {
-
320  pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
-
321  (void)pcf8563_deinit(&gs_handle);
-
322 
-
323  return 1;
-
324  }
-
325 
-
326  /* disable timer interrupt */
- -
328  if (res != 0)
-
329  {
-
330  pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
-
331  (void)pcf8563_deinit(&gs_handle);
-
332 
-
333  return 1;
-
334  }
-
335 
-
336  /* finish timer test */
-
337  pcf8563_interface_debug_print("pcf8563: finish timer test.\n");
-
338  (void)pcf8563_deinit(&gs_handle);
-
339 
-
340  return 0;
-
341 }
+Go to the documentation of this file.
1
+
36
+ +
38#include <stdlib.h>
+
39
+
40static pcf8563_handle_t gs_handle;
+
41static volatile uint8_t gs_flag;
+
42
+
48static void a_receive_callback(uint8_t type)
+
49{
+
50 switch (type)
+
51 {
+ +
53 {
+
54 gs_flag = 1;
+
55 pcf8563_interface_debug_print("pcf8563: irq timer.\n");
+
56
+
57 break;
+
58 }
+ +
60 {
+
61 pcf8563_interface_debug_print("pcf8563: irq alarm.\n");
+
62
+
63 break;
+
64 }
+
65 default :
+
66 {
+
67 pcf8563_interface_debug_print("pcf8563: irq unknown.\n");
+
68
+
69 break;
+
70 }
+
71 }
+
72}
+
73
+
+ +
82{
+
83 if (pcf8563_irq_handler(&gs_handle) != 0)
+
84 {
+
85 return 1;
+
86 }
+
87
+
88 return 0;
+
89}
+
+
90
+
+
98uint8_t pcf8563_timer_test(void)
+
99{
+
100 uint8_t res;
+
101 uint32_t i;
+
102 pcf8563_info_t info;
+
103
+
104 /* link functions */
+ + + + + + + +
112 DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(&gs_handle, a_receive_callback);
+
113
+
114 /* get pcf8563 info */
+
115 res = pcf8563_info(&info);
+
116 if (res != 0)
+
117 {
+
118 pcf8563_interface_debug_print("pcf8563: get info failed.\n");
+
119
+
120 return 1;
+
121 }
+
122 else
+
123 {
+
124 /* print pcf8563 info */
+
125 pcf8563_interface_debug_print("pcf8563: chip is %s.\n", info.chip_name);
+
126 pcf8563_interface_debug_print("pcf8563: manufacturer is %s.\n", info.manufacturer_name);
+
127 pcf8563_interface_debug_print("pcf8563: interface is %s.\n", info.interface);
+
128 pcf8563_interface_debug_print("pcf8563: driver version is %d.%d.\n", info.driver_version / 1000, (info.driver_version % 1000) / 100);
+
129 pcf8563_interface_debug_print("pcf8563: min supply voltage is %0.1fV.\n", info.supply_voltage_min_v);
+
130 pcf8563_interface_debug_print("pcf8563: max supply voltage is %0.1fV.\n", info.supply_voltage_max_v);
+
131 pcf8563_interface_debug_print("pcf8563: max current is %0.2fmA.\n", info.max_current_ma);
+
132 pcf8563_interface_debug_print("pcf8563: max temperature is %0.1fC.\n", info.temperature_max);
+
133 pcf8563_interface_debug_print("pcf8563: min temperature is %0.1fC.\n", info.temperature_min);
+
134 }
+
135
+
136 /* start timer test */
+
137 pcf8563_interface_debug_print("pcf8563: start timer test.\n");
+
138
+
139 /* init pcf8563 */
+
140 res = pcf8563_init(&gs_handle);
+
141 if (res != 0)
+
142 {
+
143 pcf8563_interface_debug_print("pcf8563: init failed.\n");
+
144
+
145 return 1;
+
146 }
+
147
+
148 /* disable rtc stop */
+
149 res = pcf8563_set_rtc_stop(&gs_handle, PCF8563_BOOL_FALSE);
+
150 if (res != 0)
+
151 {
+
152 pcf8563_interface_debug_print("pcf8563: set rtc stop failed.\n");
+
153 (void)pcf8563_deinit(&gs_handle);
+
154
+
155 return 1;
+
156 }
+
157
+
158 /* disable test mode */
+
159 res = pcf8563_set_test_mode(&gs_handle, PCF8563_BOOL_FALSE);
+
160 if (res != 0)
+
161 {
+
162 pcf8563_interface_debug_print("pcf8563: set test mode failed.\n");
+
163 (void)pcf8563_deinit(&gs_handle);
+
164
+
165 return 1;
+
166 }
+
167
+
168 /* disable power on reset */
+ +
170 if (res != 0)
+
171 {
+
172 pcf8563_interface_debug_print("pcf8563: set power on reset failed.\n");
+
173 (void)pcf8563_deinit(&gs_handle);
+
174
+
175 return 1;
+
176 }
+
177
+
178 /* disable minute alarm */
+ +
180 if (res != 0)
+
181 {
+
182 pcf8563_interface_debug_print("pcf8563: set minute alarm enable failed.\n");
+
183 (void)pcf8563_deinit(&gs_handle);
+
184
+
185 return 1;
+
186 }
+
187
+
188 /* disable hour alarm */
+ +
190 if (res != 0)
+
191 {
+
192 pcf8563_interface_debug_print("pcf8563: set hour alarm enable failed.\n");
+
193 (void)pcf8563_deinit(&gs_handle);
+
194
+
195 return 1;
+
196 }
+
197
+
198 /* disable day alarm */
+ +
200 if (res != 0)
+
201 {
+
202 pcf8563_interface_debug_print("pcf8563: set day alarm enable failed.\n");
+
203 (void)pcf8563_deinit(&gs_handle);
+
204
+
205 return 1;
+
206 }
+
207
+
208 /* disable week alarm */
+ +
210 if (res != 0)
+
211 {
+
212 pcf8563_interface_debug_print("pcf8563: set week alarm enable failed.\n");
+
213 (void)pcf8563_deinit(&gs_handle);
+
214
+
215 return 1;
+
216 }
+
217
+
218 /* disable alarm interrupt */
+ +
220 if (res != 0)
+
221 {
+
222 pcf8563_interface_debug_print("pcf8563: set alarm interrupt failed.\n");
+
223 (void)pcf8563_deinit(&gs_handle);
+
224
+
225 return 1;
+
226 }
+
227
+
228 /* disable clock out */
+ +
230 if (res != 0)
+
231 {
+
232 pcf8563_interface_debug_print("pcf8563: set clock out enable failed.\n");
+
233 (void)pcf8563_deinit(&gs_handle);
+
234
+
235 return 1;
+
236 }
+
237
+
238 /* set interrupt mode pulse */
+ +
240 if (res != 0)
+
241 {
+
242 pcf8563_interface_debug_print("pcf8563: set interrupt pin mode failed.\n");
+
243 (void)pcf8563_deinit(&gs_handle);
+
244
+
245 return 1;
+
246 }
+
247
+
248 /* timer freq 1hz */
+ +
250 if (res != 0)
+
251 {
+
252 pcf8563_interface_debug_print("pcf8563: set timer freq failed.\n");
+
253 (void)pcf8563_deinit(&gs_handle);
+
254
+
255 return 1;
+
256 }
+
257
+
258 /* set 10s */
+
259 res = pcf8563_set_timer_value(&gs_handle, 10);
+
260 if (res != 0)
+
261 {
+
262 pcf8563_interface_debug_print("pcf8563: set timer value failed.\n");
+
263 (void)pcf8563_deinit(&gs_handle);
+
264
+
265 return 1;
+
266 }
+
267
+
268 /* clear status */
+ +
270 if (res != 0)
+
271 {
+
272 pcf8563_interface_debug_print("pcf8563: clear status failed.\n");
+
273 (void)pcf8563_deinit(&gs_handle);
+
274
+
275 return 1;
+
276 }
+
277
+
278 /* enable timer interrupt */
+ +
280 if (res != 0)
+
281 {
+
282 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
283 (void)pcf8563_deinit(&gs_handle);
+
284
+
285 return 1;
+
286 }
+
287
+
288 /* enable timer */
+ +
290 if (res != 0)
+
291 {
+
292 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
293 (void)pcf8563_deinit(&gs_handle);
+
294
+
295 return 1;
+
296 }
+
297
+
298 /* wait for trigger */
+
299 gs_flag = 0;
+
300 for (i = 0; i < 200; i++)
+
301 {
+
302 if (gs_flag != 0)
+
303 {
+
304 break;
+
305 }
+ +
307 pcf8563_interface_debug_print("pcf8563: %ds.\n", i + 1);
+
308 }
+
309
+
310 /* check flag */
+
311 if (gs_flag == 0)
+
312 {
+
313 pcf8563_interface_debug_print("pcf8563: not found timer event.\n");
+
314 }
+
315
+
316 /* disable timer */
+ +
318 if (res != 0)
+
319 {
+
320 pcf8563_interface_debug_print("pcf8563: set timer enable failed.\n");
+
321 (void)pcf8563_deinit(&gs_handle);
+
322
+
323 return 1;
+
324 }
+
325
+
326 /* disable timer interrupt */
+ +
328 if (res != 0)
+
329 {
+
330 pcf8563_interface_debug_print("pcf8563: set timer interrupt failed.\n");
+
331 (void)pcf8563_deinit(&gs_handle);
+
332
+
333 return 1;
+
334 }
+
335
+
336 /* finish timer test */
+
337 pcf8563_interface_debug_print("pcf8563: finish timer test.\n");
+
338 (void)pcf8563_deinit(&gs_handle);
+
339
+
340 return 0;
+
341}
+
driver pcf8563 timer test header file
-
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
-
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
-
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
-
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
-
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
-
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
-
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
-
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
-
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
-
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
-
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
-
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
-
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
-
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
-
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
-
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
-
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
-
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
-
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
-
@ PCF8563_TIMER_FREQ_1HZ
-
@ PCF8563_BOOL_TRUE
-
@ PCF8563_BOOL_FALSE
-
@ PCF8563_INTERRUPT_MODE_PULSE
-
@ PCF8563_INTERRUPT_EVENT_TIMER
-
@ PCF8563_INTERRUPT_EVENT_ALARM
-
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
-
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
-
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
-
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
-
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
-
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
- - - - - - - - -
uint8_t pcf8563_timer_test(void)
timer test
-
uint8_t pcf8563_timer_test_irq_handler(void)
timer test irq
-
pcf8563 handle structure definition
-
pcf8563 information structure definition
- -
float supply_voltage_max_v
-
uint32_t driver_version
- - -
char manufacturer_name[32]
-
float supply_voltage_min_v
- -
char chip_name[32]
+
uint8_t pcf8563_info(pcf8563_info_t *info)
get chip's information
+
uint8_t pcf8563_set_week_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable week alarm
+
uint8_t pcf8563_set_hour_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable hour alarm
+
uint8_t pcf8563_set_timer_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer enable
+
uint8_t pcf8563_deinit(pcf8563_handle_t *handle)
close the chip
+
uint8_t pcf8563_set_timer_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable timer interrupt
+
uint8_t pcf8563_set_test_mode(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable test mode
+
uint8_t pcf8563_set_timer_freq(pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
set timer freq
+
uint8_t pcf8563_set_clock_out_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable clock out enable
+
uint8_t pcf8563_init(pcf8563_handle_t *handle)
initialize the chip
+
struct pcf8563_info_s pcf8563_info_t
pcf8563 information structure definition
+
uint8_t pcf8563_irq_handler(pcf8563_handle_t *handle)
irq handler
+
uint8_t pcf8563_set_alarm_interrupt(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable alarm interrupt
+
uint8_t pcf8563_set_day_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable day alarm
+
uint8_t pcf8563_set_minute_alarm_enable(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable minute alarm
+
uint8_t pcf8563_set_rtc_stop(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable rtc stop
+
struct pcf8563_handle_s pcf8563_handle_t
pcf8563 handle structure definition
+
uint8_t pcf8563_set_interrupt_mode(pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
set the interrupt mode
+
uint8_t pcf8563_set_timer_value(pcf8563_handle_t *handle, uint8_t value)
set timer value
+
uint8_t pcf8563_clear_status(pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
clear status
+
uint8_t pcf8563_set_power_on_reset(pcf8563_handle_t *handle, pcf8563_bool_t enable)
enable or disable power on reset
+
@ PCF8563_TIMER_FREQ_1HZ
+
@ PCF8563_BOOL_TRUE
+
@ PCF8563_BOOL_FALSE
+
@ PCF8563_INTERRUPT_MODE_PULSE
+
@ PCF8563_INTERRUPT_EVENT_TIMER
+
@ PCF8563_INTERRUPT_EVENT_ALARM
+
uint8_t pcf8563_interface_iic_init(void)
interface iic bus init
+
uint8_t pcf8563_interface_iic_read(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus read
+
uint8_t pcf8563_interface_iic_deinit(void)
interface iic bus deinit
+
void pcf8563_interface_delay_ms(uint32_t ms)
interface delay ms
+
void pcf8563_interface_debug_print(const char *const fmt,...)
interface print format data
+
uint8_t pcf8563_interface_iic_write(uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
interface iic bus write
+ + + + + + + + +
uint8_t pcf8563_timer_test(void)
timer test
+
uint8_t pcf8563_timer_test_irq_handler(void)
timer test irq
+ + +
uint32_t driver_version
+ + +
char manufacturer_name[32]
+ + +
+
diff --git a/doc/html/driver__pcf8563__timer__test_8h.html b/doc/html/driver__pcf8563__timer__test_8h.html index 8a056ca..7219d1b 100644 --- a/doc/html/driver__pcf8563__timer__test_8h.html +++ b/doc/html/driver__pcf8563__timer__test_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_timer_test.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
driver_pcf8563_timer_test.h File Reference
+
driver_pcf8563_timer_test.h File Reference

driver pcf8563 timer test header file More...

+Include dependency graph for driver_pcf8563_timer_test.h:
+
+
+
+
+This graph shows which files directly or indirectly include this file:
+
+
+

Go to the source code of this file.

- - - - - - - + + + +

+

Functions

uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq More...
 
uint8_t pcf8563_timer_test (void)
 timer test More...
 
uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq
uint8_t pcf8563_timer_test (void)
 timer test
-

Detailed Description

+

Detailed Description

driver pcf8563 timer test header file

Copyright (c) 2015 - present LibDriver All rights reserved

The MIT License (MIT)

@@ -127,11 +139,19 @@

history

Definition in file driver_pcf8563_timer_test.h.

+ +
diff --git a/doc/html/driver__pcf8563__timer__test_8h__dep__incl.md5 b/doc/html/driver__pcf8563__timer__test_8h__dep__incl.md5 new file mode 100644 index 0000000..4eb8715 --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8h__dep__incl.md5 @@ -0,0 +1 @@ +197823b1b838077d16bc39aace9c7a0e \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer__test_8h__dep__incl.svg b/doc/html/driver__pcf8563__timer__test_8h__dep__incl.svg new file mode 100644 index 0000000..b143e40 --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8h__dep__incl.svg @@ -0,0 +1,41 @@ + + + + + + +test/driver_pcf8563_timer_test.h + + +Node1 + + +test/driver_pcf8563 +_timer_test.h + + + + + +Node2 + + +test/driver_pcf8563 +_timer_test.c + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer__test_8h__incl.md5 b/doc/html/driver__pcf8563__timer__test_8h__incl.md5 new file mode 100644 index 0000000..0f610c5 --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8h__incl.md5 @@ -0,0 +1 @@ +b7ab3715a3e5ea273fdce0d4d0dff6f3 \ No newline at end of file diff --git a/doc/html/driver__pcf8563__timer__test_8h__incl.svg b/doc/html/driver__pcf8563__timer__test_8h__incl.svg new file mode 100644 index 0000000..dc8a4fa --- /dev/null +++ b/doc/html/driver__pcf8563__timer__test_8h__incl.svg @@ -0,0 +1,112 @@ + + + + + + +test/driver_pcf8563_timer_test.h + + +Node1 + + +test/driver_pcf8563 +_timer_test.h + + + + + +Node2 + + +driver_pcf8563_interface.h + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +driver_pcf8563.h + + + + + +Node2->Node3 + + + + + + + + +Node4 + + +stdio.h + + + + + +Node3->Node4 + + + + + + + + +Node5 + + +stdint.h + + + + + +Node3->Node5 + + + + + + + + +Node6 + + +string.h + + + + + +Node3->Node6 + + + + + + + + diff --git a/doc/html/driver__pcf8563__timer__test_8h_source.html b/doc/html/driver__pcf8563__timer__test_8h_source.html index 15a65dd..def5cac 100644 --- a/doc/html/driver__pcf8563__timer__test_8h_source.html +++ b/doc/html/driver__pcf8563__timer__test_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: test/driver_pcf8563_timer_test.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
driver_pcf8563_timer_test.h
+
driver_pcf8563_timer_test.h
-Go to the documentation of this file.
1 
-
37 #ifndef DRIVER_PCF8563_TIMER_TEST_H
-
38 #define DRIVER_PCF8563_TIMER_TEST_H
-
39 
- -
41 
-
42 #ifdef __cplusplus
-
43 extern "C"{
-
44 #endif
-
45 
-
58 uint8_t pcf8563_timer_test_irq_handler(void);
-
59 
-
67 uint8_t pcf8563_timer_test(void);
-
68 
-
73 #ifdef __cplusplus
-
74 }
-
75 #endif
-
76 
-
77 #endif
+Go to the documentation of this file.
1
+
36
+
37#ifndef DRIVER_PCF8563_TIMER_TEST_H
+
38#define DRIVER_PCF8563_TIMER_TEST_H
+
39
+ +
41
+
42#ifdef __cplusplus
+
43extern "C"{
+
44#endif
+
45
+
50
+ +
59
+
67uint8_t pcf8563_timer_test(void);
+
68
+
72
+
73#ifdef __cplusplus
+
74}
+
75#endif
+
76
+
77#endif
driver pcf8563 interface header file
-
uint8_t pcf8563_timer_test(void)
timer test
-
uint8_t pcf8563_timer_test_irq_handler(void)
timer test irq
+
uint8_t pcf8563_timer_test(void)
timer test
+
uint8_t pcf8563_timer_test_irq_handler(void)
timer test irq
+
diff --git a/doc/html/dynsections.js b/doc/html/dynsections.js index 88f2c27..d89724e 100644 --- a/doc/html/dynsections.js +++ b/doc/html/dynsections.js @@ -22,107 +22,177 @@ @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 toggleVisibility(linkObj) { + return dynsection.toggleVisibility(linkObj); } -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'); + // add vertical lines to other rows + $('span[class=lineno]').not(':eq(0)').append(''); + // add toggle controls to lines with fold divs + $('div[class=foldopen]').each(function() { + // extract specific id to use + const id = $(this).attr('id').replace('foldopen',''); + // extract start and end foldable fragment attributes + const start = $(this).attr('data-start'); + const end = $(this).attr('data-end'); + // replace normal fold span with controls for the first line of a foldable fragment + $(this).find('span[class=fold]:first').replaceWith(''); + // append div for folded (closed) representation + $(this).after(''); + // extract the first line from the "open" section to represent closed content + const line = $(this).children().first().clone(); + // remove any glow that might still be active on the original line + $(line).removeClass('glow'); + if (start) { + // if line already ends with a start marker (e.g. trailing {), remove it + $(line).html($(line).html().replace(new RegExp('\\s*'+start+'\\s*$','g'),'')); + } + // replace minus with plus symbol + $(line).find('span[class=fold]').addClass('plus').removeClass('minus'); + // append ellipsis + $(line).append(' '+start+''+end); + // insert constructed line into closed div + $('#foldclosed'+id).html(line); + }); + }, +}; /* @license-end */ - -$(document).ready(function() { +$(function() { $('.code,.codeRef').each(function() { $(this).data('powertip',$('#a'+$(this).attr('href').replace(/.*\//,'').replace(/[^a-z_A-Z0-9]/g,'_')).html()); + $.fn.powerTip.smartPlacementLists.s = [ 's', 'n', 'ne', 'se' ]; $(this).powerTip({ placement: 's', smartPlacement: true, mouseOnToPopup: true }); }); }); diff --git a/doc/html/favicon.svg b/doc/html/favicon.svg new file mode 100644 index 0000000..7ab3ea8 --- /dev/null +++ b/doc/html/favicon.svg @@ -0,0 +1,20 @@ + + + + + + + + + \ No newline at end of file diff --git a/doc/html/files.html b/doc/html/files.html index 5e80275..60094c7 100644 --- a/doc/html/files.html +++ b/doc/html/files.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: File List + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
File List
+
File List
Here is a list of all files with brief descriptions:
-
[detail level 123]
- - - - - - - - - - - - - - - - - - - - - - - - - - - +
[detail level 123]
  doc
  mainpage
 mainpage.h
  example
 driver_pcf8563_alarm.cDriver pcf8563 alarm source file
 driver_pcf8563_alarm.hDriver pcf8563 alarm header file
 driver_pcf8563_basic.cDriver pcf8563 basic source file
 driver_pcf8563_basic.hDriver pcf8563 basic header file
 driver_pcf8563_output.cDriver pcf8563 output source file
 driver_pcf8563_output.hDriver pcf8563 output header file
 driver_pcf8563_timer.cDriver pcf8563 timer source file
 driver_pcf8563_timer.hDriver pcf8563 timer header file
  interface
 driver_pcf8563_interface.hDriver pcf8563 interface header file
 driver_pcf8563_interface_template.cDriver pcf8563 interface template source file
  src
 driver_pcf8563.cDriver pcf8563 source file
 driver_pcf8563.hDriver pcf8563 header file
  test
 driver_pcf8563_alarm_test.cDriver pcf8563 alarm test source file
 driver_pcf8563_alarm_test.hDriver pcf8563 alarm test header file
 driver_pcf8563_output_test.cDriver pcf8563 output test source file
 driver_pcf8563_output_test.hDriver pcf8563 output test header file
 driver_pcf8563_register_test.cDriver pcf8563 register test source file
 driver_pcf8563_register_test.hDriver pcf8563 register test header file
 driver_pcf8563_timer_test.cDriver pcf8563 timer test source file
 driver_pcf8563_timer_test.hDriver pcf8563 timer test header file
+ + + + + + + + + + + + + + + + + + + + + + + + + + +
 
doc
 
mainpage
 
mainpage.h
 
example
 
driver_pcf8563_alarm.c
Driver pcf8563 alarm source file
 
driver_pcf8563_alarm.h
Driver pcf8563 alarm header file
 
driver_pcf8563_basic.c
Driver pcf8563 basic source file
 
driver_pcf8563_basic.h
Driver pcf8563 basic header file
 
driver_pcf8563_output.c
Driver pcf8563 output source file
 
driver_pcf8563_output.h
Driver pcf8563 output header file
 
driver_pcf8563_timer.c
Driver pcf8563 timer source file
 
driver_pcf8563_timer.h
Driver pcf8563 timer header file
 
interface
 
driver_pcf8563_interface.h
Driver pcf8563 interface header file
 
driver_pcf8563_interface_template.c
Driver pcf8563 interface template source file
 
src
 
driver_pcf8563.c
Driver pcf8563 source file
 
driver_pcf8563.h
Driver pcf8563 header file
 
test
 
driver_pcf8563_alarm_test.c
Driver pcf8563 alarm test source file
 
driver_pcf8563_alarm_test.h
Driver pcf8563 alarm test header file
 
driver_pcf8563_output_test.c
Driver pcf8563 output test source file
 
driver_pcf8563_output_test.h
Driver pcf8563 output test header file
 
driver_pcf8563_register_test.c
Driver pcf8563 register test source file
 
driver_pcf8563_register_test.h
Driver pcf8563 register test header file
 
driver_pcf8563_timer_test.c
Driver pcf8563 timer test source file
 
driver_pcf8563_timer_test.h
Driver pcf8563 timer test header file
+
diff --git a/doc/html/folderclosed.png b/doc/html/folderclosed.png deleted file mode 100644 index bb8ab35edce8e97554e360005ee9fc5bffb36e66..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/doc/html/functions.html b/doc/html/functions.html index d8c6ae3..d4961c3 100644 --- a/doc/html/functions.html +++ b/doc/html/functions.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Data Fields + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all struct and union fields with links to the structures/unions they belong to:
-

- c -

+
diff --git a/doc/html/functions_vars.html b/doc/html/functions_vars.html index f077cb1..8fa7ff9 100644 --- a/doc/html/functions_vars.html +++ b/doc/html/functions_vars.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Data Fields - Variables + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all variables with links to the structures/unions they belong to:
-

- c -

+
diff --git a/doc/html/globals.html b/doc/html/globals.html index b7328e6..9802075 100644 --- a/doc/html/globals.html +++ b/doc/html/globals.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- c -

+
diff --git a/doc/html/globals_d.html b/doc/html/globals_d.html index 4b6021d..5a1288e 100644 --- a/doc/html/globals_d.html +++ b/doc/html/globals_d.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- d -

+
diff --git a/doc/html/globals_defs.html b/doc/html/globals_defs.html index 5b2c143..0dd4ede 100644 --- a/doc/html/globals_defs.html +++ b/doc/html/globals_defs.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all macros with links to the files they belong to:
-

- c -

+
diff --git a/doc/html/globals_enum.html b/doc/html/globals_enum.html index 3e5094c..7b04718 100644 --- a/doc/html/globals_enum.html +++ b/doc/html/globals_enum.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
diff --git a/doc/html/globals_eval.html b/doc/html/globals_eval.html index d3132e3..4f4d33a 100644 --- a/doc/html/globals_eval.html +++ b/doc/html/globals_eval.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
diff --git a/doc/html/globals_func.html b/doc/html/globals_func.html index d23180f..f12c5f7 100644 --- a/doc/html/globals_func.html +++ b/doc/html/globals_func.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-  +
Here is a list of all functions with links to the files they belong to:
-

- p -

+
diff --git a/doc/html/globals_m.html b/doc/html/globals_m.html index d0bd46f..71cac54 100644 --- a/doc/html/globals_m.html +++ b/doc/html/globals_m.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- m -

+
diff --git a/doc/html/globals_p.html b/doc/html/globals_p.html index aed98be..bbbd8f1 100644 --- a/doc/html/globals_p.html +++ b/doc/html/globals_p.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- p -

+
diff --git a/doc/html/globals_s.html b/doc/html/globals_s.html index 240a80a..6072c3f 100644 --- a/doc/html/globals_s.html +++ b/doc/html/globals_s.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- s -

+
diff --git a/doc/html/globals_t.html b/doc/html/globals_t.html index eab432a..bc43907 100644 --- a/doc/html/globals_t.html +++ b/doc/html/globals_t.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
Here is a list of all functions, variables, defines, enums, and typedefs with links to the files they belong to:
-

- t -

+
diff --git a/doc/html/globals_type.html b/doc/html/globals_type.html index 85425e0..b87d1a4 100644 --- a/doc/html/globals_type.html +++ b/doc/html/globals_type.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: Globals + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
diff --git a/doc/html/graph_legend.html b/doc/html/graph_legend.html new file mode 100644 index 0000000..ae8f782 --- /dev/null +++ b/doc/html/graph_legend.html @@ -0,0 +1,167 @@ + + + + + + + +LibDriver PCF8563: Graph Legend + + + + + + + + + + + + + + + + +
+
+ + + + + + + +
+
LibDriver PCF8563 +
+
+
+ + + + + + + + +
+
+ +
+
+
+ +
+
+ +
+
+ + +
+
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
+
+ +
+
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 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 labeled 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 labeled with the template parameters of the instance.
  • +
+
+
+
+ + + + diff --git a/doc/html/graph_legend.md5 b/doc/html/graph_legend.md5 new file mode 100644 index 0000000..da515da --- /dev/null +++ b/doc/html/graph_legend.md5 @@ -0,0 +1 @@ +f74606a252eb303675caf37987d0b7af \ No newline at end of file diff --git a/doc/html/graph_legend.svg b/doc/html/graph_legend.svg new file mode 100644 index 0000000..8cf264a --- /dev/null +++ b/doc/html/graph_legend.svg @@ -0,0 +1,167 @@ + + + + + + +Graph Legend + + +Node9 + + +Inherited + + + + + +Node10 + + +PublicBase + + + + + +Node10->Node9 + + + + + + + + +Node11 + + +Truncated + + + + + +Node11->Node10 + + + + + + + + +Node13 + + +ProtectedBase + + + + + +Node13->Node9 + + + + + + + + +Node14 + + +PrivateBase + + + + + +Node14->Node9 + + + + + + + + +Node15 + + +Undocumented + + + + + +Node15->Node9 + + + + + + + + +Node16 + + +Templ< int > + + + + + +Node16->Node9 + + + + + + + + +Node17 + + +Templ< T > + + + + + +Node17->Node16 + + + + + +< int > + + + +Node18 + + +Used + + + + + +Node18->Node9 + + + + + +m_usedClass + + + diff --git a/doc/html/group__pcf8563__base__driver.html b/doc/html/group__pcf8563__base__driver.html index a33f5b2..368a491 100644 --- a/doc/html/group__pcf8563__base__driver.html +++ b/doc/html/group__pcf8563__base__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 base driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 base driver function
+
pcf8563 base driver function

pcf8563 base driver modules More...

+
+Collaboration diagram for pcf8563 base driver function:
+
+
+
- - + - - + - - + -

+

Data Structures

struct  pcf8563_time_s
struct  pcf8563_time_s
 pcf8563 time structure definition More...
 
struct  pcf8563_handle_s
struct  pcf8563_handle_s
 pcf8563 handle structure definition More...
 
struct  pcf8563_info_s
struct  pcf8563_info_s
 pcf8563 information structure definition More...
 
- - - - - - - - - - + + + + + +

+

Typedefs

typedef struct pcf8563_time_s pcf8563_time_t
 pcf8563 time structure definition More...
 
typedef struct pcf8563_handle_s pcf8563_handle_t
 pcf8563 handle structure definition More...
 
typedef struct pcf8563_info_s pcf8563_info_t
 pcf8563 information structure definition More...
 
typedef struct pcf8563_time_s pcf8563_time_t
 pcf8563 time structure definition
typedef struct pcf8563_handle_s pcf8563_handle_t
 pcf8563 handle structure definition
typedef struct pcf8563_info_s pcf8563_info_t
 pcf8563 information structure definition
- - - - - + - - - + - - - + - - - + - - +

+

Enumerations

enum  pcf8563_bool_t { PCF8563_BOOL_FALSE = 0x00 -, PCF8563_BOOL_TRUE = 0x01 +
enum  pcf8563_bool_t { PCF8563_BOOL_FALSE = 0x00 +, PCF8563_BOOL_TRUE = 0x01 }
 pcf8563 bool enumeration definition More...
 
enum  pcf8563_clock_out_t { PCF8563_CLOCK_OUT_32P768KHZ = 0x00 -, PCF8563_CLOCK_OUT_1P024KHZ = 0x01 -, PCF8563_CLOCK_OUT_32HZ = 0x02 -, PCF8563_CLOCK_OUT_1HZ = 0x03 +
 pcf8563 bool enumeration definition More...
enum  pcf8563_clock_out_t { PCF8563_CLOCK_OUT_32P768KHZ = 0x00 +, PCF8563_CLOCK_OUT_1P024KHZ = 0x01 +, PCF8563_CLOCK_OUT_32HZ = 0x02 +, PCF8563_CLOCK_OUT_1HZ = 0x03 }
 pcf8563 clock out enumeration definition More...
 
enum  pcf8563_timer_freq_t { PCF8563_TIMER_FREQ_4P096KHZ = 0x00 -, PCF8563_TIMER_FREQ_64HZ = 0x01 -, PCF8563_TIMER_FREQ_1HZ = 0x02 -, PCF8563_TIMER_FREQ_1_DIV_60HZ = 0x03 +
 pcf8563 clock out enumeration definition More...
enum  pcf8563_timer_freq_t { PCF8563_TIMER_FREQ_4P096KHZ = 0x00 +, PCF8563_TIMER_FREQ_64HZ = 0x01 +, PCF8563_TIMER_FREQ_1HZ = 0x02 +, PCF8563_TIMER_FREQ_1_DIV_60HZ = 0x03 }
 pcf8563 timer freq enumeration definition More...
 
enum  pcf8563_interrupt_mode_t { PCF8563_INTERRUPT_MODE_LEVEL = 0x00 -, PCF8563_INTERRUPT_MODE_PULSE = 0x01 +
 pcf8563 timer freq enumeration definition More...
enum  pcf8563_interrupt_mode_t { PCF8563_INTERRUPT_MODE_LEVEL = 0x00 +, PCF8563_INTERRUPT_MODE_PULSE = 0x01 }
 pcf8563 interrupt mode enumeration definition More...
 
enum  pcf8563_interrupt_event_t { PCF8563_INTERRUPT_EVENT_TIMER = 0x00 -, PCF8563_INTERRUPT_EVENT_ALARM = 0x01 +
 pcf8563 interrupt mode enumeration definition More...
enum  pcf8563_interrupt_event_t { PCF8563_INTERRUPT_EVENT_TIMER = 0x00 +, PCF8563_INTERRUPT_EVENT_ALARM = 0x01 }
 pcf8563 interrupt event enumeration definition More...
 
 pcf8563 interrupt event enumeration definition More...
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information More...
 
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler More...
 
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip More...
 
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip More...
 
uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time More...
 
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time More...
 
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode More...
 
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status More...
 
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop More...
 
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status More...
 
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset More...
 
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status More...
 
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm More...
 
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status More...
 
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm More...
 
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm More...
 
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm More...
 
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status More...
 
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm More...
 
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm More...
 
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm More...
 
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status More...
 
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm More...
 
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm More...
 
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm More...
 
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status More...
 
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm More...
 
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm More...
 
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable More...
 
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status More...
 
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out More...
 
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out More...
 
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable More...
 
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status More...
 
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq More...
 
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq More...
 
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value More...
 
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value More...
 
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt More...
 
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status More...
 
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt More...
 
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status More...
 
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode More...
 
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode More...
 
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status More...
 
uint8_t pcf8563_info (pcf8563_info_t *info)
 get chip's information
uint8_t pcf8563_irq_handler (pcf8563_handle_t *handle)
 irq handler
uint8_t pcf8563_init (pcf8563_handle_t *handle)
 initialize the chip
uint8_t pcf8563_deinit (pcf8563_handle_t *handle)
 close the chip
uint8_t pcf8563_set_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 set the current time
uint8_t pcf8563_get_time (pcf8563_handle_t *handle, pcf8563_time_t *t)
 get the current time
uint8_t pcf8563_set_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable test mode
uint8_t pcf8563_get_test_mode (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the test mode status
uint8_t pcf8563_set_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable rtc stop
uint8_t pcf8563_get_rtc_stop (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the rtc stop status
uint8_t pcf8563_set_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable power on reset
uint8_t pcf8563_get_power_on_reset (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the power on reset status
uint8_t pcf8563_set_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable minute alarm
uint8_t pcf8563_get_minute_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the minute alarm status
uint8_t pcf8563_set_minute_alarm (pcf8563_handle_t *handle, uint8_t minute)
 set minute alarm
uint8_t pcf8563_get_minute_alarm (pcf8563_handle_t *handle, uint8_t *minute)
 get minute alarm
uint8_t pcf8563_set_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable hour alarm
uint8_t pcf8563_get_hour_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the hour alarm status
uint8_t pcf8563_set_hour_alarm (pcf8563_handle_t *handle, uint8_t hour)
 set hour alarm
uint8_t pcf8563_get_hour_alarm (pcf8563_handle_t *handle, uint8_t *hour)
 get hour alarm
uint8_t pcf8563_set_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable day alarm
uint8_t pcf8563_get_day_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the day alarm status
uint8_t pcf8563_set_day_alarm (pcf8563_handle_t *handle, uint8_t day)
 set day alarm
uint8_t pcf8563_get_day_alarm (pcf8563_handle_t *handle, uint8_t *day)
 get day alarm
uint8_t pcf8563_set_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable week alarm
uint8_t pcf8563_get_week_alarm_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get the week alarm status
uint8_t pcf8563_set_week_alarm (pcf8563_handle_t *handle, uint8_t week)
 set week alarm
uint8_t pcf8563_get_week_alarm (pcf8563_handle_t *handle, uint8_t *week)
 get week alarm
uint8_t pcf8563_set_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable clock out enable
uint8_t pcf8563_get_clock_out_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get clock out enable status
uint8_t pcf8563_set_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t clk)
 set clock out
uint8_t pcf8563_get_clock_out (pcf8563_handle_t *handle, pcf8563_clock_out_t *clk)
 get clock out
uint8_t pcf8563_set_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer enable
uint8_t pcf8563_get_timer_enable (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer enable status
uint8_t pcf8563_set_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t freq)
 set timer freq
uint8_t pcf8563_get_timer_freq (pcf8563_handle_t *handle, pcf8563_timer_freq_t *freq)
 get timer freq
uint8_t pcf8563_set_timer_value (pcf8563_handle_t *handle, uint8_t value)
 set timer value
uint8_t pcf8563_get_timer_value (pcf8563_handle_t *handle, uint8_t *value)
 get timer value
uint8_t pcf8563_set_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable timer interrupt
uint8_t pcf8563_get_timer_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get timer interrupt status
uint8_t pcf8563_set_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t enable)
 enable or disable alarm interrupt
uint8_t pcf8563_get_alarm_interrupt (pcf8563_handle_t *handle, pcf8563_bool_t *enable)
 get alarm interrupt status
uint8_t pcf8563_set_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t mode)
 set the interrupt mode
uint8_t pcf8563_get_interrupt_mode (pcf8563_handle_t *handle, pcf8563_interrupt_mode_t *mode)
 get the interrupt mode
uint8_t pcf8563_clear_status (pcf8563_handle_t *handle, pcf8563_interrupt_event_t event)
 clear status
-

Detailed Description

+

Detailed Description

pcf8563 base driver modules

-

Typedef Documentation

- -

◆ pcf8563_handle_t

+

Typedef Documentation

+ +

◆ pcf8563_handle_t

@@ -310,14 +260,14 @@

-

◆ pcf8563_info_t

+ +

◆ pcf8563_info_t

- +
typedef struct pcf8563_info_s pcf8563_info_ttypedef struct pcf8563_info_s pcf8563_info_t
@@ -326,14 +276,14 @@

-

◆ pcf8563_time_t

+ +

◆ pcf8563_time_t

- +
typedef struct pcf8563_time_s pcf8563_time_ttypedef struct pcf8563_time_s pcf8563_time_t
@@ -342,24 +292,24 @@

Enumeration Type Documentation

- -

◆ pcf8563_bool_t

+

Enumeration Type Documentation

+ +

◆ pcf8563_bool_t

pcf8563 bool enumeration definition

- -
Enumerator
PCF8563_BOOL_FALSE 

disable

+
Enumerator
PCF8563_BOOL_FALSE 

disable

PCF8563_BOOL_TRUE 

enable

+
PCF8563_BOOL_TRUE 

enable

@@ -367,27 +317,27 @@

-

◆ pcf8563_clock_out_t

+ +

◆ pcf8563_clock_out_t

pcf8563 clock out enumeration definition

- - - -
Enumerator
PCF8563_CLOCK_OUT_32P768KHZ 

32.768khz

+
Enumerator
PCF8563_CLOCK_OUT_32P768KHZ 

32.768khz

PCF8563_CLOCK_OUT_1P024KHZ 

1.024khz

+
PCF8563_CLOCK_OUT_1P024KHZ 

1.024khz

PCF8563_CLOCK_OUT_32HZ 

32hz

+
PCF8563_CLOCK_OUT_32HZ 

32hz

PCF8563_CLOCK_OUT_1HZ 

1hz

+
PCF8563_CLOCK_OUT_1HZ 

1hz

@@ -395,23 +345,23 @@

-

◆ pcf8563_interrupt_event_t

+ +

◆ pcf8563_interrupt_event_t

pcf8563 interrupt event enumeration definition

- -
Enumerator
PCF8563_INTERRUPT_EVENT_TIMER 

timer

+
Enumerator
PCF8563_INTERRUPT_EVENT_TIMER 

timer

PCF8563_INTERRUPT_EVENT_ALARM 

alarm

+
PCF8563_INTERRUPT_EVENT_ALARM 

alarm

@@ -419,23 +369,23 @@

-

◆ pcf8563_interrupt_mode_t

+ +

◆ pcf8563_interrupt_mode_t

pcf8563 interrupt mode enumeration definition

- -
Enumerator
PCF8563_INTERRUPT_MODE_LEVEL 

level mode

+
Enumerator
PCF8563_INTERRUPT_MODE_LEVEL 

level mode

PCF8563_INTERRUPT_MODE_PULSE 

pulse mode

+
PCF8563_INTERRUPT_MODE_PULSE 

pulse mode

@@ -443,27 +393,27 @@

-

◆ pcf8563_timer_freq_t

+ +

◆ pcf8563_timer_freq_t

pcf8563 timer freq enumeration definition

- - - -
Enumerator
PCF8563_TIMER_FREQ_4P096KHZ 

4.096khz

+
Enumerator
PCF8563_TIMER_FREQ_4P096KHZ 

4.096khz

PCF8563_TIMER_FREQ_64HZ 

64hz

+
PCF8563_TIMER_FREQ_64HZ 

64hz

PCF8563_TIMER_FREQ_1HZ 

1hz

+
PCF8563_TIMER_FREQ_1HZ 

1hz

PCF8563_TIMER_FREQ_1_DIV_60HZ 

1/60hz

+
PCF8563_TIMER_FREQ_1_DIV_60HZ 

1/60hz

@@ -471,9 +421,9 @@

Function Documentation

- -

◆ pcf8563_clear_status()

+

Function Documentation

+ +

◆ pcf8563_clear_status()

@@ -481,19 +431,12 @@

uint8_t pcf8563_clear_status ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_interrupt_event_t  - event  - - - - ) - + pcf8563_interrupt_event_t event )

@@ -519,8 +462,8 @@

-

◆ pcf8563_deinit()

+ +

◆ pcf8563_deinit()

@@ -528,8 +471,7 @@

uint8_t pcf8563_deinit ( - pcf8563_handle_t *  - handle) + pcf8563_handle_t * handle) @@ -555,8 +497,8 @@

-

◆ pcf8563_get_alarm_interrupt()

+ +

◆ pcf8563_get_alarm_interrupt()

@@ -564,19 +506,12 @@

uint8_t pcf8563_get_alarm_interrupt ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -602,8 +537,8 @@

-

◆ pcf8563_get_clock_out()

+ +

◆ pcf8563_get_clock_out()

@@ -611,19 +546,12 @@

uint8_t pcf8563_get_clock_out ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_clock_out_t *  - clk  - - - - ) - + pcf8563_clock_out_t * clk )

@@ -649,8 +577,8 @@

-

◆ pcf8563_get_clock_out_enable()

+ +

◆ pcf8563_get_clock_out_enable()

@@ -658,19 +586,12 @@

uint8_t pcf8563_get_clock_out_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -696,8 +617,8 @@

-

◆ pcf8563_get_day_alarm()

+ +

◆ pcf8563_get_day_alarm()

@@ -705,19 +626,12 @@

uint8_t pcf8563_get_day_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t *  - day  - - - - ) - + uint8_t * day )

@@ -743,8 +657,8 @@

-

◆ pcf8563_get_day_alarm_enable()

+ +

◆ pcf8563_get_day_alarm_enable()

@@ -752,19 +666,12 @@

uint8_t pcf8563_get_day_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -790,8 +697,8 @@

-

◆ pcf8563_get_hour_alarm()

+ +

◆ pcf8563_get_hour_alarm()

@@ -799,19 +706,12 @@

uint8_t pcf8563_get_hour_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t *  - hour  - - - - ) - + uint8_t * hour )

@@ -837,8 +737,8 @@

-

◆ pcf8563_get_hour_alarm_enable()

+ +

◆ pcf8563_get_hour_alarm_enable()

@@ -846,19 +746,12 @@

uint8_t pcf8563_get_hour_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -884,8 +777,8 @@

-

◆ pcf8563_get_interrupt_mode()

+ +

◆ pcf8563_get_interrupt_mode()

@@ -893,19 +786,12 @@

uint8_t pcf8563_get_interrupt_mode ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_interrupt_mode_t *  - mode  - - - - ) - + pcf8563_interrupt_mode_t * mode )

@@ -931,8 +817,8 @@

-

◆ pcf8563_get_minute_alarm()

+ +

◆ pcf8563_get_minute_alarm()

@@ -940,19 +826,12 @@

uint8_t pcf8563_get_minute_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t *  - minute  - - - - ) - + uint8_t * minute )

@@ -978,8 +857,8 @@

-

◆ pcf8563_get_minute_alarm_enable()

+ +

◆ pcf8563_get_minute_alarm_enable()

@@ -987,19 +866,12 @@

uint8_t pcf8563_get_minute_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1025,8 +897,8 @@

-

◆ pcf8563_get_power_on_reset()

+ +

◆ pcf8563_get_power_on_reset()

@@ -1034,19 +906,12 @@

uint8_t pcf8563_get_power_on_reset ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1072,8 +937,8 @@

-

◆ pcf8563_get_rtc_stop()

+ +

◆ pcf8563_get_rtc_stop()

@@ -1081,19 +946,12 @@

uint8_t pcf8563_get_rtc_stop ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1119,8 +977,8 @@

-

◆ pcf8563_get_test_mode()

+ +

◆ pcf8563_get_test_mode()

@@ -1128,19 +986,12 @@

uint8_t pcf8563_get_test_mode ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1166,8 +1017,8 @@

-

◆ pcf8563_get_time()

+ +

◆ pcf8563_get_time()

@@ -1175,19 +1026,12 @@

uint8_t pcf8563_get_time ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_time_t *  - t  - - - - ) - + pcf8563_time_t * t )

@@ -1214,8 +1058,8 @@

-

◆ pcf8563_get_timer_enable()

+ +

◆ pcf8563_get_timer_enable()

@@ -1223,19 +1067,12 @@

uint8_t pcf8563_get_timer_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1261,8 +1098,8 @@

-

◆ pcf8563_get_timer_freq()

+ +

◆ pcf8563_get_timer_freq()

@@ -1270,19 +1107,12 @@

uint8_t pcf8563_get_timer_freq ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_timer_freq_t *  - freq  - - - - ) - + pcf8563_timer_freq_t * freq )

@@ -1308,8 +1138,8 @@

-

◆ pcf8563_get_timer_interrupt()

+ +

◆ pcf8563_get_timer_interrupt()

@@ -1317,19 +1147,12 @@

uint8_t pcf8563_get_timer_interrupt ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1355,8 +1178,8 @@

-

◆ pcf8563_get_timer_value()

+ +

◆ pcf8563_get_timer_value()

@@ -1364,19 +1187,12 @@

uint8_t pcf8563_get_timer_value ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t *  - value  - - - - ) - + uint8_t * value )

@@ -1402,8 +1218,8 @@

-

◆ pcf8563_get_week_alarm()

+ +

◆ pcf8563_get_week_alarm()

@@ -1411,19 +1227,12 @@

uint8_t pcf8563_get_week_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t *  - week  - - - - ) - + uint8_t * week )

@@ -1449,8 +1258,8 @@

-

◆ pcf8563_get_week_alarm_enable()

+ +

◆ pcf8563_get_week_alarm_enable()

@@ -1458,19 +1267,12 @@

uint8_t pcf8563_get_week_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t *  - enable  - - - - ) - + pcf8563_bool_t * enable )

@@ -1496,8 +1298,8 @@

-

◆ pcf8563_info()

+ +

◆ pcf8563_info()

@@ -1505,8 +1307,7 @@

uint8_t pcf8563_info ( - pcf8563_info_t *  - info) + pcf8563_info_t * info) @@ -1530,8 +1331,8 @@

-

◆ pcf8563_init()

+ +

◆ pcf8563_init()

@@ -1539,8 +1340,7 @@

uint8_t pcf8563_init ( - pcf8563_handle_t *  - handle) + pcf8563_handle_t * handle) @@ -1566,8 +1366,8 @@

-

◆ pcf8563_irq_handler()

+ +

◆ pcf8563_irq_handler()

@@ -1575,8 +1375,7 @@

uint8_t pcf8563_irq_handler ( - pcf8563_handle_t *  - handle) + pcf8563_handle_t * handle) @@ -1602,8 +1401,8 @@

-

◆ pcf8563_set_alarm_interrupt()

+ +

◆ pcf8563_set_alarm_interrupt()

@@ -1611,19 +1410,12 @@

uint8_t pcf8563_set_alarm_interrupt ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -1649,8 +1441,8 @@

-

◆ pcf8563_set_clock_out()

+ +

◆ pcf8563_set_clock_out()

@@ -1658,19 +1450,12 @@

uint8_t pcf8563_set_clock_out ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_clock_out_t  - clk  - - - - ) - + pcf8563_clock_out_t clk )

@@ -1696,8 +1481,8 @@

-

◆ pcf8563_set_clock_out_enable()

+ +

◆ pcf8563_set_clock_out_enable()

@@ -1705,19 +1490,12 @@

uint8_t pcf8563_set_clock_out_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -1743,8 +1521,8 @@

-

◆ pcf8563_set_day_alarm()

+ +

◆ pcf8563_set_day_alarm()

@@ -1752,19 +1530,12 @@

uint8_t pcf8563_set_day_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - day  - - - - ) - + uint8_t day )

@@ -1791,8 +1562,8 @@

-

◆ pcf8563_set_day_alarm_enable()

+ +

◆ pcf8563_set_day_alarm_enable()

@@ -1800,19 +1571,12 @@

uint8_t pcf8563_set_day_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -1838,8 +1602,8 @@

-

◆ pcf8563_set_hour_alarm()

+ +

◆ pcf8563_set_hour_alarm()

@@ -1847,19 +1611,12 @@

uint8_t pcf8563_set_hour_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - hour  - - - - ) - + uint8_t hour )

@@ -1886,8 +1643,8 @@

-

◆ pcf8563_set_hour_alarm_enable()

+ +

◆ pcf8563_set_hour_alarm_enable()

@@ -1895,19 +1652,12 @@

uint8_t pcf8563_set_hour_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -1933,8 +1683,8 @@

-

◆ pcf8563_set_interrupt_mode()

+ +

◆ pcf8563_set_interrupt_mode()

@@ -1942,19 +1692,12 @@

uint8_t pcf8563_set_interrupt_mode ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_interrupt_mode_t  - mode  - - - - ) - + pcf8563_interrupt_mode_t mode )

@@ -1980,8 +1723,8 @@

-

◆ pcf8563_set_minute_alarm()

+ +

◆ pcf8563_set_minute_alarm()

@@ -1989,19 +1732,12 @@

uint8_t pcf8563_set_minute_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - minute  - - - - ) - + uint8_t minute )

@@ -2028,8 +1764,8 @@

-

◆ pcf8563_set_minute_alarm_enable()

+ +

◆ pcf8563_set_minute_alarm_enable()

@@ -2037,19 +1773,12 @@

uint8_t pcf8563_set_minute_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2075,8 +1804,8 @@

-

◆ pcf8563_set_power_on_reset()

+ +

◆ pcf8563_set_power_on_reset()

@@ -2084,19 +1813,12 @@

uint8_t pcf8563_set_power_on_reset ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2122,8 +1844,8 @@

-

◆ pcf8563_set_rtc_stop()

+ +

◆ pcf8563_set_rtc_stop()

@@ -2131,19 +1853,12 @@

uint8_t pcf8563_set_rtc_stop ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2169,8 +1884,8 @@

-

◆ pcf8563_set_test_mode()

+ +

◆ pcf8563_set_test_mode()

@@ -2178,19 +1893,12 @@

uint8_t pcf8563_set_test_mode ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2216,8 +1924,8 @@

-

◆ pcf8563_set_time()

+ +

◆ pcf8563_set_time()

@@ -2225,19 +1933,12 @@

uint8_t pcf8563_set_time ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_time_t *  - t  - - - - ) - + pcf8563_time_t * t )

@@ -2264,8 +1965,8 @@

-

◆ pcf8563_set_timer_enable()

+ +

◆ pcf8563_set_timer_enable()

@@ -2273,19 +1974,12 @@

uint8_t pcf8563_set_timer_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2311,8 +2005,8 @@

-

◆ pcf8563_set_timer_freq()

+ +

◆ pcf8563_set_timer_freq()

@@ -2320,19 +2014,12 @@

uint8_t pcf8563_set_timer_freq ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_timer_freq_t  - freq  - - - - ) - + pcf8563_timer_freq_t freq )

@@ -2358,8 +2045,8 @@

-

◆ pcf8563_set_timer_interrupt()

+ +

◆ pcf8563_set_timer_interrupt()

@@ -2367,19 +2054,12 @@

uint8_t pcf8563_set_timer_interrupt ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2405,8 +2085,8 @@

-

◆ pcf8563_set_timer_value()

+ +

◆ pcf8563_set_timer_value()

@@ -2414,19 +2094,12 @@

uint8_t pcf8563_set_timer_value ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - value  - - - - ) - + uint8_t value )

@@ -2452,8 +2125,8 @@

-

◆ pcf8563_set_week_alarm()

+ +

◆ pcf8563_set_week_alarm()

@@ -2461,19 +2134,12 @@

uint8_t pcf8563_set_week_alarm ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - week  - - - - ) - + uint8_t week )

@@ -2500,8 +2166,8 @@

-

◆ pcf8563_set_week_alarm_enable()

+ +

◆ pcf8563_set_week_alarm_enable()

@@ -2509,19 +2175,12 @@

uint8_t pcf8563_set_week_alarm_enable ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - pcf8563_bool_t  - enable  - - - - ) - + pcf8563_bool_t enable )

@@ -2549,10 +2208,18 @@

+ + +

+
diff --git a/doc/html/group__pcf8563__base__driver.md5 b/doc/html/group__pcf8563__base__driver.md5 new file mode 100644 index 0000000..e420b64 --- /dev/null +++ b/doc/html/group__pcf8563__base__driver.md5 @@ -0,0 +1 @@ +1546e3595727868ea384255ad99a03a7 \ No newline at end of file diff --git a/doc/html/group__pcf8563__base__driver.svg b/doc/html/group__pcf8563__base__driver.svg new file mode 100644 index 0000000..8beaabb --- /dev/null +++ b/doc/html/group__pcf8563__base__driver.svg @@ -0,0 +1,37 @@ + + + + + + +pcf8563 base driver function + + +Node1 + + +pcf8563 base driver + function + + + + + +Node2 + + +pcf8563 driver function + + + + + +Node2->Node1 + + + + + diff --git a/doc/html/group__pcf8563__driver.html b/doc/html/group__pcf8563__driver.html index 7c6cf11..8d7fc9e 100644 --- a/doc/html/group__pcf8563__driver.html +++ b/doc/html/group__pcf8563__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +

@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 driver function
+
pcf8563 driver function

pcf8563 driver modules More...

+
+Collaboration diagram for pcf8563 driver function:
+
+
+
- - + + - - + - - + - - + - - + - - + -

-Modules

+Topics

 
 pcf8563 base driver function
 pcf8563 base driver function
 pcf8563 base driver modules
 
 pcf8563 extern driver function
 pcf8563 extern driver function
 pcf8563 extern driver modules
 
 pcf8563 interface driver function
 pcf8563 interface driver function
 pcf8563 interface driver modules
 
 pcf8563 example driver function
 pcf8563 example driver function
 pcf8563 example driver modules
 
 pcf8563 test driver function
 pcf8563 test driver function
 pcf8563 test driver modules
 
-

Detailed Description

+

Detailed Description

pcf8563 driver modules

+ +
diff --git a/doc/html/group__pcf8563__driver.md5 b/doc/html/group__pcf8563__driver.md5 new file mode 100644 index 0000000..8214903 --- /dev/null +++ b/doc/html/group__pcf8563__driver.md5 @@ -0,0 +1 @@ +b500001f817dfc40ad1736f646bd6209 \ No newline at end of file diff --git a/doc/html/group__pcf8563__driver.svg b/doc/html/group__pcf8563__driver.svg new file mode 100644 index 0000000..85fb722 --- /dev/null +++ b/doc/html/group__pcf8563__driver.svg @@ -0,0 +1,117 @@ + + + + + + +pcf8563 driver function + + +Node3 + + +pcf8563 base driver + function + + + + + +Node1 + + +pcf8563 driver function + + + + + +Node1->Node3 + + + + + +Node6 + + +pcf8563 example driver + function + + + + + +Node1->Node6 + + + + + +Node4 + + +pcf8563 extern driver + function + + + + + +Node1->Node4 + + + + + +Node5 + + +pcf8563 interface driver + function + + + + + +Node1->Node5 + + + + + +Node2 + + +pcf8563 link driver + function + + + + + +Node1->Node2 + + + + + +Node7 + + +pcf8563 test driver + function + + + + + +Node1->Node7 + + + + + diff --git a/doc/html/group__pcf8563__example__driver.html b/doc/html/group__pcf8563__example__driver.html index cacc553..a4bfa76 100644 --- a/doc/html/group__pcf8563__example__driver.html +++ b/doc/html/group__pcf8563__example__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 example driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 example driver function
+
pcf8563 example driver function

pcf8563 example driver modules More...

+
+Collaboration diagram for pcf8563 example driver function:
+
+
+
- - + -

+

Data Structures

struct  pcf8563_alarm_param_s
struct  pcf8563_alarm_param_s
 pcf8563 alarm param structure definition More...
 
- - - - + +

+

Typedefs

typedef struct pcf8563_alarm_param_s pcf8563_alarm_param_t
 pcf8563 alarm param structure definition More...
 
typedef struct pcf8563_alarm_param_s pcf8563_alarm_param_t
 pcf8563 alarm param structure definition
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq More...
 
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init More...
 
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit More...
 
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm More...
 
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm More...
 
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time More...
 
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp More...
 
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone More...
 
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time More...
 
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp More...
 
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone More...
 
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time More...
 
uint8_t pcf8563_basic_init (void)
 basic example init More...
 
uint8_t pcf8563_basic_deinit (void)
 basic example deinit More...
 
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time More...
 
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp More...
 
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone More...
 
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time More...
 
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp More...
 
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone More...
 
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time More...
 
uint8_t pcf8563_output_init (void)
 output example init More...
 
uint8_t pcf8563_output_deinit (void)
 output example deinit More...
 
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time More...
 
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp More...
 
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone More...
 
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time More...
 
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp More...
 
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone More...
 
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time More...
 
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output More...
 
uint8_t pcf8563_output_disable (void)
 output example disable the output More...
 
uint8_t pcf8563_timer_irq_handler (void)
 timer example irq More...
 
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init More...
 
uint8_t pcf8563_timer_deinit (void)
 timer example deinit More...
 
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer More...
 
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer More...
 
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time More...
 
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp More...
 
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone More...
 
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time More...
 
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp More...
 
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone More...
 
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time More...
 
uint8_t pcf8563_alarm_irq_handler (void)
 alarm example irq
uint8_t pcf8563_alarm_init (void(*callback)(uint8_t type))
 alarm example init
uint8_t pcf8563_alarm_deinit (void)
 alarm example deinit
uint8_t pcf8563_alarm_enable (pcf8563_alarm_param_t *param)
 alarm example enable the alarm
uint8_t pcf8563_alarm_disable (void)
 alarm example disable the alarm
uint8_t pcf8563_alarm_set_time (pcf8563_time_t *t)
 alarm example set the time
uint8_t pcf8563_alarm_set_timestamp (time_t timestamp)
 alarm example set the time by a unix timestamp
uint8_t pcf8563_alarm_set_timestamp_time_zone (int8_t zone)
 alarm example set the local time zone
uint8_t pcf8563_alarm_get_time (pcf8563_time_t *t)
 alarm example get the time
uint8_t pcf8563_alarm_get_timestamp (time_t *timestamp)
 alarm example get the time in a unix timestamp
uint8_t pcf8563_alarm_get_timestamp_time_zone (int8_t *zone)
 alarm example get the local time zone
uint8_t pcf8563_alarm_get_ascii_time (char *buf, uint8_t len)
 alarm example get the ascii time
uint8_t pcf8563_basic_init (void)
 basic example init
uint8_t pcf8563_basic_deinit (void)
 basic example deinit
uint8_t pcf8563_basic_set_time (pcf8563_time_t *t)
 basic example set the time
uint8_t pcf8563_basic_set_timestamp (time_t timestamp)
 basic example set the time by a unix timestamp
uint8_t pcf8563_basic_set_timestamp_time_zone (int8_t zone)
 basic example set the local time zone
uint8_t pcf8563_basic_get_time (pcf8563_time_t *t)
 basic example get the time
uint8_t pcf8563_basic_get_timestamp (time_t *timestamp)
 basic example get the time in a unix timestamp
uint8_t pcf8563_basic_get_timestamp_time_zone (int8_t *zone)
 basic example get the local time zone
uint8_t pcf8563_basic_get_ascii_time (char *buf, uint8_t len)
 basic example get the ascii time
uint8_t pcf8563_output_init (void)
 output example init
uint8_t pcf8563_output_deinit (void)
 output example deinit
uint8_t pcf8563_output_set_time (pcf8563_time_t *t)
 output example set the time
uint8_t pcf8563_output_set_timestamp (time_t timestamp)
 output example set the time by a unix timestamp
uint8_t pcf8563_output_set_timestamp_time_zone (int8_t zone)
 output example set the local time zone
uint8_t pcf8563_output_get_time (pcf8563_time_t *t)
 output example get the time
uint8_t pcf8563_output_get_timestamp (time_t *timestamp)
 output example get the time in a unix timestamp
uint8_t pcf8563_output_get_timestamp_time_zone (int8_t *zone)
 output example get the local time zone
uint8_t pcf8563_output_get_ascii_time (char *buf, uint8_t len)
 output example get the ascii time
uint8_t pcf8563_output_enable (pcf8563_clock_out_t clk)
 output example enable the output
uint8_t pcf8563_output_disable (void)
 output example disable the output
uint8_t pcf8563_timer_irq_handler (void)
 timer example irq
uint8_t pcf8563_timer_init (void(*callback)(uint8_t type))
 timer example init
uint8_t pcf8563_timer_deinit (void)
 timer example deinit
uint8_t pcf8563_timer_enable (pcf8563_timer_freq_t freq, uint8_t value, pcf8563_interrupt_mode_t mode)
 timer example enable the timer
uint8_t pcf8563_timer_disable (void)
 timer example disable the timer
uint8_t pcf8563_timer_set_time (pcf8563_time_t *t)
 timer example set the time
uint8_t pcf8563_timer_set_timestamp (time_t timestamp)
 timer example set the time by a unix timestamp
uint8_t pcf8563_timer_set_timestamp_time_zone (int8_t zone)
 timer example set the local time zone
uint8_t pcf8563_timer_get_time (pcf8563_time_t *t)
 timer example get the time
uint8_t pcf8563_timer_get_timestamp (time_t *timestamp)
 timer example get the time in a unix timestamp
uint8_t pcf8563_timer_get_timestamp_time_zone (int8_t *zone)
 timer example get the local time zone
uint8_t pcf8563_timer_get_ascii_time (char *buf, uint8_t len)
 timer example get the ascii time
-

Detailed Description

+

Detailed Description

pcf8563 example driver modules

-

Typedef Documentation

- -

◆ pcf8563_alarm_param_t

+

Typedef Documentation

+ +

◆ pcf8563_alarm_param_t

@@ -262,9 +223,9 @@

Function Documentation

- -

◆ pcf8563_alarm_deinit()

+

Function Documentation

+ +

◆ pcf8563_alarm_deinit()

@@ -272,8 +233,7 @@

uint8_t pcf8563_alarm_deinit ( - void  - ) + void ) @@ -288,11 +248,16 @@

Note
none

Definition at line 210 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_disable()

+ +

◆ pcf8563_alarm_disable()

@@ -300,8 +265,7 @@

uint8_t pcf8563_alarm_disable ( - void  - ) + void ) @@ -316,11 +280,16 @@

Note
none

Definition at line 477 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_enable()

+ +

◆ pcf8563_alarm_enable()

@@ -328,8 +297,7 @@

uint8_t pcf8563_alarm_enable ( - pcf8563_alarm_param_t *  - param) + pcf8563_alarm_param_t * param) @@ -338,7 +306,7 @@

Parameters
- +
[in]*parampointer to a pcf8563_alarm_param_t structure
[in]*parampointer to a pcf8563_alarm_param_t structure
@@ -350,11 +318,16 @@

Note
none

Definition at line 383 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_get_ascii_time()

+ +

◆ pcf8563_alarm_get_ascii_time()

@@ -395,11 +361,16 @@

Note
none

Definition at line 360 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_get_time()

+ +

◆ pcf8563_alarm_get_time()

@@ -407,8 +378,7 @@

uint8_t pcf8563_alarm_get_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -429,11 +399,16 @@

Note
none

Definition at line 294 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_get_timestamp()

+ +

◆ pcf8563_alarm_get_timestamp()

@@ -441,8 +416,7 @@

uint8_t pcf8563_alarm_get_timestamp ( - time_t *  - timestamp) + time_t * timestamp) @@ -463,11 +437,16 @@

Note
none

Definition at line 313 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_get_timestamp_time_zone()

+ +

◆ pcf8563_alarm_get_timestamp_time_zone()

@@ -475,8 +454,7 @@

uint8_t pcf8563_alarm_get_timestamp_time_zone ( - int8_t *  - zone) + int8_t * zone) @@ -499,8 +477,8 @@

-

◆ pcf8563_alarm_init()

+ +

◆ pcf8563_alarm_init()

@@ -508,8 +486,7 @@

uint8_t pcf8563_alarm_init ( - void(*)(uint8_t type)  - callback) + void(* callback )(uint8_t type)) @@ -530,11 +507,16 @@

Note
none

Definition at line 67 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_irq_handler()

+ +

◆ pcf8563_alarm_irq_handler()

@@ -542,8 +524,7 @@

uint8_t pcf8563_alarm_irq_handler ( - void  - ) + void ) @@ -558,11 +539,16 @@

Note
none

Definition at line 49 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_set_time()

+ +

◆ pcf8563_alarm_set_time()

@@ -570,8 +556,7 @@

uint8_t pcf8563_alarm_set_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -592,11 +577,16 @@

Note
none

Definition at line 228 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_set_timestamp()

+ +

◆ pcf8563_alarm_set_timestamp()

@@ -604,8 +594,7 @@

uint8_t pcf8563_alarm_set_timestamp ( - time_t  - timestamp) + time_t timestamp) @@ -626,11 +615,16 @@

Note
none

Definition at line 247 of file driver_pcf8563_alarm.c.

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

- -

◆ pcf8563_alarm_set_timestamp_time_zone()

+ +

◆ pcf8563_alarm_set_timestamp_time_zone()

@@ -638,8 +632,7 @@

uint8_t pcf8563_alarm_set_timestamp_time_zone ( - int8_t  - zone) + int8_t zone) @@ -662,8 +655,8 @@

-

◆ pcf8563_basic_deinit()

+ +

◆ pcf8563_basic_deinit()

@@ -671,8 +664,7 @@

uint8_t pcf8563_basic_deinit ( - void  - ) + void ) @@ -687,11 +679,16 @@

Note
none

Definition at line 192 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_get_ascii_time()

+ +

◆ pcf8563_basic_get_ascii_time()

@@ -732,11 +722,16 @@

Note
none

Definition at line 342 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_get_time()

+ +

◆ pcf8563_basic_get_time()

@@ -744,8 +739,7 @@

uint8_t pcf8563_basic_get_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -766,11 +760,16 @@

Note
none

Definition at line 276 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_get_timestamp()

+ +

◆ pcf8563_basic_get_timestamp()

@@ -778,8 +777,7 @@

uint8_t pcf8563_basic_get_timestamp ( - time_t *  - timestamp) + time_t * timestamp) @@ -800,11 +798,16 @@

Note
none

Definition at line 295 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_get_timestamp_time_zone()

+ +

◆ pcf8563_basic_get_timestamp_time_zone()

@@ -812,8 +815,7 @@

uint8_t pcf8563_basic_get_timestamp_time_zone ( - int8_t *  - zone) + int8_t * zone) @@ -836,8 +838,8 @@

-

◆ pcf8563_basic_init()

+ +

◆ pcf8563_basic_init()

@@ -845,8 +847,7 @@

uint8_t pcf8563_basic_init ( - void  - ) + void ) @@ -861,11 +862,16 @@

Note
none

Definition at line 49 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_set_time()

+ +

◆ pcf8563_basic_set_time()

@@ -873,8 +879,7 @@

uint8_t pcf8563_basic_set_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -895,11 +900,16 @@

Note
none

Definition at line 210 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_set_timestamp()

+ +

◆ pcf8563_basic_set_timestamp()

@@ -907,8 +917,7 @@

uint8_t pcf8563_basic_set_timestamp ( - time_t  - timestamp) + time_t timestamp) @@ -929,11 +938,16 @@

Note
none

Definition at line 229 of file driver_pcf8563_basic.c.

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

- -

◆ pcf8563_basic_set_timestamp_time_zone()

+ +

◆ pcf8563_basic_set_timestamp_time_zone()

@@ -941,8 +955,7 @@

uint8_t pcf8563_basic_set_timestamp_time_zone ( - int8_t  - zone) + int8_t zone) @@ -965,8 +978,8 @@

-

◆ pcf8563_output_deinit()

+ +

◆ pcf8563_output_deinit()

@@ -974,8 +987,7 @@

uint8_t pcf8563_output_deinit ( - void  - ) + void ) @@ -990,11 +1002,16 @@

Note
none

Definition at line 192 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_disable()

+ +

◆ pcf8563_output_disable()

@@ -1002,8 +1019,7 @@

uint8_t pcf8563_output_disable ( - void  - ) + void ) @@ -1018,11 +1034,16 @@

Note
none

Definition at line 393 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_enable()

+ +

◆ pcf8563_output_enable()

@@ -1030,8 +1051,7 @@

uint8_t pcf8563_output_enable ( - pcf8563_clock_out_t  - clk) + pcf8563_clock_out_t clk) @@ -1052,11 +1072,16 @@

Note
none

Definition at line 365 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_get_ascii_time()

+ +

◆ pcf8563_output_get_ascii_time()

@@ -1097,11 +1115,16 @@

Note
none

Definition at line 342 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_get_time()

+ +

◆ pcf8563_output_get_time()

@@ -1109,8 +1132,7 @@

uint8_t pcf8563_output_get_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -1131,11 +1153,16 @@

Note
none

Definition at line 276 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_get_timestamp()

+ +

◆ pcf8563_output_get_timestamp()

@@ -1143,8 +1170,7 @@

uint8_t pcf8563_output_get_timestamp ( - time_t *  - timestamp) + time_t * timestamp) @@ -1165,11 +1191,16 @@

Note
none

Definition at line 295 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_get_timestamp_time_zone()

+ +

◆ pcf8563_output_get_timestamp_time_zone()

@@ -1177,8 +1208,7 @@

uint8_t pcf8563_output_get_timestamp_time_zone ( - int8_t *  - zone) + int8_t * zone) @@ -1201,8 +1231,8 @@

-

◆ pcf8563_output_init()

+ +

◆ pcf8563_output_init()

@@ -1210,8 +1240,7 @@

uint8_t pcf8563_output_init ( - void  - ) + void ) @@ -1226,11 +1255,16 @@

Note
none

Definition at line 49 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_set_time()

+ +

◆ pcf8563_output_set_time()

@@ -1238,8 +1272,7 @@

uint8_t pcf8563_output_set_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -1260,11 +1293,16 @@

Note
none

Definition at line 210 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_set_timestamp()

+ +

◆ pcf8563_output_set_timestamp()

@@ -1272,8 +1310,7 @@

uint8_t pcf8563_output_set_timestamp ( - time_t  - timestamp) + time_t timestamp) @@ -1294,11 +1331,16 @@

Note
none

Definition at line 229 of file driver_pcf8563_output.c.

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

- -

◆ pcf8563_output_set_timestamp_time_zone()

+ +

◆ pcf8563_output_set_timestamp_time_zone()

@@ -1306,8 +1348,7 @@

uint8_t pcf8563_output_set_timestamp_time_zone ( - int8_t  - zone) + int8_t zone) @@ -1330,8 +1371,8 @@

-

◆ pcf8563_timer_deinit()

+ +

◆ pcf8563_timer_deinit()

@@ -1339,8 +1380,7 @@

uint8_t pcf8563_timer_deinit ( - void  - ) + void ) @@ -1355,11 +1395,16 @@

Note
none

Definition at line 210 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_disable()

+ +

◆ pcf8563_timer_disable()

@@ -1367,8 +1412,7 @@

uint8_t pcf8563_timer_disable ( - void  - ) + void ) @@ -1383,11 +1427,16 @@

Note
none

Definition at line 440 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_enable()

+ +

◆ pcf8563_timer_enable()

@@ -1395,25 +1444,17 @@

uint8_t pcf8563_timer_enable ( - pcf8563_timer_freq_t  - freq, + pcf8563_timer_freq_t freq, - uint8_t  - value, + uint8_t value, - pcf8563_interrupt_mode_t  - mode  - - - - ) - + pcf8563_interrupt_mode_t mode )

@@ -1435,11 +1476,16 @@

Note
none

Definition at line 385 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_get_ascii_time()

+ +

◆ pcf8563_timer_get_ascii_time()

@@ -1480,11 +1519,16 @@

Note
none

Definition at line 360 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_get_time()

+ +

◆ pcf8563_timer_get_time()

@@ -1492,8 +1536,7 @@

uint8_t pcf8563_timer_get_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -1514,11 +1557,16 @@

Note
none

Definition at line 294 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_get_timestamp()

+ +

◆ pcf8563_timer_get_timestamp()

@@ -1526,8 +1574,7 @@

uint8_t pcf8563_timer_get_timestamp ( - time_t *  - timestamp) + time_t * timestamp) @@ -1548,11 +1595,16 @@

Note
none

Definition at line 313 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_get_timestamp_time_zone()

+ +

◆ pcf8563_timer_get_timestamp_time_zone()

@@ -1560,8 +1612,7 @@

uint8_t pcf8563_timer_get_timestamp_time_zone ( - int8_t *  - zone) + int8_t * zone) @@ -1584,8 +1635,8 @@

-

◆ pcf8563_timer_init()

+ +

◆ pcf8563_timer_init()

@@ -1593,8 +1644,7 @@

uint8_t pcf8563_timer_init ( - void(*)(uint8_t type)  - callback) + void(* callback )(uint8_t type)) @@ -1615,11 +1665,16 @@

Note
none

Definition at line 67 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_irq_handler()

+ +

◆ pcf8563_timer_irq_handler()

@@ -1627,8 +1682,7 @@

uint8_t pcf8563_timer_irq_handler ( - void  - ) + void ) @@ -1643,11 +1697,16 @@

Note
none

Definition at line 49 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_set_time()

+ +

◆ pcf8563_timer_set_time()

@@ -1655,8 +1714,7 @@

uint8_t pcf8563_timer_set_time ( - pcf8563_time_t *  - t) + pcf8563_time_t * t) @@ -1677,11 +1735,16 @@

Note
none

Definition at line 228 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_set_timestamp()

+ +

◆ pcf8563_timer_set_timestamp()

@@ -1689,8 +1752,7 @@

uint8_t pcf8563_timer_set_timestamp ( - time_t  - timestamp) + time_t timestamp) @@ -1711,11 +1773,16 @@

Note
none

Definition at line 247 of file driver_pcf8563_timer.c.

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

- -

◆ pcf8563_timer_set_timestamp_time_zone()

+ +

◆ pcf8563_timer_set_timestamp_time_zone()

diff --git a/doc/html/group__pcf8563__example__driver.md5 b/doc/html/group__pcf8563__example__driver.md5 new file mode 100644 index 0000000..90ed008 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver.md5 @@ -0,0 +1 @@ +f25e662a40685ab65c64d08324f2fdf1 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver.svg b/doc/html/group__pcf8563__example__driver.svg new file mode 100644 index 0000000..24c6984 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver.svg @@ -0,0 +1,37 @@ + + + + + + +pcf8563 example driver function + + +Node2 + + +pcf8563 driver function + + + + + +Node1 + + +pcf8563 example driver + function + + + + + +Node2->Node1 + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.md5 new file mode 100644 index 0000000..bafeec6 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.md5 @@ -0,0 +1 @@ +78571fb64ad907b32b039e1bd559269e \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.svg new file mode 100644 index 0000000..e7f2bf3 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga05ba903840c9bf7345ab2f2697139bd2_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_get_timestamp + + +Node1 + + +pcf8563_basic_get_timestamp + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.md5 new file mode 100644 index 0000000..5e057be --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.md5 @@ -0,0 +1 @@ +13bc3dc3bb7a2e9f566a7ac5c3ad7fc4 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.svg new file mode 100644 index 0000000..7d6946b --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga122645aedcfc67e2c88b626b9dae36ab_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_get_ascii_time + + +Node1 + + +pcf8563_timer_get_ascii_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.md5 new file mode 100644 index 0000000..eea14bf --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.md5 @@ -0,0 +1 @@ +31a9644de963c57d20e3760b63b0fa29 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.svg new file mode 100644 index 0000000..48f09bb --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga146d9f475f1d83f27aaac9cbd8739fb3_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_get_time + + +Node1 + + +pcf8563_timer_get_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.md5 new file mode 100644 index 0000000..abf8c93 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.md5 @@ -0,0 +1 @@ +55bc3e16238a2c930db343d1851a9bd8 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.svg new file mode 100644 index 0000000..b4376ba --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga17bc3f27d390831ec6f5641be830ea10_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_set_time + + +Node1 + + +pcf8563_timer_set_time + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.md5 new file mode 100644 index 0000000..053ca29 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.md5 @@ -0,0 +1 @@ +155b82d79c3a2b8632edfa526ff50c36 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.svg new file mode 100644 index 0000000..98ca48f --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga364782ac1e2948365bbd2bf65c6c3322_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_get_ascii_time + + +Node1 + + +pcf8563_basic_get_ascii_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.md5 new file mode 100644 index 0000000..ddcf940 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.md5 @@ -0,0 +1 @@ +0b5b4b9db96df8263e4a05a9b0b6dce8 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.svg new file mode 100644 index 0000000..881edfa --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga37d256c25ad11e4a680739fab211d38c_cgraph.svg @@ -0,0 +1,58 @@ + + + + + + +pcf8563_output_enable + + +Node1 + + +pcf8563_output_enable + + + + + +Node2 + + +pcf8563_set_clock_out + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node3 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.md5 new file mode 100644 index 0000000..697254f --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.md5 @@ -0,0 +1 @@ +a4a2f17764b5bd9f012a791c9ee438b0 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.svg new file mode 100644 index 0000000..5efc368 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga390c95c027938d7ab244d9a90b6a9b7a_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_set_timestamp + + +Node1 + + +pcf8563_alarm_set_timestamp + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.md5 new file mode 100644 index 0000000..6c72ad7 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.md5 @@ -0,0 +1 @@ +a8e3cb0dff60f9ed32466c511d53d02c \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.svg new file mode 100644 index 0000000..ab78754 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga396d96e32f798a68cfaf5987a0b06f9c_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_get_timestamp + + +Node1 + + +pcf8563_timer_get_timestamp + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.md5 new file mode 100644 index 0000000..1b10cf2 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.md5 @@ -0,0 +1 @@ +530bad696e60450d42d0ce9a321b0a16 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.svg new file mode 100644 index 0000000..cf55c48 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga4c035f7bdcbb40998a0ce9b373987fdb_cgraph.svg @@ -0,0 +1,148 @@ + + + + + + +pcf8563_timer_enable + + +Node1 + + +pcf8563_timer_enable + + + + + +Node2 + + +pcf8563_clear_status + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_deinit + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_set_timer_enable + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_set_timer_freq + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_set_timer_value + + + + + +Node1->Node8 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.md5 new file mode 100644 index 0000000..8402f8d --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.md5 @@ -0,0 +1 @@ +9da6aa792c5651f54d64051d16c258bd \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.svg new file mode 100644 index 0000000..5e22e71 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga5068b67fe16fed396cc92bb740a8f1d6_cgraph.svg @@ -0,0 +1,94 @@ + + + + + + +pcf8563_timer_disable + + +Node1 + + +pcf8563_timer_disable + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_set_timer_enable + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node5 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.md5 new file mode 100644 index 0000000..313671a --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.md5 @@ -0,0 +1 @@ +cecd5fb3d20299466d82fcf6c84cd3ce \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.svg new file mode 100644 index 0000000..c1e0b1e --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga545a2372c74d57ae5616245e3deb7bdc_cgraph.svg @@ -0,0 +1,115 @@ + + + + + + +pcf8563_alarm_disable + + +Node1 + + +pcf8563_alarm_disable + + + + + +Node2 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node6 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.md5 new file mode 100644 index 0000000..715fe78 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.md5 @@ -0,0 +1 @@ +f592baf77027a1cb169f917f1ac12730 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.svg new file mode 100644 index 0000000..1c39800 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga570cef3775e7bd98d4884a2afda54b24_cgraph.svg @@ -0,0 +1,261 @@ + + + + + + +pcf8563_alarm_enable + + +Node1 + + +pcf8563_alarm_enable + + + + + +Node2 + + +pcf8563_clear_status + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_deinit + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_set_day_alarm + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_set_hour_alarm + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_set_interrupt_mode + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_set_minute +_alarm + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_week_alarm + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node14 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.md5 new file mode 100644 index 0000000..30612e5 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.md5 @@ -0,0 +1 @@ +feb48c924f696b6890166b26189c7b1c \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.svg new file mode 100644 index 0000000..07c2136 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga63cb129724c81670afc0542a6310eaf0_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_deinit + + +Node1 + + +pcf8563_basic_deinit + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.md5 new file mode 100644 index 0000000..7680c5f --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.md5 @@ -0,0 +1 @@ +a59546cb637552c8ba9319735af314e9 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.svg new file mode 100644 index 0000000..165b4ae --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga681c0ec6cd8d81d68fdcc7b9c748b57c_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_deinit + + +Node1 + + +pcf8563_timer_deinit + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.md5 new file mode 100644 index 0000000..8acdce2 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.md5 @@ -0,0 +1 @@ +b3c6d4e9f370ffa7b70772901fad6a96 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.svg new file mode 100644 index 0000000..4011fd4 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga6a92be187f79456eea1a82a7e8e0df14_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_output_set_time + + +Node1 + + +pcf8563_output_set_time + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.md5 new file mode 100644 index 0000000..1d24aca --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.md5 @@ -0,0 +1 @@ +2827a9b8bffaf0ccd6f89e09cb879d79 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.svg new file mode 100644 index 0000000..d575bd5 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga709dfaecc0af62f8aa11165c3884359f_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_set_time + + +Node1 + + +pcf8563_alarm_set_time + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.md5 new file mode 100644 index 0000000..d8c99ad --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.md5 @@ -0,0 +1 @@ +c7528407e0f332fbf220e3f8563aa59c \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.svg new file mode 100644 index 0000000..ee48229 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga7f95bb3693ec02ced4ddf7b7acb15190_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_output_disable + + +Node1 + + +pcf8563_output_disable + + + + + +Node2 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.md5 new file mode 100644 index 0000000..2f34961 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.md5 @@ -0,0 +1 @@ +7723a0a145c3514768e96c2fb9d0a494 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.svg new file mode 100644 index 0000000..ff65620 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga88d18766c300193de91ab33d847dd0c3_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_irq_handler + + +Node1 + + +pcf8563_timer_irq_handler + + + + + +Node2 + + +pcf8563_irq_handler + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.md5 new file mode 100644 index 0000000..0be209e --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.md5 @@ -0,0 +1 @@ +fa1d450c09acc896ddf7b0ba3dfbe571 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.svg new file mode 100644 index 0000000..8b6aab0 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga8b3135ee07e6fc2c8d512d8f9831c72e_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_get_time + + +Node1 + + +pcf8563_basic_get_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.md5 new file mode 100644 index 0000000..b1dcdf9 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.md5 @@ -0,0 +1 @@ +53673e0596c2b8dc163b32462e90f694 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.svg new file mode 100644 index 0000000..9be8be2 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga9206004c8b4c1e094b6f506989598972_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_timer_set_timestamp + + +Node1 + + +pcf8563_timer_set_timestamp + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.md5 b/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.md5 new file mode 100644 index 0000000..93d555b --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.md5 @@ -0,0 +1 @@ +a084e81ef67e66a51043af9eb323aa40 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.svg b/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.svg new file mode 100644 index 0000000..f863754 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_ga9e3236190eca6ec2125fa2cdf3eeb751_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_output_get_ascii_time + + +Node1 + + +pcf8563_output_get +_ascii_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.md5 new file mode 100644 index 0000000..246b03e --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.md5 @@ -0,0 +1 @@ +083406495793b77fab04d50ef6334574 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.svg b/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.svg new file mode 100644 index 0000000..35903df --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaa5c4fde9e725ec85f29673ac9ac1df0f_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_output_set_timestamp + + +Node1 + + +pcf8563_output_set +_timestamp + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.md5 new file mode 100644 index 0000000..47d8cb9 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.md5 @@ -0,0 +1 @@ +e16db80c3b22b67f38d150e9eeb5520f \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.svg b/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.svg new file mode 100644 index 0000000..1d02cae --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaaa92288c1898f5616f62a6486092228f_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_irq_handler + + +Node1 + + +pcf8563_alarm_irq_handler + + + + + +Node2 + + +pcf8563_irq_handler + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.md5 new file mode 100644 index 0000000..52b9f76 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.md5 @@ -0,0 +1 @@ +9b8d16b24ce0d6d54de7088eb5f3f261 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.svg b/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.svg new file mode 100644 index 0000000..3a0f248 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab0ca5703971cfb2bac32aa100ba751c4_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_set_timestamp + + +Node1 + + +pcf8563_basic_set_timestamp + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.md5 new file mode 100644 index 0000000..aabd089 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.md5 @@ -0,0 +1 @@ +87a840f11ef0e9a0f46478bbbdc02b23 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.svg b/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.svg new file mode 100644 index 0000000..0600d69 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab5d096b019600da0dec2725771d545d5_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_output_get_timestamp + + +Node1 + + +pcf8563_output_get +_timestamp + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.md5 new file mode 100644 index 0000000..1b01c30 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.md5 @@ -0,0 +1 @@ +a7318123db2ab4c386626a8b6db952ae \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.svg b/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.svg new file mode 100644 index 0000000..f3acf1f --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gab77f313ac561c74b2f2deb47b98404b6_cgraph.svg @@ -0,0 +1,372 @@ + + + + + + +pcf8563_alarm_init + + +Node1 + + +pcf8563_alarm_init + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_init + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_iic_init + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic_read + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_test_mode + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_timer_enable + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node20 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.md5 new file mode 100644 index 0000000..918d56d --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.md5 @@ -0,0 +1 @@ +307581340bbc904b4b5d861551b5a468 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.svg b/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.svg new file mode 100644 index 0000000..039a5a6 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gac8b9c723d27b6b39c4645f73c831b919_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_get_ascii_time + + +Node1 + + +pcf8563_alarm_get_ascii_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.md5 new file mode 100644 index 0000000..ee15c60 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.md5 @@ -0,0 +1 @@ +97bcff08330c5d9b444189e42eb59d05 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.svg b/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.svg new file mode 100644 index 0000000..df8a762 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gac8dc1cdaf433f0b8649e56104952bab3_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_basic_set_time + + +Node1 + + +pcf8563_basic_set_time + + + + + +Node2 + + +pcf8563_set_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.md5 new file mode 100644 index 0000000..2acea2b --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.md5 @@ -0,0 +1 @@ +eae77ba6a0ff406942eb00fdacd48a61 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.svg b/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.svg new file mode 100644 index 0000000..bb62a87 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gacd1359dd8997be56914a47855cfe7beb_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_get_timestamp + + +Node1 + + +pcf8563_alarm_get_timestamp + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.md5 new file mode 100644 index 0000000..cff199f --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.md5 @@ -0,0 +1 @@ +2c3ef99eb6fe517112f8159df84a6275 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.svg b/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.svg new file mode 100644 index 0000000..5219f8d --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad4088942e64f38505f433092ae3d561c_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_output_get_time + + +Node1 + + +pcf8563_output_get_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.md5 new file mode 100644 index 0000000..fd04cfe --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.md5 @@ -0,0 +1 @@ +af79ec5f36d54138d1dd63c28812a2f6 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.svg b/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.svg new file mode 100644 index 0000000..f1e0c8a --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad7cf79bfb26863cc883d9013d56dbc5f_cgraph.svg @@ -0,0 +1,400 @@ + + + + + + +pcf8563_output_init + + +Node1 + + +pcf8563_output_init + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_init + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_iic_init + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic_read + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_interface_receive +_callback + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_test_mode + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_timer_enable + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node21 + + + + + + + + +Node10->Node4 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.md5 new file mode 100644 index 0000000..2d0d493 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.md5 @@ -0,0 +1 @@ +82b6cc4ccabffef8091b2fa1e604af7d \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.svg b/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.svg new file mode 100644 index 0000000..b43c781 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gad883f150d3f84b8aa29ddb966626dbf9_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_deinit + + +Node1 + + +pcf8563_alarm_deinit + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.md5 new file mode 100644 index 0000000..ef15a0d --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.md5 @@ -0,0 +1 @@ +b2ee25d4f58a9973b9f043e0545a736f \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.svg b/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.svg new file mode 100644 index 0000000..95a73b2 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gae1bb65bc26a797419501184cd3d962f2_cgraph.svg @@ -0,0 +1,372 @@ + + + + + + +pcf8563_timer_init + + +Node1 + + +pcf8563_timer_init + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_init + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_iic_init + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic_read + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_test_mode + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_timer_enable + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node20 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.md5 new file mode 100644 index 0000000..8924dab --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.md5 @@ -0,0 +1 @@ +41a9aa34b5f69260611796e99f97c578 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.svg b/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.svg new file mode 100644 index 0000000..e57a78a --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gae9043271954793f57fb6111ff1963c59_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_output_deinit + + +Node1 + + +pcf8563_output_deinit + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.md5 new file mode 100644 index 0000000..ac6ab57 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.md5 @@ -0,0 +1 @@ +8a4cea4e5525d679469b43c3e1adf465 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.svg b/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.svg new file mode 100644 index 0000000..84a6e6c --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaea5a3e5ccaa110e6a3737bb65a83131f_cgraph.svg @@ -0,0 +1,400 @@ + + + + + + +pcf8563_basic_init + + +Node1 + + +pcf8563_basic_init + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_init + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_iic_init + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic_read + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_interface_receive +_callback + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_test_mode + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_timer_enable + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node21 + + + + + + + + +Node10->Node4 + + + + + + + + diff --git a/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.md5 b/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.md5 new file mode 100644 index 0000000..e396b2d --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.md5 @@ -0,0 +1 @@ +c87a817019e0cccf5b9ef809525579d0 \ No newline at end of file diff --git a/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.svg b/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.svg new file mode 100644 index 0000000..2cc9c02 --- /dev/null +++ b/doc/html/group__pcf8563__example__driver_gaf198537d5057eccbf4040929099b6e1d_cgraph.svg @@ -0,0 +1,39 @@ + + + + + + +pcf8563_alarm_get_time + + +Node1 + + +pcf8563_alarm_get_time + + + + + +Node2 + + +pcf8563_get_time + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__extern__driver.html b/doc/html/group__pcf8563__extern__driver.html index 1bc2afa..03477e4 100644 --- a/doc/html/group__pcf8563__extern__driver.html +++ b/doc/html/group__pcf8563__extern__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 extern driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +

@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 extern driver function
+
pcf8563 extern driver function

pcf8563 extern driver modules More...

+
+Collaboration diagram for pcf8563 extern driver function:
+
+
+
- - - - - - - + + + +

+

Functions

uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register More...
 
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register More...
 
uint8_t pcf8563_set_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 set the chip register
uint8_t pcf8563_get_reg (pcf8563_handle_t *handle, uint8_t reg, uint8_t *buf, uint16_t len)
 get the chip register
-

Detailed Description

+

Detailed Description

pcf8563 extern driver modules

-

Function Documentation

- -

◆ pcf8563_get_reg()

+

Function Documentation

+ +

◆ pcf8563_get_reg()

@@ -115,31 +122,22 @@

uint8_t pcf8563_get_reg ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - reg, + uint8_t reg, - uint8_t *  - buf, + uint8_t * buf, - uint16_t  - len  - - - - ) - + uint16_t len )

@@ -167,8 +165,8 @@

-

◆ pcf8563_set_reg()

+ +

◆ pcf8563_set_reg()

@@ -176,31 +174,22 @@

uint8_t pcf8563_set_reg ( - pcf8563_handle_t *  - handle, + pcf8563_handle_t * handle, - uint8_t  - reg, + uint8_t reg, - uint8_t *  - buf, + uint8_t * buf, - uint16_t  - len  - - - - ) - + uint16_t len )

@@ -230,10 +219,18 @@

+ + +

+
diff --git a/doc/html/group__pcf8563__extern__driver.md5 b/doc/html/group__pcf8563__extern__driver.md5 new file mode 100644 index 0000000..2592cd7 --- /dev/null +++ b/doc/html/group__pcf8563__extern__driver.md5 @@ -0,0 +1 @@ +adc42a318588da88201457ff45a53942 \ No newline at end of file diff --git a/doc/html/group__pcf8563__extern__driver.svg b/doc/html/group__pcf8563__extern__driver.svg new file mode 100644 index 0000000..a82edda --- /dev/null +++ b/doc/html/group__pcf8563__extern__driver.svg @@ -0,0 +1,37 @@ + + + + + + +pcf8563 extern driver function + + +Node2 + + +pcf8563 driver function + + + + + +Node1 + + +pcf8563 extern driver + function + + + + + +Node2->Node1 + + + + + diff --git a/doc/html/group__pcf8563__interface__driver.html b/doc/html/group__pcf8563__interface__driver.html index b78daa5..fba63ec 100644 --- a/doc/html/group__pcf8563__interface__driver.html +++ b/doc/html/group__pcf8563__interface__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 interface driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +

@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 interface driver function
+
pcf8563 interface driver function

pcf8563 interface driver modules More...

+
+Collaboration diagram for pcf8563 interface driver function:
+
+
+
- - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init More...
 
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit More...
 
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read More...
 
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write More...
 
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms More...
 
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data More...
 
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback More...
 
uint8_t pcf8563_interface_iic_init (void)
 interface iic bus init
uint8_t pcf8563_interface_iic_deinit (void)
 interface iic bus deinit
uint8_t pcf8563_interface_iic_read (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus read
uint8_t pcf8563_interface_iic_write (uint8_t addr, uint8_t reg, uint8_t *buf, uint16_t len)
 interface iic bus write
void pcf8563_interface_delay_ms (uint32_t ms)
 interface delay ms
void pcf8563_interface_debug_print (const char *const fmt,...)
 interface print format data
void pcf8563_interface_receive_callback (uint8_t type)
 interface receive callback
-

Detailed Description

+

Detailed Description

pcf8563 interface driver modules

-

Function Documentation

- -

◆ pcf8563_interface_debug_print()

+

Function Documentation

+ +

◆ pcf8563_interface_debug_print()

@@ -160,8 +155,8 @@

-

◆ pcf8563_interface_delay_ms()

+ +

◆ pcf8563_interface_delay_ms()

@@ -169,8 +164,7 @@

void pcf8563_interface_delay_ms ( - uint32_t  - ms) + uint32_t ms) @@ -189,8 +183,8 @@

-

◆ pcf8563_interface_iic_deinit()

+ +

◆ pcf8563_interface_iic_deinit()

@@ -198,8 +192,7 @@

uint8_t pcf8563_interface_iic_deinit ( - void  - ) + void ) @@ -217,8 +210,8 @@

-

◆ pcf8563_interface_iic_init()

+ +

◆ pcf8563_interface_iic_init()

@@ -226,8 +219,7 @@

uint8_t pcf8563_interface_iic_init ( - void  - ) + void ) @@ -245,8 +237,8 @@

-

◆ pcf8563_interface_iic_read()

+ +

◆ pcf8563_interface_iic_read()

@@ -304,8 +287,8 @@

-

◆ pcf8563_interface_iic_write()

+ +

◆ pcf8563_interface_iic_write()

@@ -363,8 +337,8 @@

-

◆ pcf8563_interface_receive_callback()

+ +

◆ pcf8563_interface_receive_callback()

@@ -372,8 +346,7 @@

void pcf8563_interface_receive_callback ( - uint8_t  - type) + uint8_t type) @@ -389,15 +362,28 @@

Note
none

Definition at line 120 of file driver_pcf8563_interface_template.c.

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

+ +
diff --git a/doc/html/group__pcf8563__interface__driver.md5 b/doc/html/group__pcf8563__interface__driver.md5 new file mode 100644 index 0000000..264fa4f --- /dev/null +++ b/doc/html/group__pcf8563__interface__driver.md5 @@ -0,0 +1 @@ +ff8d70906071e50dbfe8cacdff7e19f7 \ No newline at end of file diff --git a/doc/html/group__pcf8563__interface__driver.svg b/doc/html/group__pcf8563__interface__driver.svg new file mode 100644 index 0000000..fc23a08 --- /dev/null +++ b/doc/html/group__pcf8563__interface__driver.svg @@ -0,0 +1,37 @@ + + + + + + +pcf8563 interface driver function + + +Node2 + + +pcf8563 driver function + + + + + +Node1 + + +pcf8563 interface driver + function + + + + + +Node2->Node1 + + + + + diff --git a/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.md5 b/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.md5 new file mode 100644 index 0000000..d63590b --- /dev/null +++ b/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.md5 @@ -0,0 +1 @@ +469afd816875a7a376a8ca0a8c9d341f \ No newline at end of file diff --git a/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.svg b/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.svg new file mode 100644 index 0000000..53b8cc1 --- /dev/null +++ b/doc/html/group__pcf8563__interface__driver_gacf3583de504d5b8be618bdedf0a0efe4_cgraph.svg @@ -0,0 +1,41 @@ + + + + + + +pcf8563_interface_receive_callback + + +Node1 + + +pcf8563_interface_receive +_callback + + + + + +Node2 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__link__driver.html b/doc/html/group__pcf8563__link__driver.html index 84b9faa..1d0ecc1 100644 --- a/doc/html/group__pcf8563__link__driver.html +++ b/doc/html/group__pcf8563__link__driver.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: pcf8563 link driver function + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 link driver function
+
pcf8563 link driver function

pcf8563 link driver modules More...

+
+Collaboration diagram for pcf8563 link driver function:
+
+
+
- - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + +

+

Macros

#define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE)   memset(HANDLE, 0, sizeof(STRUCTURE))
 initialize pcf8563_handle_t structure More...
 
#define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC)   (HANDLE)->iic_init = FUC
 link iic_init function More...
 
#define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC)   (HANDLE)->iic_deinit = FUC
 link iic_deinit function More...
 
#define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC)   (HANDLE)->iic_read = FUC
 link iic_read function More...
 
#define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC)   (HANDLE)->iic_write = FUC
 link iic_write function More...
 
#define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC)   (HANDLE)->delay_ms = FUC
 link delay_ms function More...
 
#define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC)   (HANDLE)->debug_print = FUC
 link debug_print function More...
 
#define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC)   (HANDLE)->receive_callback = FUC
 link receive_callback function More...
 
#define DRIVER_PCF8563_LINK_INIT(HANDLE, STRUCTURE)
 initialize pcf8563_handle_t structure
#define DRIVER_PCF8563_LINK_IIC_INIT(HANDLE, FUC)
 link iic_init function
#define DRIVER_PCF8563_LINK_IIC_DEINIT(HANDLE, FUC)
 link iic_deinit function
#define DRIVER_PCF8563_LINK_IIC_READ(HANDLE, FUC)
 link iic_read function
#define DRIVER_PCF8563_LINK_IIC_WRITE(HANDLE, FUC)
 link iic_write function
#define DRIVER_PCF8563_LINK_DELAY_MS(HANDLE, FUC)
 link delay_ms function
#define DRIVER_PCF8563_LINK_DEBUG_PRINT(HANDLE, FUC)
 link debug_print function
#define DRIVER_PCF8563_LINK_RECEIVE_CALLBACK(HANDLE, FUC)
 link receive_callback function
-

Detailed Description

+

Detailed Description

pcf8563 link driver modules

-

Macro Definition Documentation

- -

◆ DRIVER_PCF8563_LINK_DEBUG_PRINT

+

Macro Definition Documentation

+ +

◆ DRIVER_PCF8563_LINK_DEBUG_PRINT

- -

initialize pcf8563_handle_t structure

+Value:
memset(HANDLE, 0, sizeof(STRUCTURE))
+
+

initialize pcf8563_handle_t structure

Parameters
- +
[in]HANDLEpointer to a pcf8563 handle structure
[in]STRUCTUREpcf8563_handle_t
[in]STRUCTUREpcf8563_handle_t
@@ -404,8 +363,8 @@

-

◆ DRIVER_PCF8563_LINK_RECEIVE_CALLBACK

+ +

◆ DRIVER_PCF8563_LINK_RECEIVE_CALLBACK

- + + +
@@ -64,10 +65,9 @@

+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
- -
-
pcf8563 test driver function
+
pcf8563 test driver function

pcf8563 test driver modules More...

+
+Collaboration diagram for pcf8563 test driver function:
+
+
+
- - - - - - - - - - - - - - - - - - - + + + + + + + + + + + +

+

Functions

uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq More...
 
uint8_t pcf8563_alarm_test (void)
 alarm test More...
 
uint8_t pcf8563_output_test (uint32_t times)
 output test More...
 
uint8_t pcf8563_register_test (void)
 register test More...
 
uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq More...
 
uint8_t pcf8563_timer_test (void)
 timer test More...
 
uint8_t pcf8563_alarm_test_irq_handler (void)
 alarm test irq
uint8_t pcf8563_alarm_test (void)
 alarm test
uint8_t pcf8563_output_test (uint32_t times)
 output test
uint8_t pcf8563_register_test (void)
 register test
uint8_t pcf8563_timer_test_irq_handler (void)
 timer test irq
uint8_t pcf8563_timer_test (void)
 timer test
-

Detailed Description

+

Detailed Description

pcf8563 test driver modules

-

Function Documentation

- -

◆ pcf8563_alarm_test()

+

Function Documentation

+ +

◆ pcf8563_alarm_test()

@@ -127,8 +130,7 @@

uint8_t pcf8563_alarm_test ( - void  - ) + void ) @@ -143,11 +145,16 @@

Note
none

Definition at line 98 of file driver_pcf8563_alarm_test.c.

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

- -

◆ pcf8563_alarm_test_irq_handler()

+ +

◆ pcf8563_alarm_test_irq_handler()

@@ -155,8 +162,7 @@

uint8_t pcf8563_alarm_test_irq_handler ( - void  - ) + void ) @@ -171,11 +177,16 @@

Note
none

Definition at line 81 of file driver_pcf8563_alarm_test.c.

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

- -

◆ pcf8563_output_test()

+ +

◆ pcf8563_output_test()

@@ -183,8 +194,7 @@

uint8_t pcf8563_output_test ( - uint32_t  - times) + uint32_t times) @@ -205,11 +215,16 @@

Note
none

Definition at line 50 of file driver_pcf8563_output_test.c.

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

- -

◆ pcf8563_register_test()

+ +

◆ pcf8563_register_test()

@@ -217,8 +232,7 @@

uint8_t pcf8563_register_test ( - void  - ) + void ) @@ -233,11 +247,16 @@

Note
none

Definition at line 49 of file driver_pcf8563_register_test.c.

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

- -

◆ pcf8563_timer_test()

+ +

◆ pcf8563_timer_test()

@@ -245,8 +264,7 @@

uint8_t pcf8563_timer_test ( - void  - ) + void ) @@ -261,11 +279,16 @@

Note
none

Definition at line 98 of file driver_pcf8563_timer_test.c.

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

- -

◆ pcf8563_timer_test_irq_handler()

+ +

◆ pcf8563_timer_test_irq_handler()

@@ -273,8 +296,7 @@

uint8_t pcf8563_timer_test_irq_handler ( - void  - ) + void ) @@ -289,15 +311,28 @@

Note
none

Definition at line 81 of file driver_pcf8563_timer_test.c.

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

+ +
diff --git a/doc/html/group__pcf8563__test__driver.md5 b/doc/html/group__pcf8563__test__driver.md5 new file mode 100644 index 0000000..5bd721a --- /dev/null +++ b/doc/html/group__pcf8563__test__driver.md5 @@ -0,0 +1 @@ +b9367079af86277c64d9d7a81772dcae \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver.svg b/doc/html/group__pcf8563__test__driver.svg new file mode 100644 index 0000000..b7e01d5 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver.svg @@ -0,0 +1,37 @@ + + + + + + +pcf8563 test driver function + + +Node2 + + +pcf8563 driver function + + + + + +Node1 + + +pcf8563 test driver + function + + + + + +Node2->Node1 + + + + + diff --git a/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.md5 b/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.md5 new file mode 100644 index 0000000..34a4274 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.md5 @@ -0,0 +1 @@ +bc62ba7eb115bef4d0fc9ad32db8cddf \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.svg b/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.svg new file mode 100644 index 0000000..1a5f74b --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga3be8782d213029cd2e59de82da0f3880_cgraph.svg @@ -0,0 +1,463 @@ + + + + + + +pcf8563_alarm_test + + +Node1 + + +pcf8563_alarm_test + + + + + +Node2 + + +pcf8563_clear_status + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_deinit + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_get_time + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_info + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_init + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_interface_iic_init + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_interface_iic_read + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_interrupt_mode + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_minute +_alarm + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node21 + + + + + + + + +Node22 + + +pcf8563_set_test_mode + + + + + +Node1->Node22 + + + + + + + + +Node23 + + +pcf8563_set_time + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node25 + + + + + + + + diff --git a/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.md5 b/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.md5 new file mode 100644 index 0000000..f8ffbfd --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.md5 @@ -0,0 +1 @@ +44a5b842ecef44c037d1f96a6f1659fd \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.svg b/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.svg new file mode 100644 index 0000000..8cea0b1 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga59f05168757980c3db9b60bb94afec9a_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_alarm_test_irq_handler + + +Node1 + + +pcf8563_alarm_test +_irq_handler + + + + + +Node2 + + +pcf8563_irq_handler + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.md5 b/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.md5 new file mode 100644 index 0000000..a6b1c4c --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.md5 @@ -0,0 +1 @@ +bd17ec41b87c31a91b782ce8dc500388 \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.svg b/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.svg new file mode 100644 index 0000000..d7ed4a7 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga6d99a1564a48011e028845dcd7b0c1e7_cgraph.svg @@ -0,0 +1,462 @@ + + + + + + +pcf8563_timer_test + + +Node1 + + +pcf8563_timer_test + + + + + +Node2 + + +pcf8563_clear_status + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_deinit + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_info + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_init + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic_init + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_interface_iic_read + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_interrupt_mode + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_test_mode + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_set_timer_enable + + + + + +Node1->Node21 + + + + + + + + +Node22 + + +pcf8563_set_timer_freq + + + + + +Node1->Node22 + + + + + + + + +Node23 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +pcf8563_set_timer_value + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node25 + + + + + + + + diff --git a/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.md5 b/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.md5 new file mode 100644 index 0000000..f9c2c27 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.md5 @@ -0,0 +1 @@ +ce19be8d050def3c30c466234b226d46 \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.svg b/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.svg new file mode 100644 index 0000000..205a289 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_ga6e830f6081a3f22028016d99c45a3fc1_cgraph.svg @@ -0,0 +1,436 @@ + + + + + + +pcf8563_output_test + + +Node1 + + +pcf8563_output_test + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_info + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_init + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_interface_iic_init + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_interface_iic_read + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_interface_receive +_callback + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_set_clock_out + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_set_interrupt_mode + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_set_test_mode + + + + + +Node1->Node21 + + + + + + + + +Node22 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node22 + + + + + + + + +Node23 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node23 + + + + + + + + +Node11->Node5 + + + + + + + + diff --git a/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.md5 b/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.md5 new file mode 100644 index 0000000..f4344a9 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.md5 @@ -0,0 +1 @@ +94604d9f3b4e68e5a3e4906b092436c0 \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.svg b/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.svg new file mode 100644 index 0000000..22d1fe7 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_gaeeccd038063610497bb9d09fb71929a2_cgraph.svg @@ -0,0 +1,40 @@ + + + + + + +pcf8563_timer_test_irq_handler + + +Node1 + + +pcf8563_timer_test +_irq_handler + + + + + +Node2 + + +pcf8563_irq_handler + + + + + +Node1->Node2 + + + + + + + + diff --git a/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.md5 b/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.md5 new file mode 100644 index 0000000..ca17b42 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.md5 @@ -0,0 +1 @@ +fe4b8b8473ce86ef0266cf9e0e279054 \ No newline at end of file diff --git a/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.svg b/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.svg new file mode 100644 index 0000000..274d506 --- /dev/null +++ b/doc/html/group__pcf8563__test__driver_gafea79e78234f49ebdc6211f2e5125259_cgraph.svg @@ -0,0 +1,948 @@ + + + + + + +pcf8563_register_test + + +Node1 + + +pcf8563_register_test + + + + + +Node2 + + +pcf8563_deinit + + + + + +Node1->Node2 + + + + + + + + +Node3 + + +pcf8563_get_alarm_interrupt + + + + + +Node1->Node3 + + + + + + + + +Node4 + + +pcf8563_get_clock_out + + + + + +Node1->Node4 + + + + + + + + +Node5 + + +pcf8563_get_clock_out +_enable + + + + + +Node1->Node5 + + + + + + + + +Node6 + + +pcf8563_get_day_alarm + + + + + +Node1->Node6 + + + + + + + + +Node7 + + +pcf8563_get_day_alarm +_enable + + + + + +Node1->Node7 + + + + + + + + +Node8 + + +pcf8563_get_hour_alarm + + + + + +Node1->Node8 + + + + + + + + +Node9 + + +pcf8563_get_hour_alarm +_enable + + + + + +Node1->Node9 + + + + + + + + +Node10 + + +pcf8563_get_interrupt_mode + + + + + +Node1->Node10 + + + + + + + + +Node11 + + +pcf8563_get_minute +_alarm + + + + + +Node1->Node11 + + + + + + + + +Node12 + + +pcf8563_get_minute +_alarm_enable + + + + + +Node1->Node12 + + + + + + + + +Node13 + + +pcf8563_get_power_on +_reset + + + + + +Node1->Node13 + + + + + + + + +Node14 + + +pcf8563_get_rtc_stop + + + + + +Node1->Node14 + + + + + + + + +Node15 + + +pcf8563_get_test_mode + + + + + +Node1->Node15 + + + + + + + + +Node16 + + +pcf8563_get_time + + + + + +Node1->Node16 + + + + + + + + +Node17 + + +pcf8563_get_timer_enable + + + + + +Node1->Node17 + + + + + + + + +Node18 + + +pcf8563_get_timer_freq + + + + + +Node1->Node18 + + + + + + + + +Node19 + + +pcf8563_get_timer_interrupt + + + + + +Node1->Node19 + + + + + + + + +Node20 + + +pcf8563_get_timer_value + + + + + +Node1->Node20 + + + + + + + + +Node21 + + +pcf8563_get_week_alarm + + + + + +Node1->Node21 + + + + + + + + +Node22 + + +pcf8563_get_week_alarm +_enable + + + + + +Node1->Node22 + + + + + + + + +Node23 + + +pcf8563_info + + + + + +Node1->Node23 + + + + + + + + +Node24 + + +pcf8563_init + + + + + +Node1->Node24 + + + + + + + + +Node25 + + +pcf8563_interface_debug +_print + + + + + +Node1->Node25 + + + + + + + + +Node26 + + +pcf8563_interface_delay_ms + + + + + +Node1->Node26 + + + + + + + + +Node27 + + +pcf8563_interface_iic +_deinit + + + + + +Node1->Node27 + + + + + + + + +Node28 + + +pcf8563_interface_iic_init + + + + + +Node1->Node28 + + + + + + + + +Node29 + + +pcf8563_interface_iic_read + + + + + +Node1->Node29 + + + + + + + + +Node30 + + +pcf8563_interface_iic +_write + + + + + +Node1->Node30 + + + + + + + + +Node31 + + +pcf8563_interface_receive +_callback + + + + + +Node1->Node31 + + + + + + + + +Node32 + + +pcf8563_set_alarm_interrupt + + + + + +Node1->Node32 + + + + + + + + +Node33 + + +pcf8563_set_clock_out + + + + + +Node1->Node33 + + + + + + + + +Node34 + + +pcf8563_set_clock_out +_enable + + + + + +Node1->Node34 + + + + + + + + +Node35 + + +pcf8563_set_day_alarm + + + + + +Node1->Node35 + + + + + + + + +Node36 + + +pcf8563_set_day_alarm +_enable + + + + + +Node1->Node36 + + + + + + + + +Node37 + + +pcf8563_set_hour_alarm + + + + + +Node1->Node37 + + + + + + + + +Node38 + + +pcf8563_set_hour_alarm +_enable + + + + + +Node1->Node38 + + + + + + + + +Node39 + + +pcf8563_set_interrupt_mode + + + + + +Node1->Node39 + + + + + + + + +Node40 + + +pcf8563_set_minute +_alarm + + + + + +Node1->Node40 + + + + + + + + +Node41 + + +pcf8563_set_minute +_alarm_enable + + + + + +Node1->Node41 + + + + + + + + +Node42 + + +pcf8563_set_power_on +_reset + + + + + +Node1->Node42 + + + + + + + + +Node43 + + +pcf8563_set_rtc_stop + + + + + +Node1->Node43 + + + + + + + + +Node44 + + +pcf8563_set_test_mode + + + + + +Node1->Node44 + + + + + + + + +Node45 + + +pcf8563_set_time + + + + + +Node1->Node45 + + + + + + + + +Node46 + + +pcf8563_set_timer_enable + + + + + +Node1->Node46 + + + + + + + + +Node47 + + +pcf8563_set_timer_freq + + + + + +Node1->Node47 + + + + + + + + +Node48 + + +pcf8563_set_timer_interrupt + + + + + +Node1->Node48 + + + + + + + + +Node49 + + +pcf8563_set_timer_value + + + + + +Node1->Node49 + + + + + + + + +Node50 + + +pcf8563_set_week_alarm + + + + + +Node1->Node50 + + + + + + + + +Node51 + + +pcf8563_set_week_alarm +_enable + + + + + +Node1->Node51 + + + + + + + + +Node31->Node25 + + + + + + + + diff --git a/doc/html/index.html b/doc/html/index.html index 1f11bba..136aefd 100644 --- a/doc/html/index.html +++ b/doc/html/index.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: LibDriver PCF8563 + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
-
LibDriver PCF8563
+
+
LibDriver PCF8563
-

LibDriver PCF8563 is a full-featured driver of PCF8563 and it can run in both MCU and Linux platform.

Version
1.0.0
+

LibDriver PCF8563 is a full-featured driver of PCF8563 and it can run in both MCU and Linux platform.

+
Version
1.0.0
Author
Shifeng Li

History

@@ -103,12 +110,14 @@

Copyright (c) LibDriver All rights reserved.

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.

+ + diff --git a/doc/html/jquery.js b/doc/html/jquery.js index 103c32d..875ada7 100644 --- a/doc/html/jquery.js +++ b/doc/html/jquery.js @@ -1,18 +1,143 @@ -/*! jQuery v3.4.1 | (c) JS Foundation and other contributors | jquery.org/license */ -!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],E=C.document,r=Object.getPrototypeOf,s=t.slice,g=t.concat,u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.4.1",k=function(e,t){return new k.fn.init(e,t)},p=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;function d(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp($),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+$),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ne=function(e,t,n){var r="0x"+t-65536;return r!=r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(m.childNodes),m.childNodes),t[m.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&((e?e.ownerDocument||e:m)!==C&&T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!A[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&U.test(t)){(s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=k),o=(l=h(t)).length;while(o--)l[o]="#"+s+" "+xe(l[o]);c=l.join(","),f=ee.test(t)&&ye(e.parentNode)||e}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){A(t,!0)}finally{s===k&&e.removeAttribute("id")}}}return g(t.replace(B,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[k]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:m;return r!==C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),m!==C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=k,!C.getElementsByName||!C.getElementsByName(k).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+k+"-]").length||v.push("~="),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+k+"+*").length||v.push(".#.+[+~]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",$)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e===C||e.ownerDocument===m&&y(m,e)?-1:t===C||t.ownerDocument===m&&y(m,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===C?-1:t===C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]===m?-1:s[r]===m?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if((e.ownerDocument||e)!==C&&T(e),d.matchesSelector&&E&&!A[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){A(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=p[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&p(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?k.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?k.grep(e,function(e){return e===n!==r}):"string"!=typeof n?k.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(k.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:L.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof k?t[0]:t,k.merge(this,k.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),D.test(r[1])&&k.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(k):k.makeArray(e,this)}).prototype=k.fn,q=k(E);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}k.fn.extend({has:function(e){var t=k(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?k.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;nx",y.noCloneChecked=!!me.cloneNode(!0).lastChild.defaultValue;var Te=/^key/,Ce=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ee=/^([^.]*)(?:\.(.+)|)/;function ke(){return!0}function Se(){return!1}function Ne(e,t){return e===function(){try{return E.activeElement}catch(e){}}()==("focus"===t)}function Ae(e,t,n,r,i,o){var a,s;if("object"==typeof t){for(s in"string"!=typeof n&&(r=r||n,n=void 0),t)Ae(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=Se;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return k().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=k.guid++)),e.each(function(){k.event.add(this,t,i,r,n)})}function De(e,i,o){o?(Q.set(e,i,!1),k.event.add(e,i,{namespace:!1,handler:function(e){var t,n,r=Q.get(this,i);if(1&e.isTrigger&&this[i]){if(r.length)(k.event.special[i]||{}).delegateType&&e.stopPropagation();else if(r=s.call(arguments),Q.set(this,i,r),t=o(this,i),this[i](),r!==(n=Q.get(this,i))||t?Q.set(this,i,!1):n={},r!==n)return e.stopImmediatePropagation(),e.preventDefault(),n.value}else r.length&&(Q.set(this,i,{value:k.event.trigger(k.extend(r[0],k.Event.prototype),r.slice(1),this)}),e.stopImmediatePropagation())}})):void 0===Q.get(e,i)&&k.event.add(e,i,ke)}k.event={global:{},add:function(t,e,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.get(t);if(v){n.handler&&(n=(o=n).handler,i=o.selector),i&&k.find.matchesSelector(ie,i),n.guid||(n.guid=k.guid++),(u=v.events)||(u=v.events={}),(a=v.handle)||(a=v.handle=function(e){return"undefined"!=typeof k&&k.event.triggered!==e.type?k.event.dispatch.apply(t,arguments):void 0}),l=(e=(e||"").match(R)||[""]).length;while(l--)d=g=(s=Ee.exec(e[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=k.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=k.event.special[d]||{},c=k.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&k.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(t,r,h,a)||t.addEventListener&&t.addEventListener(d,a)),f.add&&(f.add.call(t,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),k.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,v=Q.hasData(e)&&Q.get(e);if(v&&(u=v.events)){l=(t=(t||"").match(R)||[""]).length;while(l--)if(d=g=(s=Ee.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d){f=k.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,v.handle)||k.removeEvent(e,d,v.handle),delete u[d])}else for(d in u)k.event.remove(e,d+t[l],n,r,!0);k.isEmptyObject(u)&&Q.remove(e,"handle events")}},dispatch:function(e){var t,n,r,i,o,a,s=k.event.fix(e),u=new Array(arguments.length),l=(Q.get(this,"events")||{})[s.type]||[],c=k.event.special[s.type]||{};for(u[0]=s,t=1;t\x20\t\r\n\f]*)[^>]*)\/>/gi,qe=/\s*$/g;function Oe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&k(e).children("tbody")[0]||e}function Pe(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Re(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Me(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(Q.hasData(e)&&(o=Q.access(e),a=Q.set(t,o),l=o.events))for(i in delete a.handle,a.events={},l)for(n=0,r=l[i].length;n")},clone:function(e,t,n){var r,i,o,a,s,u,l,c=e.cloneNode(!0),f=oe(e);if(!(y.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||k.isXMLDoc(e)))for(a=ve(c),r=0,i=(o=ve(e)).length;r").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Vt,Gt=[],Yt=/(=)\?(?=&|$)|\?\?/;k.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Gt.pop()||k.expando+"_"+kt++;return this[e]=!0,e}}),k.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Yt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Yt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Yt,"$1"+r):!1!==e.jsonp&&(e.url+=(St.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||k.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?k(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Gt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Vt=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Vt.childNodes.length),k.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=D.exec(e))?[t.createElement(i[1])]:(i=we([e],t,o),o&&o.length&&k(o).remove(),k.merge([],i.childNodes)));var r,i,o},k.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(k.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},k.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){k.fn[t]=function(e){return this.on(t,e)}}),k.expr.pseudos.animated=function(t){return k.grep(k.timers,function(e){return t===e.elem}).length},k.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=k.css(e,"position"),c=k(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=k.css(e,"top"),u=k.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,k.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},k.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){k.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===k.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===k.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=k(e).offset()).top+=k.css(e,"borderTopWidth",!0),i.left+=k.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-k.css(r,"marginTop",!0),left:t.left-i.left-k.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===k.css(e,"position"))e=e.offsetParent;return e||ie})}}),k.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;k.fn[t]=function(e){return _(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),k.each(["top","left"],function(e,n){k.cssHooks[n]=ze(y.pixelPosition,function(e,t){if(t)return t=_e(e,n),$e.test(t)?k(e).position()[n]+"px":t})}),k.each({Height:"height",Width:"width"},function(a,s){k.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){k.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return _(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?k.css(e,t,i):k.style(e,t,n,i)},s,n?e:void 0,n)}})}),k.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){k.fn[n]=function(e,t){return 0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp( +"^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"�":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType +}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c +)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){ +return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e&&e.namespaceURI,n=e&&(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll( +":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id") +)&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push( +"\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test( +a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},j=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null, +null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne +).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||D,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,D=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for( +var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n; +return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function je(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function De(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function qe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Le(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0, +r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var _t,zt=[],Ut=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=zt.pop()||S.expando+"_"+wt.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Ut.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Ut.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Ut,"$1"+r):!1!==e.jsonp&&(e.url+=(Tt.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r] +,C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,zt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((_t=E.implementation.createHTMLDocument("").body).innerHTML="
",2===_t.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each( +function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):c.css(f)}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r, +"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=Fe(y.pixelPosition,function(e,t){if(t)return t=We(e,n),Pe.test(t)?S(e).position()[n]+"px":t})} +),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each( +"blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(i in o[a])n=o[a][i],o[a].hasOwnProperty(i)&&void 0!==n&&(e[i]=t.isPlainObject(n)?t.isPlainObject(e[i])?t.widget.extend({},e[i],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,i){var n=i.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=s.call(arguments,1),h=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(h=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(h=i&&i.jquery?h.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):h=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new i(o,this))})),h}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(e,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),e),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var h=s.match(/^([\w:-]*)\s*(.*)$/),l=h[1]+o.eventNamespace,c=h[2];c?n.on(l,c,r):i.on(l,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,h=/top|center|bottom/,l=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};l>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),h.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,h=n-r,l=r+e.collisionWidth-a-n;e.collisionWidth>a?h>0&&0>=l?(i=t.left+h+e.collisionWidth-a-n,t.left+=h-i):t.left=l>0&&0>=h?n:h>l?n+a-e.collisionWidth:n:h>0?t.left+=h:l>0?t.left-=l:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,h=n-r,l=r+e.collisionHeight-a-n;e.collisionHeight>a?h>0&&0>=l?(i=t.top+h+e.collisionHeight-a-n,t.top+=h-i):t.top=l>0&&0>=h?n:h>l?n+a-e.collisionHeight:n:h>0?t.top+=h:l>0?t.top-=l:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,h=n.isWindow?n.scrollLeft:n.offset.left,l=t.left-e.collisionPosition.marginLeft,c=l-h,u=l+e.collisionWidth-r-h,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-h,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,h=n.isWindow?n.scrollTop:n.offset.top,l=t.top-e.collisionPosition.marginTop,c=l-h,u=l+e.collisionHeight-r-h,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,m=-2*e.offset[1];0>c?(s=t.top+p+f+m+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+m)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+m-h,(i>0||u>a(i))&&(t.top+=p+f+m))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.extend(t.expr[":"],{data:t.expr.createPseudo?t.expr.createPseudo(function(e){return function(i){return!!t.data(i,e)}}):function(e,i,s){return!!t.data(e,s[3])}}),t.fn.extend({disableSelection:function(){var t="onselectstart"in document.createElement("div")?"selectstart":"mousedown";return function(){return this.on(t+".ui-disableSelection",function(t){t.preventDefault()})}}(),enableSelection:function(){return this.off(".ui-disableSelection")}}),t.ui.focusable=function(i,s){var n,o,a,r,h,l=i.nodeName.toLowerCase();return"area"===l?(n=i.parentNode,o=n.name,i.href&&o&&"map"===n.nodeName.toLowerCase()?(a=t("img[usemap='#"+o+"']"),a.length>0&&a.is(":visible")):!1):(/^(input|select|textarea|button|object)$/.test(l)?(r=!i.disabled,r&&(h=t(i).closest("fieldset")[0],h&&(r=!h.disabled))):r="a"===l?i.href||s:s,r&&t(i).is(":visible")&&e(t(i)))},t.extend(t.expr[":"],{focusable:function(e){return t.ui.focusable(e,null!=t.attr(e,"tabindex"))}}),t.ui.focusable,t.fn.form=function(){return"string"==typeof this[0].form?this.closest("form"):t(this[0].form)},t.ui.formResetMixin={_formResetHandler:function(){var e=t(this);setTimeout(function(){var i=e.data("ui-form-reset-instances");t.each(i,function(){this.refresh()})})},_bindFormResetHandler:function(){if(this.form=this.element.form(),this.form.length){var t=this.form.data("ui-form-reset-instances")||[];t.length||this.form.on("reset.ui-form-reset",this._formResetHandler),t.push(this),this.form.data("ui-form-reset-instances",t)}},_unbindFormResetHandler:function(){if(this.form.length){var e=this.form.data("ui-form-reset-instances");e.splice(t.inArray(this,e),1),e.length?this.form.data("ui-form-reset-instances",e):this.form.removeData("ui-form-reset-instances").off("reset.ui-form-reset")}}},"1.7"===t.fn.jquery.substring(0,3)&&(t.each(["Width","Height"],function(e,i){function s(e,i,s,o){return t.each(n,function(){i-=parseFloat(t.css(e,"padding"+this))||0,s&&(i-=parseFloat(t.css(e,"border"+this+"Width"))||0),o&&(i-=parseFloat(t.css(e,"margin"+this))||0)}),i}var n="Width"===i?["Left","Right"]:["Top","Bottom"],o=i.toLowerCase(),a={innerWidth:t.fn.innerWidth,innerHeight:t.fn.innerHeight,outerWidth:t.fn.outerWidth,outerHeight:t.fn.outerHeight};t.fn["inner"+i]=function(e){return void 0===e?a["inner"+i].call(this):this.each(function(){t(this).css(o,s(this,e)+"px")})},t.fn["outer"+i]=function(e,n){return"number"!=typeof e?a["outer"+i].call(this,e):this.each(function(){t(this).css(o,s(this,e,!0,n)+"px")})}}),t.fn.addBack=function(t){return this.add(null==t?this.prevObject:this.prevObject.filter(t))}),t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.ui.escapeSelector=function(){var t=/([!"#$%&'()*+,./:;<=>?@[\]^`{|}~])/g;return function(e){return e.replace(t,"\\$1")}}(),t.fn.labels=function(){var e,i,s,n,o;return this[0].labels&&this[0].labels.length?this.pushStack(this[0].labels):(n=this.eq(0).parents("label"),s=this.attr("id"),s&&(e=this.eq(0).parents().last(),o=e.add(e.length?e.siblings():this.siblings()),i="label[for='"+t.ui.escapeSelector(s)+"']",n=n.add(o.find(i).addBack(i))),this.pushStack(n))},t.fn.scrollParent=function(e){var i=this.css("position"),s="absolute"===i,n=e?/(auto|scroll|hidden)/:/(auto|scroll)/,o=this.parents().filter(function(){var e=t(this);return s&&"static"===e.css("position")?!1:n.test(e.css("overflow")+e.css("overflow-y")+e.css("overflow-x"))}).eq(0);return"fixed"!==i&&o.length?o:t(this[0].ownerDocument||document)},t.extend(t.expr[":"],{tabbable:function(e){var i=t.attr(e,"tabindex"),s=null!=i;return(!s||i>=0)&&t.ui.focusable(e,s)}}),t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.ie=!!/msie [\w.]+/.exec(navigator.userAgent.toLowerCase());var n=!1;t(document).on("mouseup",function(){n=!1}),t.widget("ui.mouse",{version:"1.12.1",options:{cancel:"input, textarea, button, select, option",distance:1,delay:0},_mouseInit:function(){var e=this;this.element.on("mousedown."+this.widgetName,function(t){return e._mouseDown(t)}).on("click."+this.widgetName,function(i){return!0===t.data(i.target,e.widgetName+".preventClickEvent")?(t.removeData(i.target,e.widgetName+".preventClickEvent"),i.stopImmediatePropagation(),!1):void 0}),this.started=!1},_mouseDestroy:function(){this.element.off("."+this.widgetName),this._mouseMoveDelegate&&this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate)},_mouseDown:function(e){if(!n){this._mouseMoved=!1,this._mouseStarted&&this._mouseUp(e),this._mouseDownEvent=e;var i=this,s=1===e.which,o="string"==typeof this.options.cancel&&e.target.nodeName?t(e.target).closest(this.options.cancel).length:!1;return s&&!o&&this._mouseCapture(e)?(this.mouseDelayMet=!this.options.delay,this.mouseDelayMet||(this._mouseDelayTimer=setTimeout(function(){i.mouseDelayMet=!0},this.options.delay)),this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(e)!==!1,!this._mouseStarted)?(e.preventDefault(),!0):(!0===t.data(e.target,this.widgetName+".preventClickEvent")&&t.removeData(e.target,this.widgetName+".preventClickEvent"),this._mouseMoveDelegate=function(t){return i._mouseMove(t)},this._mouseUpDelegate=function(t){return i._mouseUp(t)},this.document.on("mousemove."+this.widgetName,this._mouseMoveDelegate).on("mouseup."+this.widgetName,this._mouseUpDelegate),e.preventDefault(),n=!0,!0)):!0}},_mouseMove:function(e){if(this._mouseMoved){if(t.ui.ie&&(!document.documentMode||9>document.documentMode)&&!e.button)return this._mouseUp(e);if(!e.which)if(e.originalEvent.altKey||e.originalEvent.ctrlKey||e.originalEvent.metaKey||e.originalEvent.shiftKey)this.ignoreMissingWhich=!0;else if(!this.ignoreMissingWhich)return this._mouseUp(e)}return(e.which||e.button)&&(this._mouseMoved=!0),this._mouseStarted?(this._mouseDrag(e),e.preventDefault()):(this._mouseDistanceMet(e)&&this._mouseDelayMet(e)&&(this._mouseStarted=this._mouseStart(this._mouseDownEvent,e)!==!1,this._mouseStarted?this._mouseDrag(e):this._mouseUp(e)),!this._mouseStarted)},_mouseUp:function(e){this.document.off("mousemove."+this.widgetName,this._mouseMoveDelegate).off("mouseup."+this.widgetName,this._mouseUpDelegate),this._mouseStarted&&(this._mouseStarted=!1,e.target===this._mouseDownEvent.target&&t.data(e.target,this.widgetName+".preventClickEvent",!0),this._mouseStop(e)),this._mouseDelayTimer&&(clearTimeout(this._mouseDelayTimer),delete this._mouseDelayTimer),this.ignoreMissingWhich=!1,n=!1,e.preventDefault()},_mouseDistanceMet:function(t){return Math.max(Math.abs(this._mouseDownEvent.pageX-t.pageX),Math.abs(this._mouseDownEvent.pageY-t.pageY))>=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),t.ui.plugin={add:function(e,i,s){var n,o=t.ui[e].prototype;for(n in s)o.plugins[n]=o.plugins[n]||[],o.plugins[n].push([i,s[n]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;o.length>n;n++)t.options[o[n][0]]&&o[n][1].apply(t.element,i)}},t.widget("ui.resizable",t.ui.mouse,{version:"1.12.1",widgetEventPrefix:"resize",options:{alsoResize:!1,animate:!1,animateDuration:"slow",animateEasing:"swing",aspectRatio:!1,autoHide:!1,classes:{"ui-resizable-se":"ui-icon ui-icon-gripsmall-diagonal-se"},containment:!1,ghost:!1,grid:!1,handles:"e,s,se",helper:!1,maxHeight:null,maxWidth:null,minHeight:10,minWidth:10,zIndex:90,resize:null,start:null,stop:null},_num:function(t){return parseFloat(t)||0},_isNumber:function(t){return!isNaN(parseFloat(t))},_hasScroll:function(e,i){if("hidden"===t(e).css("overflow"))return!1;var s=i&&"left"===i?"scrollLeft":"scrollTop",n=!1;return e[s]>0?!0:(e[s]=1,n=e[s]>0,e[s]=0,n)},_create:function(){var e,i=this.options,s=this;this._addClass("ui-resizable"),t.extend(this,{_aspectRatio:!!i.aspectRatio,aspectRatio:i.aspectRatio,originalElement:this.element,_proportionallyResizeElements:[],_helper:i.helper||i.ghost||i.animate?i.helper||"ui-resizable-helper":null}),this.element[0].nodeName.match(/^(canvas|textarea|input|select|button|img)$/i)&&(this.element.wrap(t("
").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("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,e={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(e),this.originalElement.css("margin",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(e),this._proportionallyResize()),this._setupHandles(),i.autoHide&&t(this.element).on("mouseenter",function(){i.disabled||(s._removeClass("ui-resizable-autohide"),s._handles.show())}).on("mouseleave",function(){i.disabled||s.resizing||(s._addClass("ui-resizable-autohide"),s._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy();var e,i=function(e){t(e).removeData("resizable").removeData("ui-resizable").off(".resizable").find(".ui-resizable-handle").remove()};return this.elementIsWrapper&&(i(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),i(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;default:}},_setupHandles:function(){var e,i,s,n,o,a=this.options,r=this;if(this.handles=a.handles||(t(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=t(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),s=this.handles.split(","),this.handles={},i=0;s.length>i;i++)e=t.trim(s[i]),n="ui-resizable-"+e,o=t("
"),this._addClass(o,"ui-resizable-handle "+n),o.css({zIndex:a.zIndex}),this.handles[e]=".ui-resizable-"+e,this.element.append(o);this._renderAxis=function(e){var i,s,n,o;e=e||this.element;for(i in this.handles)this.handles[i].constructor===String?this.handles[i]=this.element.children(this.handles[i]).first().show():(this.handles[i].jquery||this.handles[i].nodeType)&&(this.handles[i]=t(this.handles[i]),this._on(this.handles[i],{mousedown:r._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(s=t(this.handles[i],this.element),o=/sw|ne|nw|se|n|s/.test(i)?s.outerHeight():s.outerWidth(),n=["padding",/ne|nw|n/.test(i)?"Top":/se|sw|s/.test(i)?"Bottom":/^e$/.test(i)?"Right":"Left"].join(""),e.css(n,o),this._proportionallyResize()),this._handles=this._handles.add(this.handles[i])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){r.resizing||(this.className&&(o=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),r.axis=o&&o[1]?o[1]:"se")}),a.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._handles.remove()},_mouseCapture:function(e){var i,s,n=!1;for(i in this.handles)s=t(this.handles[i])[0],(s===e.target||t.contains(s,e.target))&&(n=!0);return!this.options.disabled&&n},_mouseStart:function(e){var i,s,n,o=this.options,a=this.element;return this.resizing=!0,this._renderProxy(),i=this._num(this.helper.css("left")),s=this._num(this.helper.css("top")),o.containment&&(i+=t(o.containment).scrollLeft()||0,s+=t(o.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:i,top:s},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{width:a.width(),height:a.height()},this.originalSize=this._helper?{width:a.outerWidth(),height:a.outerHeight()}:{width:a.width(),height:a.height()},this.sizeDiff={width:a.outerWidth()-a.width(),height:a.outerHeight()-a.height()},this.originalPosition={left:i,top:s},this.originalMousePosition={left:e.pageX,top:e.pageY},this.aspectRatio="number"==typeof o.aspectRatio?o.aspectRatio:this.originalSize.width/this.originalSize.height||1,n=t(".ui-resizable-"+this.axis).css("cursor"),t("body").css("cursor","auto"===n?this.axis+"-resize":n),this._addClass("ui-resizable-resizing"),this._propagate("start",e),!0},_mouseDrag:function(e){var i,s,n=this.originalMousePosition,o=this.axis,a=e.pageX-n.left||0,r=e.pageY-n.top||0,h=this._change[o];return this._updatePrevProperties(),h?(i=h.apply(this,[e,a,r]),this._updateVirtualBoundaries(e.shiftKey),(this._aspectRatio||e.shiftKey)&&(i=this._updateRatio(i,e)),i=this._respectSize(i,e),this._updateCache(i),this._propagate("resize",e),s=this._applyChanges(),!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),t.isEmptyObject(s)||(this._updatePrevProperties(),this._trigger("resize",e,this.ui()),this._applyChanges()),!1):!1},_mouseStop:function(e){this.resizing=!1;var i,s,n,o,a,r,h,l=this.options,c=this;return this._helper&&(i=this._proportionallyResizeElements,s=i.length&&/textarea/i.test(i[0].nodeName),n=s&&this._hasScroll(i[0],"left")?0:c.sizeDiff.height,o=s?0:c.sizeDiff.width,a={width:c.helper.width()-o,height:c.helper.height()-n},r=parseFloat(c.element.css("left"))+(c.position.left-c.originalPosition.left)||null,h=parseFloat(c.element.css("top"))+(c.position.top-c.originalPosition.top)||null,l.animate||this.element.css(t.extend(a,{top:h,left:r})),c.helper.height(c.size.height),c.helper.width(c.size.width),this._helper&&!l.animate&&this._proportionallyResize()),t("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",e),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s,n,o,a=this.options;o={minWidth:this._isNumber(a.minWidth)?a.minWidth:0,maxWidth:this._isNumber(a.maxWidth)?a.maxWidth:1/0,minHeight:this._isNumber(a.minHeight)?a.minHeight:0,maxHeight:this._isNumber(a.maxHeight)?a.maxHeight:1/0},(this._aspectRatio||t)&&(e=o.minHeight*this.aspectRatio,s=o.minWidth/this.aspectRatio,i=o.maxHeight*this.aspectRatio,n=o.maxWidth/this.aspectRatio,e>o.minWidth&&(o.minWidth=e),s>o.minHeight&&(o.minHeight=s),o.maxWidth>i&&(o.maxWidth=i),o.maxHeight>n&&(o.maxHeight=n)),this._vBoundaries=o},_updateCache:function(t){this.offset=this.helper.offset(),this._isNumber(t.left)&&(this.position.left=t.left),this._isNumber(t.top)&&(this.position.top=t.top),this._isNumber(t.height)&&(this.size.height=t.height),this._isNumber(t.width)&&(this.size.width=t.width)},_updateRatio:function(t){var e=this.position,i=this.size,s=this.axis;return this._isNumber(t.height)?t.width=t.height*this.aspectRatio:this._isNumber(t.width)&&(t.height=t.width/this.aspectRatio),"sw"===s&&(t.left=e.left+(i.width-t.width),t.top=null),"nw"===s&&(t.top=e.top+(i.height-t.height),t.left=e.left+(i.width-t.width)),t},_respectSize:function(t){var e=this._vBoundaries,i=this.axis,s=this._isNumber(t.width)&&e.maxWidth&&e.maxWidtht.width,a=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,r=this.originalPosition.left+this.originalSize.width,h=this.originalPosition.top+this.originalSize.height,l=/sw|nw|w/.test(i),c=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),a&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=r-e.minWidth),s&&l&&(t.left=r-e.maxWidth),a&&c&&(t.top=h-e.minHeight),n&&c&&(t.top=h-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];4>e;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;this._proportionallyResizeElements.length>e;e++)t=this._proportionallyResizeElements[e],this.outerDimensions||(this.outerDimensions=this._getPaddingPlusBorderDimensions(t)),t.css({height:i.height()-this.outerDimensions.height||0,width:i.width()-this.outerDimensions.width||0})},_renderProxy:function(){var e=this.element,i=this.options;this.elementOffset=e.offset(),this._helper?(this.helper=this.helper||t("
"),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++i.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element -},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize,s=this.originalPosition;return{left:s.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize,n=this.originalPosition;return{top:n.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},sw:function(e,i,s){return t.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[e,i,s]))},ne:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[e,i,s]))},nw:function(e,i,s){return t.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[e,i,s]))}},_propagate:function(e,i){t.ui.plugin.call(this,e,[i,this.ui()]),"resize"!==e&&this._trigger(e,i,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}}}),t.ui.plugin.add("resizable","animate",{stop:function(e){var i=t(this).resizable("instance"),s=i.options,n=i._proportionallyResizeElements,o=n.length&&/textarea/i.test(n[0].nodeName),a=o&&i._hasScroll(n[0],"left")?0:i.sizeDiff.height,r=o?0:i.sizeDiff.width,h={width:i.size.width-r,height:i.size.height-a},l=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left)||null,c=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(t.extend(h,c&&l?{top:c,left:l}:{}),{duration:s.animateDuration,easing:s.animateEasing,step:function(){var s={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};n&&n.length&&t(n[0]).css({width:s.width,height:s.height}),i._updateCache(s),i._propagate("resize",e)}})}}),t.ui.plugin.add("resizable","containment",{start:function(){var e,i,s,n,o,a,r,h=t(this).resizable("instance"),l=h.options,c=h.element,u=l.containment,d=u instanceof t?u.get(0):/parent/.test(u)?c.parent().get(0):u;d&&(h.containerElement=t(d),/document/.test(u)||u===document?(h.containerOffset={left:0,top:0},h.containerPosition={left:0,top:0},h.parentData={element:t(document),left:0,top:0,width:t(document).width(),height:t(document).height()||document.body.parentNode.scrollHeight}):(e=t(d),i=[],t(["Top","Right","Left","Bottom"]).each(function(t,s){i[t]=h._num(e.css("padding"+s))}),h.containerOffset=e.offset(),h.containerPosition=e.position(),h.containerSize={height:e.innerHeight()-i[3],width:e.innerWidth()-i[1]},s=h.containerOffset,n=h.containerSize.height,o=h.containerSize.width,a=h._hasScroll(d,"left")?d.scrollWidth:o,r=h._hasScroll(d)?d.scrollHeight:n,h.parentData={element:d,left:s.left,top:s.top,width:a,height:r}))},resize:function(e){var i,s,n,o,a=t(this).resizable("instance"),r=a.options,h=a.containerOffset,l=a.position,c=a._aspectRatio||e.shiftKey,u={top:0,left:0},d=a.containerElement,p=!0;d[0]!==document&&/static/.test(d.css("position"))&&(u=h),l.left<(a._helper?h.left:0)&&(a.size.width=a.size.width+(a._helper?a.position.left-h.left:a.position.left-u.left),c&&(a.size.height=a.size.width/a.aspectRatio,p=!1),a.position.left=r.helper?h.left:0),l.top<(a._helper?h.top:0)&&(a.size.height=a.size.height+(a._helper?a.position.top-h.top:a.position.top),c&&(a.size.width=a.size.height*a.aspectRatio,p=!1),a.position.top=a._helper?h.top:0),n=a.containerElement.get(0)===a.element.parent().get(0),o=/relative|absolute/.test(a.containerElement.css("position")),n&&o?(a.offset.left=a.parentData.left+a.position.left,a.offset.top=a.parentData.top+a.position.top):(a.offset.left=a.element.offset().left,a.offset.top=a.element.offset().top),i=Math.abs(a.sizeDiff.width+(a._helper?a.offset.left-u.left:a.offset.left-h.left)),s=Math.abs(a.sizeDiff.height+(a._helper?a.offset.top-u.top:a.offset.top-h.top)),i+a.size.width>=a.parentData.width&&(a.size.width=a.parentData.width-i,c&&(a.size.height=a.size.width/a.aspectRatio,p=!1)),s+a.size.height>=a.parentData.height&&(a.size.height=a.parentData.height-s,c&&(a.size.width=a.size.height*a.aspectRatio,p=!1)),p||(a.position.left=a.prevPosition.left,a.position.top=a.prevPosition.top,a.size.width=a.prevSize.width,a.size.height=a.prevSize.height)},stop:function(){var e=t(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.containerPosition,o=e.containerElement,a=t(e.helper),r=a.offset(),h=a.outerWidth()-e.sizeDiff.width,l=a.outerHeight()-e.sizeDiff.height;e._helper&&!i.animate&&/relative/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l}),e._helper&&!i.animate&&/static/.test(o.css("position"))&&t(this).css({left:r.left-n.left-s.left,width:h,height:l})}}),t.ui.plugin.add("resizable","alsoResize",{start:function(){var e=t(this).resizable("instance"),i=e.options;t(i.alsoResize).each(function(){var e=t(this);e.data("ui-resizable-alsoresize",{width:parseFloat(e.width()),height:parseFloat(e.height()),left:parseFloat(e.css("left")),top:parseFloat(e.css("top"))})})},resize:function(e,i){var s=t(this).resizable("instance"),n=s.options,o=s.originalSize,a=s.originalPosition,r={height:s.size.height-o.height||0,width:s.size.width-o.width||0,top:s.position.top-a.top||0,left:s.position.left-a.left||0};t(n.alsoResize).each(function(){var e=t(this),s=t(this).data("ui-resizable-alsoresize"),n={},o=e.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];t.each(o,function(t,e){var i=(s[e]||0)+(r[e]||0);i&&i>=0&&(n[e]=i||null)}),e.css(n)})},stop:function(){t(this).removeData("ui-resizable-alsoresize")}}),t.ui.plugin.add("resizable","ghost",{start:function(){var e=t(this).resizable("instance"),i=e.size;e.ghost=e.originalElement.clone(),e.ghost.css({opacity:.25,display:"block",position:"relative",height:i.height,width:i.width,margin:0,left:0,top:0}),e._addClass(e.ghost,"ui-resizable-ghost"),t.uiBackCompat!==!1&&"string"==typeof e.options.ghost&&e.ghost.addClass(this.options.ghost),e.ghost.appendTo(e.helper)},resize:function(){var e=t(this).resizable("instance");e.ghost&&e.ghost.css({position:"relative",height:e.size.height,width:e.size.width})},stop:function(){var e=t(this).resizable("instance");e.ghost&&e.helper&&e.helper.get(0).removeChild(e.ghost.get(0))}}),t.ui.plugin.add("resizable","grid",{resize:function(){var e,i=t(this).resizable("instance"),s=i.options,n=i.size,o=i.originalSize,a=i.originalPosition,r=i.axis,h="number"==typeof s.grid?[s.grid,s.grid]:s.grid,l=h[0]||1,c=h[1]||1,u=Math.round((n.width-o.width)/l)*l,d=Math.round((n.height-o.height)/c)*c,p=o.width+u,f=o.height+d,m=s.maxWidth&&p>s.maxWidth,g=s.maxHeight&&f>s.maxHeight,_=s.minWidth&&s.minWidth>p,v=s.minHeight&&s.minHeight>f;s.grid=h,_&&(p+=l),v&&(f+=c),m&&(p-=l),g&&(f-=c),/^(se|s|e)$/.test(r)?(i.size.width=p,i.size.height=f):/^(ne)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.top=a.top-d):/^(sw)$/.test(r)?(i.size.width=p,i.size.height=f,i.position.left=a.left-u):((0>=f-c||0>=p-l)&&(e=i._getPaddingPlusBorderDimensions(this)),f-c>0?(i.size.height=f,i.position.top=a.top-d):(f=c-e.height,i.size.height=f,i.position.top=a.top+o.height-f),p-l>0?(i.size.width=p,i.position.left=a.left-u):(p=l-e.width,i.size.width=p,i.position.left=a.left+o.width-p))}}),t.ui.resizable});/** +* Includes: widget.js, position.js, data.js, disable-selection.js, focusable.js, form-reset-mixin.js, jquery-patch.js, keycode.js, labels.js, scroll-parent.js, tabbable.js, unique-id.js, widgets/resizable.js, widgets/mouse.js +* Copyright jQuery Foundation and other contributors; Licensed MIT */!function(t){"use strict";"function"==typeof define&&define.amd?define(["jquery"],t):t(jQuery)}(function(y){"use strict";y.ui=y.ui||{};y.ui.version="1.13.2";var n,i=0,h=Array.prototype.hasOwnProperty,a=Array.prototype.slice;y.cleanData=(n=y.cleanData,function(t){for(var e,i,s=0;null!=(i=t[s]);s++)(e=y._data(i,"events"))&&e.remove&&y(i).triggerHandler("remove");n(t)}),y.widget=function(t,i,e){var s,n,o,h={},a=t.split(".")[0],r=a+"-"+(t=t.split(".")[1]);return e||(e=i,i=y.Widget),Array.isArray(e)&&(e=y.extend.apply(null,[{}].concat(e))),y.expr.pseudos[r.toLowerCase()]=function(t){return!!y.data(t,r)},y[a]=y[a]||{},s=y[a][t],n=y[a][t]=function(t,e){if(!this||!this._createWidget)return new n(t,e);arguments.length&&this._createWidget(t,e)},y.extend(n,s,{version:e.version,_proto:y.extend({},e),_childConstructors:[]}),(o=new i).options=y.widget.extend({},o.options),y.each(e,function(e,s){function n(){return i.prototype[e].apply(this,arguments)} +function o(t){return i.prototype[e].apply(this,t)}h[e]="function"==typeof s?function(){var t,e=this._super,i=this._superApply;return this._super=n,this._superApply=o,t=s.apply(this,arguments),this._super=e,this._superApply=i,t}:s}),n.prototype=y.widget.extend(o,{widgetEventPrefix:s&&o.widgetEventPrefix||t},h,{constructor:n,namespace:a,widgetName:t,widgetFullName:r}),s?(y.each(s._childConstructors,function(t,e){var i=e.prototype;y.widget(i.namespace+"."+i.widgetName,n,e._proto)}),delete s._childConstructors):i._childConstructors.push(n),y.widget.bridge(t,n),n},y.widget.extend=function(t){for(var e,i,s=a.call(arguments,1),n=0,o=s.length;n",options:{classes:{},disabled:!1,create:null},_createWidget:function(t,e){e=y(e||this.defaultElement||this)[0],this.element=y(e),this.uuid=i++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=y(),this.hoverable=y(),this.focusable=y(),this.classesElementLookup={},e!==this&&(y.data(e,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t +){t.target===e&&this.destroy()}}),this.document=y(e.style?e.ownerDocument:e.document||e),this.window=y(this.document[0].defaultView||this.document[0].parentWindow)),this.options=y.widget.extend({},this.options,this._getCreateOptions(),t),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:y.noop,_create:y.noop,_init:y.noop,destroy:function(){var i=this;this._destroy(),y.each(this.classesElementLookup,function(t,e){i._removeClass(e,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:y.noop,widget:function(){return this.element},option:function(t,e){var i,s,n,o=t;if(0===arguments.length)return y.widget.extend({},this.options);if("string"==typeof t)if(o={},t=(i=t.split(".")).shift(),i.length){for(s=o[t +]=y.widget.extend({},this.options[t]),n=0;n
"),i=e.children()[0];return y("body").append(e),t=i.offsetWidth,e.css("overflow","scroll"),t===(i=i.offsetWidth)&&(i=e[0].clientWidth),e.remove(),s=t-i}, +getScrollInfo:function(t){var e=t.isWindow||t.isDocument?"":t.element.css("overflow-x"),i=t.isWindow||t.isDocument?"":t.element.css("overflow-y"),e="scroll"===e||"auto"===e&&t.widthx(D(s),D(n))?o.important="horizontal":o.important="vertical",p.using.call(this,t,o)}),h.offset(y.extend(l,{using:t}))})},y.ui.position={fit:{left:function(t,e){var i=e.within, +s=i.isWindow?i.scrollLeft:i.offset.left,n=i.width,o=t.left-e.collisionPosition.marginLeft,h=s-o,a=o+e.collisionWidth-n-s;e.collisionWidth>n?0n?0=this.options.distance},_mouseDelayMet:function(){return this.mouseDelayMet},_mouseStart:function(){},_mouseDrag:function(){},_mouseStop:function(){},_mouseCapture:function(){return!0}}),y.ui.plugin={add:function(t,e,i){var s,n=y.ui[t].prototype;for(s in i)n.plugins[s]=n.plugins[s]||[],n.plugins[s].push([e,i[s]])},call:function(t,e,i,s){var n,o=t.plugins[e];if(o&&(s||t.element[0].parentNode&&11!==t.element[0].parentNode.nodeType))for(n=0;n
").css({overflow:"hidden",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("ui-resizable",this.element.resizable("instance")),this.elementIsWrapper=!0,t={marginTop:this.originalElement.css("marginTop"),marginRight:this.originalElement.css("marginRight"),marginBottom:this.originalElement.css("marginBottom"),marginLeft:this.originalElement.css("marginLeft")},this.element.css(t),this.originalElement.css("margin",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(t),this._proportionallyResize()),this._setupHandles(),e.autoHide&&y(this.element).on("mouseenter",function(){e.disabled||(i._removeClass("ui-resizable-autohide"),i._handles.show())}).on("mouseleave",function(){e.disabled||i.resizing||(i._addClass("ui-resizable-autohide"),i._handles.hide())}),this._mouseInit()},_destroy:function(){this._mouseDestroy(),this._addedHandles.remove();function t(t){y(t +).removeData("resizable").removeData("ui-resizable").off(".resizable")}var e;return this.elementIsWrapper&&(t(this.element),e=this.element,this.originalElement.css({position:e.css("position"),width:e.outerWidth(),height:e.outerHeight(),top:e.css("top"),left:e.css("left")}).insertAfter(e),e.remove()),this.originalElement.css("resize",this.originalResizeStyle),t(this.originalElement),this},_setOption:function(t,e){switch(this._super(t,e),t){case"handles":this._removeHandles(),this._setupHandles();break;case"aspectRatio":this._aspectRatio=!!e}},_setupHandles:function(){var t,e,i,s,n,o=this.options,h=this;if(this.handles=o.handles||(y(".ui-resizable-handle",this.element).length?{n:".ui-resizable-n",e:".ui-resizable-e",s:".ui-resizable-s",w:".ui-resizable-w",se:".ui-resizable-se",sw:".ui-resizable-sw",ne:".ui-resizable-ne",nw:".ui-resizable-nw"}:"e,s,se"),this._handles=y(),this._addedHandles=y(),this.handles.constructor===String)for("all"===this.handles&&(this.handles="n,e,s,w,se,sw,ne,nw"),i=this.handles.split( +","),this.handles={},e=0;e"),this._addClass(n,"ui-resizable-handle "+s),n.css({zIndex:o.zIndex}),this.handles[t]=".ui-resizable-"+t,this.element.children(this.handles[t]).length||(this.element.append(n),this._addedHandles=this._addedHandles.add(n));this._renderAxis=function(t){var e,i,s;for(e in t=t||this.element,this.handles)this.handles[e].constructor===String?this.handles[e]=this.element.children(this.handles[e]).first().show():(this.handles[e].jquery||this.handles[e].nodeType)&&(this.handles[e]=y(this.handles[e]),this._on(this.handles[e],{mousedown:h._mouseDown})),this.elementIsWrapper&&this.originalElement[0].nodeName.match(/^(textarea|input|select|button)$/i)&&(i=y(this.handles[e],this.element),s=/sw|ne|nw|se|n|s/.test(e)?i.outerHeight():i.outerWidth(),i=["padding",/ne|nw|n/.test(e)?"Top":/se|sw|s/.test(e)?"Bottom":/^e$/.test(e)?"Right":"Left"].join(""),t.css(i,s),this._proportionallyResize()),this._handles=this._handles.add( +this.handles[e])},this._renderAxis(this.element),this._handles=this._handles.add(this.element.find(".ui-resizable-handle")),this._handles.disableSelection(),this._handles.on("mouseover",function(){h.resizing||(this.className&&(n=this.className.match(/ui-resizable-(se|sw|ne|nw|n|e|s|w)/i)),h.axis=n&&n[1]?n[1]:"se")}),o.autoHide&&(this._handles.hide(),this._addClass("ui-resizable-autohide"))},_removeHandles:function(){this._addedHandles.remove()},_mouseCapture:function(t){var e,i,s=!1;for(e in this.handles)(i=y(this.handles[e])[0])!==t.target&&!y.contains(i,t.target)||(s=!0);return!this.options.disabled&&s},_mouseStart:function(t){var e,i,s=this.options,n=this.element;return this.resizing=!0,this._renderProxy(),e=this._num(this.helper.css("left")),i=this._num(this.helper.css("top")),s.containment&&(e+=y(s.containment).scrollLeft()||0,i+=y(s.containment).scrollTop()||0),this.offset=this.helper.offset(),this.position={left:e,top:i},this.size=this._helper?{width:this.helper.width(),height:this.helper.height()}:{ +width:n.width(),height:n.height()},this.originalSize=this._helper?{width:n.outerWidth(),height:n.outerHeight()}:{width:n.width(),height:n.height()},this.sizeDiff={width:n.outerWidth()-n.width(),height:n.outerHeight()-n.height()},this.originalPosition={left:e,top:i},this.originalMousePosition={left:t.pageX,top:t.pageY},this.aspectRatio="number"==typeof s.aspectRatio?s.aspectRatio:this.originalSize.width/this.originalSize.height||1,s=y(".ui-resizable-"+this.axis).css("cursor"),y("body").css("cursor","auto"===s?this.axis+"-resize":s),this._addClass("ui-resizable-resizing"),this._propagate("start",t),!0},_mouseDrag:function(t){var e=this.originalMousePosition,i=this.axis,s=t.pageX-e.left||0,e=t.pageY-e.top||0,i=this._change[i];return this._updatePrevProperties(),i&&(e=i.apply(this,[t,s,e]),this._updateVirtualBoundaries(t.shiftKey),(this._aspectRatio||t.shiftKey)&&(e=this._updateRatio(e,t)),e=this._respectSize(e,t),this._updateCache(e),this._propagate("resize",t),e=this._applyChanges(), +!this._helper&&this._proportionallyResizeElements.length&&this._proportionallyResize(),y.isEmptyObject(e)||(this._updatePrevProperties(),this._trigger("resize",t,this.ui()),this._applyChanges())),!1},_mouseStop:function(t){this.resizing=!1;var e,i,s,n=this.options,o=this;return this._helper&&(s=(e=(i=this._proportionallyResizeElements).length&&/textarea/i.test(i[0].nodeName))&&this._hasScroll(i[0],"left")?0:o.sizeDiff.height,i=e?0:o.sizeDiff.width,e={width:o.helper.width()-i,height:o.helper.height()-s},i=parseFloat(o.element.css("left"))+(o.position.left-o.originalPosition.left)||null,s=parseFloat(o.element.css("top"))+(o.position.top-o.originalPosition.top)||null,n.animate||this.element.css(y.extend(e,{top:s,left:i})),o.helper.height(o.size.height),o.helper.width(o.size.width),this._helper&&!n.animate&&this._proportionallyResize()),y("body").css("cursor","auto"),this._removeClass("ui-resizable-resizing"),this._propagate("stop",t),this._helper&&this.helper.remove(),!1},_updatePrevProperties:function(){ +this.prevPosition={top:this.position.top,left:this.position.left},this.prevSize={width:this.size.width,height:this.size.height}},_applyChanges:function(){var t={};return this.position.top!==this.prevPosition.top&&(t.top=this.position.top+"px"),this.position.left!==this.prevPosition.left&&(t.left=this.position.left+"px"),this.size.width!==this.prevSize.width&&(t.width=this.size.width+"px"),this.size.height!==this.prevSize.height&&(t.height=this.size.height+"px"),this.helper.css(t),t},_updateVirtualBoundaries:function(t){var e,i,s=this.options,n={minWidth:this._isNumber(s.minWidth)?s.minWidth:0,maxWidth:this._isNumber(s.maxWidth)?s.maxWidth:1/0,minHeight:this._isNumber(s.minHeight)?s.minHeight:0,maxHeight:this._isNumber(s.maxHeight)?s.maxHeight:1/0};(this._aspectRatio||t)&&(e=n.minHeight*this.aspectRatio,i=n.minWidth/this.aspectRatio,s=n.maxHeight*this.aspectRatio,t=n.maxWidth/this.aspectRatio,e>n.minWidth&&(n.minWidth=e),i>n.minHeight&&(n.minHeight=i),st.width,h=this._isNumber(t.height)&&e.minHeight&&e.minHeight>t.height,a=this.originalPosition.left+this.originalSize.width,r=this.originalPosition.top+this.originalSize.height +,l=/sw|nw|w/.test(i),i=/nw|ne|n/.test(i);return o&&(t.width=e.minWidth),h&&(t.height=e.minHeight),s&&(t.width=e.maxWidth),n&&(t.height=e.maxHeight),o&&l&&(t.left=a-e.minWidth),s&&l&&(t.left=a-e.maxWidth),h&&i&&(t.top=r-e.minHeight),n&&i&&(t.top=r-e.maxHeight),t.width||t.height||t.left||!t.top?t.width||t.height||t.top||!t.left||(t.left=null):t.top=null,t},_getPaddingPlusBorderDimensions:function(t){for(var e=0,i=[],s=[t.css("borderTopWidth"),t.css("borderRightWidth"),t.css("borderBottomWidth"),t.css("borderLeftWidth")],n=[t.css("paddingTop"),t.css("paddingRight"),t.css("paddingBottom"),t.css("paddingLeft")];e<4;e++)i[e]=parseFloat(s[e])||0,i[e]+=parseFloat(n[e])||0;return{height:i[0]+i[2],width:i[1]+i[3]}},_proportionallyResize:function(){if(this._proportionallyResizeElements.length)for(var t,e=0,i=this.helper||this.element;e
").css({overflow:"hidden"}),this._addClass(this.helper,this._helper),this.helper.css({width:this.element.outerWidth(),height:this.element.outerHeight(),position:"absolute",left:this.elementOffset.left+"px",top:this.elementOffset.top+"px",zIndex:++e.zIndex}),this.helper.appendTo("body").disableSelection()):this.helper=this.element},_change:{e:function(t,e){return{width:this.originalSize.width+e}},w:function(t,e){var i=this.originalSize;return{left:this.originalPosition.left+e,width:i.width-e}},n:function(t,e,i){var s=this.originalSize;return{top:this.originalPosition.top+i,height:s.height-i}},s:function(t,e,i){return{height:this.originalSize.height+i}},se:function(t,e,i){return y.extend(this._change.s.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},sw:function(t,e, +i){return y.extend(this._change.s.apply(this,arguments),this._change.w.apply(this,[t,e,i]))},ne:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.e.apply(this,[t,e,i]))},nw:function(t,e,i){return y.extend(this._change.n.apply(this,arguments),this._change.w.apply(this,[t,e,i]))}},_propagate:function(t,e){y.ui.plugin.call(this,t,[e,this.ui()]),"resize"!==t&&this._trigger(t,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}}}),y.ui.plugin.add("resizable","animate",{stop:function(e){var i=y(this).resizable("instance"),t=i.options,s=i._proportionallyResizeElements,n=s.length&&/textarea/i.test(s[0].nodeName),o=n&&i._hasScroll(s[0],"left")?0:i.sizeDiff.height,h=n?0:i.sizeDiff.width,n={width:i.size.width-h,height:i.size.height-o},h=parseFloat(i.element.css("left"))+(i.position.left-i.originalPosition.left +)||null,o=parseFloat(i.element.css("top"))+(i.position.top-i.originalPosition.top)||null;i.element.animate(y.extend(n,o&&h?{top:o,left:h}:{}),{duration:t.animateDuration,easing:t.animateEasing,step:function(){var t={width:parseFloat(i.element.css("width")),height:parseFloat(i.element.css("height")),top:parseFloat(i.element.css("top")),left:parseFloat(i.element.css("left"))};s&&s.length&&y(s[0]).css({width:t.width,height:t.height}),i._updateCache(t),i._propagate("resize",e)}})}}),y.ui.plugin.add("resizable","containment",{start:function(){var i,s,n=y(this).resizable("instance"),t=n.options,e=n.element,o=t.containment,h=o instanceof y?o.get(0):/parent/.test(o)?e.parent().get(0):o;h&&(n.containerElement=y(h),/document/.test(o)||o===document?(n.containerOffset={left:0,top:0},n.containerPosition={left:0,top:0},n.parentData={element:y(document),left:0,top:0,width:y(document).width(),height:y(document).height()||document.body.parentNode.scrollHeight}):(i=y(h),s=[],y(["Top","Right","Left","Bottom"]).each(function(t,e +){s[t]=n._num(i.css("padding"+e))}),n.containerOffset=i.offset(),n.containerPosition=i.position(),n.containerSize={height:i.innerHeight()-s[3],width:i.innerWidth()-s[1]},t=n.containerOffset,e=n.containerSize.height,o=n.containerSize.width,o=n._hasScroll(h,"left")?h.scrollWidth:o,e=n._hasScroll(h)?h.scrollHeight:e,n.parentData={element:h,left:t.left,top:t.top,width:o,height:e}))},resize:function(t){var e=y(this).resizable("instance"),i=e.options,s=e.containerOffset,n=e.position,o=e._aspectRatio||t.shiftKey,h={top:0,left:0},a=e.containerElement,t=!0;a[0]!==document&&/static/.test(a.css("position"))&&(h=s),n.left<(e._helper?s.left:0)&&(e.size.width=e.size.width+(e._helper?e.position.left-s.left:e.position.left-h.left),o&&(e.size.height=e.size.width/e.aspectRatio,t=!1),e.position.left=i.helper?s.left:0),n.top<(e._helper?s.top:0)&&(e.size.height=e.size.height+(e._helper?e.position.top-s.top:e.position.top),o&&(e.size.width=e.size.height*e.aspectRatio,t=!1),e.position.top=e._helper?s.top:0), +i=e.containerElement.get(0)===e.element.parent().get(0),n=/relative|absolute/.test(e.containerElement.css("position")),i&&n?(e.offset.left=e.parentData.left+e.position.left,e.offset.top=e.parentData.top+e.position.top):(e.offset.left=e.element.offset().left,e.offset.top=e.element.offset().top),n=Math.abs(e.sizeDiff.width+(e._helper?e.offset.left-h.left:e.offset.left-s.left)),s=Math.abs(e.sizeDiff.height+(e._helper?e.offset.top-h.top:e.offset.top-s.top)),n+e.size.width>=e.parentData.width&&(e.size.width=e.parentData.width-n,o&&(e.size.height=e.size.width/e.aspectRatio,t=!1)),s+e.size.height>=e.parentData.height&&(e.size.height=e.parentData.height-s,o&&(e.size.width=e.size.height*e.aspectRatio,t=!1)),t||(e.position.left=e.prevPosition.left,e.position.top=e.prevPosition.top,e.size.width=e.prevSize.width,e.size.height=e.prevSize.height)},stop:function(){var t=y(this).resizable("instance"),e=t.options,i=t.containerOffset,s=t.containerPosition,n=t.containerElement,o=y(t.helper),h=o.offset(),a=o.outerWidth( +)-t.sizeDiff.width,o=o.outerHeight()-t.sizeDiff.height;t._helper&&!e.animate&&/relative/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o}),t._helper&&!e.animate&&/static/.test(n.css("position"))&&y(this).css({left:h.left-s.left-i.left,width:a,height:o})}}),y.ui.plugin.add("resizable","alsoResize",{start:function(){var t=y(this).resizable("instance").options;y(t.alsoResize).each(function(){var t=y(this);t.data("ui-resizable-alsoresize",{width:parseFloat(t.width()),height:parseFloat(t.height()),left:parseFloat(t.css("left")),top:parseFloat(t.css("top"))})})},resize:function(t,i){var e=y(this).resizable("instance"),s=e.options,n=e.originalSize,o=e.originalPosition,h={height:e.size.height-n.height||0,width:e.size.width-n.width||0,top:e.position.top-o.top||0,left:e.position.left-o.left||0};y(s.alsoResize).each(function(){var t=y(this),s=y(this).data("ui-resizable-alsoresize"),n={},e=t.parents(i.originalElement[0]).length?["width","height"]:["width","height","top","left"];y.each(e, +function(t,e){var i=(s[e]||0)+(h[e]||0);i&&0<=i&&(n[e]=i||null)}),t.css(n)})},stop:function(){y(this).removeData("ui-resizable-alsoresize")}}),y.ui.plugin.add("resizable","ghost",{start:function(){var t=y(this).resizable("instance"),e=t.size;t.ghost=t.originalElement.clone(),t.ghost.css({opacity:.25,display:"block",position:"relative",height:e.height,width:e.width,margin:0,left:0,top:0}),t._addClass(t.ghost,"ui-resizable-ghost"),!1!==y.uiBackCompat&&"string"==typeof t.options.ghost&&t.ghost.addClass(this.options.ghost),t.ghost.appendTo(t.helper)},resize:function(){var t=y(this).resizable("instance");t.ghost&&t.ghost.css({position:"relative",height:t.size.height,width:t.size.width})},stop:function(){var t=y(this).resizable("instance");t.ghost&&t.helper&&t.helper.get(0).removeChild(t.ghost.get(0))}}),y.ui.plugin.add("resizable","grid",{resize:function(){var t,e=y(this).resizable("instance"),i=e.options,s=e.size,n=e.originalSize,o=e.originalPosition,h=e.axis,a="number"==typeof i.grid?[i.grid,i.grid]:i.grid,r=a[0 +]||1,l=a[1]||1,u=Math.round((s.width-n.width)/r)*r,p=Math.round((s.height-n.height)/l)*l,d=n.width+u,c=n.height+p,f=i.maxWidth&&i.maxWidthd,s=i.minHeight&&i.minHeight>c;i.grid=a,m&&(d+=r),s&&(c+=l),f&&(d-=r),g&&(c-=l),/^(se|s|e)$/.test(h)?(e.size.width=d,e.size.height=c):/^(ne)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.top=o.top-p):/^(sw)$/.test(h)?(e.size.width=d,e.size.height=c,e.position.left=o.left-u):((c-l<=0||d-r<=0)&&(t=e._getPaddingPlusBorderDimensions(this)),0=f[g]?0:Math.min(f[g],n));!a&&1=f[g]?0:Math.min(f[g],n));!a&&1-1){targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se","n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if(session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)}closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if(session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE,function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList,finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight()));return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")}function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(),elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight,viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right-1){ +targetElements.on(evt+EVENT_NAMESPACE,function elementToggle(event){$.powerTip.toggle(this,event)})}else{targetElements.on(evt+EVENT_NAMESPACE,function elementOpen(event){$.powerTip.show(this,event)})}});$.each(options.closeEvents,function(idx,evt){if($.inArray(evt,options.openEvents)<0){targetElements.on(evt+EVENT_NAMESPACE,function elementClose(event){$.powerTip.hide(this,!isMouseEvent(event))})}});targetElements.on("keydown"+EVENT_NAMESPACE,function elementKeyDown(event){if(event.keyCode===27){$.powerTip.hide(this,true)}})}return targetElements};$.fn.powerTip.defaults={fadeInTime:200,fadeOutTime:100,followMouse:false,popupId:"powerTip",popupClass:null,intentSensitivity:7,intentPollInterval:100,closeDelay:100,placement:"n",smartPlacement:false,offset:10,mouseOnToPopup:false,manual:false,openEvents:["mouseenter","focus"],closeEvents:["mouseleave","blur"]};$.fn.powerTip.smartPlacementLists={n:["n","ne","nw","s"],e:["e","ne","se","w","nw","sw","n","s","e"],s:["s","se","sw","n"],w:["w","nw","sw","e","ne","se", +"n","s","w"],nw:["nw","w","sw","n","s","se","nw"],ne:["ne","e","se","n","s","sw","ne"],sw:["sw","w","nw","s","n","ne","sw"],se:["se","e","ne","s","n","nw","se"],"nw-alt":["nw-alt","n","ne-alt","sw-alt","s","se-alt","w","e"],"ne-alt":["ne-alt","n","nw-alt","se-alt","s","sw-alt","e","w"],"sw-alt":["sw-alt","s","se-alt","nw-alt","n","ne-alt","w","e"],"se-alt":["se-alt","s","sw-alt","ne-alt","n","nw-alt","e","w"]};$.powerTip={show:function apiShowTip(element,event){if(isMouseEvent(event)){trackMouse(event);session.previousX=event.pageX;session.previousY=event.pageY;$(element).data(DATA_DISPLAYCONTROLLER).show()}else{$(element).first().data(DATA_DISPLAYCONTROLLER).show(true,true)}return element},reposition:function apiResetPosition(element){$(element).first().data(DATA_DISPLAYCONTROLLER).resetPosition();return element},hide:function apiCloseTip(element,immediate){var displayController;immediate=element?immediate:true;if(element){displayController=$(element).first().data(DATA_DISPLAYCONTROLLER)}else if( +session.activeHover){displayController=session.activeHover.data(DATA_DISPLAYCONTROLLER)}if(displayController){displayController.hide(immediate)}return element},toggle:function apiToggle(element,event){if(session.activeHover&&session.activeHover.is(element)){$.powerTip.hide(element,!isMouseEvent(event))}else{$.powerTip.show(element,event)}return element}};$.powerTip.showTip=$.powerTip.show;$.powerTip.closeTip=$.powerTip.hide;function CSSCoordinates(){var me=this;me.top="auto";me.left="auto";me.right="auto";me.bottom="auto";me.set=function(property,value){if($.isNumeric(value)){me[property]=Math.round(value)}}}function DisplayController(element,options,tipController){var hoverTimer=null,myCloseDelay=null;function openTooltip(immediate,forceOpen){cancelTimer();if(!element.data(DATA_HASACTIVEHOVER)){if(!immediate){session.tipOpenImminent=true;hoverTimer=setTimeout(function intentDelay(){hoverTimer=null;checkForIntent()},options.intentPollInterval)}else{if(forceOpen){element.data(DATA_FORCEDOPEN,true)} +closeAnyDelayed();tipController.showTip(element)}}else{cancelClose()}}function closeTooltip(disableDelay){if(myCloseDelay){myCloseDelay=session.closeDelayTimeout=clearTimeout(myCloseDelay);session.delayInProgress=false}cancelTimer();session.tipOpenImminent=false;if(element.data(DATA_HASACTIVEHOVER)){element.data(DATA_FORCEDOPEN,false);if(!disableDelay){session.delayInProgress=true;session.closeDelayTimeout=setTimeout(function closeDelay(){session.closeDelayTimeout=null;tipController.hideTip(element);session.delayInProgress=false;myCloseDelay=null},options.closeDelay);myCloseDelay=session.closeDelayTimeout}else{tipController.hideTip(element)}}}function checkForIntent(){var xDifference=Math.abs(session.previousX-session.currentX),yDifference=Math.abs(session.previousY-session.currentY),totalDifference=xDifference+yDifference;if(totalDifference",{id:options.popupId});if($body.length===0){$body=$("body")}$body.append(tipElement);session.tooltips=session.tooltips?session.tooltips.add(tipElement):tipElement}if(options.followMouse){if(!tipElement.data(DATA_HASMOUSEMOVE)){$document.on("mousemove"+EVENT_NAMESPACE,positionTipOnCursor);$window.on("scroll"+EVENT_NAMESPACE,positionTipOnCursor);tipElement.data(DATA_HASMOUSEMOVE,true)}}function beginShowTip(element){element.data(DATA_HASACTIVEHOVER,true);tipElement.queue(function queueTipInit(next){showTip(element);next()})}function showTip(element){var tipContent;if(!element.data(DATA_HASACTIVEHOVER)){return}if( +session.isTipOpen){if(!session.isClosing){hideTip(session.activeHover)}tipElement.delay(100).queue(function queueTipAgain(next){showTip(element);next()});return}element.trigger("powerTipPreRender");tipContent=getTooltipContent(element);if(tipContent){tipElement.empty().append(tipContent)}else{return}element.trigger("powerTipRender");session.activeHover=element;session.isTipOpen=true;tipElement.data(DATA_MOUSEONTOTIP,options.mouseOnToPopup);tipElement.addClass(options.popupClass);if(!options.followMouse||element.data(DATA_FORCEDOPEN)){positionTipOnElement(element);session.isFixedTipOpen=true}else{positionTipOnCursor()}if(!element.data(DATA_FORCEDOPEN)&&!options.followMouse){$document.on("click"+EVENT_NAMESPACE,function documentClick(event){var target=event.target;if(target!==element[0]){if(options.mouseOnToPopup){if(target!==tipElement[0]&&!$.contains(tipElement[0],target)){$.powerTip.hide()}}else{$.powerTip.hide()}}})}if(options.mouseOnToPopup&&!options.manual){tipElement.on("mouseenter"+EVENT_NAMESPACE, +function tipMouseEnter(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).cancel()}});tipElement.on("mouseleave"+EVENT_NAMESPACE,function tipMouseLeave(){if(session.activeHover){session.activeHover.data(DATA_DISPLAYCONTROLLER).hide()}})}tipElement.fadeIn(options.fadeInTime,function fadeInCallback(){if(!session.desyncTimeout){session.desyncTimeout=setInterval(closeDesyncedTip,500)}element.trigger("powerTipOpen")})}function hideTip(element){session.isClosing=true;session.isTipOpen=false;session.desyncTimeout=clearInterval(session.desyncTimeout);element.data(DATA_HASACTIVEHOVER,false);element.data(DATA_FORCEDOPEN,false);$document.off("click"+EVENT_NAMESPACE);tipElement.off(EVENT_NAMESPACE);tipElement.fadeOut(options.fadeOutTime,function fadeOutCallback(){var coords=new CSSCoordinates;session.activeHover=null;session.isClosing=false;session.isFixedTipOpen=false;tipElement.removeClass();coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset); +tipElement.css(coords);element.trigger("powerTipClose")})}function positionTipOnCursor(){var tipWidth,tipHeight,coords,collisions,collisionCount;if(!session.isFixedTipOpen&&(session.isTipOpen||session.tipOpenImminent&&tipElement.data(DATA_HASMOUSEMOVE))){tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=new CSSCoordinates;coords.set("top",session.currentY+options.offset);coords.set("left",session.currentX+options.offset);collisions=getViewportCollisions(coords,tipWidth,tipHeight);if(collisions!==Collision.none){collisionCount=countFlags(collisions);if(collisionCount===1){if(collisions===Collision.right){coords.set("left",session.scrollLeft+session.windowWidth-tipWidth)}else if(collisions===Collision.bottom){coords.set("top",session.scrollTop+session.windowHeight-tipHeight)}}else{coords.set("left",session.currentX-tipWidth-options.offset);coords.set("top",session.currentY-tipHeight-options.offset)}}tipElement.css(coords)}}function positionTipOnElement(element){var priorityList, +finalPlacement;if(options.smartPlacement||options.followMouse&&element.data(DATA_FORCEDOPEN)){priorityList=$.fn.powerTip.smartPlacementLists[options.placement];$.each(priorityList,function(idx,pos){var collisions=getViewportCollisions(placeTooltip(element,pos),tipElement.outerWidth(),tipElement.outerHeight());finalPlacement=pos;return collisions!==Collision.none})}else{placeTooltip(element,options.placement);finalPlacement=options.placement}tipElement.removeClass("w nw sw e ne se n s w se-alt sw-alt ne-alt nw-alt");tipElement.addClass(finalPlacement)}function placeTooltip(element,placement){var iterationCount=0,tipWidth,tipHeight,coords=new CSSCoordinates;coords.set("top",0);coords.set("left",0);tipElement.css(coords);do{tipWidth=tipElement.outerWidth();tipHeight=tipElement.outerHeight();coords=placementCalculator.compute(element,placement,tipWidth,tipHeight,options.offset);tipElement.css(coords)}while(++iterationCount<=5&&(tipWidth!==tipElement.outerWidth()||tipHeight!==tipElement.outerHeight())); +return coords}function closeDesyncedTip(){var isDesynced=false,hasDesyncableCloseEvent=$.grep(["mouseleave","mouseout","blur","focusout"],function(eventType){return $.inArray(eventType,options.closeEvents)!==-1}).length>0;if(session.isTipOpen&&!session.isClosing&&!session.delayInProgress&&hasDesyncableCloseEvent){if(session.activeHover.data(DATA_HASACTIVEHOVER)===false||session.activeHover.is(":disabled")){isDesynced=true}else if(!isMouseOver(session.activeHover)&&!session.activeHover.is(":focus")&&!session.activeHover.data(DATA_FORCEDOPEN)){if(tipElement.data(DATA_MOUSEONTOTIP)){if(!isMouseOver(tipElement)){isDesynced=true}}else{isDesynced=true}}if(isDesynced){hideTip(session.activeHover)}}}this.showTip=beginShowTip;this.hideTip=hideTip;this.resetPosition=positionTipOnElement}function isSvgElement(element){return Boolean(window.SVGElement&&element[0]instanceof SVGElement)}function isMouseEvent(event){return Boolean(event&&$.inArray(event.type,MOUSE_EVENTS)>-1&&typeof event.pageX==="number")} +function initTracking(){if(!session.mouseTrackingActive){session.mouseTrackingActive=true;getViewportDimensions();$(getViewportDimensions);$document.on("mousemove"+EVENT_NAMESPACE,trackMouse);$window.on("resize"+EVENT_NAMESPACE,trackResize);$window.on("scroll"+EVENT_NAMESPACE,trackScroll)}}function getViewportDimensions(){session.scrollLeft=$window.scrollLeft();session.scrollTop=$window.scrollTop();session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackResize(){session.windowWidth=$window.width();session.windowHeight=$window.height()}function trackScroll(){var x=$window.scrollLeft(),y=$window.scrollTop();if(x!==session.scrollLeft){session.currentX+=x-session.scrollLeft;session.scrollLeft=x}if(y!==session.scrollTop){session.currentY+=y-session.scrollTop;session.scrollTop=y}}function trackMouse(event){session.currentX=event.pageX;session.currentY=event.pageY}function isMouseOver(element){var elementPosition=element.offset(),elementBox=element[0].getBoundingClientRect(), +elementWidth=elementBox.right-elementBox.left,elementHeight=elementBox.bottom-elementBox.top;return session.currentX>=elementPosition.left&&session.currentX<=elementPosition.left+elementWidth&&session.currentY>=elementPosition.top&&session.currentY<=elementPosition.top+elementHeight}function getTooltipContent(element){var tipText=element.data(DATA_POWERTIP),tipObject=element.data(DATA_POWERTIPJQ),tipTarget=element.data(DATA_POWERTIPTARGET),targetElement,content;if(tipText){if($.isFunction(tipText)){tipText=tipText.call(element[0])}content=tipText}else if(tipObject){if($.isFunction(tipObject)){tipObject=tipObject.call(element[0])}if(tipObject.length>0){content=tipObject.clone(true,true)}}else if(tipTarget){targetElement=$("#"+tipTarget);if(targetElement.length>0){content=targetElement.html()}}return content}function getViewportCollisions(coords,elementWidth,elementHeight){var viewportTop=session.scrollTop,viewportLeft=session.scrollLeft,viewportBottom=viewportTop+session.windowHeight, +viewportRight=viewportLeft+session.windowWidth,collisions=Collision.none;if(coords.topviewportBottom||Math.abs(coords.bottom-session.windowHeight)>viewportBottom){collisions|=Collision.bottom}if(coords.leftviewportRight){collisions|=Collision.left}if(coords.left+elementWidth>viewportRight||coords.right1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery);/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 + */!function(a){function f(a,b){if(!(a.originalEvent.touches.length>1)){a.preventDefault();var c=a.originalEvent.changedTouches[0],d=document.createEvent("MouseEvents");d.initMouseEvent(b,!0,!0,window,1,c.screenX,c.screenY,c.clientX,c.clientY,!1,!1,!1,!1,0,null),a.target.dispatchEvent(d)}}if(a.support.touch="ontouchend"in document,a.support.touch){var e,b=a.ui.mouse.prototype,c=b._mouseInit,d=b._mouseDestroy;b._touchStart=function(a){var b=this;!e&&b._mouseCapture(a.originalEvent.changedTouches[0])&&(e=!0,b._touchMoved=!1,f(a,"mouseover"),f(a,"mousemove"),f(a,"mousedown"))},b._touchMove=function(a){e&&(this._touchMoved=!0,f(a,"mousemove"))},b._touchEnd=function(a){e&&(f(a,"mouseup"),f(a,"mouseout"),this._touchMoved||f(a,"click"),e=!1)},b._mouseInit=function(){var b=this;b.element.bind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b,"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),c.call(b)},b._mouseDestroy=function(){var b=this;b.element.unbind({touchstart:a.proxy(b,"_touchStart"),touchmove:a.proxy(b, +"_touchMove"),touchend:a.proxy(b,"_touchEnd")}),d.call(b)}}}(jQuery); +/*! SmartMenus jQuery Plugin - v1.1.0 - September 17, 2017 * http://www.smartmenus.org/ - * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)),mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend($.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy(this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData("smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?(this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for(var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if((!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&(this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass("highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]")||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"),a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i,downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2))&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0),canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}},rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})}return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1,bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); \ No newline at end of file + * Copyright Vasil Dinkov, Vadikom Web Ltd. http://vadikom.com; Licensed MIT */(function(t){"function"==typeof define&&define.amd?define(["jquery"],t):"object"==typeof module&&"object"==typeof module.exports?module.exports=t(require("jquery")):t(jQuery)})(function($){function initMouseDetection(t){var e=".smartmenus_mouse";if(mouseDetectionEnabled||t)mouseDetectionEnabled&&t&&($(document).off(e),mouseDetectionEnabled=!1);else{var i=!0,s=null,o={mousemove:function(t){var e={x:t.pageX,y:t.pageY,timeStamp:(new Date).getTime()};if(s){var o=Math.abs(s.x-e.x),a=Math.abs(s.y-e.y);if((o>0||a>0)&&2>=o&&2>=a&&300>=e.timeStamp-s.timeStamp&&(mouse=!0,i)){var n=$(t.target).closest("a");n.is("a")&&$.each(menuTrees,function(){return $.contains(this.$root[0],n[0])?(this.itemEnter({currentTarget:n[0]}),!1):void 0}),i=!1}}s=e}};o[touchEvents?"touchstart":"pointerover pointermove pointerout MSPointerOver MSPointerMove MSPointerOut"]=function(t){isTouchEvent(t.originalEvent)&&(mouse=!1)},$(document).on(getEventsNS(o,e)), +mouseDetectionEnabled=!0}}function isTouchEvent(t){return!/^(4|mouse)$/.test(t.pointerType)}function getEventsNS(t,e){e||(e="");var i={};for(var s in t)i[s.split(" ").join(e+" ")+e]=t[s];return i}var menuTrees=[],mouse=!1,touchEvents="ontouchstart"in window,mouseDetectionEnabled=!1,requestAnimationFrame=window.requestAnimationFrame||function(t){return setTimeout(t,1e3/60)},cancelAnimationFrame=window.cancelAnimationFrame||function(t){clearTimeout(t)},canAnimate=!!$.fn.animate;return $.SmartMenus=function(t,e){this.$root=$(t),this.opts=e,this.rootId="",this.accessIdPrefix="",this.$subArrow=null,this.activatedItems=[],this.visibleSubMenus=[],this.showTimeout=0,this.hideTimeout=0,this.scrollTimeout=0,this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.idInc=0,this.$firstLink=null,this.$firstSub=null,this.disabled=!1,this.$disableOverlay=null,this.$touchScrollingSub=null,this.cssTransforms3d="perspective"in t.style||"webkitPerspective"in t.style,this.wasCollapsible=!1,this.init()},$.extend( +$.SmartMenus,{hideAll:function(){$.each(menuTrees,function(){this.menuHideAll()})},destroy:function(){for(;menuTrees.length;)menuTrees[0].destroy();initMouseDetection(!0)},prototype:{init:function(t){var e=this;if(!t){menuTrees.push(this),this.rootId=((new Date).getTime()+Math.random()+"").replace(/\D/g,""),this.accessIdPrefix="sm-"+this.rootId+"-",this.$root.hasClass("sm-rtl")&&(this.opts.rightToLeftSubMenus=!0);var i=".smartmenus";this.$root.data("smartmenus",this).attr("data-smartmenus-id",this.rootId).dataSM("level",1).on(getEventsNS({"mouseover focusin":$.proxy(this.rootOver,this),"mouseout focusout":$.proxy(this.rootOut,this),keydown:$.proxy(this.rootKeyDown,this)},i)).on(getEventsNS({mouseenter:$.proxy(this.itemEnter,this),mouseleave:$.proxy(this.itemLeave,this),mousedown:$.proxy(this.itemDown,this),focus:$.proxy(this.itemFocus,this),blur:$.proxy(this.itemBlur,this),click:$.proxy(this.itemClick,this)},i),"a"),i+=this.rootId,this.opts.hideOnClick&&$(document).on(getEventsNS({touchstart:$.proxy( +this.docTouchStart,this),touchmove:$.proxy(this.docTouchMove,this),touchend:$.proxy(this.docTouchEnd,this),click:$.proxy(this.docClick,this)},i)),$(window).on(getEventsNS({"resize orientationchange":$.proxy(this.winResize,this)},i)),this.opts.subIndicators&&(this.$subArrow=$("").addClass("sub-arrow"),this.opts.subIndicatorsText&&this.$subArrow.html(this.opts.subIndicatorsText)),initMouseDetection()}if(this.$firstSub=this.$root.find("ul").each(function(){e.menuInit($(this))}).eq(0),this.$firstLink=this.$root.find("a").eq(0),this.opts.markCurrentItem){var s=/(index|default)\.[^#\?\/]*/i,o=/#.*/,a=window.location.href.replace(s,""),n=a.replace(o,"");this.$root.find("a").each(function(){var t=this.href.replace(s,""),i=$(this);(t==a||t==n)&&(i.addClass("current"),e.opts.markCurrentTree&&i.parentsUntil("[data-smartmenus-id]","ul").each(function(){$(this).dataSM("parent-a").addClass("current")}))})}this.wasCollapsible=this.isCollapsible()},destroy:function(t){if(!t){var e=".smartmenus";this.$root.removeData( +"smartmenus").removeAttr("data-smartmenus-id").removeDataSM("level").off(e),e+=this.rootId,$(document).off(e),$(window).off(e),this.opts.subIndicators&&(this.$subArrow=null)}this.menuHideAll();var i=this;this.$root.find("ul").each(function(){var t=$(this);t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.dataSM("shown-before")&&((i.opts.subMenusMinWidth||i.opts.subMenusMaxWidth)&&t.css({width:"",minWidth:"",maxWidth:""}).removeClass("sm-nowrap"),t.dataSM("scroll-arrows")&&t.dataSM("scroll-arrows").remove(),t.css({zIndex:"",top:"",left:"",marginLeft:"",marginTop:"",display:""})),0==(t.attr("id")||"").indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeDataSM("in-mega").removeDataSM("shown-before").removeDataSM("scroll-arrows").removeDataSM("parent-a").removeDataSM("level").removeDataSM("beforefirstshowfired").removeAttr("role").removeAttr("aria-hidden").removeAttr("aria-labelledby").removeAttr("aria-expanded"),this.$root.find("a.has-submenu").each(function(){var t=$(this);0==t.attr("id" +).indexOf(i.accessIdPrefix)&&t.removeAttr("id")}).removeClass("has-submenu").removeDataSM("sub").removeAttr("aria-haspopup").removeAttr("aria-controls").removeAttr("aria-expanded").closest("li").removeDataSM("sub"),this.opts.subIndicators&&this.$root.find("span.sub-arrow").remove(),this.opts.markCurrentItem&&this.$root.find("a.current").removeClass("current"),t||(this.$root=null,this.$firstLink=null,this.$firstSub=null,this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),menuTrees.splice($.inArray(this,menuTrees),1))},disable:function(t){if(!this.disabled){if(this.menuHideAll(),!t&&!this.opts.isPopup&&this.$root.is(":visible")){var e=this.$root.offset();this.$disableOverlay=$('
').css({position:"absolute",top:e.top,left:e.left,width:this.$root.outerWidth(),height:this.$root.outerHeight(),zIndex:this.getStartZIndex(!0),opacity:0}).appendTo(document.body)}this.disabled=!0}},docClick:function(t){return this.$touchScrollingSub?( +this.$touchScrollingSub=null,void 0):((this.visibleSubMenus.length&&!$.contains(this.$root[0],t.target)||$(t.target).closest("a").length)&&this.menuHideAll(),void 0)},docTouchEnd:function(){if(this.lastTouch){if(!(!this.visibleSubMenus.length||void 0!==this.lastTouch.x2&&this.lastTouch.x1!=this.lastTouch.x2||void 0!==this.lastTouch.y2&&this.lastTouch.y1!=this.lastTouch.y2||this.lastTouch.target&&$.contains(this.$root[0],this.lastTouch.target))){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var t=this;this.hideTimeout=setTimeout(function(){t.menuHideAll()},350)}this.lastTouch=null}},docTouchMove:function(t){if(this.lastTouch){var e=t.originalEvent.touches[0];this.lastTouch.x2=e.pageX,this.lastTouch.y2=e.pageY}},docTouchStart:function(t){var e=t.originalEvent.touches[0];this.lastTouch={x1:e.pageX,y1:e.pageY,target:e.target}},enable:function(){this.disabled&&(this.$disableOverlay&&(this.$disableOverlay.remove(),this.$disableOverlay=null),this.disabled=!1)},getClosestMenu:function(t){for( +var e=$(t).closest("ul");e.dataSM("in-mega");)e=e.parent().closest("ul");return e[0]||null},getHeight:function(t){return this.getOffset(t,!0)},getOffset:function(t,e){var i;"none"==t.css("display")&&(i={position:t[0].style.position,visibility:t[0].style.visibility},t.css({position:"absolute",visibility:"hidden"}).show());var s=t[0].getBoundingClientRect&&t[0].getBoundingClientRect(),o=s&&(e?s.height||s.bottom-s.top:s.width||s.right-s.left);return o||0===o||(o=e?t[0].offsetHeight:t[0].offsetWidth),i&&t.hide().css(i),o},getStartZIndex:function(t){var e=parseInt(this[t?"$root":"$firstSub"].css("z-index"));return!t&&isNaN(e)&&(e=parseInt(this.$root.css("z-index"))),isNaN(e)?1:e},getTouchPoint:function(t){return t.touches&&t.touches[0]||t.changedTouches&&t.changedTouches[0]||t},getViewport:function(t){var e=t?"Height":"Width",i=document.documentElement["client"+e],s=window["inner"+e];return s&&(i=Math.min(i,s)),i},getViewportHeight:function(){return this.getViewport(!0)},getViewportWidth:function(){ +return this.getViewport()},getWidth:function(t){return this.getOffset(t)},handleEvents:function(){return!this.disabled&&this.isCSSOn()},handleItemEvents:function(t){return this.handleEvents()&&!this.isLinkInMegaMenu(t)},isCollapsible:function(){return"static"==this.$firstSub.css("position")},isCSSOn:function(){return"inline"!=this.$firstLink.css("display")},isFixed:function(){var t="fixed"==this.$root.css("position");return t||this.$root.parentsUntil("body").each(function(){return"fixed"==$(this).css("position")?(t=!0,!1):void 0}),t},isLinkInMegaMenu:function(t){return $(this.getClosestMenu(t[0])).hasClass("mega-menu")},isTouchMode:function(){return!mouse||this.opts.noMouseOver||this.isCollapsible()},itemActivate:function(t,e){var i=t.closest("ul"),s=i.dataSM("level");if(s>1&&(!this.activatedItems[s-2]||this.activatedItems[s-2][0]!=i.dataSM("parent-a")[0])){var o=this;$(i.parentsUntil("[data-smartmenus-id]","ul").get().reverse()).add(i).each(function(){o.itemActivate($(this).dataSM("parent-a"))})}if(( +!this.isCollapsible()||e)&&this.menuHideSubMenus(this.activatedItems[s-1]&&this.activatedItems[s-1][0]==t[0]?s:s-1),this.activatedItems[s-1]=t,this.$root.triggerHandler("activate.smapi",t[0])!==!1){var a=t.dataSM("sub");a&&(this.isTouchMode()||!this.opts.showOnClick||this.clickActivated)&&this.menuShow(a)}},itemBlur:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&this.$root.triggerHandler("blur.smapi",e[0])},itemClick:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(this.$touchScrollingSub&&this.$touchScrollingSub[0]==e.closest("ul")[0])return this.$touchScrollingSub=null,t.stopPropagation(),!1;if(this.$root.triggerHandler("click.smapi",e[0])===!1)return!1;var i=$(t.target).is(".sub-arrow"),s=e.dataSM("sub"),o=s?2==s.dataSM("level"):!1,a=this.isCollapsible(),n=/toggle$/.test(this.opts.collapsibleBehavior),r=/link$/.test(this.opts.collapsibleBehavior),h=/^accordion/.test(this.opts.collapsibleBehavior);if(s&&!s.is(":visible")){if((!r||!a||i)&&(this.opts.showOnClick&&o&&( +this.clickActivated=!0),this.itemActivate(e,h),s.is(":visible")))return this.focusActivated=!0,!1}else if(a&&(n||i))return this.itemActivate(e,h),this.menuHide(s),n&&(this.focusActivated=!1),!1;return this.opts.showOnClick&&o||e.hasClass("disabled")||this.$root.triggerHandler("select.smapi",e[0])===!1?!1:void 0}},itemDown:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&e.dataSM("mousedown",!0)},itemEnter:function(t){var e=$(t.currentTarget);if(this.handleItemEvents(e)){if(!this.isTouchMode()){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);var i=this;this.showTimeout=setTimeout(function(){i.itemActivate(e)},this.opts.showOnClick&&1==e.closest("ul").dataSM("level")?1:this.opts.showTimeout)}this.$root.triggerHandler("mouseenter.smapi",e[0])}},itemFocus:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(!this.focusActivated||this.isTouchMode()&&e.dataSM("mousedown")||this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0]==e[0 +]||this.itemActivate(e,!0),this.$root.triggerHandler("focus.smapi",e[0]))},itemLeave:function(t){var e=$(t.currentTarget);this.handleItemEvents(e)&&(this.isTouchMode()||(e[0].blur(),this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0)),e.removeDataSM("mousedown"),this.$root.triggerHandler("mouseleave.smapi",e[0]))},menuHide:function(t){if(this.$root.triggerHandler("beforehide.smapi",t[0])!==!1&&(canAnimate&&t.stop(!0,!0),"none"!=t.css("display"))){var e=function(){t.css("z-index","")};this.isCollapsible()?canAnimate&&this.opts.collapsibleHideFunction?this.opts.collapsibleHideFunction.call(this,t,e):t.hide(this.opts.collapsibleHideDuration,e):canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,t,e):t.hide(this.opts.hideDuration,e),t.dataSM("scroll")&&(this.menuScrollStop(t),t.css({"touch-action":"","-ms-touch-action":"","-webkit-transform":"",transform:""}).off(".smartmenus_scroll").removeDataSM("scroll").dataSM("scroll-arrows").hide()),t.dataSM("parent-a").removeClass( +"highlighted").attr("aria-expanded","false"),t.attr({"aria-expanded":"false","aria-hidden":"true"});var i=t.dataSM("level");this.activatedItems.splice(i-1,1),this.visibleSubMenus.splice($.inArray(t,this.visibleSubMenus),1),this.$root.triggerHandler("hide.smapi",t[0])}},menuHideAll:function(){this.showTimeout&&(clearTimeout(this.showTimeout),this.showTimeout=0);for(var t=this.opts.isPopup?1:0,e=this.visibleSubMenus.length-1;e>=t;e--)this.menuHide(this.visibleSubMenus[e]);this.opts.isPopup&&(canAnimate&&this.$root.stop(!0,!0),this.$root.is(":visible")&&(canAnimate&&this.opts.hideFunction?this.opts.hideFunction.call(this,this.$root):this.$root.hide(this.opts.hideDuration))),this.activatedItems=[],this.visibleSubMenus=[],this.clickActivated=!1,this.focusActivated=!1,this.zIndexInc=0,this.$root.triggerHandler("hideAll.smapi")},menuHideSubMenus:function(t){for(var e=this.activatedItems.length-1;e>=t;e--){var i=this.activatedItems[e].dataSM("sub");i&&this.menuHide(i)}},menuInit:function(t){if(!t.dataSM("in-mega")){ +t.hasClass("mega-menu")&&t.find("ul").dataSM("in-mega",!0);for(var e=2,i=t[0];(i=i.parentNode.parentNode)!=this.$root[0];)e++;var s=t.prevAll("a").eq(-1);s.length||(s=t.prevAll().find("a").eq(-1)),s.addClass("has-submenu").dataSM("sub",t),t.dataSM("parent-a",s).dataSM("level",e).parent().dataSM("sub",t);var o=s.attr("id")||this.accessIdPrefix+ ++this.idInc,a=t.attr("id")||this.accessIdPrefix+ ++this.idInc;s.attr({id:o,"aria-haspopup":"true","aria-controls":a,"aria-expanded":"false"}),t.attr({id:a,role:"group","aria-hidden":"true","aria-labelledby":o,"aria-expanded":"false"}),this.opts.subIndicators&&s[this.opts.subIndicatorsPos](this.$subArrow.clone())}},menuPosition:function(t){var e,i,s=t.dataSM("parent-a"),o=s.closest("li"),a=o.parent(),n=t.dataSM("level"),r=this.getWidth(t),h=this.getHeight(t),u=s.offset(),l=u.left,c=u.top,d=this.getWidth(s),m=this.getHeight(s),p=$(window),f=p.scrollLeft(),v=p.scrollTop(),b=this.getViewportWidth(),S=this.getViewportHeight(),g=a.parent().is("[data-sm-horizontal-sub]" +)||2==n&&!a.hasClass("sm-vertical"),M=this.opts.rightToLeftSubMenus&&!o.is("[data-sm-reverse]")||!this.opts.rightToLeftSubMenus&&o.is("[data-sm-reverse]"),w=2==n?this.opts.mainMenuSubOffsetX:this.opts.subMenusSubOffsetX,T=2==n?this.opts.mainMenuSubOffsetY:this.opts.subMenusSubOffsetY;if(g?(e=M?d-r-w:w,i=this.opts.bottomToTopSubMenus?-h-T:m+T):(e=M?w-r:d-w,i=this.opts.bottomToTopSubMenus?m-T-h:T),this.opts.keepInViewport){var y=l+e,I=c+i;if(M&&f>y?e=g?f-y+e:d-w:!M&&y+r>f+b&&(e=g?f+b-r-y+e:w-r),g||(S>h&&I+h>v+S?i+=v+S-h-I:(h>=S||v>I)&&(i+=v-I)),g&&(I+h>v+S+.49||v>I)||!g&&h>S+.49){var x=this;t.dataSM("scroll-arrows")||t.dataSM("scroll-arrows",$([$('')[0],$('')[0]]).on({mouseenter:function(){t.dataSM("scroll").up=$(this).hasClass("scroll-up"),x.menuScroll(t)},mouseleave:function(e){x.menuScrollStop(t),x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(t){ +t.preventDefault()}}).insertAfter(t));var A=".smartmenus_scroll";if(t.dataSM("scroll",{y:this.cssTransforms3d?0:i-m,step:1,itemH:m,subH:h,arrowDownH:this.getHeight(t.dataSM("scroll-arrows").eq(1))}).on(getEventsNS({mouseover:function(e){x.menuScrollOver(t,e)},mouseout:function(e){x.menuScrollOut(t,e)},"mousewheel DOMMouseScroll":function(e){x.menuScrollMousewheel(t,e)}},A)).dataSM("scroll-arrows").css({top:"auto",left:"0",marginLeft:e+(parseInt(t.css("border-left-width"))||0),width:r-(parseInt(t.css("border-left-width"))||0)-(parseInt(t.css("border-right-width"))||0),zIndex:t.css("z-index")}).eq(g&&this.opts.bottomToTopSubMenus?0:1).show(),this.isFixed()){var C={};C[touchEvents?"touchstart touchmove touchend":"pointerdown pointermove pointerup MSPointerDown MSPointerMove MSPointerUp"]=function(e){x.menuScrollTouch(t,e)},t.css({"touch-action":"none","-ms-touch-action":"none"}).on(getEventsNS(C,A))}}}t.css({top:"auto",left:"0",marginLeft:e,marginTop:i-m})},menuScroll:function(t,e,i){var s,o=t.dataSM("scroll"), +a=t.dataSM("scroll-arrows"),n=o.up?o.upEnd:o.downEnd;if(!e&&o.momentum){if(o.momentum*=.92,s=o.momentum,.5>s)return this.menuScrollStop(t),void 0}else s=i||(e||!this.opts.scrollAccelerate?this.opts.scrollStep:Math.floor(o.step));var r=t.dataSM("level");if(this.activatedItems[r-1]&&this.activatedItems[r-1].dataSM("sub")&&this.activatedItems[r-1].dataSM("sub").is(":visible")&&this.menuHideSubMenus(r-1),o.y=o.up&&o.y>=n||!o.up&&n>=o.y?o.y:Math.abs(n-o.y)>s?o.y+(o.up?s:-s):n,t.css(this.cssTransforms3d?{"-webkit-transform":"translate3d(0, "+o.y+"px, 0)",transform:"translate3d(0, "+o.y+"px, 0)"}:{marginTop:o.y}),mouse&&(o.up&&o.y>o.downEnd||!o.up&&o.y0;t.dataSM("scroll-arrows").eq(i?0:1).is(":visible")&&(t.dataSM("scroll").up=i,this.menuScroll(t,!0))}e.preventDefault()},menuScrollOut:function(t,e){mouse&&(/^scroll-(up|down)/.test((e.relatedTarget||"").className)||(t[0]==e.relatedTarget||$.contains(t[0],e.relatedTarget))&&this.getClosestMenu(e.relatedTarget)==t[0]||t.dataSM("scroll-arrows").css("visibility","hidden"))},menuScrollOver:function(t,e){if(mouse&&!/^scroll-(up|down)/.test(e.target.className)&&this.getClosestMenu(e.target)==t[0]){this.menuScrollRefreshData(t);var i=t.dataSM("scroll"),s=$(window).scrollTop()-t.dataSM("parent-a").offset().top-i.itemH;t.dataSM("scroll-arrows").eq(0).css("margin-top",s).end().eq(1).css("margin-top",s+this.getViewportHeight()-i.arrowDownH).end().css("visibility","visible")}},menuScrollRefreshData:function(t){var e=t.dataSM("scroll"),i=$(window).scrollTop()-t.dataSM("parent-a").offset().top-e.itemH;this.cssTransforms3d&&(i=-(parseFloat(t.css("margin-top"))-i)),$.extend(e,{upEnd:i, +downEnd:i+this.getViewportHeight()-e.subH})},menuScrollStop:function(t){return this.scrollTimeout?(cancelAnimationFrame(this.scrollTimeout),this.scrollTimeout=0,t.dataSM("scroll").step=1,!0):void 0},menuScrollTouch:function(t,e){if(e=e.originalEvent,isTouchEvent(e)){var i=this.getTouchPoint(e);if(this.getClosestMenu(i.target)==t[0]){var s=t.dataSM("scroll");if(/(start|down)$/i.test(e.type))this.menuScrollStop(t)?(e.preventDefault(),this.$touchScrollingSub=t):this.$touchScrollingSub=null,this.menuScrollRefreshData(t),$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp});else if(/move$/i.test(e.type)){var o=void 0!==s.touchY?s.touchY:s.touchStartY;if(void 0!==o&&o!=i.pageY){this.$touchScrollingSub=t;var a=i.pageY>o;void 0!==s.up&&s.up!=a&&$.extend(s,{touchStartY:i.pageY,touchStartTime:e.timeStamp}),$.extend(s,{up:a,touchY:i.pageY}),this.menuScroll(t,!0,Math.abs(i.pageY-o))}e.preventDefault()}else void 0!==s.touchY&&((s.momentum=15*Math.pow(Math.abs(i.pageY-s.touchStartY)/(e.timeStamp-s.touchStartTime),2) +)&&(this.menuScrollStop(t),this.menuScroll(t),e.preventDefault()),delete s.touchY)}}},menuShow:function(t){if((t.dataSM("beforefirstshowfired")||(t.dataSM("beforefirstshowfired",!0),this.$root.triggerHandler("beforefirstshow.smapi",t[0])!==!1))&&this.$root.triggerHandler("beforeshow.smapi",t[0])!==!1&&(t.dataSM("shown-before",!0),canAnimate&&t.stop(!0,!0),!t.is(":visible"))){var e=t.dataSM("parent-a"),i=this.isCollapsible();if((this.opts.keepHighlighted||i)&&e.addClass("highlighted"),i)t.removeClass("sm-nowrap").css({zIndex:"",width:"auto",minWidth:"",maxWidth:"",top:"",left:"",marginLeft:"",marginTop:""});else{if(t.css("z-index",this.zIndexInc=(this.zIndexInc||this.getStartZIndex())+1),(this.opts.subMenusMinWidth||this.opts.subMenusMaxWidth)&&(t.css({width:"auto",minWidth:"",maxWidth:""}).addClass("sm-nowrap"),this.opts.subMenusMinWidth&&t.css("min-width",this.opts.subMenusMinWidth),this.opts.subMenusMaxWidth)){var s=this.getWidth(t);t.css("max-width",this.opts.subMenusMaxWidth),s>this.getWidth(t +)&&t.removeClass("sm-nowrap").css("width",this.opts.subMenusMaxWidth)}this.menuPosition(t)}var o=function(){t.css("overflow","")};i?canAnimate&&this.opts.collapsibleShowFunction?this.opts.collapsibleShowFunction.call(this,t,o):t.show(this.opts.collapsibleShowDuration,o):canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,t,o):t.show(this.opts.showDuration,o),e.attr("aria-expanded","true"),t.attr({"aria-expanded":"true","aria-hidden":"false"}),this.visibleSubMenus.push(t),this.$root.triggerHandler("show.smapi",t[0])}},popupHide:function(t){this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0);var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},t?1:this.opts.hideTimeout)},popupShow:function(t,e){if(!this.opts.isPopup)return alert('SmartMenus jQuery Error:\n\nIf you want to show this menu via the "popupShow" method, set the isPopup:true option.'),void 0;if(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),this.$root.dataSM("shown-before",!0), +canAnimate&&this.$root.stop(!0,!0),!this.$root.is(":visible")){this.$root.css({left:t,top:e});var i=this,s=function(){i.$root.css("overflow","")};canAnimate&&this.opts.showFunction?this.opts.showFunction.call(this,this.$root,s):this.$root.show(this.opts.showDuration,s),this.visibleSubMenus[0]=this.$root}},refresh:function(){this.destroy(!0),this.init(!0)},rootKeyDown:function(t){if(this.handleEvents())switch(t.keyCode){case 27:var e=this.activatedItems[0];if(e){this.menuHideAll(),e[0].focus();var i=e.dataSM("sub");i&&this.menuHide(i)}break;case 32:var s=$(t.target);if(s.is("a")&&this.handleItemEvents(s)){var i=s.dataSM("sub");i&&!i.is(":visible")&&(this.itemClick({currentTarget:t.target}),t.preventDefault())}}},rootOut:function(t){if(this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&(this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0),!this.opts.showOnClick||!this.opts.hideOnClick)){var e=this;this.hideTimeout=setTimeout(function(){e.menuHideAll()},this.opts.hideTimeout)}}, +rootOver:function(t){this.handleEvents()&&!this.isTouchMode()&&t.target!=this.$root[0]&&this.hideTimeout&&(clearTimeout(this.hideTimeout),this.hideTimeout=0)},winResize:function(t){if(this.handleEvents()){if(!("onorientationchange"in window)||"orientationchange"==t.type){var e=this.isCollapsible();this.wasCollapsible&&e||(this.activatedItems.length&&this.activatedItems[this.activatedItems.length-1][0].blur(),this.menuHideAll()),this.wasCollapsible=e}}else if(this.$disableOverlay){var i=this.$root.offset();this.$disableOverlay.css({top:i.top,left:i.left,width:this.$root.outerWidth(),height:this.$root.outerHeight()})}}}}),$.fn.dataSM=function(t,e){return e?this.data(t+"_smartmenus",e):this.data(t+"_smartmenus")},$.fn.removeDataSM=function(t){return this.removeData(t+"_smartmenus")},$.fn.smartmenus=function(options){if("string"==typeof options){var args=arguments,method=options;return Array.prototype.shift.call(args),this.each(function(){var t=$(this).data("smartmenus");t&&t[method]&&t[method].apply(t,args)})} +return this.each(function(){var dataOpts=$(this).data("sm-options")||null;if(dataOpts)try{dataOpts=eval("("+dataOpts+")")}catch(e){dataOpts=null,alert('ERROR\n\nSmartMenus jQuery init:\nInvalid "data-sm-options" attribute value syntax.')}new $.SmartMenus(this,$.extend({},$.fn.smartmenus.defaults,options,dataOpts))})},$.fn.smartmenus.defaults={isPopup:!1,mainMenuSubOffsetX:0,mainMenuSubOffsetY:0,subMenusSubOffsetX:0,subMenusSubOffsetY:0,subMenusMinWidth:"10em",subMenusMaxWidth:"20em",subIndicators:!0,subIndicatorsPos:"append",subIndicatorsText:"",scrollStep:30,scrollAccelerate:!0,showTimeout:250,hideTimeout:500,showDuration:0,showFunction:null,hideDuration:0,hideFunction:function(t,e){t.fadeOut(200,e)},collapsibleShowDuration:0,collapsibleShowFunction:function(t,e){t.slideDown(200,e)},collapsibleHideDuration:0,collapsibleHideFunction:function(t,e){t.slideUp(200,e)},showOnClick:!1,hideOnClick:!0,noMouseOver:!1,keepInViewport:!0,keepHighlighted:!0,markCurrentItem:!1,markCurrentTree:!0,rightToLeftSubMenus:!1, +bottomToTopSubMenus:!1,collapsibleBehavior:"default"},$}); diff --git a/doc/html/mainpage_8h.html b/doc/html/mainpage_8h.html index cdae694..2093a6d 100644 --- a/doc/html/mainpage_8h.html +++ b/doc/html/mainpage_8h.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: doc/mainpage/mainpage.h File Reference + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
mainpage.h File Reference
+
mainpage.h File Reference
+ +
diff --git a/doc/html/mainpage_8h_source.html b/doc/html/mainpage_8h_source.html index 765ea32..2e9db0c 100644 --- a/doc/html/mainpage_8h_source.html +++ b/doc/html/mainpage_8h_source.html @@ -1,21 +1,24 @@ - + - - + + LibDriver PCF8563: doc/mainpage/mainpage.h Source File + + - + + @@ -23,34 +26,32 @@
- - - + +
+
LibDriver PCF8563 -  1.0.0
-
PCF8563 full-featured driver
- + + +
@@ -64,10 +65,9 @@
+
- +
+
+
+
+
Loading...
+
Searching...
+
No Matches
+
+
+
-
-
mainpage.h
+
mainpage.h
+
diff --git a/doc/html/menu.js b/doc/html/menu.js index 2fe2214..15f9c52 100644 --- a/doc/html/menu.js +++ b/doc/html/menu.js @@ -22,13 +22,20 @@ @licend The above is the entire license notice for the JavaScript code in this file */ -function initMenu(relPath,searchEnabled,serverSide,searchPage,search) { +function initMenu(relPath,searchEnabled,serverSide,searchPage,search,treeview) { function makeTree(data,relPath) { - var result=''; + let result=''; if ('children' in data) { result+='