diff --git a/.cache/clangd/index/Wifi.cpp.C29FF4A35AE66387.idx b/.cache/clangd/index/Wifi.cpp.C29FF4A35AE66387.idx index 0866fec..5a98809 100644 Binary files a/.cache/clangd/index/Wifi.cpp.C29FF4A35AE66387.idx and b/.cache/clangd/index/Wifi.cpp.C29FF4A35AE66387.idx differ diff --git a/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx b/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx index 79e8051..634b837 100644 Binary files a/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx and b/.cache/clangd/index/Wifi.hpp.162A78F89BACD645.idx differ diff --git a/.cache/clangd/index/WifiSetting.cpp.32D695A00E7D2B78.idx b/.cache/clangd/index/WifiSetting.cpp.32D695A00E7D2B78.idx index c8f3fb2..0675236 100644 Binary files a/.cache/clangd/index/WifiSetting.cpp.32D695A00E7D2B78.idx and b/.cache/clangd/index/WifiSetting.cpp.32D695A00E7D2B78.idx differ diff --git a/.cache/clangd/index/WifiSetting.hpp.617DEB6E05017D99.idx b/.cache/clangd/index/WifiSetting.hpp.617DEB6E05017D99.idx index 3facedb..64b598b 100644 Binary files a/.cache/clangd/index/WifiSetting.hpp.617DEB6E05017D99.idx and b/.cache/clangd/index/WifiSetting.hpp.617DEB6E05017D99.idx differ diff --git a/.cache/clangd/index/animimg001.c.1F66A807512A7206.idx b/.cache/clangd/index/animimg001.c.1F66A807512A7206.idx new file mode 100644 index 0000000..bc461af Binary files /dev/null and b/.cache/clangd/index/animimg001.c.1F66A807512A7206.idx differ diff --git a/.cache/clangd/index/animimg002.c.7DCFD0402DCCC368.idx b/.cache/clangd/index/animimg002.c.7DCFD0402DCCC368.idx new file mode 100644 index 0000000..be21574 Binary files /dev/null and b/.cache/clangd/index/animimg002.c.7DCFD0402DCCC368.idx differ diff --git a/.cache/clangd/index/animimg003.c.14235FD81419AF85.idx b/.cache/clangd/index/animimg003.c.14235FD81419AF85.idx new file mode 100644 index 0000000..7151457 Binary files /dev/null and b/.cache/clangd/index/animimg003.c.14235FD81419AF85.idx differ diff --git a/.cache/clangd/index/img_bulb_gif.c.41B3A2208879747B.idx b/.cache/clangd/index/img_bulb_gif.c.41B3A2208879747B.idx new file mode 100644 index 0000000..fa71981 Binary files /dev/null and b/.cache/clangd/index/img_bulb_gif.c.41B3A2208879747B.idx differ diff --git a/.cache/clangd/index/img_caret_down.c.848368EE1B0C3515.idx b/.cache/clangd/index/img_caret_down.c.848368EE1B0C3515.idx new file mode 100644 index 0000000..8168f48 Binary files /dev/null and b/.cache/clangd/index/img_caret_down.c.848368EE1B0C3515.idx differ diff --git a/.cache/clangd/index/img_cogwheel_argb.c.AFAFDBCA5FD8E32B.idx b/.cache/clangd/index/img_cogwheel_argb.c.AFAFDBCA5FD8E32B.idx new file mode 100644 index 0000000..f12e912 Binary files /dev/null and b/.cache/clangd/index/img_cogwheel_argb.c.AFAFDBCA5FD8E32B.idx differ diff --git a/.cache/clangd/index/img_cogwheel_indexed16.c.05CABA4058CB20D5.idx b/.cache/clangd/index/img_cogwheel_indexed16.c.05CABA4058CB20D5.idx new file mode 100644 index 0000000..dc2eb3e Binary files /dev/null and b/.cache/clangd/index/img_cogwheel_indexed16.c.05CABA4058CB20D5.idx differ diff --git a/.cache/clangd/index/img_cogwheel_rgb.c.0D19CD77B9D924D6.idx b/.cache/clangd/index/img_cogwheel_rgb.c.0D19CD77B9D924D6.idx new file mode 100644 index 0000000..539fd9b Binary files /dev/null and b/.cache/clangd/index/img_cogwheel_rgb.c.0D19CD77B9D924D6.idx differ diff --git a/.cache/clangd/index/img_emoji_F617.c.17374A7DDB7B4CA5.idx b/.cache/clangd/index/img_emoji_F617.c.17374A7DDB7B4CA5.idx new file mode 100644 index 0000000..90970c4 Binary files /dev/null and b/.cache/clangd/index/img_emoji_F617.c.17374A7DDB7B4CA5.idx differ diff --git a/.cache/clangd/index/img_hand.c.D9F2156F9E59D67E.idx b/.cache/clangd/index/img_hand.c.D9F2156F9E59D67E.idx new file mode 100644 index 0000000..4e38d25 Binary files /dev/null and b/.cache/clangd/index/img_hand.c.D9F2156F9E59D67E.idx differ diff --git a/.cache/clangd/index/img_png_demo.c.FD7128FB7CB21F48.idx b/.cache/clangd/index/img_png_demo.c.FD7128FB7CB21F48.idx new file mode 100644 index 0000000..b8f7853 Binary files /dev/null and b/.cache/clangd/index/img_png_demo.c.FD7128FB7CB21F48.idx differ diff --git a/.cache/clangd/index/img_skew_strip.c.0E403714A775118D.idx b/.cache/clangd/index/img_skew_strip.c.0E403714A775118D.idx new file mode 100644 index 0000000..a4029fc Binary files /dev/null and b/.cache/clangd/index/img_skew_strip.c.0E403714A775118D.idx differ diff --git a/.cache/clangd/index/img_star.c.96BB0D18BDA48A6B.idx b/.cache/clangd/index/img_star.c.96BB0D18BDA48A6B.idx new file mode 100644 index 0000000..f7662e4 Binary files /dev/null and b/.cache/clangd/index/img_star.c.96BB0D18BDA48A6B.idx differ diff --git a/.cache/clangd/index/img_svg_img.c.6171871560BD6539.idx b/.cache/clangd/index/img_svg_img.c.6171871560BD6539.idx new file mode 100644 index 0000000..5f33550 Binary files /dev/null and b/.cache/clangd/index/img_svg_img.c.6171871560BD6539.idx differ diff --git a/.cache/clangd/index/img_wink_png.c.CC57BE6C9471920A.idx b/.cache/clangd/index/img_wink_png.c.CC57BE6C9471920A.idx new file mode 100644 index 0000000..e1082dd Binary files /dev/null and b/.cache/clangd/index/img_wink_png.c.CC57BE6C9471920A.idx differ diff --git a/.cache/clangd/index/imgbtn_left.c.33A8126018F95EB1.idx b/.cache/clangd/index/imgbtn_left.c.33A8126018F95EB1.idx new file mode 100644 index 0000000..a0fddf1 Binary files /dev/null and b/.cache/clangd/index/imgbtn_left.c.33A8126018F95EB1.idx differ diff --git a/.cache/clangd/index/imgbtn_mid.c.64C2D1BF48D2EB6A.idx b/.cache/clangd/index/imgbtn_mid.c.64C2D1BF48D2EB6A.idx new file mode 100644 index 0000000..43c0f92 Binary files /dev/null and b/.cache/clangd/index/imgbtn_mid.c.64C2D1BF48D2EB6A.idx differ diff --git a/.cache/clangd/index/imgbtn_right.c.E19BB9428D0ACD91.idx b/.cache/clangd/index/imgbtn_right.c.E19BB9428D0ACD91.idx new file mode 100644 index 0000000..2899f95 Binary files /dev/null and b/.cache/clangd/index/imgbtn_right.c.E19BB9428D0ACD91.idx differ diff --git a/.cache/clangd/index/lv_example_anim.h.74DFE9193356E75C.idx b/.cache/clangd/index/lv_example_anim.h.74DFE9193356E75C.idx new file mode 100644 index 0000000..9e16f83 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim.h.74DFE9193356E75C.idx differ diff --git a/.cache/clangd/index/lv_example_anim_1.c.3FF75D359A02A812.idx b/.cache/clangd/index/lv_example_anim_1.c.3FF75D359A02A812.idx new file mode 100644 index 0000000..2ea6c03 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim_1.c.3FF75D359A02A812.idx differ diff --git a/.cache/clangd/index/lv_example_anim_2.c.87CA24F0D2CCBF9A.idx b/.cache/clangd/index/lv_example_anim_2.c.87CA24F0D2CCBF9A.idx new file mode 100644 index 0000000..1643ba1 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim_2.c.87CA24F0D2CCBF9A.idx differ diff --git a/.cache/clangd/index/lv_example_anim_3.c.4439FBF7F11A2703.idx b/.cache/clangd/index/lv_example_anim_3.c.4439FBF7F11A2703.idx new file mode 100644 index 0000000..5d43623 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim_3.c.4439FBF7F11A2703.idx differ diff --git a/.cache/clangd/index/lv_example_anim_4.c.89A425A7E79B71E8.idx b/.cache/clangd/index/lv_example_anim_4.c.89A425A7E79B71E8.idx new file mode 100644 index 0000000..c8c0346 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim_4.c.89A425A7E79B71E8.idx differ diff --git a/.cache/clangd/index/lv_example_anim_timeline_1.c.D9E203046730E8F1.idx b/.cache/clangd/index/lv_example_anim_timeline_1.c.D9E203046730E8F1.idx new file mode 100644 index 0000000..446c107 Binary files /dev/null and b/.cache/clangd/index/lv_example_anim_timeline_1.c.D9E203046730E8F1.idx differ diff --git a/.cache/clangd/index/lv_example_animimg_1.c.F1795C335135BF29.idx b/.cache/clangd/index/lv_example_animimg_1.c.F1795C335135BF29.idx new file mode 100644 index 0000000..4c5ceef Binary files /dev/null and b/.cache/clangd/index/lv_example_animimg_1.c.F1795C335135BF29.idx differ diff --git a/.cache/clangd/index/lv_example_arc_1.c.C1BF7DF7119D86A4.idx b/.cache/clangd/index/lv_example_arc_1.c.C1BF7DF7119D86A4.idx new file mode 100644 index 0000000..90e8b83 Binary files /dev/null and b/.cache/clangd/index/lv_example_arc_1.c.C1BF7DF7119D86A4.idx differ diff --git a/.cache/clangd/index/lv_example_arc_2.c.23FFFD7E718C2688.idx b/.cache/clangd/index/lv_example_arc_2.c.23FFFD7E718C2688.idx new file mode 100644 index 0000000..59be1a3 Binary files /dev/null and b/.cache/clangd/index/lv_example_arc_2.c.23FFFD7E718C2688.idx differ diff --git a/.cache/clangd/index/lv_example_arc_3.c.9603D43B5253EF2D.idx b/.cache/clangd/index/lv_example_arc_3.c.9603D43B5253EF2D.idx new file mode 100644 index 0000000..545bc7b Binary files /dev/null and b/.cache/clangd/index/lv_example_arc_3.c.9603D43B5253EF2D.idx differ diff --git a/.cache/clangd/index/lv_example_arclabel_1.c.999BF3DF812603E2.idx b/.cache/clangd/index/lv_example_arclabel_1.c.999BF3DF812603E2.idx new file mode 100644 index 0000000..5159266 Binary files /dev/null and b/.cache/clangd/index/lv_example_arclabel_1.c.999BF3DF812603E2.idx differ diff --git a/.cache/clangd/index/lv_example_bar_1.c.C52AD7AF137ABFDC.idx b/.cache/clangd/index/lv_example_bar_1.c.C52AD7AF137ABFDC.idx new file mode 100644 index 0000000..9e04286 Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_1.c.C52AD7AF137ABFDC.idx differ diff --git a/.cache/clangd/index/lv_example_bar_2.c.2DBFC104F50DC3D0.idx b/.cache/clangd/index/lv_example_bar_2.c.2DBFC104F50DC3D0.idx new file mode 100644 index 0000000..2bfa931 Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_2.c.2DBFC104F50DC3D0.idx differ diff --git a/.cache/clangd/index/lv_example_bar_3.c.1AC4EBCC580CAE7B.idx b/.cache/clangd/index/lv_example_bar_3.c.1AC4EBCC580CAE7B.idx new file mode 100644 index 0000000..83cf8c4 Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_3.c.1AC4EBCC580CAE7B.idx differ diff --git a/.cache/clangd/index/lv_example_bar_4.c.BFDCBA79605DE5FB.idx b/.cache/clangd/index/lv_example_bar_4.c.BFDCBA79605DE5FB.idx new file mode 100644 index 0000000..1a8c63e Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_4.c.BFDCBA79605DE5FB.idx differ diff --git a/.cache/clangd/index/lv_example_bar_5.c.5CFE79FC3961941E.idx b/.cache/clangd/index/lv_example_bar_5.c.5CFE79FC3961941E.idx new file mode 100644 index 0000000..0298fae Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_5.c.5CFE79FC3961941E.idx differ diff --git a/.cache/clangd/index/lv_example_bar_6.c.668BC0424DEA7CA7.idx b/.cache/clangd/index/lv_example_bar_6.c.668BC0424DEA7CA7.idx new file mode 100644 index 0000000..7696559 Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_6.c.668BC0424DEA7CA7.idx differ diff --git a/.cache/clangd/index/lv_example_bar_7.c.4E522B8E7F394941.idx b/.cache/clangd/index/lv_example_bar_7.c.4E522B8E7F394941.idx new file mode 100644 index 0000000..cde69c4 Binary files /dev/null and b/.cache/clangd/index/lv_example_bar_7.c.4E522B8E7F394941.idx differ diff --git a/.cache/clangd/index/lv_example_barcode.h.32D6556887A1A9F8.idx b/.cache/clangd/index/lv_example_barcode.h.32D6556887A1A9F8.idx new file mode 100644 index 0000000..1cf51a1 Binary files /dev/null and b/.cache/clangd/index/lv_example_barcode.h.32D6556887A1A9F8.idx differ diff --git a/.cache/clangd/index/lv_example_barcode_1.c.90C7329BC71BE5A9.idx b/.cache/clangd/index/lv_example_barcode_1.c.90C7329BC71BE5A9.idx new file mode 100644 index 0000000..b07c49b Binary files /dev/null and b/.cache/clangd/index/lv_example_barcode_1.c.90C7329BC71BE5A9.idx differ diff --git a/.cache/clangd/index/lv_example_bmp.h.3765EFAE6FB238E3.idx b/.cache/clangd/index/lv_example_bmp.h.3765EFAE6FB238E3.idx new file mode 100644 index 0000000..bf28984 Binary files /dev/null and b/.cache/clangd/index/lv_example_bmp.h.3765EFAE6FB238E3.idx differ diff --git a/.cache/clangd/index/lv_example_bmp_1.c.11BA57AA20BED4A6.idx b/.cache/clangd/index/lv_example_bmp_1.c.11BA57AA20BED4A6.idx new file mode 100644 index 0000000..5f971e0 Binary files /dev/null and b/.cache/clangd/index/lv_example_bmp_1.c.11BA57AA20BED4A6.idx differ diff --git a/.cache/clangd/index/lv_example_button_1.c.6473203DF4DBB909.idx b/.cache/clangd/index/lv_example_button_1.c.6473203DF4DBB909.idx new file mode 100644 index 0000000..b9c471c Binary files /dev/null and b/.cache/clangd/index/lv_example_button_1.c.6473203DF4DBB909.idx differ diff --git a/.cache/clangd/index/lv_example_button_2.c.060FD54B56989B83.idx b/.cache/clangd/index/lv_example_button_2.c.060FD54B56989B83.idx new file mode 100644 index 0000000..9a01321 Binary files /dev/null and b/.cache/clangd/index/lv_example_button_2.c.060FD54B56989B83.idx differ diff --git a/.cache/clangd/index/lv_example_button_3.c.8FD97D226E3523DC.idx b/.cache/clangd/index/lv_example_button_3.c.8FD97D226E3523DC.idx new file mode 100644 index 0000000..278a1a0 Binary files /dev/null and b/.cache/clangd/index/lv_example_button_3.c.8FD97D226E3523DC.idx differ diff --git a/.cache/clangd/index/lv_example_buttonmatrix_1.c.D481D964165D3F03.idx b/.cache/clangd/index/lv_example_buttonmatrix_1.c.D481D964165D3F03.idx new file mode 100644 index 0000000..7ad8a3c Binary files /dev/null and b/.cache/clangd/index/lv_example_buttonmatrix_1.c.D481D964165D3F03.idx differ diff --git a/.cache/clangd/index/lv_example_buttonmatrix_2.c.D38B9A92AFAA7CC5.idx b/.cache/clangd/index/lv_example_buttonmatrix_2.c.D38B9A92AFAA7CC5.idx new file mode 100644 index 0000000..d9a9a8c Binary files /dev/null and b/.cache/clangd/index/lv_example_buttonmatrix_2.c.D38B9A92AFAA7CC5.idx differ diff --git a/.cache/clangd/index/lv_example_buttonmatrix_3.c.819292987428F6DF.idx b/.cache/clangd/index/lv_example_buttonmatrix_3.c.819292987428F6DF.idx new file mode 100644 index 0000000..e01160a Binary files /dev/null and b/.cache/clangd/index/lv_example_buttonmatrix_3.c.819292987428F6DF.idx differ diff --git a/.cache/clangd/index/lv_example_calendar_1.c.76F39EC6910E6203.idx b/.cache/clangd/index/lv_example_calendar_1.c.76F39EC6910E6203.idx new file mode 100644 index 0000000..1c0d5ee Binary files /dev/null and b/.cache/clangd/index/lv_example_calendar_1.c.76F39EC6910E6203.idx differ diff --git a/.cache/clangd/index/lv_example_calendar_2.c.E8CBF3812F7B0F65.idx b/.cache/clangd/index/lv_example_calendar_2.c.E8CBF3812F7B0F65.idx new file mode 100644 index 0000000..b031a14 Binary files /dev/null and b/.cache/clangd/index/lv_example_calendar_2.c.E8CBF3812F7B0F65.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_1.c.9D90A65A71C8F111.idx b/.cache/clangd/index/lv_example_canvas_1.c.9D90A65A71C8F111.idx new file mode 100644 index 0000000..0ed2828 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_1.c.9D90A65A71C8F111.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_10.c.F73A36A08EBF15E8.idx b/.cache/clangd/index/lv_example_canvas_10.c.F73A36A08EBF15E8.idx new file mode 100644 index 0000000..fbac28a Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_10.c.F73A36A08EBF15E8.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_11.c.98B5891EF0439E0E.idx b/.cache/clangd/index/lv_example_canvas_11.c.98B5891EF0439E0E.idx new file mode 100644 index 0000000..3501248 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_11.c.98B5891EF0439E0E.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_2.c.9F48290F08585F50.idx b/.cache/clangd/index/lv_example_canvas_2.c.9F48290F08585F50.idx new file mode 100644 index 0000000..57fb4f7 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_2.c.9F48290F08585F50.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_3.c.2A38825D2744F04B.idx b/.cache/clangd/index/lv_example_canvas_3.c.2A38825D2744F04B.idx new file mode 100644 index 0000000..56fee0f Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_3.c.2A38825D2744F04B.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_4.c.66A973807A8950F6.idx b/.cache/clangd/index/lv_example_canvas_4.c.66A973807A8950F6.idx new file mode 100644 index 0000000..742fa87 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_4.c.66A973807A8950F6.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_5.c.40FB9B5F534B39E0.idx b/.cache/clangd/index/lv_example_canvas_5.c.40FB9B5F534B39E0.idx new file mode 100644 index 0000000..fdea715 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_5.c.40FB9B5F534B39E0.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_6.c.D80CA982CA34CDFA.idx b/.cache/clangd/index/lv_example_canvas_6.c.D80CA982CA34CDFA.idx new file mode 100644 index 0000000..b3dd606 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_6.c.D80CA982CA34CDFA.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_7.c.854471E4C0C30F3A.idx b/.cache/clangd/index/lv_example_canvas_7.c.854471E4C0C30F3A.idx new file mode 100644 index 0000000..cb528bb Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_7.c.854471E4C0C30F3A.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_8.c.807D6BB2FD620BB3.idx b/.cache/clangd/index/lv_example_canvas_8.c.807D6BB2FD620BB3.idx new file mode 100644 index 0000000..99a4e33 Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_8.c.807D6BB2FD620BB3.idx differ diff --git a/.cache/clangd/index/lv_example_canvas_9.c.1B116AB599531924.idx b/.cache/clangd/index/lv_example_canvas_9.c.1B116AB599531924.idx new file mode 100644 index 0000000..fea771d Binary files /dev/null and b/.cache/clangd/index/lv_example_canvas_9.c.1B116AB599531924.idx differ diff --git a/.cache/clangd/index/lv_example_chart_1.c.4E8E0F74A896EB00.idx b/.cache/clangd/index/lv_example_chart_1.c.4E8E0F74A896EB00.idx new file mode 100644 index 0000000..83942c0 Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_1.c.4E8E0F74A896EB00.idx differ diff --git a/.cache/clangd/index/lv_example_chart_2.c.EA2B248544AFF33D.idx b/.cache/clangd/index/lv_example_chart_2.c.EA2B248544AFF33D.idx new file mode 100644 index 0000000..da5aed1 Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_2.c.EA2B248544AFF33D.idx differ diff --git a/.cache/clangd/index/lv_example_chart_3.c.CE69F06E4F8C5FBC.idx b/.cache/clangd/index/lv_example_chart_3.c.CE69F06E4F8C5FBC.idx new file mode 100644 index 0000000..5fdf4df Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_3.c.CE69F06E4F8C5FBC.idx differ diff --git a/.cache/clangd/index/lv_example_chart_4.c.FCABFCE168D5790E.idx b/.cache/clangd/index/lv_example_chart_4.c.FCABFCE168D5790E.idx new file mode 100644 index 0000000..b4aefa7 Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_4.c.FCABFCE168D5790E.idx differ diff --git a/.cache/clangd/index/lv_example_chart_5.c.F9F5C3B65AB27C50.idx b/.cache/clangd/index/lv_example_chart_5.c.F9F5C3B65AB27C50.idx new file mode 100644 index 0000000..a08c2ad Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_5.c.F9F5C3B65AB27C50.idx differ diff --git a/.cache/clangd/index/lv_example_chart_6.c.88B853E0E552CFBD.idx b/.cache/clangd/index/lv_example_chart_6.c.88B853E0E552CFBD.idx new file mode 100644 index 0000000..b2e29e4 Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_6.c.88B853E0E552CFBD.idx differ diff --git a/.cache/clangd/index/lv_example_chart_7.c.7CE4A44191FF2F55.idx b/.cache/clangd/index/lv_example_chart_7.c.7CE4A44191FF2F55.idx new file mode 100644 index 0000000..8dc8e30 Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_7.c.7CE4A44191FF2F55.idx differ diff --git a/.cache/clangd/index/lv_example_chart_8.c.8F4ECE12DC18C72C.idx b/.cache/clangd/index/lv_example_chart_8.c.8F4ECE12DC18C72C.idx new file mode 100644 index 0000000..89f87da Binary files /dev/null and b/.cache/clangd/index/lv_example_chart_8.c.8F4ECE12DC18C72C.idx differ diff --git a/.cache/clangd/index/lv_example_checkbox_1.c.BA463EB4EAC8B5A6.idx b/.cache/clangd/index/lv_example_checkbox_1.c.BA463EB4EAC8B5A6.idx new file mode 100644 index 0000000..2ec738a Binary files /dev/null and b/.cache/clangd/index/lv_example_checkbox_1.c.BA463EB4EAC8B5A6.idx differ diff --git a/.cache/clangd/index/lv_example_checkbox_2.c.650E82C2EDF3D2DF.idx b/.cache/clangd/index/lv_example_checkbox_2.c.650E82C2EDF3D2DF.idx new file mode 100644 index 0000000..c984223 Binary files /dev/null and b/.cache/clangd/index/lv_example_checkbox_2.c.650E82C2EDF3D2DF.idx differ diff --git a/.cache/clangd/index/lv_example_dropdown_1.c.76C2FDCF1B9D59F3.idx b/.cache/clangd/index/lv_example_dropdown_1.c.76C2FDCF1B9D59F3.idx new file mode 100644 index 0000000..aef0162 Binary files /dev/null and b/.cache/clangd/index/lv_example_dropdown_1.c.76C2FDCF1B9D59F3.idx differ diff --git a/.cache/clangd/index/lv_example_dropdown_2.c.807DDEB1FFB9B9A9.idx b/.cache/clangd/index/lv_example_dropdown_2.c.807DDEB1FFB9B9A9.idx new file mode 100644 index 0000000..0d26160 Binary files /dev/null and b/.cache/clangd/index/lv_example_dropdown_2.c.807DDEB1FFB9B9A9.idx differ diff --git a/.cache/clangd/index/lv_example_dropdown_3.c.2B853E8E8CFFAD60.idx b/.cache/clangd/index/lv_example_dropdown_3.c.2B853E8E8CFFAD60.idx new file mode 100644 index 0000000..d2bed80 Binary files /dev/null and b/.cache/clangd/index/lv_example_dropdown_3.c.2B853E8E8CFFAD60.idx differ diff --git a/.cache/clangd/index/lv_example_event.h.C435CDC12C76A1E6.idx b/.cache/clangd/index/lv_example_event.h.C435CDC12C76A1E6.idx new file mode 100644 index 0000000..66ac0fe Binary files /dev/null and b/.cache/clangd/index/lv_example_event.h.C435CDC12C76A1E6.idx differ diff --git a/.cache/clangd/index/lv_example_event_bubble.c.4824CDEF1AF072D3.idx b/.cache/clangd/index/lv_example_event_bubble.c.4824CDEF1AF072D3.idx new file mode 100644 index 0000000..c2bb514 Binary files /dev/null and b/.cache/clangd/index/lv_example_event_bubble.c.4824CDEF1AF072D3.idx differ diff --git a/.cache/clangd/index/lv_example_event_button.c.25A3D549731A0A21.idx b/.cache/clangd/index/lv_example_event_button.c.25A3D549731A0A21.idx new file mode 100644 index 0000000..39d3353 Binary files /dev/null and b/.cache/clangd/index/lv_example_event_button.c.25A3D549731A0A21.idx differ diff --git a/.cache/clangd/index/lv_example_event_click.c.C0C8779F3BB2D5C2.idx b/.cache/clangd/index/lv_example_event_click.c.C0C8779F3BB2D5C2.idx new file mode 100644 index 0000000..628f4f0 Binary files /dev/null and b/.cache/clangd/index/lv_example_event_click.c.C0C8779F3BB2D5C2.idx differ diff --git a/.cache/clangd/index/lv_example_event_draw.c.C4199F4A6247D700.idx b/.cache/clangd/index/lv_example_event_draw.c.C4199F4A6247D700.idx new file mode 100644 index 0000000..624022c Binary files /dev/null and b/.cache/clangd/index/lv_example_event_draw.c.C4199F4A6247D700.idx differ diff --git a/.cache/clangd/index/lv_example_event_streak.c.DCAB4B4E1E649814.idx b/.cache/clangd/index/lv_example_event_streak.c.DCAB4B4E1E649814.idx new file mode 100644 index 0000000..d2c3ff1 Binary files /dev/null and b/.cache/clangd/index/lv_example_event_streak.c.DCAB4B4E1E649814.idx differ diff --git a/.cache/clangd/index/lv_example_event_trickle.c.D18F5D7A3D4E9856.idx b/.cache/clangd/index/lv_example_event_trickle.c.D18F5D7A3D4E9856.idx new file mode 100644 index 0000000..41e7249 Binary files /dev/null and b/.cache/clangd/index/lv_example_event_trickle.c.D18F5D7A3D4E9856.idx differ diff --git a/.cache/clangd/index/lv_example_ffmpeg.h.BE3AD80B4DA814AF.idx b/.cache/clangd/index/lv_example_ffmpeg.h.BE3AD80B4DA814AF.idx new file mode 100644 index 0000000..62fae8e Binary files /dev/null and b/.cache/clangd/index/lv_example_ffmpeg.h.BE3AD80B4DA814AF.idx differ diff --git a/.cache/clangd/index/lv_example_ffmpeg_1.c.1D58D12B09A9FBB5.idx b/.cache/clangd/index/lv_example_ffmpeg_1.c.1D58D12B09A9FBB5.idx new file mode 100644 index 0000000..7e7f287 Binary files /dev/null and b/.cache/clangd/index/lv_example_ffmpeg_1.c.1D58D12B09A9FBB5.idx differ diff --git a/.cache/clangd/index/lv_example_ffmpeg_2.c.2A73265E94EF3B23.idx b/.cache/clangd/index/lv_example_ffmpeg_2.c.2A73265E94EF3B23.idx new file mode 100644 index 0000000..57a0a90 Binary files /dev/null and b/.cache/clangd/index/lv_example_ffmpeg_2.c.2A73265E94EF3B23.idx differ diff --git a/.cache/clangd/index/lv_example_file_explorer.h.89A5878D49299E23.idx b/.cache/clangd/index/lv_example_file_explorer.h.89A5878D49299E23.idx new file mode 100644 index 0000000..68ba9a6 Binary files /dev/null and b/.cache/clangd/index/lv_example_file_explorer.h.89A5878D49299E23.idx differ diff --git a/.cache/clangd/index/lv_example_file_explorer_1.c.325424A281CD88CA.idx b/.cache/clangd/index/lv_example_file_explorer_1.c.325424A281CD88CA.idx new file mode 100644 index 0000000..ae84ac6 Binary files /dev/null and b/.cache/clangd/index/lv_example_file_explorer_1.c.325424A281CD88CA.idx differ diff --git a/.cache/clangd/index/lv_example_file_explorer_2.c.90F0F0CB7B90FB19.idx b/.cache/clangd/index/lv_example_file_explorer_2.c.90F0F0CB7B90FB19.idx new file mode 100644 index 0000000..af75636 Binary files /dev/null and b/.cache/clangd/index/lv_example_file_explorer_2.c.90F0F0CB7B90FB19.idx differ diff --git a/.cache/clangd/index/lv_example_file_explorer_3.c.B8F3AAA70B592BD6.idx b/.cache/clangd/index/lv_example_file_explorer_3.c.B8F3AAA70B592BD6.idx new file mode 100644 index 0000000..363e105 Binary files /dev/null and b/.cache/clangd/index/lv_example_file_explorer_3.c.B8F3AAA70B592BD6.idx differ diff --git a/.cache/clangd/index/lv_example_flex.h.AAE57A9820410362.idx b/.cache/clangd/index/lv_example_flex.h.AAE57A9820410362.idx new file mode 100644 index 0000000..3f29cad Binary files /dev/null and b/.cache/clangd/index/lv_example_flex.h.AAE57A9820410362.idx differ diff --git a/.cache/clangd/index/lv_example_flex_1.c.B532812E1A775526.idx b/.cache/clangd/index/lv_example_flex_1.c.B532812E1A775526.idx new file mode 100644 index 0000000..220d348 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_1.c.B532812E1A775526.idx differ diff --git a/.cache/clangd/index/lv_example_flex_2.c.29FD0C70D73A831E.idx b/.cache/clangd/index/lv_example_flex_2.c.29FD0C70D73A831E.idx new file mode 100644 index 0000000..fbb2789 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_2.c.29FD0C70D73A831E.idx differ diff --git a/.cache/clangd/index/lv_example_flex_3.c.A31AD8DB04A6B27F.idx b/.cache/clangd/index/lv_example_flex_3.c.A31AD8DB04A6B27F.idx new file mode 100644 index 0000000..2b26ea5 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_3.c.A31AD8DB04A6B27F.idx differ diff --git a/.cache/clangd/index/lv_example_flex_4.c.FB9CEB801CA99FCA.idx b/.cache/clangd/index/lv_example_flex_4.c.FB9CEB801CA99FCA.idx new file mode 100644 index 0000000..e2d11d4 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_4.c.FB9CEB801CA99FCA.idx differ diff --git a/.cache/clangd/index/lv_example_flex_5.c.1B2FDA46D4D6EE18.idx b/.cache/clangd/index/lv_example_flex_5.c.1B2FDA46D4D6EE18.idx new file mode 100644 index 0000000..4958e60 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_5.c.1B2FDA46D4D6EE18.idx differ diff --git a/.cache/clangd/index/lv_example_flex_6.c.2AC0B5AA1422FDAC.idx b/.cache/clangd/index/lv_example_flex_6.c.2AC0B5AA1422FDAC.idx new file mode 100644 index 0000000..11a5253 Binary files /dev/null and b/.cache/clangd/index/lv_example_flex_6.c.2AC0B5AA1422FDAC.idx differ diff --git a/.cache/clangd/index/lv_example_font_manager.h.4BDB54E2C7C5A19D.idx b/.cache/clangd/index/lv_example_font_manager.h.4BDB54E2C7C5A19D.idx new file mode 100644 index 0000000..f8fd105 Binary files /dev/null and b/.cache/clangd/index/lv_example_font_manager.h.4BDB54E2C7C5A19D.idx differ diff --git a/.cache/clangd/index/lv_example_font_manager_1.c.9C4E493331EFAD76.idx b/.cache/clangd/index/lv_example_font_manager_1.c.9C4E493331EFAD76.idx new file mode 100644 index 0000000..bbe3c14 Binary files /dev/null and b/.cache/clangd/index/lv_example_font_manager_1.c.9C4E493331EFAD76.idx differ diff --git a/.cache/clangd/index/lv_example_font_manager_2.c.302570449B0DDDE9.idx b/.cache/clangd/index/lv_example_font_manager_2.c.302570449B0DDDE9.idx new file mode 100644 index 0000000..bb8326b Binary files /dev/null and b/.cache/clangd/index/lv_example_font_manager_2.c.302570449B0DDDE9.idx differ diff --git a/.cache/clangd/index/lv_example_font_manager_3.c.15FCAAEAF5D2953A.idx b/.cache/clangd/index/lv_example_font_manager_3.c.15FCAAEAF5D2953A.idx new file mode 100644 index 0000000..d98b7e5 Binary files /dev/null and b/.cache/clangd/index/lv_example_font_manager_3.c.15FCAAEAF5D2953A.idx differ diff --git a/.cache/clangd/index/lv_example_fragment.h.DA57B7F0C72E952A.idx b/.cache/clangd/index/lv_example_fragment.h.DA57B7F0C72E952A.idx new file mode 100644 index 0000000..eb1f9c5 Binary files /dev/null and b/.cache/clangd/index/lv_example_fragment.h.DA57B7F0C72E952A.idx differ diff --git a/.cache/clangd/index/lv_example_fragment_1.c.BB54C455C6487198.idx b/.cache/clangd/index/lv_example_fragment_1.c.BB54C455C6487198.idx new file mode 100644 index 0000000..4d73653 Binary files /dev/null and b/.cache/clangd/index/lv_example_fragment_1.c.BB54C455C6487198.idx differ diff --git a/.cache/clangd/index/lv_example_fragment_2.c.14EBF7D015D69AED.idx b/.cache/clangd/index/lv_example_fragment_2.c.14EBF7D015D69AED.idx new file mode 100644 index 0000000..0a065ca Binary files /dev/null and b/.cache/clangd/index/lv_example_fragment_2.c.14EBF7D015D69AED.idx differ diff --git a/.cache/clangd/index/lv_example_freetype.h.F29CE8FE23D73F51.idx b/.cache/clangd/index/lv_example_freetype.h.F29CE8FE23D73F51.idx new file mode 100644 index 0000000..4d6ebd2 Binary files /dev/null and b/.cache/clangd/index/lv_example_freetype.h.F29CE8FE23D73F51.idx differ diff --git a/.cache/clangd/index/lv_example_freetype_1.c.74EBB102799E383C.idx b/.cache/clangd/index/lv_example_freetype_1.c.74EBB102799E383C.idx new file mode 100644 index 0000000..ccc20b2 Binary files /dev/null and b/.cache/clangd/index/lv_example_freetype_1.c.74EBB102799E383C.idx differ diff --git a/.cache/clangd/index/lv_example_freetype_2.c.CD5B0BD1A05917F8.idx b/.cache/clangd/index/lv_example_freetype_2.c.CD5B0BD1A05917F8.idx new file mode 100644 index 0000000..7a9f6de Binary files /dev/null and b/.cache/clangd/index/lv_example_freetype_2.c.CD5B0BD1A05917F8.idx differ diff --git a/.cache/clangd/index/lv_example_freetype_3.c.389210710CFE8B09.idx b/.cache/clangd/index/lv_example_freetype_3.c.389210710CFE8B09.idx new file mode 100644 index 0000000..9b8f744 Binary files /dev/null and b/.cache/clangd/index/lv_example_freetype_3.c.389210710CFE8B09.idx differ diff --git a/.cache/clangd/index/lv_example_gestures.c.B9AC7EED039A5A9A.idx b/.cache/clangd/index/lv_example_gestures.c.B9AC7EED039A5A9A.idx new file mode 100644 index 0000000..af9c190 Binary files /dev/null and b/.cache/clangd/index/lv_example_gestures.c.B9AC7EED039A5A9A.idx differ diff --git a/.cache/clangd/index/lv_example_gestures.h.872AABC1B37284C3.idx b/.cache/clangd/index/lv_example_gestures.h.872AABC1B37284C3.idx new file mode 100644 index 0000000..78c5dde Binary files /dev/null and b/.cache/clangd/index/lv_example_gestures.h.872AABC1B37284C3.idx differ diff --git a/.cache/clangd/index/lv_example_get_started.h.31F2860C8BBC7965.idx b/.cache/clangd/index/lv_example_get_started.h.31F2860C8BBC7965.idx new file mode 100644 index 0000000..6f09a4c Binary files /dev/null and b/.cache/clangd/index/lv_example_get_started.h.31F2860C8BBC7965.idx differ diff --git a/.cache/clangd/index/lv_example_get_started_1.c.6CFA53FC3D6C660E.idx b/.cache/clangd/index/lv_example_get_started_1.c.6CFA53FC3D6C660E.idx new file mode 100644 index 0000000..b3eae63 Binary files /dev/null and b/.cache/clangd/index/lv_example_get_started_1.c.6CFA53FC3D6C660E.idx differ diff --git a/.cache/clangd/index/lv_example_get_started_2.c.03F1AA5E4D013440.idx b/.cache/clangd/index/lv_example_get_started_2.c.03F1AA5E4D013440.idx new file mode 100644 index 0000000..402d2be Binary files /dev/null and b/.cache/clangd/index/lv_example_get_started_2.c.03F1AA5E4D013440.idx differ diff --git a/.cache/clangd/index/lv_example_get_started_3.c.399920FB2E101302.idx b/.cache/clangd/index/lv_example_get_started_3.c.399920FB2E101302.idx new file mode 100644 index 0000000..de2e31b Binary files /dev/null and b/.cache/clangd/index/lv_example_get_started_3.c.399920FB2E101302.idx differ diff --git a/.cache/clangd/index/lv_example_get_started_4.c.65F6238215E5745C.idx b/.cache/clangd/index/lv_example_get_started_4.c.65F6238215E5745C.idx new file mode 100644 index 0000000..99977df Binary files /dev/null and b/.cache/clangd/index/lv_example_get_started_4.c.65F6238215E5745C.idx differ diff --git a/.cache/clangd/index/lv_example_gif.h.D1B44B87E4D6BA71.idx b/.cache/clangd/index/lv_example_gif.h.D1B44B87E4D6BA71.idx new file mode 100644 index 0000000..8d94e9a Binary files /dev/null and b/.cache/clangd/index/lv_example_gif.h.D1B44B87E4D6BA71.idx differ diff --git a/.cache/clangd/index/lv_example_gif_1.c.4C75F6E0BE9E872E.idx b/.cache/clangd/index/lv_example_gif_1.c.4C75F6E0BE9E872E.idx new file mode 100644 index 0000000..751ab4d Binary files /dev/null and b/.cache/clangd/index/lv_example_gif_1.c.4C75F6E0BE9E872E.idx differ diff --git a/.cache/clangd/index/lv_example_gltf.h.4782818964549A83.idx b/.cache/clangd/index/lv_example_gltf.h.4782818964549A83.idx new file mode 100644 index 0000000..fd0f4bd Binary files /dev/null and b/.cache/clangd/index/lv_example_gltf.h.4782818964549A83.idx differ diff --git a/.cache/clangd/index/lv_example_gltf_1.c.5A7B9E5BA8A397B8.idx b/.cache/clangd/index/lv_example_gltf_1.c.5A7B9E5BA8A397B8.idx new file mode 100644 index 0000000..5f72195 Binary files /dev/null and b/.cache/clangd/index/lv_example_gltf_1.c.5A7B9E5BA8A397B8.idx differ diff --git a/.cache/clangd/index/lv_example_gltf_2.c.8C72BFAAC707337B.idx b/.cache/clangd/index/lv_example_gltf_2.c.8C72BFAAC707337B.idx new file mode 100644 index 0000000..d219c4b Binary files /dev/null and b/.cache/clangd/index/lv_example_gltf_2.c.8C72BFAAC707337B.idx differ diff --git a/.cache/clangd/index/lv_example_grad.h.084591C99A93A474.idx b/.cache/clangd/index/lv_example_grad.h.084591C99A93A474.idx new file mode 100644 index 0000000..e602a68 Binary files /dev/null and b/.cache/clangd/index/lv_example_grad.h.084591C99A93A474.idx differ diff --git a/.cache/clangd/index/lv_example_grad_1.c.832BFC9F77531DA0.idx b/.cache/clangd/index/lv_example_grad_1.c.832BFC9F77531DA0.idx new file mode 100644 index 0000000..baf9331 Binary files /dev/null and b/.cache/clangd/index/lv_example_grad_1.c.832BFC9F77531DA0.idx differ diff --git a/.cache/clangd/index/lv_example_grad_2.c.0A4E24ECCE887E9C.idx b/.cache/clangd/index/lv_example_grad_2.c.0A4E24ECCE887E9C.idx new file mode 100644 index 0000000..57d1659 Binary files /dev/null and b/.cache/clangd/index/lv_example_grad_2.c.0A4E24ECCE887E9C.idx differ diff --git a/.cache/clangd/index/lv_example_grad_3.c.482188294CEB9606.idx b/.cache/clangd/index/lv_example_grad_3.c.482188294CEB9606.idx new file mode 100644 index 0000000..e8b8217 Binary files /dev/null and b/.cache/clangd/index/lv_example_grad_3.c.482188294CEB9606.idx differ diff --git a/.cache/clangd/index/lv_example_grad_4.c.C4D674E1AF4EE329.idx b/.cache/clangd/index/lv_example_grad_4.c.C4D674E1AF4EE329.idx new file mode 100644 index 0000000..e9fc438 Binary files /dev/null and b/.cache/clangd/index/lv_example_grad_4.c.C4D674E1AF4EE329.idx differ diff --git a/.cache/clangd/index/lv_example_grid.h.35D63A740B4F5A37.idx b/.cache/clangd/index/lv_example_grid.h.35D63A740B4F5A37.idx new file mode 100644 index 0000000..16cf386 Binary files /dev/null and b/.cache/clangd/index/lv_example_grid.h.35D63A740B4F5A37.idx differ diff --git a/.cache/clangd/index/lv_example_grid_1.c.FE41A51A0670B544.idx b/.cache/clangd/index/lv_example_grid_1.c.FE41A51A0670B544.idx new file mode 100644 index 0000000..ac3bdfc Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_1.c.FE41A51A0670B544.idx differ diff --git a/.cache/clangd/index/lv_example_grid_2.c.1E29473D17123225.idx b/.cache/clangd/index/lv_example_grid_2.c.1E29473D17123225.idx new file mode 100644 index 0000000..e4dbd56 Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_2.c.1E29473D17123225.idx differ diff --git a/.cache/clangd/index/lv_example_grid_3.c.2E22CC329F9EC962.idx b/.cache/clangd/index/lv_example_grid_3.c.2E22CC329F9EC962.idx new file mode 100644 index 0000000..4d71c07 Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_3.c.2E22CC329F9EC962.idx differ diff --git a/.cache/clangd/index/lv_example_grid_4.c.AE35910B7EF6705E.idx b/.cache/clangd/index/lv_example_grid_4.c.AE35910B7EF6705E.idx new file mode 100644 index 0000000..3b4bab6 Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_4.c.AE35910B7EF6705E.idx differ diff --git a/.cache/clangd/index/lv_example_grid_5.c.4C677A0AB4AEA365.idx b/.cache/clangd/index/lv_example_grid_5.c.4C677A0AB4AEA365.idx new file mode 100644 index 0000000..daa510b Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_5.c.4C677A0AB4AEA365.idx differ diff --git a/.cache/clangd/index/lv_example_grid_6.c.011551A6C8CD6DD8.idx b/.cache/clangd/index/lv_example_grid_6.c.011551A6C8CD6DD8.idx new file mode 100644 index 0000000..25a2244 Binary files /dev/null and b/.cache/clangd/index/lv_example_grid_6.c.011551A6C8CD6DD8.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav.h.A502BC6693582F48.idx b/.cache/clangd/index/lv_example_gridnav.h.A502BC6693582F48.idx new file mode 100644 index 0000000..53309dc Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav.h.A502BC6693582F48.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav_1.c.DC8D2ED0095516C9.idx b/.cache/clangd/index/lv_example_gridnav_1.c.DC8D2ED0095516C9.idx new file mode 100644 index 0000000..063a452 Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav_1.c.DC8D2ED0095516C9.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav_2.c.F7469738F88C1C76.idx b/.cache/clangd/index/lv_example_gridnav_2.c.F7469738F88C1C76.idx new file mode 100644 index 0000000..037a557 Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav_2.c.F7469738F88C1C76.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav_3.c.8EEBBC7CD60FF142.idx b/.cache/clangd/index/lv_example_gridnav_3.c.8EEBBC7CD60FF142.idx new file mode 100644 index 0000000..67c0d18 Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav_3.c.8EEBBC7CD60FF142.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav_4.c.F1E344802C7BA0E0.idx b/.cache/clangd/index/lv_example_gridnav_4.c.F1E344802C7BA0E0.idx new file mode 100644 index 0000000..cdf202b Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav_4.c.F1E344802C7BA0E0.idx differ diff --git a/.cache/clangd/index/lv_example_gridnav_5.c.24834D6103AAA34F.idx b/.cache/clangd/index/lv_example_gridnav_5.c.24834D6103AAA34F.idx new file mode 100644 index 0000000..99f13f6 Binary files /dev/null and b/.cache/clangd/index/lv_example_gridnav_5.c.24834D6103AAA34F.idx differ diff --git a/.cache/clangd/index/lv_example_gstreamer.h.E6A36D1E9F5727FF.idx b/.cache/clangd/index/lv_example_gstreamer.h.E6A36D1E9F5727FF.idx new file mode 100644 index 0000000..532f257 Binary files /dev/null and b/.cache/clangd/index/lv_example_gstreamer.h.E6A36D1E9F5727FF.idx differ diff --git a/.cache/clangd/index/lv_example_gstreamer_1.c.97DC55FBAAEF290B.idx b/.cache/clangd/index/lv_example_gstreamer_1.c.97DC55FBAAEF290B.idx new file mode 100644 index 0000000..5d87b4b Binary files /dev/null and b/.cache/clangd/index/lv_example_gstreamer_1.c.97DC55FBAAEF290B.idx differ diff --git a/.cache/clangd/index/lv_example_image_1.c.CDD68DCA01F862D1.idx b/.cache/clangd/index/lv_example_image_1.c.CDD68DCA01F862D1.idx new file mode 100644 index 0000000..56301e3 Binary files /dev/null and b/.cache/clangd/index/lv_example_image_1.c.CDD68DCA01F862D1.idx differ diff --git a/.cache/clangd/index/lv_example_image_2.c.9C208CC15A7D20EE.idx b/.cache/clangd/index/lv_example_image_2.c.9C208CC15A7D20EE.idx new file mode 100644 index 0000000..3ce2cb7 Binary files /dev/null and b/.cache/clangd/index/lv_example_image_2.c.9C208CC15A7D20EE.idx differ diff --git a/.cache/clangd/index/lv_example_image_3.c.942575B7AF9EA28E.idx b/.cache/clangd/index/lv_example_image_3.c.942575B7AF9EA28E.idx new file mode 100644 index 0000000..62f3253 Binary files /dev/null and b/.cache/clangd/index/lv_example_image_3.c.942575B7AF9EA28E.idx differ diff --git a/.cache/clangd/index/lv_example_image_4.c.6784652DE49C0E71.idx b/.cache/clangd/index/lv_example_image_4.c.6784652DE49C0E71.idx new file mode 100644 index 0000000..77a7b3f Binary files /dev/null and b/.cache/clangd/index/lv_example_image_4.c.6784652DE49C0E71.idx differ diff --git a/.cache/clangd/index/lv_example_image_5.c.E6BDFEE1B91BC275.idx b/.cache/clangd/index/lv_example_image_5.c.E6BDFEE1B91BC275.idx new file mode 100644 index 0000000..4e7f622 Binary files /dev/null and b/.cache/clangd/index/lv_example_image_5.c.E6BDFEE1B91BC275.idx differ diff --git a/.cache/clangd/index/lv_example_imagebutton_1.c.A294D1B38966FE7B.idx b/.cache/clangd/index/lv_example_imagebutton_1.c.A294D1B38966FE7B.idx new file mode 100644 index 0000000..c6aebf9 Binary files /dev/null and b/.cache/clangd/index/lv_example_imagebutton_1.c.A294D1B38966FE7B.idx differ diff --git a/.cache/clangd/index/lv_example_ime_pinyin.h.73828C1DF4DAD84F.idx b/.cache/clangd/index/lv_example_ime_pinyin.h.73828C1DF4DAD84F.idx new file mode 100644 index 0000000..35416f7 Binary files /dev/null and b/.cache/clangd/index/lv_example_ime_pinyin.h.73828C1DF4DAD84F.idx differ diff --git a/.cache/clangd/index/lv_example_ime_pinyin_1.c.93B2CF2030E8D703.idx b/.cache/clangd/index/lv_example_ime_pinyin_1.c.93B2CF2030E8D703.idx new file mode 100644 index 0000000..1200afc Binary files /dev/null and b/.cache/clangd/index/lv_example_ime_pinyin_1.c.93B2CF2030E8D703.idx differ diff --git a/.cache/clangd/index/lv_example_ime_pinyin_2.c.D6B974099F915644.idx b/.cache/clangd/index/lv_example_ime_pinyin_2.c.D6B974099F915644.idx new file mode 100644 index 0000000..70c1f42 Binary files /dev/null and b/.cache/clangd/index/lv_example_ime_pinyin_2.c.D6B974099F915644.idx differ diff --git a/.cache/clangd/index/lv_example_imgfont.h.619FC94D2A976C91.idx b/.cache/clangd/index/lv_example_imgfont.h.619FC94D2A976C91.idx new file mode 100644 index 0000000..aa7bcb9 Binary files /dev/null and b/.cache/clangd/index/lv_example_imgfont.h.619FC94D2A976C91.idx differ diff --git a/.cache/clangd/index/lv_example_imgfont_1.c.65F44644630F13BA.idx b/.cache/clangd/index/lv_example_imgfont_1.c.65F44644630F13BA.idx new file mode 100644 index 0000000..9ee959d Binary files /dev/null and b/.cache/clangd/index/lv_example_imgfont_1.c.65F44644630F13BA.idx differ diff --git a/.cache/clangd/index/lv_example_keyboard_1.c.2952DB28DC2EF0DF.idx b/.cache/clangd/index/lv_example_keyboard_1.c.2952DB28DC2EF0DF.idx new file mode 100644 index 0000000..263ba3f Binary files /dev/null and b/.cache/clangd/index/lv_example_keyboard_1.c.2952DB28DC2EF0DF.idx differ diff --git a/.cache/clangd/index/lv_example_keyboard_2.c.F0398FAE6DF4FECD.idx b/.cache/clangd/index/lv_example_keyboard_2.c.F0398FAE6DF4FECD.idx new file mode 100644 index 0000000..c8ac84b Binary files /dev/null and b/.cache/clangd/index/lv_example_keyboard_2.c.F0398FAE6DF4FECD.idx differ diff --git a/.cache/clangd/index/lv_example_keyboard_3.c.7486DCD97FF32E0C.idx b/.cache/clangd/index/lv_example_keyboard_3.c.7486DCD97FF32E0C.idx new file mode 100644 index 0000000..d43322c Binary files /dev/null and b/.cache/clangd/index/lv_example_keyboard_3.c.7486DCD97FF32E0C.idx differ diff --git a/.cache/clangd/index/lv_example_label_1.c.FE57E2A891177AE7.idx b/.cache/clangd/index/lv_example_label_1.c.FE57E2A891177AE7.idx new file mode 100644 index 0000000..4899993 Binary files /dev/null and b/.cache/clangd/index/lv_example_label_1.c.FE57E2A891177AE7.idx differ diff --git a/.cache/clangd/index/lv_example_label_2.c.3F195856982E4DDB.idx b/.cache/clangd/index/lv_example_label_2.c.3F195856982E4DDB.idx new file mode 100644 index 0000000..d16ff37 Binary files /dev/null and b/.cache/clangd/index/lv_example_label_2.c.3F195856982E4DDB.idx differ diff --git a/.cache/clangd/index/lv_example_label_3.c.0A24AF3798D66E7E.idx b/.cache/clangd/index/lv_example_label_3.c.0A24AF3798D66E7E.idx new file mode 100644 index 0000000..99dc557 Binary files /dev/null and b/.cache/clangd/index/lv_example_label_3.c.0A24AF3798D66E7E.idx differ diff --git a/.cache/clangd/index/lv_example_label_4.c.33392CE76C7C0651.idx b/.cache/clangd/index/lv_example_label_4.c.33392CE76C7C0651.idx new file mode 100644 index 0000000..7b4991f Binary files /dev/null and b/.cache/clangd/index/lv_example_label_4.c.33392CE76C7C0651.idx differ diff --git a/.cache/clangd/index/lv_example_label_5.c.E130A987BB71945E.idx b/.cache/clangd/index/lv_example_label_5.c.E130A987BB71945E.idx new file mode 100644 index 0000000..ee4572a Binary files /dev/null and b/.cache/clangd/index/lv_example_label_5.c.E130A987BB71945E.idx differ diff --git a/.cache/clangd/index/lv_example_label_6.c.B1ECC34000686A65.idx b/.cache/clangd/index/lv_example_label_6.c.B1ECC34000686A65.idx new file mode 100644 index 0000000..f66f597 Binary files /dev/null and b/.cache/clangd/index/lv_example_label_6.c.B1ECC34000686A65.idx differ diff --git a/.cache/clangd/index/lv_example_label_7.c.0D1B2C9B8C92CB82.idx b/.cache/clangd/index/lv_example_label_7.c.0D1B2C9B8C92CB82.idx new file mode 100644 index 0000000..1936d08 Binary files /dev/null and b/.cache/clangd/index/lv_example_label_7.c.0D1B2C9B8C92CB82.idx differ diff --git a/.cache/clangd/index/lv_example_layout.h.79C8DE4D98E64109.idx b/.cache/clangd/index/lv_example_layout.h.79C8DE4D98E64109.idx new file mode 100644 index 0000000..cbcc93a Binary files /dev/null and b/.cache/clangd/index/lv_example_layout.h.79C8DE4D98E64109.idx differ diff --git a/.cache/clangd/index/lv_example_led_1.c.F14E0D9F742D4F6B.idx b/.cache/clangd/index/lv_example_led_1.c.F14E0D9F742D4F6B.idx new file mode 100644 index 0000000..6cd374a Binary files /dev/null and b/.cache/clangd/index/lv_example_led_1.c.F14E0D9F742D4F6B.idx differ diff --git a/.cache/clangd/index/lv_example_libjpeg_turbo.h.A1940D7FB1EE9DF7.idx b/.cache/clangd/index/lv_example_libjpeg_turbo.h.A1940D7FB1EE9DF7.idx new file mode 100644 index 0000000..6cef57d Binary files /dev/null and b/.cache/clangd/index/lv_example_libjpeg_turbo.h.A1940D7FB1EE9DF7.idx differ diff --git a/.cache/clangd/index/lv_example_libjpeg_turbo_1.c.FD17D4D75BD4D1F0.idx b/.cache/clangd/index/lv_example_libjpeg_turbo_1.c.FD17D4D75BD4D1F0.idx new file mode 100644 index 0000000..2cd4f0b Binary files /dev/null and b/.cache/clangd/index/lv_example_libjpeg_turbo_1.c.FD17D4D75BD4D1F0.idx differ diff --git a/.cache/clangd/index/lv_example_libpng.h.0F29ED0D2B4D058B.idx b/.cache/clangd/index/lv_example_libpng.h.0F29ED0D2B4D058B.idx new file mode 100644 index 0000000..05fe52f Binary files /dev/null and b/.cache/clangd/index/lv_example_libpng.h.0F29ED0D2B4D058B.idx differ diff --git a/.cache/clangd/index/lv_example_libpng_1.c.D4E758A62F885F38.idx b/.cache/clangd/index/lv_example_libpng_1.c.D4E758A62F885F38.idx new file mode 100644 index 0000000..ea4f135 Binary files /dev/null and b/.cache/clangd/index/lv_example_libpng_1.c.D4E758A62F885F38.idx differ diff --git a/.cache/clangd/index/lv_example_libs.h.C8CE3F789ED35FC8.idx b/.cache/clangd/index/lv_example_libs.h.C8CE3F789ED35FC8.idx new file mode 100644 index 0000000..f056256 Binary files /dev/null and b/.cache/clangd/index/lv_example_libs.h.C8CE3F789ED35FC8.idx differ diff --git a/.cache/clangd/index/lv_example_line_1.c.F9CB84D2339771A7.idx b/.cache/clangd/index/lv_example_line_1.c.F9CB84D2339771A7.idx new file mode 100644 index 0000000..b1ba340 Binary files /dev/null and b/.cache/clangd/index/lv_example_line_1.c.F9CB84D2339771A7.idx differ diff --git a/.cache/clangd/index/lv_example_list_1.c.19F92B16E062C452.idx b/.cache/clangd/index/lv_example_list_1.c.19F92B16E062C452.idx new file mode 100644 index 0000000..fe1c98c Binary files /dev/null and b/.cache/clangd/index/lv_example_list_1.c.19F92B16E062C452.idx differ diff --git a/.cache/clangd/index/lv_example_list_2.c.8BF39AEE0A717FDE.idx b/.cache/clangd/index/lv_example_list_2.c.8BF39AEE0A717FDE.idx new file mode 100644 index 0000000..0107ada Binary files /dev/null and b/.cache/clangd/index/lv_example_list_2.c.8BF39AEE0A717FDE.idx differ diff --git a/.cache/clangd/index/lv_example_lodepng.h.8AB7BBB4985C7220.idx b/.cache/clangd/index/lv_example_lodepng.h.8AB7BBB4985C7220.idx new file mode 100644 index 0000000..e99253c Binary files /dev/null and b/.cache/clangd/index/lv_example_lodepng.h.8AB7BBB4985C7220.idx differ diff --git a/.cache/clangd/index/lv_example_lodepng_1.c.7B641B4F386F4608.idx b/.cache/clangd/index/lv_example_lodepng_1.c.7B641B4F386F4608.idx new file mode 100644 index 0000000..a01a61b Binary files /dev/null and b/.cache/clangd/index/lv_example_lodepng_1.c.7B641B4F386F4608.idx differ diff --git a/.cache/clangd/index/lv_example_lottie_1.c.C57D8EBAACA35854.idx b/.cache/clangd/index/lv_example_lottie_1.c.C57D8EBAACA35854.idx new file mode 100644 index 0000000..0338cfd Binary files /dev/null and b/.cache/clangd/index/lv_example_lottie_1.c.C57D8EBAACA35854.idx differ diff --git a/.cache/clangd/index/lv_example_lottie_2.c.BB61F357E6D80CCC.idx b/.cache/clangd/index/lv_example_lottie_2.c.BB61F357E6D80CCC.idx new file mode 100644 index 0000000..10bbcb5 Binary files /dev/null and b/.cache/clangd/index/lv_example_lottie_2.c.BB61F357E6D80CCC.idx differ diff --git a/.cache/clangd/index/lv_example_lottie_approve.c.44B284FAD08E9802.idx b/.cache/clangd/index/lv_example_lottie_approve.c.44B284FAD08E9802.idx new file mode 100644 index 0000000..1e631aa Binary files /dev/null and b/.cache/clangd/index/lv_example_lottie_approve.c.44B284FAD08E9802.idx differ diff --git a/.cache/clangd/index/lv_example_menu_1.c.298F5C9F60C19E58.idx b/.cache/clangd/index/lv_example_menu_1.c.298F5C9F60C19E58.idx new file mode 100644 index 0000000..25695a7 Binary files /dev/null and b/.cache/clangd/index/lv_example_menu_1.c.298F5C9F60C19E58.idx differ diff --git a/.cache/clangd/index/lv_example_menu_2.c.5308BF65BA4C4E7C.idx b/.cache/clangd/index/lv_example_menu_2.c.5308BF65BA4C4E7C.idx new file mode 100644 index 0000000..006656e Binary files /dev/null and b/.cache/clangd/index/lv_example_menu_2.c.5308BF65BA4C4E7C.idx differ diff --git a/.cache/clangd/index/lv_example_menu_3.c.461DE5D6D4C93649.idx b/.cache/clangd/index/lv_example_menu_3.c.461DE5D6D4C93649.idx new file mode 100644 index 0000000..54bf8d8 Binary files /dev/null and b/.cache/clangd/index/lv_example_menu_3.c.461DE5D6D4C93649.idx differ diff --git a/.cache/clangd/index/lv_example_menu_4.c.D96DD56CE2EFFE86.idx b/.cache/clangd/index/lv_example_menu_4.c.D96DD56CE2EFFE86.idx new file mode 100644 index 0000000..78d0860 Binary files /dev/null and b/.cache/clangd/index/lv_example_menu_4.c.D96DD56CE2EFFE86.idx differ diff --git a/.cache/clangd/index/lv_example_menu_5.c.9A7B67D341CEE11F.idx b/.cache/clangd/index/lv_example_menu_5.c.9A7B67D341CEE11F.idx new file mode 100644 index 0000000..7b70a92 Binary files /dev/null and b/.cache/clangd/index/lv_example_menu_5.c.9A7B67D341CEE11F.idx differ diff --git a/.cache/clangd/index/lv_example_monkey.h.E55F5A9687EDDE54.idx b/.cache/clangd/index/lv_example_monkey.h.E55F5A9687EDDE54.idx new file mode 100644 index 0000000..31fde50 Binary files /dev/null and b/.cache/clangd/index/lv_example_monkey.h.E55F5A9687EDDE54.idx differ diff --git a/.cache/clangd/index/lv_example_monkey_1.c.8EC371E5E04F6D48.idx b/.cache/clangd/index/lv_example_monkey_1.c.8EC371E5E04F6D48.idx new file mode 100644 index 0000000..ee9040d Binary files /dev/null and b/.cache/clangd/index/lv_example_monkey_1.c.8EC371E5E04F6D48.idx differ diff --git a/.cache/clangd/index/lv_example_monkey_2.c.3C3A109AB380E4DD.idx b/.cache/clangd/index/lv_example_monkey_2.c.3C3A109AB380E4DD.idx new file mode 100644 index 0000000..5674810 Binary files /dev/null and b/.cache/clangd/index/lv_example_monkey_2.c.3C3A109AB380E4DD.idx differ diff --git a/.cache/clangd/index/lv_example_monkey_3.c.1C4C367C1839260C.idx b/.cache/clangd/index/lv_example_monkey_3.c.1C4C367C1839260C.idx new file mode 100644 index 0000000..90286a5 Binary files /dev/null and b/.cache/clangd/index/lv_example_monkey_3.c.1C4C367C1839260C.idx differ diff --git a/.cache/clangd/index/lv_example_msgbox_1.c.902A5B1CD7B7C77D.idx b/.cache/clangd/index/lv_example_msgbox_1.c.902A5B1CD7B7C77D.idx new file mode 100644 index 0000000..eb1fe4b Binary files /dev/null and b/.cache/clangd/index/lv_example_msgbox_1.c.902A5B1CD7B7C77D.idx differ diff --git a/.cache/clangd/index/lv_example_msgbox_2.c.88DE6B255B5AB0BE.idx b/.cache/clangd/index/lv_example_msgbox_2.c.88DE6B255B5AB0BE.idx new file mode 100644 index 0000000..8ae7145 Binary files /dev/null and b/.cache/clangd/index/lv_example_msgbox_2.c.88DE6B255B5AB0BE.idx differ diff --git a/.cache/clangd/index/lv_example_obj_1.c.1D05D50A89301738.idx b/.cache/clangd/index/lv_example_obj_1.c.1D05D50A89301738.idx new file mode 100644 index 0000000..4e97a8d Binary files /dev/null and b/.cache/clangd/index/lv_example_obj_1.c.1D05D50A89301738.idx differ diff --git a/.cache/clangd/index/lv_example_obj_2.c.3B6503010DF9A776.idx b/.cache/clangd/index/lv_example_obj_2.c.3B6503010DF9A776.idx new file mode 100644 index 0000000..838ec63 Binary files /dev/null and b/.cache/clangd/index/lv_example_obj_2.c.3B6503010DF9A776.idx differ diff --git a/.cache/clangd/index/lv_example_obj_3.c.35F1FB0BDDA3C648.idx b/.cache/clangd/index/lv_example_obj_3.c.35F1FB0BDDA3C648.idx new file mode 100644 index 0000000..f6d582d Binary files /dev/null and b/.cache/clangd/index/lv_example_obj_3.c.35F1FB0BDDA3C648.idx differ diff --git a/.cache/clangd/index/lv_example_observer.h.276FACDA1CB78C9A.idx b/.cache/clangd/index/lv_example_observer.h.276FACDA1CB78C9A.idx new file mode 100644 index 0000000..55ec83a Binary files /dev/null and b/.cache/clangd/index/lv_example_observer.h.276FACDA1CB78C9A.idx differ diff --git a/.cache/clangd/index/lv_example_observer_1.c.CA0E95C14AC388EF.idx b/.cache/clangd/index/lv_example_observer_1.c.CA0E95C14AC388EF.idx new file mode 100644 index 0000000..d2fec93 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_1.c.CA0E95C14AC388EF.idx differ diff --git a/.cache/clangd/index/lv_example_observer_2.c.D6640E98A63627DF.idx b/.cache/clangd/index/lv_example_observer_2.c.D6640E98A63627DF.idx new file mode 100644 index 0000000..34f1c24 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_2.c.D6640E98A63627DF.idx differ diff --git a/.cache/clangd/index/lv_example_observer_3.c.FF8F5A99AF056D08.idx b/.cache/clangd/index/lv_example_observer_3.c.FF8F5A99AF056D08.idx new file mode 100644 index 0000000..6d8b191 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_3.c.FF8F5A99AF056D08.idx differ diff --git a/.cache/clangd/index/lv_example_observer_4.c.1E651E1DB139D14C.idx b/.cache/clangd/index/lv_example_observer_4.c.1E651E1DB139D14C.idx new file mode 100644 index 0000000..95c57b6 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_4.c.1E651E1DB139D14C.idx differ diff --git a/.cache/clangd/index/lv_example_observer_5.c.3E3BCC4705C965FA.idx b/.cache/clangd/index/lv_example_observer_5.c.3E3BCC4705C965FA.idx new file mode 100644 index 0000000..6f382b0 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_5.c.3E3BCC4705C965FA.idx differ diff --git a/.cache/clangd/index/lv_example_observer_6.c.BE69ADF47999C155.idx b/.cache/clangd/index/lv_example_observer_6.c.BE69ADF47999C155.idx new file mode 100644 index 0000000..faf09a8 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_6.c.BE69ADF47999C155.idx differ diff --git a/.cache/clangd/index/lv_example_observer_7.c.238EA26DE868A96D.idx b/.cache/clangd/index/lv_example_observer_7.c.238EA26DE868A96D.idx new file mode 100644 index 0000000..18a6777 Binary files /dev/null and b/.cache/clangd/index/lv_example_observer_7.c.238EA26DE868A96D.idx differ diff --git a/.cache/clangd/index/lv_example_osal.c.04868F743CE09053.idx b/.cache/clangd/index/lv_example_osal.c.04868F743CE09053.idx new file mode 100644 index 0000000..549886f Binary files /dev/null and b/.cache/clangd/index/lv_example_osal.c.04868F743CE09053.idx differ diff --git a/.cache/clangd/index/lv_example_osal.h.A8F4DA6A4382028C.idx b/.cache/clangd/index/lv_example_osal.h.A8F4DA6A4382028C.idx new file mode 100644 index 0000000..fd6b6b4 Binary files /dev/null and b/.cache/clangd/index/lv_example_osal.h.A8F4DA6A4382028C.idx differ diff --git a/.cache/clangd/index/lv_example_others.h.6A9F2C6A4A61BCE2.idx b/.cache/clangd/index/lv_example_others.h.6A9F2C6A4A61BCE2.idx new file mode 100644 index 0000000..677e384 Binary files /dev/null and b/.cache/clangd/index/lv_example_others.h.6A9F2C6A4A61BCE2.idx differ diff --git a/.cache/clangd/index/lv_example_qrcode.h.D1234F62D79FA946.idx b/.cache/clangd/index/lv_example_qrcode.h.D1234F62D79FA946.idx new file mode 100644 index 0000000..4901d4c Binary files /dev/null and b/.cache/clangd/index/lv_example_qrcode.h.D1234F62D79FA946.idx differ diff --git a/.cache/clangd/index/lv_example_qrcode_1.c.29F5A2D297C1B24D.idx b/.cache/clangd/index/lv_example_qrcode_1.c.29F5A2D297C1B24D.idx new file mode 100644 index 0000000..b0e1cbd Binary files /dev/null and b/.cache/clangd/index/lv_example_qrcode_1.c.29F5A2D297C1B24D.idx differ diff --git a/.cache/clangd/index/lv_example_rlottie.h.C33D285DF93D5D3B.idx b/.cache/clangd/index/lv_example_rlottie.h.C33D285DF93D5D3B.idx new file mode 100644 index 0000000..8c71c3e Binary files /dev/null and b/.cache/clangd/index/lv_example_rlottie.h.C33D285DF93D5D3B.idx differ diff --git a/.cache/clangd/index/lv_example_rlottie_1.c.AFA1913728276D3E.idx b/.cache/clangd/index/lv_example_rlottie_1.c.AFA1913728276D3E.idx new file mode 100644 index 0000000..3e8d4ff Binary files /dev/null and b/.cache/clangd/index/lv_example_rlottie_1.c.AFA1913728276D3E.idx differ diff --git a/.cache/clangd/index/lv_example_rlottie_2.c.15ABC997A8CBD741.idx b/.cache/clangd/index/lv_example_rlottie_2.c.15ABC997A8CBD741.idx new file mode 100644 index 0000000..7c22f5f Binary files /dev/null and b/.cache/clangd/index/lv_example_rlottie_2.c.15ABC997A8CBD741.idx differ diff --git a/.cache/clangd/index/lv_example_rlottie_approve.c.1E9FA60A0E602CA0.idx b/.cache/clangd/index/lv_example_rlottie_approve.c.1E9FA60A0E602CA0.idx new file mode 100644 index 0000000..3c8fef5 Binary files /dev/null and b/.cache/clangd/index/lv_example_rlottie_approve.c.1E9FA60A0E602CA0.idx differ diff --git a/.cache/clangd/index/lv_example_roller_1.c.290A5DF7B69D5172.idx b/.cache/clangd/index/lv_example_roller_1.c.290A5DF7B69D5172.idx new file mode 100644 index 0000000..2199846 Binary files /dev/null and b/.cache/clangd/index/lv_example_roller_1.c.290A5DF7B69D5172.idx differ diff --git a/.cache/clangd/index/lv_example_roller_2.c.3A5AF1134DE5708E.idx b/.cache/clangd/index/lv_example_roller_2.c.3A5AF1134DE5708E.idx new file mode 100644 index 0000000..31f6825 Binary files /dev/null and b/.cache/clangd/index/lv_example_roller_2.c.3A5AF1134DE5708E.idx differ diff --git a/.cache/clangd/index/lv_example_roller_3.c.6983E30FAFE08BBB.idx b/.cache/clangd/index/lv_example_roller_3.c.6983E30FAFE08BBB.idx new file mode 100644 index 0000000..a4abd75 Binary files /dev/null and b/.cache/clangd/index/lv_example_roller_3.c.6983E30FAFE08BBB.idx differ diff --git a/.cache/clangd/index/lv_example_scale_1.c.B789A11CA4B8C48A.idx b/.cache/clangd/index/lv_example_scale_1.c.B789A11CA4B8C48A.idx new file mode 100644 index 0000000..965a721 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_1.c.B789A11CA4B8C48A.idx differ diff --git a/.cache/clangd/index/lv_example_scale_10.c.55B6846DEBE6F35C.idx b/.cache/clangd/index/lv_example_scale_10.c.55B6846DEBE6F35C.idx new file mode 100644 index 0000000..2cb689f Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_10.c.55B6846DEBE6F35C.idx differ diff --git a/.cache/clangd/index/lv_example_scale_11.c.39B127AA7B87C256.idx b/.cache/clangd/index/lv_example_scale_11.c.39B127AA7B87C256.idx new file mode 100644 index 0000000..7081614 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_11.c.39B127AA7B87C256.idx differ diff --git a/.cache/clangd/index/lv_example_scale_12.c.A5EEAA6F67522C74.idx b/.cache/clangd/index/lv_example_scale_12.c.A5EEAA6F67522C74.idx new file mode 100644 index 0000000..776a769 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_12.c.A5EEAA6F67522C74.idx differ diff --git a/.cache/clangd/index/lv_example_scale_2.c.F2232378BB2EDD8F.idx b/.cache/clangd/index/lv_example_scale_2.c.F2232378BB2EDD8F.idx new file mode 100644 index 0000000..6af0538 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_2.c.F2232378BB2EDD8F.idx differ diff --git a/.cache/clangd/index/lv_example_scale_3.c.AC02C0B1808F14D2.idx b/.cache/clangd/index/lv_example_scale_3.c.AC02C0B1808F14D2.idx new file mode 100644 index 0000000..41d804f Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_3.c.AC02C0B1808F14D2.idx differ diff --git a/.cache/clangd/index/lv_example_scale_4.c.563A900935FFAC61.idx b/.cache/clangd/index/lv_example_scale_4.c.563A900935FFAC61.idx new file mode 100644 index 0000000..02d6abc Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_4.c.563A900935FFAC61.idx differ diff --git a/.cache/clangd/index/lv_example_scale_5.c.2C2C6AD4FDAD7BA2.idx b/.cache/clangd/index/lv_example_scale_5.c.2C2C6AD4FDAD7BA2.idx new file mode 100644 index 0000000..991e2d5 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_5.c.2C2C6AD4FDAD7BA2.idx differ diff --git a/.cache/clangd/index/lv_example_scale_6.c.A4C99AB744C7D29A.idx b/.cache/clangd/index/lv_example_scale_6.c.A4C99AB744C7D29A.idx new file mode 100644 index 0000000..5632485 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_6.c.A4C99AB744C7D29A.idx differ diff --git a/.cache/clangd/index/lv_example_scale_7.c.7767BE3D9B0A402C.idx b/.cache/clangd/index/lv_example_scale_7.c.7767BE3D9B0A402C.idx new file mode 100644 index 0000000..bb809bd Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_7.c.7767BE3D9B0A402C.idx differ diff --git a/.cache/clangd/index/lv_example_scale_8.c.EE2B3BFAAF75F77F.idx b/.cache/clangd/index/lv_example_scale_8.c.EE2B3BFAAF75F77F.idx new file mode 100644 index 0000000..988fb2b Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_8.c.EE2B3BFAAF75F77F.idx differ diff --git a/.cache/clangd/index/lv_example_scale_9.c.5504E60533C8F23A.idx b/.cache/clangd/index/lv_example_scale_9.c.5504E60533C8F23A.idx new file mode 100644 index 0000000..e785430 Binary files /dev/null and b/.cache/clangd/index/lv_example_scale_9.c.5504E60533C8F23A.idx differ diff --git a/.cache/clangd/index/lv_example_scroll.h.E6C00E92DD43A86C.idx b/.cache/clangd/index/lv_example_scroll.h.E6C00E92DD43A86C.idx new file mode 100644 index 0000000..5a59165 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll.h.E6C00E92DD43A86C.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_1.c.DE73B2BB0EFCAC02.idx b/.cache/clangd/index/lv_example_scroll_1.c.DE73B2BB0EFCAC02.idx new file mode 100644 index 0000000..a6d15f7 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_1.c.DE73B2BB0EFCAC02.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_2.c.9EC5B5B5A1B9E6C4.idx b/.cache/clangd/index/lv_example_scroll_2.c.9EC5B5B5A1B9E6C4.idx new file mode 100644 index 0000000..d06c634 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_2.c.9EC5B5B5A1B9E6C4.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_3.c.A4BACBFEA85C0365.idx b/.cache/clangd/index/lv_example_scroll_3.c.A4BACBFEA85C0365.idx new file mode 100644 index 0000000..fb320ff Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_3.c.A4BACBFEA85C0365.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_4.c.30ED3E86ABC40F70.idx b/.cache/clangd/index/lv_example_scroll_4.c.30ED3E86ABC40F70.idx new file mode 100644 index 0000000..62875d7 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_4.c.30ED3E86ABC40F70.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_5.c.D91C3B5BA5790493.idx b/.cache/clangd/index/lv_example_scroll_5.c.D91C3B5BA5790493.idx new file mode 100644 index 0000000..5e13e4c Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_5.c.D91C3B5BA5790493.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_6.c.E055C17FDF6B012F.idx b/.cache/clangd/index/lv_example_scroll_6.c.E055C17FDF6B012F.idx new file mode 100644 index 0000000..3d6f4cc Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_6.c.E055C17FDF6B012F.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_7.c.30ABCC21E7E15841.idx b/.cache/clangd/index/lv_example_scroll_7.c.30ABCC21E7E15841.idx new file mode 100644 index 0000000..094fcc7 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_7.c.30ABCC21E7E15841.idx differ diff --git a/.cache/clangd/index/lv_example_scroll_8.c.BDD0A396E7B77FE9.idx b/.cache/clangd/index/lv_example_scroll_8.c.BDD0A396E7B77FE9.idx new file mode 100644 index 0000000..8bf54c1 Binary files /dev/null and b/.cache/clangd/index/lv_example_scroll_8.c.BDD0A396E7B77FE9.idx differ diff --git a/.cache/clangd/index/lv_example_slider_1.c.C1EDFE43AE248CE3.idx b/.cache/clangd/index/lv_example_slider_1.c.C1EDFE43AE248CE3.idx new file mode 100644 index 0000000..5c3f7d3 Binary files /dev/null and b/.cache/clangd/index/lv_example_slider_1.c.C1EDFE43AE248CE3.idx differ diff --git a/.cache/clangd/index/lv_example_slider_2.c.64DAB0815B95A1EE.idx b/.cache/clangd/index/lv_example_slider_2.c.64DAB0815B95A1EE.idx new file mode 100644 index 0000000..68e32ed Binary files /dev/null and b/.cache/clangd/index/lv_example_slider_2.c.64DAB0815B95A1EE.idx differ diff --git a/.cache/clangd/index/lv_example_slider_3.c.12B9F515448C636E.idx b/.cache/clangd/index/lv_example_slider_3.c.12B9F515448C636E.idx new file mode 100644 index 0000000..549dafe Binary files /dev/null and b/.cache/clangd/index/lv_example_slider_3.c.12B9F515448C636E.idx differ diff --git a/.cache/clangd/index/lv_example_slider_4.c.FFA0BB4DCC6F2689.idx b/.cache/clangd/index/lv_example_slider_4.c.FFA0BB4DCC6F2689.idx new file mode 100644 index 0000000..83dd4ab Binary files /dev/null and b/.cache/clangd/index/lv_example_slider_4.c.FFA0BB4DCC6F2689.idx differ diff --git a/.cache/clangd/index/lv_example_snapshot.h.A4E5E00B410BE6EC.idx b/.cache/clangd/index/lv_example_snapshot.h.A4E5E00B410BE6EC.idx new file mode 100644 index 0000000..6b7b8d7 Binary files /dev/null and b/.cache/clangd/index/lv_example_snapshot.h.A4E5E00B410BE6EC.idx differ diff --git a/.cache/clangd/index/lv_example_snapshot_1.c.2B35461D15B91D65.idx b/.cache/clangd/index/lv_example_snapshot_1.c.2B35461D15B91D65.idx new file mode 100644 index 0000000..41d6d8d Binary files /dev/null and b/.cache/clangd/index/lv_example_snapshot_1.c.2B35461D15B91D65.idx differ diff --git a/.cache/clangd/index/lv_example_span_1.c.E403872667317EAB.idx b/.cache/clangd/index/lv_example_span_1.c.E403872667317EAB.idx new file mode 100644 index 0000000..9aaffa5 Binary files /dev/null and b/.cache/clangd/index/lv_example_span_1.c.E403872667317EAB.idx differ diff --git a/.cache/clangd/index/lv_example_spinbox_1.c.F605C865AE66CD76.idx b/.cache/clangd/index/lv_example_spinbox_1.c.F605C865AE66CD76.idx new file mode 100644 index 0000000..15558ce Binary files /dev/null and b/.cache/clangd/index/lv_example_spinbox_1.c.F605C865AE66CD76.idx differ diff --git a/.cache/clangd/index/lv_example_spinner_1.c.9C6B682F4F2A9FF5.idx b/.cache/clangd/index/lv_example_spinner_1.c.9C6B682F4F2A9FF5.idx new file mode 100644 index 0000000..da59748 Binary files /dev/null and b/.cache/clangd/index/lv_example_spinner_1.c.9C6B682F4F2A9FF5.idx differ diff --git a/.cache/clangd/index/lv_example_style.h.48B5E0B1BB1A3D5B.idx b/.cache/clangd/index/lv_example_style.h.48B5E0B1BB1A3D5B.idx new file mode 100644 index 0000000..c5c0149 Binary files /dev/null and b/.cache/clangd/index/lv_example_style.h.48B5E0B1BB1A3D5B.idx differ diff --git a/.cache/clangd/index/lv_example_style_1.c.6ABFFA22E1125C7D.idx b/.cache/clangd/index/lv_example_style_1.c.6ABFFA22E1125C7D.idx new file mode 100644 index 0000000..7860a15 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_1.c.6ABFFA22E1125C7D.idx differ diff --git a/.cache/clangd/index/lv_example_style_10.c.F840C95BFF5FC7C5.idx b/.cache/clangd/index/lv_example_style_10.c.F840C95BFF5FC7C5.idx new file mode 100644 index 0000000..8c7c20a Binary files /dev/null and b/.cache/clangd/index/lv_example_style_10.c.F840C95BFF5FC7C5.idx differ diff --git a/.cache/clangd/index/lv_example_style_11.c.B6477CE4216AC3F0.idx b/.cache/clangd/index/lv_example_style_11.c.B6477CE4216AC3F0.idx new file mode 100644 index 0000000..c6e69f7 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_11.c.B6477CE4216AC3F0.idx differ diff --git a/.cache/clangd/index/lv_example_style_12.c.648CD1059FE4EEF8.idx b/.cache/clangd/index/lv_example_style_12.c.648CD1059FE4EEF8.idx new file mode 100644 index 0000000..c159a6d Binary files /dev/null and b/.cache/clangd/index/lv_example_style_12.c.648CD1059FE4EEF8.idx differ diff --git a/.cache/clangd/index/lv_example_style_13.c.0D4BB5D1F98552A8.idx b/.cache/clangd/index/lv_example_style_13.c.0D4BB5D1F98552A8.idx new file mode 100644 index 0000000..e5a9043 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_13.c.0D4BB5D1F98552A8.idx differ diff --git a/.cache/clangd/index/lv_example_style_14.c.41A3F2A59CB00185.idx b/.cache/clangd/index/lv_example_style_14.c.41A3F2A59CB00185.idx new file mode 100644 index 0000000..3f6613b Binary files /dev/null and b/.cache/clangd/index/lv_example_style_14.c.41A3F2A59CB00185.idx differ diff --git a/.cache/clangd/index/lv_example_style_15.c.108F81017445A60A.idx b/.cache/clangd/index/lv_example_style_15.c.108F81017445A60A.idx new file mode 100644 index 0000000..de22c4f Binary files /dev/null and b/.cache/clangd/index/lv_example_style_15.c.108F81017445A60A.idx differ diff --git a/.cache/clangd/index/lv_example_style_16.c.7DBDF1BD1BA15E2D.idx b/.cache/clangd/index/lv_example_style_16.c.7DBDF1BD1BA15E2D.idx new file mode 100644 index 0000000..a035110 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_16.c.7DBDF1BD1BA15E2D.idx differ diff --git a/.cache/clangd/index/lv_example_style_17.c.1B5C7BD2BC66C33C.idx b/.cache/clangd/index/lv_example_style_17.c.1B5C7BD2BC66C33C.idx new file mode 100644 index 0000000..ee02a63 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_17.c.1B5C7BD2BC66C33C.idx differ diff --git a/.cache/clangd/index/lv_example_style_18.c.68E1AD81438FADDC.idx b/.cache/clangd/index/lv_example_style_18.c.68E1AD81438FADDC.idx new file mode 100644 index 0000000..7441695 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_18.c.68E1AD81438FADDC.idx differ diff --git a/.cache/clangd/index/lv_example_style_19.c.DC877A35826B2310.idx b/.cache/clangd/index/lv_example_style_19.c.DC877A35826B2310.idx new file mode 100644 index 0000000..66bb663 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_19.c.DC877A35826B2310.idx differ diff --git a/.cache/clangd/index/lv_example_style_2.c.A0D2CB29AE703033.idx b/.cache/clangd/index/lv_example_style_2.c.A0D2CB29AE703033.idx new file mode 100644 index 0000000..91c4b07 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_2.c.A0D2CB29AE703033.idx differ diff --git a/.cache/clangd/index/lv_example_style_3.c.B6BF14BBE80E5D2F.idx b/.cache/clangd/index/lv_example_style_3.c.B6BF14BBE80E5D2F.idx new file mode 100644 index 0000000..9899f05 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_3.c.B6BF14BBE80E5D2F.idx differ diff --git a/.cache/clangd/index/lv_example_style_4.c.0B94B82223E9070B.idx b/.cache/clangd/index/lv_example_style_4.c.0B94B82223E9070B.idx new file mode 100644 index 0000000..1a2772f Binary files /dev/null and b/.cache/clangd/index/lv_example_style_4.c.0B94B82223E9070B.idx differ diff --git a/.cache/clangd/index/lv_example_style_5.c.D5D102509972F426.idx b/.cache/clangd/index/lv_example_style_5.c.D5D102509972F426.idx new file mode 100644 index 0000000..b450b31 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_5.c.D5D102509972F426.idx differ diff --git a/.cache/clangd/index/lv_example_style_6.c.BDC324455B885890.idx b/.cache/clangd/index/lv_example_style_6.c.BDC324455B885890.idx new file mode 100644 index 0000000..a2c4f57 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_6.c.BDC324455B885890.idx differ diff --git a/.cache/clangd/index/lv_example_style_7.c.E45506906170F7D8.idx b/.cache/clangd/index/lv_example_style_7.c.E45506906170F7D8.idx new file mode 100644 index 0000000..9e42bba Binary files /dev/null and b/.cache/clangd/index/lv_example_style_7.c.E45506906170F7D8.idx differ diff --git a/.cache/clangd/index/lv_example_style_8.c.81C7B1ED20B7A714.idx b/.cache/clangd/index/lv_example_style_8.c.81C7B1ED20B7A714.idx new file mode 100644 index 0000000..88f7d7f Binary files /dev/null and b/.cache/clangd/index/lv_example_style_8.c.81C7B1ED20B7A714.idx differ diff --git a/.cache/clangd/index/lv_example_style_9.c.CAE16CDF6D283E6C.idx b/.cache/clangd/index/lv_example_style_9.c.CAE16CDF6D283E6C.idx new file mode 100644 index 0000000..dd7e880 Binary files /dev/null and b/.cache/clangd/index/lv_example_style_9.c.CAE16CDF6D283E6C.idx differ diff --git a/.cache/clangd/index/lv_example_svg.h.AFABEAD8464D965E.idx b/.cache/clangd/index/lv_example_svg.h.AFABEAD8464D965E.idx new file mode 100644 index 0000000..bdff538 Binary files /dev/null and b/.cache/clangd/index/lv_example_svg.h.AFABEAD8464D965E.idx differ diff --git a/.cache/clangd/index/lv_example_svg_1.c.5DB626F6E27150AE.idx b/.cache/clangd/index/lv_example_svg_1.c.5DB626F6E27150AE.idx new file mode 100644 index 0000000..a037fa6 Binary files /dev/null and b/.cache/clangd/index/lv_example_svg_1.c.5DB626F6E27150AE.idx differ diff --git a/.cache/clangd/index/lv_example_svg_2.c.89BFDE1D88913131.idx b/.cache/clangd/index/lv_example_svg_2.c.89BFDE1D88913131.idx new file mode 100644 index 0000000..75c0e07 Binary files /dev/null and b/.cache/clangd/index/lv_example_svg_2.c.89BFDE1D88913131.idx differ diff --git a/.cache/clangd/index/lv_example_svg_3.c.E91777E74275C873.idx b/.cache/clangd/index/lv_example_svg_3.c.E91777E74275C873.idx new file mode 100644 index 0000000..cc1799d Binary files /dev/null and b/.cache/clangd/index/lv_example_svg_3.c.E91777E74275C873.idx differ diff --git a/.cache/clangd/index/lv_example_switch_1.c.73BC0B76BE965C24.idx b/.cache/clangd/index/lv_example_switch_1.c.73BC0B76BE965C24.idx new file mode 100644 index 0000000..448e00c Binary files /dev/null and b/.cache/clangd/index/lv_example_switch_1.c.73BC0B76BE965C24.idx differ diff --git a/.cache/clangd/index/lv_example_switch_2.c.F4C22D1396F37878.idx b/.cache/clangd/index/lv_example_switch_2.c.F4C22D1396F37878.idx new file mode 100644 index 0000000..4c9e6d8 Binary files /dev/null and b/.cache/clangd/index/lv_example_switch_2.c.F4C22D1396F37878.idx differ diff --git a/.cache/clangd/index/lv_example_table_1.c.6CF49BA6B02F8E65.idx b/.cache/clangd/index/lv_example_table_1.c.6CF49BA6B02F8E65.idx new file mode 100644 index 0000000..da9eb06 Binary files /dev/null and b/.cache/clangd/index/lv_example_table_1.c.6CF49BA6B02F8E65.idx differ diff --git a/.cache/clangd/index/lv_example_table_2.c.6CB496E2F13741E4.idx b/.cache/clangd/index/lv_example_table_2.c.6CB496E2F13741E4.idx new file mode 100644 index 0000000..f40ae79 Binary files /dev/null and b/.cache/clangd/index/lv_example_table_2.c.6CB496E2F13741E4.idx differ diff --git a/.cache/clangd/index/lv_example_tabview_1.c.7BCFF68BAA3B2A0C.idx b/.cache/clangd/index/lv_example_tabview_1.c.7BCFF68BAA3B2A0C.idx new file mode 100644 index 0000000..a69bdf4 Binary files /dev/null and b/.cache/clangd/index/lv_example_tabview_1.c.7BCFF68BAA3B2A0C.idx differ diff --git a/.cache/clangd/index/lv_example_tabview_2.c.9C5F6853BCAEACA5.idx b/.cache/clangd/index/lv_example_tabview_2.c.9C5F6853BCAEACA5.idx new file mode 100644 index 0000000..4acb97b Binary files /dev/null and b/.cache/clangd/index/lv_example_tabview_2.c.9C5F6853BCAEACA5.idx differ diff --git a/.cache/clangd/index/lv_example_textarea_1.c.8B33F47C0388F507.idx b/.cache/clangd/index/lv_example_textarea_1.c.8B33F47C0388F507.idx new file mode 100644 index 0000000..add83f7 Binary files /dev/null and b/.cache/clangd/index/lv_example_textarea_1.c.8B33F47C0388F507.idx differ diff --git a/.cache/clangd/index/lv_example_textarea_2.c.A5F2B42FCA8C7B8A.idx b/.cache/clangd/index/lv_example_textarea_2.c.A5F2B42FCA8C7B8A.idx new file mode 100644 index 0000000..128a3f9 Binary files /dev/null and b/.cache/clangd/index/lv_example_textarea_2.c.A5F2B42FCA8C7B8A.idx differ diff --git a/.cache/clangd/index/lv_example_textarea_3.c.8A0969D71B8D8C0D.idx b/.cache/clangd/index/lv_example_textarea_3.c.8A0969D71B8D8C0D.idx new file mode 100644 index 0000000..8000d46 Binary files /dev/null and b/.cache/clangd/index/lv_example_textarea_3.c.8A0969D71B8D8C0D.idx differ diff --git a/.cache/clangd/index/lv_example_textarea_4.c.B9A2C02A65587399.idx b/.cache/clangd/index/lv_example_textarea_4.c.B9A2C02A65587399.idx new file mode 100644 index 0000000..b00f4fb Binary files /dev/null and b/.cache/clangd/index/lv_example_textarea_4.c.B9A2C02A65587399.idx differ diff --git a/.cache/clangd/index/lv_example_tileview_1.c.E2A3527C31F34AD5.idx b/.cache/clangd/index/lv_example_tileview_1.c.E2A3527C31F34AD5.idx new file mode 100644 index 0000000..deda0f1 Binary files /dev/null and b/.cache/clangd/index/lv_example_tileview_1.c.E2A3527C31F34AD5.idx differ diff --git a/.cache/clangd/index/lv_example_tiny_ttf.h.B7A56F16E9F0EAB1.idx b/.cache/clangd/index/lv_example_tiny_ttf.h.B7A56F16E9F0EAB1.idx new file mode 100644 index 0000000..998105a Binary files /dev/null and b/.cache/clangd/index/lv_example_tiny_ttf.h.B7A56F16E9F0EAB1.idx differ diff --git a/.cache/clangd/index/lv_example_tiny_ttf_1.c.7C0615685D282291.idx b/.cache/clangd/index/lv_example_tiny_ttf_1.c.7C0615685D282291.idx new file mode 100644 index 0000000..f4d3891 Binary files /dev/null and b/.cache/clangd/index/lv_example_tiny_ttf_1.c.7C0615685D282291.idx differ diff --git a/.cache/clangd/index/lv_example_tiny_ttf_2.c.BAC3BB4744E04E8F.idx b/.cache/clangd/index/lv_example_tiny_ttf_2.c.BAC3BB4744E04E8F.idx new file mode 100644 index 0000000..946ef2f Binary files /dev/null and b/.cache/clangd/index/lv_example_tiny_ttf_2.c.BAC3BB4744E04E8F.idx differ diff --git a/.cache/clangd/index/lv_example_tiny_ttf_3.c.29BDC493CE4180CB.idx b/.cache/clangd/index/lv_example_tiny_ttf_3.c.29BDC493CE4180CB.idx new file mode 100644 index 0000000..486459d Binary files /dev/null and b/.cache/clangd/index/lv_example_tiny_ttf_3.c.29BDC493CE4180CB.idx differ diff --git a/.cache/clangd/index/lv_example_tjpgd.h.18CFB1B87FF00B1E.idx b/.cache/clangd/index/lv_example_tjpgd.h.18CFB1B87FF00B1E.idx new file mode 100644 index 0000000..4c69bdc Binary files /dev/null and b/.cache/clangd/index/lv_example_tjpgd.h.18CFB1B87FF00B1E.idx differ diff --git a/.cache/clangd/index/lv_example_tjpgd_1.c.ECBDA00AB8D39F0F.idx b/.cache/clangd/index/lv_example_tjpgd_1.c.ECBDA00AB8D39F0F.idx new file mode 100644 index 0000000..97e3696 Binary files /dev/null and b/.cache/clangd/index/lv_example_tjpgd_1.c.ECBDA00AB8D39F0F.idx differ diff --git a/.cache/clangd/index/lv_example_translation.h.C7B378479BD210DF.idx b/.cache/clangd/index/lv_example_translation.h.C7B378479BD210DF.idx new file mode 100644 index 0000000..bdef8e1 Binary files /dev/null and b/.cache/clangd/index/lv_example_translation.h.C7B378479BD210DF.idx differ diff --git a/.cache/clangd/index/lv_example_translation_1.c.625BAB0BB7C1E8CC.idx b/.cache/clangd/index/lv_example_translation_1.c.625BAB0BB7C1E8CC.idx new file mode 100644 index 0000000..3e6d109 Binary files /dev/null and b/.cache/clangd/index/lv_example_translation_1.c.625BAB0BB7C1E8CC.idx differ diff --git a/.cache/clangd/index/lv_example_translation_2.c.10AFF7D38B1BC720.idx b/.cache/clangd/index/lv_example_translation_2.c.10AFF7D38B1BC720.idx new file mode 100644 index 0000000..a3222f9 Binary files /dev/null and b/.cache/clangd/index/lv_example_translation_2.c.10AFF7D38B1BC720.idx differ diff --git a/.cache/clangd/index/lv_example_widgets.h.4A6B6C783BE347F9.idx b/.cache/clangd/index/lv_example_widgets.h.4A6B6C783BE347F9.idx new file mode 100644 index 0000000..0682318 Binary files /dev/null and b/.cache/clangd/index/lv_example_widgets.h.4A6B6C783BE347F9.idx differ diff --git a/.cache/clangd/index/lv_example_win_1.c.FFC65E4AEB218F60.idx b/.cache/clangd/index/lv_example_win_1.c.FFC65E4AEB218F60.idx new file mode 100644 index 0000000..f32d617 Binary files /dev/null and b/.cache/clangd/index/lv_example_win_1.c.FFC65E4AEB218F60.idx differ diff --git a/.cache/clangd/index/lv_example_xml.h.C8CD83D0D5DF362D.idx b/.cache/clangd/index/lv_example_xml.h.C8CD83D0D5DF362D.idx new file mode 100644 index 0000000..6587397 Binary files /dev/null and b/.cache/clangd/index/lv_example_xml.h.C8CD83D0D5DF362D.idx differ diff --git a/.cache/clangd/index/lv_example_xml_1.c.A41CF74A7CE9F8E4.idx b/.cache/clangd/index/lv_example_xml_1.c.A41CF74A7CE9F8E4.idx new file mode 100644 index 0000000..79bfcea Binary files /dev/null and b/.cache/clangd/index/lv_example_xml_1.c.A41CF74A7CE9F8E4.idx differ diff --git a/.cache/clangd/index/lv_example_xml_2.c.453BFC86282DA781.idx b/.cache/clangd/index/lv_example_xml_2.c.453BFC86282DA781.idx new file mode 100644 index 0000000..2b2eb86 Binary files /dev/null and b/.cache/clangd/index/lv_example_xml_2.c.453BFC86282DA781.idx differ diff --git a/.cache/clangd/index/lv_examples.h.ABD0FC197A66D566.idx b/.cache/clangd/index/lv_examples.h.ABD0FC197A66D566.idx new file mode 100644 index 0000000..fc9e0e8 Binary files /dev/null and b/.cache/clangd/index/lv_examples.h.ABD0FC197A66D566.idx differ diff --git a/.cache/clangd/index/lv_os_none.h.EB9766AE436E9BD0.idx b/.cache/clangd/index/lv_os_none.h.EB9766AE436E9BD0.idx new file mode 100644 index 0000000..999ac36 Binary files /dev/null and b/.cache/clangd/index/lv_os_none.h.EB9766AE436E9BD0.idx differ diff --git a/.cache/clangd/index/lv_port_disp_template.c.FDC06902C74CB41A.idx b/.cache/clangd/index/lv_port_disp_template.c.FDC06902C74CB41A.idx new file mode 100644 index 0000000..58a215c Binary files /dev/null and b/.cache/clangd/index/lv_port_disp_template.c.FDC06902C74CB41A.idx differ diff --git a/.cache/clangd/index/lv_port_fs_template.c.C087DB1C5EA26D50.idx b/.cache/clangd/index/lv_port_fs_template.c.C087DB1C5EA26D50.idx new file mode 100644 index 0000000..3a367e7 Binary files /dev/null and b/.cache/clangd/index/lv_port_fs_template.c.C087DB1C5EA26D50.idx differ diff --git a/.cache/clangd/index/lv_port_indev_template.c.91B8F62BA5A752E2.idx b/.cache/clangd/index/lv_port_indev_template.c.91B8F62BA5A752E2.idx new file mode 100644 index 0000000..8ceb4f6 Binary files /dev/null and b/.cache/clangd/index/lv_port_indev_template.c.91B8F62BA5A752E2.idx differ diff --git a/.cache/clangd/index/lv_port_lcd_stm32_template.c.F5E1ACE701C13E9C.idx b/.cache/clangd/index/lv_port_lcd_stm32_template.c.F5E1ACE701C13E9C.idx new file mode 100644 index 0000000..fc44122 Binary files /dev/null and b/.cache/clangd/index/lv_port_lcd_stm32_template.c.F5E1ACE701C13E9C.idx differ diff --git a/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx b/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx index 9b7e379..971a191 100644 Binary files a/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx and b/.cache/clangd/index/main.cpp.7C677863E2582AB3.idx differ diff --git a/.cache/clangd/index/ubuntu_font.c.AAB1BC5BE37430BF.idx b/.cache/clangd/index/ubuntu_font.c.AAB1BC5BE37430BF.idx new file mode 100644 index 0000000..b4285c0 Binary files /dev/null and b/.cache/clangd/index/ubuntu_font.c.AAB1BC5BE37430BF.idx differ diff --git a/dependencies.lock b/dependencies.lock index 6d3593f..5d02df9 100644 --- a/dependencies.lock +++ b/dependencies.lock @@ -48,7 +48,7 @@ dependencies: require: private version: '>=5.3' source: - registry_url: https://components.espressif.com + registry_url: https://components.espressif.com/ type: service version: 2.9.7 espressif/esp_lcd_touch: @@ -171,21 +171,6 @@ dependencies: registry_url: https://components.espressif.com/ type: service version: 0.3.0 - espressif/esp_lvgl_port: - component_hash: - f872401524cb645ee6ff1c9242d44fb4ddcfd4d37d7be8b9ed3f4e85a404efcd - dependencies: - - name: idf - require: private - version: '>=5.1' - - name: lvgl/lvgl - registry_url: https://components.espressif.com - require: public - version: '>=8,<10' - source: - registry_url: https://components.espressif.com/ - type: service - version: 2.7.0 espressif/esp_mmap_assets: component_hash: 91d785326b03db15e2f7f1314d8c976d38f21aa5759b570dcbbc89bcf247fd27 @@ -366,13 +351,13 @@ dependencies: - esp32p4 version: 1.0.4 direct_dependencies: +- espressif/esp_hosted - espressif/esp_lcd_touch_gt911 - espressif/esp_lvgl_adapter -- espressif/esp_lvgl_port - espressif/esp_wifi_remote - idf - lvgl/lvgl - waveshare/esp_lcd_jd9365_10_1 -manifest_hash: 0e36b3139b75b9c8d45ce136355b7427d1e8020070f386f167b627461b004349 +manifest_hash: 4ce2d7fe239a4b27d3b77276a05f38b9fb77560cbab8328e548ab830c1663c7a target: esp32p4 version: 2.0.0 diff --git a/main/Gui/WifiSetting.cpp b/main/Gui/WifiSetting.cpp index a5d44e2..5105062 100644 --- a/main/Gui/WifiSetting.cpp +++ b/main/Gui/WifiSetting.cpp @@ -6,6 +6,37 @@ static const char* TAG = "WifiSetting"; +static const char* authModeToString(wifi_auth_mode_t mode) { + switch (mode) { + case WIFI_AUTH_OPEN: + return "OPEN"; + case WIFI_AUTH_WEP: + return "WEP"; + case WIFI_AUTH_WPA_PSK: + return "WPA_PSK"; + case WIFI_AUTH_WPA2_PSK: + return "WPA2_PSK"; + case WIFI_AUTH_WPA_WPA2_PSK: + return "WPA_WPA2_PSK"; + case WIFI_AUTH_WPA2_WPA3_PSK: + return "WPA2_WPA3_PSK"; + case WIFI_AUTH_WPA3_PSK: + return "WPA3_PSK"; + case WIFI_AUTH_WAPI_PSK: + return "WAPI_PSK"; + case WIFI_AUTH_OWE: + return "OWE"; + case WIFI_AUTH_WPA3_EXT_PSK: + return "WPA3_EXT_PSK"; + case WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE: + return "WPA3_EXT_PSK_MIXED_MODE"; + case WIFI_AUTH_MAX: + return "MAX"; + default: + return "UNKNOWN"; + } +} + WifiSetting& WifiSetting::instance() { static WifiSetting instance; return instance; @@ -259,12 +290,17 @@ void WifiSetting::updateStatusDisplay() { Wifi& wifi = Wifi::instance(); if (wifi.isConnected()) { - char statusText[64]; - snprintf(statusText, sizeof(statusText), "Verbunden: %s", wifi.getCurrentSSID().c_str()); + std::string ip = wifi.getIPAddress(); + if (ip.empty()) { + ip = "-"; + } + char statusText[128]; + snprintf(statusText, sizeof(statusText), "Verbunden: %s\nIP: %s", + wifi.getCurrentSSID().c_str(), ip.c_str()); lv_label_set_text(statusLabel_, statusText); lv_obj_clear_flag(disconnectBtn_, LV_OBJ_FLAG_HIDDEN); } else { - lv_label_set_text(statusLabel_, "Status: Nicht verbunden"); + lv_label_set_text(statusLabel_, "Status: Nicht verbunden\nIP: -"); lv_obj_add_flag(disconnectBtn_, LV_OBJ_FLAG_HIDDEN); } } @@ -345,6 +381,7 @@ void WifiSetting::hidePasswordDialog() { keyboard_ = nullptr; } selectedSSID_.clear(); + selectedAuthMode_ = WIFI_AUTH_MAX; } void WifiSetting::onCloseClick(lv_event_t* e) { @@ -356,8 +393,26 @@ void WifiSetting::onNetworkSelect(lv_event_t* e) { lv_obj_t* btn = (lv_obj_t*)lv_event_get_target(e); char* ssid = (char*)lv_obj_get_user_data(btn); if (ssid) { - ESP_LOGI(TAG, "Selected network: %s", ssid); - WifiSetting::instance().showPasswordDialog(ssid); + WifiSetting& settings = WifiSetting::instance(); + settings.selectedAuthMode_ = WIFI_AUTH_MAX; + int bestRssi = -127; + int bestChannel = 0; + + for (const auto& ap : settings.scannedNetworks_) { + if (strcmp((const char*)ap.ssid, ssid) == 0 && ap.rssi >= bestRssi) { + settings.selectedAuthMode_ = ap.authmode; + bestRssi = ap.rssi; + bestChannel = ap.primary; + } + } + + ESP_LOGI(TAG, "Selected network: %s (auth=%d/%s, rssi=%d, channel=%d)", + ssid, + settings.selectedAuthMode_, + authModeToString(settings.selectedAuthMode_), + bestRssi, + bestChannel); + settings.showPasswordDialog(ssid); } } @@ -381,7 +436,7 @@ void WifiSetting::onConnectClick(lv_event_t* e) { ESP_LOGI(TAG, "Connecting to %s", settings.selectedSSID_.c_str()); - Wifi::instance().connect(settings.selectedSSID_.c_str(), password); + Wifi::instance().connect(settings.selectedSSID_.c_str(), password, settings.selectedAuthMode_); Wifi::instance().saveNetwork(settings.selectedSSID_.c_str(), password); settings.hidePasswordDialog(); diff --git a/main/Gui/WifiSetting.hpp b/main/Gui/WifiSetting.hpp index 92e89c4..abd18ce 100644 --- a/main/Gui/WifiSetting.hpp +++ b/main/Gui/WifiSetting.hpp @@ -45,6 +45,7 @@ private: lv_obj_t* keyboard_ = nullptr; std::string selectedSSID_; + wifi_auth_mode_t selectedAuthMode_ = WIFI_AUTH_MAX; std::vector scannedNetworks_; bool visible_ = false; diff --git a/main/Wifi.cpp b/main/Wifi.cpp index 0be16e1..ef7ad47 100644 --- a/main/Wifi.cpp +++ b/main/Wifi.cpp @@ -9,6 +9,54 @@ static const char* TAG = "Wifi"; +static const char* disconnectReasonToString(uint16_t reason) { + switch (reason) { + case WIFI_REASON_UNSPECIFIED: + return "UNSPECIFIED"; + case WIFI_REASON_AUTH_EXPIRE: + return "AUTH_EXPIRE"; + case WIFI_REASON_AUTH_LEAVE: + return "AUTH_LEAVE"; + case WIFI_REASON_ASSOC_EXPIRE: + return "ASSOC_EXPIRE"; + case WIFI_REASON_NOT_AUTHED: + return "NOT_AUTHED"; + case WIFI_REASON_NOT_ASSOCED: + return "NOT_ASSOCED"; + case WIFI_REASON_ASSOC_LEAVE: + return "ASSOC_LEAVE"; + case WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT: + return "4WAY_HANDSHAKE_TIMEOUT"; + case WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT: + return "GROUP_KEY_UPDATE_TIMEOUT"; + case WIFI_REASON_BEACON_TIMEOUT: + return "BEACON_TIMEOUT"; + case WIFI_REASON_NO_AP_FOUND: + return "NO_AP_FOUND"; + case WIFI_REASON_AUTH_FAIL: + return "AUTH_FAIL"; + case WIFI_REASON_ASSOC_FAIL: + return "ASSOC_FAIL"; + case WIFI_REASON_HANDSHAKE_TIMEOUT: + return "HANDSHAKE_TIMEOUT"; + case WIFI_REASON_CONNECTION_FAIL: + return "CONNECTION_FAIL"; + default: + return "UNKNOWN"; + } +} + +static bool isWpa3AuthMode(wifi_auth_mode_t authmode) { + switch (authmode) { + case WIFI_AUTH_WPA3_PSK: + case WIFI_AUTH_WPA3_EXT_PSK: + case WIFI_AUTH_WPA3_EXT_PSK_MIXED_MODE: + return true; + default: + return false; + } +} + Wifi& Wifi::instance() { static Wifi instance; return instance; @@ -24,13 +72,22 @@ void Wifi::eventHandler(void* arg, esp_event_base_t event_base, ESP_LOGI(TAG, "WiFi station started"); break; case WIFI_EVENT_STA_DISCONNECTED: - ESP_LOGI(TAG, "WiFi disconnected"); + if (event_data) { + wifi_event_sta_disconnected_t* event = + (wifi_event_sta_disconnected_t*)event_data; + ESP_LOGI(TAG, "WiFi disconnected (reason=%u/%s/%s)", + event->reason, disconnectReasonToString(event->reason), event->ssid); + } else { + ESP_LOGI(TAG, "WiFi disconnected (reason=unknown)"); + } wifi.connected_ = false; wifi.currentSSID_ = ""; if (wifi.statusCallback_) { wifi.statusCallback_(false); } + xEventGroupSetBits(wifi.wifiEventGroup_, WIFI_FAIL_BIT); + break; case WIFI_EVENT_SCAN_DONE: ESP_LOGI(TAG, "WiFi scan done"); @@ -52,7 +109,7 @@ void Wifi::eventHandler(void* arg, esp_event_base_t event_base, } } -void Wifi::init() { +void Wifi::init(bool autoConnect) { if (initialized_) { return; } @@ -67,6 +124,10 @@ void Wifi::init() { wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + if (!autoConnect) { + ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM)); + ESP_LOGI(TAG, "WiFi storage set to RAM (auto-connect disabled)"); + } ESP_ERROR_CHECK(esp_event_handler_instance_register(WIFI_EVENT, ESP_EVENT_ANY_ID, @@ -82,14 +143,24 @@ void Wifi::init() { ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); ESP_ERROR_CHECK(esp_wifi_start()); + int8_t tx_power = 40; // 0.25 dBm units -> 5 dBm. + esp_err_t tx_err = esp_wifi_set_max_tx_power(tx_power); + if (tx_err != ESP_OK) { + ESP_LOGW(TAG, "Failed to set max TX power to %d: %s", tx_power, esp_err_to_name(tx_err)); + } else { + ESP_LOGI(TAG, "Set max TX power to %d (0.25 dBm units)", tx_power); + } + initialized_ = true; - auto savedNetworks = getSavedNetworks(); - if (!savedNetworks.empty()) { - std::string password; - if (getSavedPassword(savedNetworks[0].c_str(), password)) { - ESP_LOGI(TAG, "Auto-connecting to saved network: %s", savedNetworks[0].c_str()); - connect(savedNetworks[0].c_str(), password.c_str()); + if (autoConnect) { + auto savedNetworks = getSavedNetworks(); + if (!savedNetworks.empty()) { + std::string password; + if (getSavedPassword(savedNetworks[0].c_str(), password)) { + ESP_LOGI(TAG, "Auto-connecting to saved network: %s", savedNetworks[0].c_str()); + connect(savedNetworks[0].c_str(), password.c_str()); + } } } @@ -136,22 +207,42 @@ void Wifi::scan(std::function&)> callback) { }, "wifi_scan", 4096, nullptr, 5, nullptr); } -void Wifi::connect(const char* ssid, const char* password) { - ESP_LOGI(TAG, "Connecting to %s", ssid); +void Wifi::connect(const char* ssid, const char* password, wifi_auth_mode_t authmode) { + ESP_LOGI(TAG, "Connecting to %s with password: '%s' (authmode=%d)", ssid, password, authmode); xEventGroupClearBits(wifiEventGroup_, WIFI_CONNECTED_BIT | WIFI_FAIL_BIT); - wifi_config_t wifi_config = {}; - strncpy((char*)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid) - 1); - strncpy((char*)wifi_config.sta.password, password, sizeof(wifi_config.sta.password) - 1); - wifi_config.sta.threshold.authmode = WIFI_AUTH_WPA2_PSK; + wifi_config_t wifi_config = wifi_config_t(); + wifi_sta_config_t sta_config = wifi_sta_config_t(); + wifi_config.sta = sta_config; + + strcpy((char *)wifi_config.sta.ssid, (char *)ssid); + strcpy((char *)wifi_config.sta.password, (char *)password); + wifi_config.sta.pmf_cfg.capable = true; wifi_config.sta.pmf_cfg.required = false; + + currentSSID_ = ssid; - ESP_ERROR_CHECK(esp_wifi_set_config(WIFI_IF_STA, &wifi_config)); - ESP_ERROR_CHECK(esp_wifi_connect()); + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + + esp_err_t err = esp_wifi_set_config(WIFI_IF_STA, &wifi_config); + if (err != ESP_OK) { + ESP_LOGE(TAG, "Failed to set WiFi config: %s", esp_err_to_name(err)); + return; + } + + err = esp_wifi_connect(); + if (err == ESP_ERR_WIFI_CONN) { + ESP_LOGW(TAG, "WiFi connect failed: ESP_ERR_WIFI_CONN"); + return; + } + if (err != ESP_OK) { + ESP_LOGE(TAG, "WiFi connect failed: %s", esp_err_to_name(err)); + return; + } } void Wifi::disconnect() { @@ -169,6 +260,30 @@ std::string Wifi::getCurrentSSID() { return currentSSID_; } +std::string Wifi::getIPAddress() { + esp_netif_t* netif = esp_netif_get_handle_from_ifkey("WIFI_STA_DEF"); + if (!netif) { + return ""; + } + + esp_netif_ip_info_t ip_info; + if (esp_netif_get_ip_info(netif, &ip_info) != ESP_OK) { + return ""; + } + + char ip_str[16]; + snprintf(ip_str, sizeof(ip_str), IPSTR, IP2STR(&ip_info.ip)); + return std::string(ip_str); +} + +int8_t Wifi::getRSSI() { + wifi_ap_record_t ap_info; + if (esp_wifi_sta_get_ap_info(&ap_info) == ESP_OK) { + return ap_info.rssi; + } + return 0; +} + void Wifi::setStatusCallback(std::function callback) { statusCallback_ = callback; } diff --git a/main/Wifi.hpp b/main/Wifi.hpp index 10d9590..ad98bf8 100644 --- a/main/Wifi.hpp +++ b/main/Wifi.hpp @@ -12,9 +12,9 @@ class Wifi { public: static Wifi& instance(); - void init(); + void init(bool autoConnect = true); void scan(std::function&)> callback); - void connect(const char* ssid, const char* password); + void connect(const char* ssid, const char* password, wifi_auth_mode_t authmode = WIFI_AUTH_MAX); void disconnect(); bool isConnected(); std::string getCurrentSSID(); diff --git a/main/idf_component.yml b/main/idf_component.yml index 0751256..d5bdd87 100644 --- a/main/idf_component.yml +++ b/main/idf_component.yml @@ -16,7 +16,8 @@ dependencies: # public: true waveshare/esp_lcd_jd9365_10_1: '*' lvgl/lvgl: ^9.4.0 - espressif/esp_lvgl_port: ^2.3.0 espressif/esp_lcd_touch_gt911: '*' espressif/esp_lvgl_adapter: '*' - espressif/esp_wifi_remote: '*' + espressif/esp_wifi_remote: "*" + espressif/esp_hosted: "*" + \ No newline at end of file diff --git a/main/main.cpp b/main/main.cpp index 5dd8d0e..5347eaf 100644 --- a/main/main.cpp +++ b/main/main.cpp @@ -1,82 +1,317 @@ - #include "freertos/FreeRTOS.h" #include "freertos/task.h" +#include "esp_event.h" #include "esp_log.h" -#include "esp_lv_adapter.h" -#include "lvgl.h" -#include "Display.hpp" -#include "Touch.hpp" -#include "Gui.hpp" +#include "esp_netif.h" +#include "esp_wifi.h" +#include "esp_hosted.h" +#include "driver/uart.h" #include "Nvs.hpp" -#include "KnxWorker.hpp" -#include "Wifi.hpp" +#include + +// UART Bridge für C6 Logs +#define C6_UART_NUM UART_NUM_1 +#define C6_UART_TX_PIN 53 +#define C6_UART_RX_PIN 48 +#define C6_UART_BUF_SIZE 1024 + +static void c6_uart_bridge_task(void* arg) { + uint8_t* data = (uint8_t*)malloc(C6_UART_BUF_SIZE); + while (true) { + int len = uart_read_bytes(C6_UART_NUM, data, C6_UART_BUF_SIZE - 1, pdMS_TO_TICKS(100)); + if (len > 0) { + data[len] = '\0'; + printf("[C6] %s", (char*)data); + } + } + free(data); + vTaskDelete(NULL); +} + +static void init_c6_uart_bridge() { + uart_config_t uart_config = { + .baud_rate = 115200, + .data_bits = UART_DATA_8_BITS, + .parity = UART_PARITY_DISABLE, + .stop_bits = UART_STOP_BITS_1, + .flow_ctrl = UART_HW_FLOWCTRL_DISABLE, + .source_clk = UART_SCLK_DEFAULT, + }; + + ESP_ERROR_CHECK(uart_driver_install(C6_UART_NUM, C6_UART_BUF_SIZE * 2, 0, 0, NULL, 0)); + ESP_ERROR_CHECK(uart_param_config(C6_UART_NUM, &uart_config)); + ESP_ERROR_CHECK(uart_set_pin(C6_UART_NUM, C6_UART_TX_PIN, C6_UART_RX_PIN, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE)); + + ESP_LOGI("UART", "C6 UART Bridge initialized: TX=%d, RX=%d", C6_UART_TX_PIN, C6_UART_RX_PIN); + + xTaskCreate(c6_uart_bridge_task, "c6_uart", 4096, NULL, 10, NULL); +} #define TAG "App" +EventGroupHandle_t wifiEventGroup_ = nullptr; +static constexpr int WIFI_CONNECTED_BIT = BIT0; +static constexpr int WIFI_FAIL_BIT = BIT1; +static constexpr int WIFI_SCAN_DONE_BIT = BIT2; +static constexpr int WIFI_STA_STARTED_BIT = BIT3; -// This is a simple wrapper for the application logic -class Application { -public: - void init() { - // Initialize hardware - nvs.init(); - Wifi::instance().init(); - display.init(); - touch.init(); - - // Initialize LVGL adapter - esp_lv_adapter_config_t cfg = ESP_LV_ADAPTER_DEFAULT_CONFIG(); - ESP_ERROR_CHECK(esp_lv_adapter_init(&cfg)); - - // Register display - esp_lv_adapter_display_config_t disp_cfg = ESP_LV_ADAPTER_DISPLAY_MIPI_DEFAULT_CONFIG( - display.getPanelHandle(), - NULL, - 800, // Horizontal resolution - 1280, // Vertical resolution - ESP_LV_ADAPTER_ROTATE_90 // Rotation - ); - lv_disp_t* lv_display = esp_lv_adapter_register_display(&disp_cfg); - assert(lv_display != NULL); - - // Register touch - esp_lv_adapter_touch_config_t touch_cfg = ESP_LV_ADAPTER_TOUCH_DEFAULT_CONFIG(lv_display, touch.getTouchHandle()); - lv_indev_t* lv_touch = esp_lv_adapter_register_touch(&touch_cfg); - assert(lv_touch != NULL); - lv_indev_set_user_data(lv_touch, &touch); // Set 'this' Touch object as user data - lv_indev_set_read_cb(lv_touch, Touch::lv_indev_read_cb); // Register the static callback - - ESP_ERROR_CHECK(esp_lv_adapter_start()); - - ESP_LOGI(TAG, "INIT SUCCESS"); - } - - void run() { - ESP_LOGI(TAG, "Creating UI"); - knxWorker.init(); - gui.create(); - - ESP_LOGI(TAG, "Application running"); - while (true) { - vTaskDelay(pdMS_TO_TICKS(10)); - knxWorker.loop(); - - +static void wifi_event_handler(void* arg, esp_event_base_t event_base, + int32_t event_id, void* event_data) { + (void)arg; + if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) { + ESP_LOGI(TAG, "STA started"); + xEventGroupSetBits(wifiEventGroup_, WIFI_STA_STARTED_BIT); + } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) { + if (event_data) { + wifi_event_sta_disconnected_t* event = (wifi_event_sta_disconnected_t*)event_data; + const char* reason_str = "UNKNOWN"; + switch (event->reason) { + case 1: reason_str = "UNSPECIFIED"; break; + case 2: reason_str = "AUTH_EXPIRE"; break; + case 3: reason_str = "AUTH_LEAVE"; break; + case 4: reason_str = "ASSOC_EXPIRE"; break; + case 5: reason_str = "ASSOC_TOOMANY"; break; + case 6: reason_str = "NOT_AUTHED"; break; + case 7: reason_str = "NOT_ASSOCED"; break; + case 8: reason_str = "ASSOC_LEAVE"; break; + case 15: reason_str = "4WAY_HANDSHAKE_TIMEOUT"; break; + case 16: reason_str = "GROUP_KEY_UPDATE_TIMEOUT"; break; + case 200: reason_str = "BEACON_TIMEOUT"; break; + case 201: reason_str = "NO_AP_FOUND"; break; + case 202: reason_str = "AUTH_FAIL"; break; + case 203: reason_str = "ASSOC_FAIL"; break; + case 204: reason_str = "HANDSHAKE_TIMEOUT"; break; + case 205: reason_str = "CONNECTION_FAIL"; break; + case 210: reason_str = "ROAMING/INTERNAL"; break; + } + ESP_LOGE(TAG, "WiFi DISCONNECTED: reason=%u (%s)", event->reason, reason_str); + } else { + ESP_LOGI(TAG, "WiFi disconnected (reason=unknown)"); } + xEventGroupSetBits(wifiEventGroup_, WIFI_FAIL_BIT); + } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_SCAN_DONE) { + ESP_LOGI(TAG, "Scan done event received"); + xEventGroupSetBits(wifiEventGroup_, WIFI_SCAN_DONE_BIT); + } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) { + ip_event_got_ip_t* event = (ip_event_got_ip_t*)event_data; + ESP_LOGI(TAG, "Got IP: " IPSTR, IP2STR(&event->ip_info.ip)); + xEventGroupSetBits(wifiEventGroup_, WIFI_CONNECTED_BIT); } - -private: - Display display; - Touch touch; - Gui gui; - Nvs nvs; - KnxWorker knxWorker; -}; +} extern "C" void app_main(void) { - ESP_LOGI(TAG, "Starting Application"); - Application app; - app.init(); - app.run(); -} \ No newline at end of file + ESP_LOGI(TAG, "Starting WiFi Scan test"); + + // UART Bridge für C6 Logs initialisieren + init_c6_uart_bridge(); + + wifiEventGroup_ = xEventGroupCreate(); + + //Nvs nvs; + //nvs.init(); + + ESP_ERROR_CHECK(esp_netif_init()); + ESP_ERROR_CHECK(esp_event_loop_create_default()); + + esp_netif_create_default_wifi_sta(); + + wifi_init_config_t cfg = WIFI_INIT_CONFIG_DEFAULT(); + ESP_ERROR_CHECK(esp_wifi_init(&cfg)); + + // WICHTIG: Verhindere Auto-Connect aus NVS gespeicherten Credentials + ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM)); + ESP_LOGI(TAG, "WiFi storage set to RAM (no auto-connect from NVS)"); + + ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, &wifi_event_handler, nullptr)); + ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, &wifi_event_handler, nullptr)); + + ESP_ERROR_CHECK(esp_wifi_set_mode(WIFI_MODE_STA)); + ESP_ERROR_CHECK(esp_wifi_start()); + + // Warte auf STA_START Event - WICHTIG für C6! + ESP_LOGI(TAG, "Waiting for STA_START event..."); + EventBits_t bits = xEventGroupWaitBits(wifiEventGroup_, WIFI_STA_STARTED_BIT, + pdFALSE, pdFALSE, pdMS_TO_TICKS(10000)); + if (!(bits & WIFI_STA_STARTED_BIT)) { + ESP_LOGE(TAG, "STA_START event not received within 10s!"); + } else { + ESP_LOGI(TAG, "STA_START event received, WiFi ready"); + } + + // Sofort disconnect um sauberen Zustand zu haben + ESP_LOGI(TAG, "Forcing initial disconnect to clear state..."); + esp_wifi_disconnect(); + vTaskDelay(pdMS_TO_TICKS(1000)); + + // MAC-Adresse ausgeben + uint8_t mac[6]; + esp_wifi_get_mac(WIFI_IF_STA, mac); + ESP_LOGI(TAG, "WiFi MAC Address: %02X:%02X:%02X:%02X:%02X:%02X", + mac[0], mac[1], mac[2], mac[3], mac[4], mac[5]); + + // Slave-Firmware-Version abfragen + esp_hosted_coprocessor_fwver_t slave_ver; + if (esp_hosted_get_coprocessor_fwversion(&slave_ver) == ESP_OK) { + ESP_LOGI(TAG, "Slave Firmware Version: %lu.%lu.%lu", + slave_ver.major1, slave_ver.minor1, slave_ver.patch1); + } else { + ESP_LOGW(TAG, "Could not get slave firmware version"); + } + + // TX Power: 78 = 19.5 dBm, 40 = 10 dBm, 20 = 5 dBm + // Versuche niedrigere TX-Leistung für Stabilität + esp_err_t pwr_err = esp_wifi_set_max_tx_power(40); + if (pwr_err != ESP_OK) { + ESP_LOGW(TAG, "Set TX power failed: %s", esp_err_to_name(pwr_err)); + } + // Kleine Pause für C6 Stabilisierung + vTaskDelay(pdMS_TO_TICKS(1000)); + + xEventGroupClearBits(wifiEventGroup_, WIFI_SCAN_DONE_BIT); + // WiFi Scan starten + ESP_LOGI(TAG, "Starting WiFi scan..."); + wifi_scan_config_t scan_config = {}; + scan_config.ssid = nullptr; + scan_config.bssid = nullptr; + scan_config.channel = 0; + scan_config.show_hidden = false; + scan_config.scan_type = WIFI_SCAN_TYPE_ACTIVE; + scan_config.scan_time.active.min = 100; + scan_config.scan_time.active.max = 300; + + esp_err_t scan_err = esp_wifi_scan_start(&scan_config, false); + if (scan_err != ESP_OK) { + ESP_LOGW(TAG, "Scan start failed: %s, retrying...", esp_err_to_name(scan_err)); + vTaskDelay(pdMS_TO_TICKS(2000)); + scan_err = esp_wifi_scan_start(&scan_config, false); + if (scan_err != ESP_OK) { + ESP_LOGE(TAG, "Scan start failed again: %s", esp_err_to_name(scan_err)); + } + } + + xTaskCreate([](void* arg) { + xEventGroupWaitBits(wifiEventGroup_, WIFI_SCAN_DONE_BIT, + pdTRUE, pdFALSE, pdMS_TO_TICKS(10000)); + + uint16_t ap_count = 0; + esp_wifi_scan_get_ap_num(&ap_count); + + ESP_LOGI(TAG, "=== Found %d access points ===", ap_count); + + wifi_auth_mode_t target_auth = WIFI_AUTH_WPA2_PSK; + + if (ap_count > 0) { + wifi_ap_record_t* ap_records = new wifi_ap_record_t[ap_count]; + esp_wifi_scan_get_ap_records(&ap_count, ap_records); + for (int i = 0; i < ap_count; i++) { + const char* auth_str = "UNKNOWN"; + switch (ap_records[i].authmode) { + case WIFI_AUTH_OPEN: auth_str = "OPEN"; break; + case WIFI_AUTH_WEP: auth_str = "WEP"; break; + case WIFI_AUTH_WPA_PSK: auth_str = "WPA_PSK"; break; + case WIFI_AUTH_WPA2_PSK: auth_str = "WPA2_PSK"; break; + case WIFI_AUTH_WPA_WPA2_PSK: auth_str = "WPA/WPA2_PSK"; break; + case WIFI_AUTH_WPA3_PSK: auth_str = "WPA3_PSK"; break; + case WIFI_AUTH_WPA2_WPA3_PSK: auth_str = "WPA2/WPA3_PSK"; break; + default: break; + } + ESP_LOGI(TAG, "[%2d] SSID: %-32s | RSSI: %4d | Ch: %2d | Auth: %s", + i, ap_records[i].ssid, ap_records[i].rssi, + ap_records[i].primary, auth_str); + + // Merke Auth-Modus für unser Ziel-Netzwerk (muss mit TARGET_SSID übereinstimmen!) + if (strcmp((char*)ap_records[i].ssid, "boonkerzb5") == 0) { + target_auth = ap_records[i].authmode; + ESP_LOGI(TAG, ">>> Target network '%s' found! Auth mode: %d (%s)", + ap_records[i].ssid, target_auth, auth_str); + } + } + delete[] ap_records; + } + + // ============================================================ + // HIER SSID UND PASSWORT ANPASSEN FÜR TEST! + // ============================================================ + const char* TARGET_SSID = "boonkerzb5"; // SSID hier ändern + const char* TARGET_PASSWORD = "38412914"; // Passwort hier ändern (leer für OPEN) + // ============================================================ + + // Jetzt verbinden + ESP_LOGI(TAG, "Connecting to %s...", TARGET_SSID); + ESP_LOGI(TAG, "Detected auth mode: %d", target_auth); + + // Erst sicherstellen dass wir nicht verbunden sind + ESP_LOGI(TAG, "Ensuring disconnected state..."); + esp_wifi_disconnect(); + vTaskDelay(pdMS_TO_TICKS(2000)); // Warte bis C6 den Disconnect verarbeitet hat + + wifi_config_t wifi_config = {}; + strcpy((char*)wifi_config.sta.ssid, TARGET_SSID); + + // Für OPEN-Netzwerke kein Passwort setzen! + if (target_auth == WIFI_AUTH_OPEN) { + ESP_LOGI(TAG, "Network is OPEN, not setting password"); + wifi_config.sta.password[0] = '\0'; + wifi_config.sta.threshold.authmode = WIFI_AUTH_OPEN; + } else { + strcpy((char*)wifi_config.sta.password, TARGET_PASSWORD); + wifi_config.sta.threshold.authmode = target_auth; + } + + wifi_config.sta.pmf_cfg.capable = true; + wifi_config.sta.pmf_cfg.required = false; + + esp_err_t cfg_err = esp_wifi_set_config(WIFI_IF_STA, &wifi_config); + if (cfg_err != ESP_OK) { + ESP_LOGE(TAG, "Failed to set WiFi config: %s", esp_err_to_name(cfg_err)); + } + + // Warte nach Config-Setzen + vTaskDelay(pdMS_TO_TICKS(500)); + + // Versuche mehrmals zu verbinden + for (int retry = 0; retry < 5; retry++) { + ESP_LOGI(TAG, "Connection attempt %d/5...", retry + 1); + + xEventGroupClearBits(wifiEventGroup_, WIFI_CONNECTED_BIT | WIFI_FAIL_BIT); + + esp_err_t err = esp_wifi_connect(); + if (err == ESP_ERR_WIFI_CONN) { + // WiFi ist noch im "connecting" state - warte und versuche disconnect + ESP_LOGW(TAG, "WiFi still connecting, forcing disconnect..."); + esp_wifi_disconnect(); + vTaskDelay(pdMS_TO_TICKS(3000)); // Längere Pause für C6 + continue; + } + if (err != ESP_OK) { + ESP_LOGE(TAG, "esp_wifi_connect failed: %s", esp_err_to_name(err)); + vTaskDelay(pdMS_TO_TICKS(2000)); + continue; + } + + // Warte auf Verbindung oder Fehler + EventBits_t bits = xEventGroupWaitBits(wifiEventGroup_, + WIFI_CONNECTED_BIT | WIFI_FAIL_BIT, + pdFALSE, pdFALSE, pdMS_TO_TICKS(15000)); + + if (bits & WIFI_CONNECTED_BIT) { + ESP_LOGI(TAG, "Successfully connected to WiFi!"); + break; + } else { + ESP_LOGW(TAG, "Connection attempt %d failed (bits=0x%lx), retrying...", retry + 1, (unsigned long)bits); + esp_wifi_disconnect(); + vTaskDelay(pdMS_TO_TICKS(3000)); // Längere Pause zwischen Versuchen + } + } + + // Halte Task am Leben + while (true) { + vTaskDelay(pdMS_TO_TICKS(5000)); + } + }, "wifi_scan", 8192, nullptr, 5, nullptr); + + while (true) { + vTaskDelay(pdMS_TO_TICKS(1000)); + } +}