cfclient 2024.7.1__py3-none-any.whl → 2025.12.1__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- cfclient/__init__.py +9 -7
- cfclient/configs/config.json +1 -1
- cfclient/configs/log/PID_tuning/Attitude.json +46 -0
- cfclient/configs/log/PID_tuning/Attitude_rate.json +46 -0
- cfclient/configs/log/PID_tuning/Position.json +46 -0
- cfclient/configs/log/PID_tuning/Velocity.json +46 -0
- cfclient/configs/log/PID_tuning_components/Pitch.json +22 -0
- cfclient/configs/log/PID_tuning_components/Pitch_rate.json +22 -0
- cfclient/configs/log/PID_tuning_components/Position_x.json +22 -0
- cfclient/configs/log/PID_tuning_components/Position_y.json +22 -0
- cfclient/configs/log/PID_tuning_components/Position_z.json +22 -0
- cfclient/configs/log/PID_tuning_components/Roll.json +22 -0
- cfclient/configs/log/PID_tuning_components/Roll_rate.json +22 -0
- cfclient/configs/log/PID_tuning_components/Velocity_x.json +22 -0
- cfclient/configs/log/PID_tuning_components/Velocity_y.json +22 -0
- cfclient/configs/log/PID_tuning_components/Velocity_z.json +22 -0
- cfclient/configs/log/PID_tuning_components/Yaw.json +22 -0
- cfclient/configs/log/PID_tuning_components/Yaw_rate.json +22 -0
- cfclient/resources/log_param_doc.json +1 -1
- cfclient/ui/dialogs/about.py +5 -1
- cfclient/ui/dialogs/basestation_mode_dialog.py +12 -1
- cfclient/ui/dialogs/bootloader.py +76 -6
- cfclient/ui/dialogs/bootloader.ui +110 -24
- cfclient/ui/dialogs/cf2config.ui +1 -1
- cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.py +0 -12
- cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.ui +0 -7
- cfclient/ui/icons/bl.webp +0 -0
- cfclient/ui/icons/bolt.webp +0 -0
- cfclient/ui/icons/cf21.webp +0 -0
- cfclient/ui/icons/flapper.webp +0 -0
- cfclient/ui/icons/tag.webp +0 -0
- cfclient/ui/main.py +3 -3
- cfclient/ui/main.ui +1 -1
- cfclient/ui/tabs/ColorLEDTab.py +752 -0
- cfclient/ui/tabs/FlightTab.py +11 -108
- cfclient/ui/tabs/{LEDTab.py → LEDRingTab.py} +126 -12
- cfclient/ui/tabs/LogTab.py +2 -2
- cfclient/ui/tabs/ParamTab.py +90 -4
- cfclient/ui/tabs/__init__.py +4 -2
- cfclient/ui/tabs/colorLEDTab.ui +624 -0
- cfclient/ui/tabs/consoleTab.ui +1 -1
- cfclient/ui/tabs/flightTab.ui +28 -71
- cfclient/ui/tabs/{ledTab.ui → ledRingTab.ui} +63 -46
- cfclient/utils/input/__init__.py +3 -3
- cfclient/utils/periodictimer.py +1 -1
- cfclient/version.py +34 -0
- cfclient-2025.12.1.dist-info/METADATA +70 -0
- {cfclient-2024.7.1.dist-info → cfclient-2025.12.1.dist-info}/RECORD +54 -28
- {cfclient-2024.7.1.dist-info → cfclient-2025.12.1.dist-info}/WHEEL +1 -1
- {cfclient-2024.7.1.dist-info → cfclient-2025.12.1.dist-info}/top_level.txt +1 -0
- cfconfig/Makefile +51 -0
- cfconfig/configblock.py +111 -0
- cfclient-2024.7.1.dist-info/METADATA +0 -53
- {cfclient-2024.7.1.dist-info → cfclient-2025.12.1.dist-info}/entry_points.txt +0 -0
- {cfclient-2024.7.1.dist-info → cfclient-2025.12.1.dist-info/licenses}/LICENSE.txt +0 -0
|
@@ -1,7 +1,8 @@
|
|
|
1
|
-
cfclient/__init__.py,sha256=
|
|
1
|
+
cfclient/__init__.py,sha256=1-s1f5yEocDIsIQYUukuImVujGb0OANFKMQ-qOz_Iso,1986
|
|
2
2
|
cfclient/gui.py,sha256=98OT0wTR_itVbiO_E6vjOkL2f0H9XUvjsCCCXQEuLRQ,6419
|
|
3
3
|
cfclient/headless.py,sha256=Hgp81TLpvKyo00oAEn5nBW49BC4RNZEXcYNXDrLyJn8,6287
|
|
4
|
-
cfclient/
|
|
4
|
+
cfclient/version.py,sha256=DLdcBM2nfvHCiDJTY0T6yHWVUp0kQq_XE8qFRkVRpQ0,712
|
|
5
|
+
cfclient/configs/config.json,sha256=kh4c9Z5jFU7I3Rrfa4RXUlk5EdVNJcs9QJiT6luqu2Y,863
|
|
5
6
|
cfclient/configs/input/Generic_OS_X.json,sha256=LwAYms0RC2gutp2v_b5QcsjAFYNsEO40AeS__2zn07Q,1057
|
|
6
7
|
cfclient/configs/input/Joystick.json,sha256=4VrLEX6o2T5AogPZjFLNjaNx415fLwkrS8Htop7zSD0,2005
|
|
7
8
|
cfclient/configs/input/PS3_Mode_1.json,sha256=1zsI0N0j5V4Wy9uGLnlKLpq_b27x0sfuJoXYOupmG_Y,1145
|
|
@@ -12,61 +13,84 @@ cfclient/configs/input/PS4_Mode_2.json,sha256=iqXWmysjeB9YrizxO64HTzYigG3EIK_lwi
|
|
|
12
13
|
cfclient/configs/input/PS4_shoulder_btns_yaw.json,sha256=A1FLfueb22eyuU_kAsWfrCULgsSdvGKsUWeUgH6315E,1914
|
|
13
14
|
cfclient/configs/input/xbox360_mode1.json,sha256=_beeR0vJsVeCFKTvrv9tSfn0q4_2cUowilABWI3aywk,1845
|
|
14
15
|
cfclient/configs/log/stabilizer.json,sha256=GLS6SFk7atFPm1wzDVVTe4cxu36WJyECfAZVA_V0QD4,387
|
|
15
|
-
cfclient/
|
|
16
|
+
cfclient/configs/log/PID_tuning/Attitude.json,sha256=u7HG2qtjag52hCF5CAMkTRauK_4GeqyPl0YUDf8Qtws,971
|
|
17
|
+
cfclient/configs/log/PID_tuning/Attitude_rate.json,sha256=8z28vW7o_law6P_CfcuBm-OsKddEh5kDBKcAJB33YxI,953
|
|
18
|
+
cfclient/configs/log/PID_tuning/Position.json,sha256=JUtrvDi16zLKRAWVNOQoH2Bo81Vi08-xHdM4xK8k41A,959
|
|
19
|
+
cfclient/configs/log/PID_tuning/Velocity.json,sha256=c3gugwFjvqH362etgV4s1XmHaAtEseFDbo_WM04SJ3E,965
|
|
20
|
+
cfclient/configs/log/PID_tuning_components/Pitch.json,sha256=893uMWAk-9GfEXHS3w-P4oxI0UQa1WyHCql0R_JgPIo,405
|
|
21
|
+
cfclient/configs/log/PID_tuning_components/Pitch_rate.json,sha256=9oGf68Hv6Mf7yWecJpy7LCiw2XExuA6wpqIJ8HUKDHE,401
|
|
22
|
+
cfclient/configs/log/PID_tuning_components/Position_x.json,sha256=XN-JL-cP-xJBmZ6rn9FLEtauM45hsVPANNTgG_7eVog,403
|
|
23
|
+
cfclient/configs/log/PID_tuning_components/Position_y.json,sha256=gFuHE4rUr9Ipx4y7n3vk_kSwIVxjbfwWJDHDhOU4yzI,403
|
|
24
|
+
cfclient/configs/log/PID_tuning_components/Position_z.json,sha256=6s7sxvxXOABBDuoYg6ld0BYACKed3fBDMVUeKeSFPWg,403
|
|
25
|
+
cfclient/configs/log/PID_tuning_components/Roll.json,sha256=a9YUTEKiNHuDy4kyRClWTX4Q2jGV0uoKYe30k4rzrYc,401
|
|
26
|
+
cfclient/configs/log/PID_tuning_components/Roll_rate.json,sha256=8mSJXn3vU_XRkJUo_6Wz2vKiU4X3TzlQsTO3s2HJTjs,398
|
|
27
|
+
cfclient/configs/log/PID_tuning_components/Velocity_x.json,sha256=GwNRKgdIT6dmP6KWHxgdAcWm3kU9s-7bBE7-gp0XPhU,405
|
|
28
|
+
cfclient/configs/log/PID_tuning_components/Velocity_y.json,sha256=dgLf8_KYeJWJ-IYK3RyWaVQA-1wDC82OdY5w3WOoNvw,405
|
|
29
|
+
cfclient/configs/log/PID_tuning_components/Velocity_z.json,sha256=4Ft9zscDrthqpgrTOlXZMP1NTO4FvjO5XiszQ5ejvCA,405
|
|
30
|
+
cfclient/configs/log/PID_tuning_components/Yaw.json,sha256=hAypXUh8auOBvDHVN-NNYhNTJWpsxh3JZov7jLCidzQ,399
|
|
31
|
+
cfclient/configs/log/PID_tuning_components/Yaw_rate.json,sha256=OviQ8oqp8zerQxNBawzSfnNnfugvcOWYVKUtkmNJwjw,397
|
|
32
|
+
cfclient/resources/log_param_doc.json,sha256=Qk6IPj1WXZgO3Syg5pK9q4-Tpp-0Im2MpGB_E1aKLzg,137928
|
|
16
33
|
cfclient/resources/map.html,sha256=pGwY2GW0F1rAtSImKbu-cFZyb6tJGwrDhkAgOZ98S68,360
|
|
17
34
|
cfclient/resources/map.js,sha256=0KyyJ-5W5qnrlEgTsp_oHk7b3w8k9qoyX4XjhThOkrU,839
|
|
18
35
|
cfclient/ui/__init__.py,sha256=8XHGfW8w3DnQGiL6R7GVob1KrKg4waKNzvSy79lRjMs,1342
|
|
19
36
|
cfclient/ui/connectivity_manager.py,sha256=DdkHL48pBOI9lctc2peHqzQy7u7-sGZTVHYdmd2T3Sk,8275
|
|
20
|
-
cfclient/ui/main.py,sha256=
|
|
21
|
-
cfclient/ui/main.ui,sha256=
|
|
37
|
+
cfclient/ui/main.py,sha256=X5_alyqcBsvVTwiDLK2L09YdFdJNvj9qcrNaLSmUzTs,36956
|
|
38
|
+
cfclient/ui/main.ui,sha256=Np1l54_f3EKsa8E8MtqqRcVYivsCBe2fCAx1Fpt_AYc,16092
|
|
22
39
|
cfclient/ui/pluginhelper.py,sha256=dSq6sCz5TbESfdTPzRzLExHnIZeKdDyw3cuWSViXqL8,1590
|
|
23
40
|
cfclient/ui/pose_logger.py,sha256=1vADKP4-iCj9avqcuPI_amtZg3IKeCVTX0zYao3HPCE,4041
|
|
24
41
|
cfclient/ui/tab_toolbox.py,sha256=8O_rQSX2cVFZOMiHxzCgq6TzdS5MLQahit89JeBCpQ8,7061
|
|
25
42
|
cfclient/ui/dialogs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
cfclient/ui/dialogs/about.py,sha256=
|
|
43
|
+
cfclient/ui/dialogs/about.py,sha256=1Bf769zuQE8yPTrIf7Og7zG8k4P3dJQLkZc0L3DA2Qo,8211
|
|
27
44
|
cfclient/ui/dialogs/about.ui,sha256=K_YI-SuZMu9tAZN8fAiAJjwAG2QD6epaWOcGz-5asYU,7279
|
|
28
45
|
cfclient/ui/dialogs/anchor_position_dialog.py,sha256=46lYyQAm01d9b5qY6LB6s9lfzfoPpKz4X8oA4ijBX5I,9379
|
|
29
46
|
cfclient/ui/dialogs/anchor_position_dialog.ui,sha256=oQr8_DqKM33tajt8Ha_WVNinqTyH1VLpsxW8XBP32Aw,3679
|
|
30
|
-
cfclient/ui/dialogs/basestation_mode_dialog.py,sha256=
|
|
47
|
+
cfclient/ui/dialogs/basestation_mode_dialog.py,sha256=wVai9l-lQ2LBks2ctXeZUsq1DUVwRQ68RCcX5oBFBvE,6251
|
|
31
48
|
cfclient/ui/dialogs/basestation_mode_dialog.ui,sha256=GKBilbHMECKWyoE3WUnCeB084f0rC270yx8f5Kq-JKg,5050
|
|
32
|
-
cfclient/ui/dialogs/bootloader.py,sha256=
|
|
33
|
-
cfclient/ui/dialogs/bootloader.ui,sha256=
|
|
49
|
+
cfclient/ui/dialogs/bootloader.py,sha256=V6TUnm8iOg44rYGf8CxoNavsPzYpIma0dPMnUvIXYG4,25215
|
|
50
|
+
cfclient/ui/dialogs/bootloader.ui,sha256=kl1FF-0ZbxfwuCvlyRBj3yLiQQxEWkJCmg_OsCzKMOQ,15216
|
|
34
51
|
cfclient/ui/dialogs/cf2config.py,sha256=2xYeTeTpK1h42HReInwfr06dvnXmSseiS8D_VDcTmyo,4201
|
|
35
|
-
cfclient/ui/dialogs/cf2config.ui,sha256=
|
|
52
|
+
cfclient/ui/dialogs/cf2config.ui,sha256=gistq-KuUB6E7SMub6ElCG2u3XpUe6i-a19VHcYv7vg,5850
|
|
36
53
|
cfclient/ui/dialogs/inputconfigdialogue.py,sha256=4yhPRTc2-l5yDu2VvavuQUEt629wEkJ3T38YexA3I4w,17922
|
|
37
54
|
cfclient/ui/dialogs/inputconfigdialogue.ui,sha256=5zJ5-S639ctNiPvR_GlBHpbFayQahK4JuQ3ggbOlnSc,24426
|
|
38
|
-
cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.py,sha256=
|
|
39
|
-
cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.ui,sha256=
|
|
55
|
+
cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.py,sha256=RmmVv8GSVTDl__D_hn2sQXfz3VKi9zygJkJv54VikOM,8421
|
|
56
|
+
cfclient/ui/dialogs/lighthouse_bs_geometry_dialog.ui,sha256=KWISXmuFQBR3ogu2FCi_0-e36oJ2h4HefgdsnywECL0,2865
|
|
40
57
|
cfclient/ui/dialogs/lighthouse_system_type_dialog.py,sha256=vff5me_1PMvVOVTv9WCw9X7wKY_G4XCWwKOusuRSrEE,2999
|
|
41
58
|
cfclient/ui/dialogs/lighthouse_system_type_dialog.ui,sha256=0aWRgeXOGptg-gY4qn3OvFWg5To09Y9_V3Lbx3wOx4A,3279
|
|
42
59
|
cfclient/ui/dialogs/logconfigdialogue.py,sha256=Qbtb4ISxTi-a3_GaYKRDm_dEK1XswctDbdffWoFf8Fk,22543
|
|
43
60
|
cfclient/ui/dialogs/logconfigdialogue.ui,sha256=vurEY2SWHRyw-ZhE5Z1UbeC9KwGOaPEHE6si6drmvXM,9128
|
|
61
|
+
cfclient/ui/icons/bl.webp,sha256=dS3-vxoq63ZRgCbYt7UPn4g2cEIJ7y23cFMGPmHJ48Y,42458
|
|
62
|
+
cfclient/ui/icons/bolt.webp,sha256=ofkF8I-Dthhccl9R46ACBhXmRLZfc8nAWwZU0eLRdxI,22886
|
|
63
|
+
cfclient/ui/icons/cf21.webp,sha256=vi0rnQSJcZvEomZGlAUShmSeTPdfmGC1iKf_0N6LI_M,20848
|
|
44
64
|
cfclient/ui/icons/checkmark_black.png,sha256=NwtLwrfLfjp2739iYbSzy8L_y_KBaizKodtF_PtPXXs,440
|
|
45
65
|
cfclient/ui/icons/checkmark_white.png,sha256=vFPIddxRRNzEbDQBpHJwRW5g-nrSt6bUB-NLonhZ4Eo,289
|
|
46
66
|
cfclient/ui/icons/create.png,sha256=Va8a2cE6X1qTv7o3UjPsn8GQfZcdTgy8KvHkf-5W9Yo,1361
|
|
47
67
|
cfclient/ui/icons/delete.png,sha256=s82vdaCgOMkvD1sxbwZZZAEblSK0BZcLKpa66I7j6M4,387
|
|
68
|
+
cfclient/ui/icons/flapper.webp,sha256=b09atPldpCGyzTqZHByUcDBZnKgcZCpoKLvlVVmrXZk,19270
|
|
48
69
|
cfclient/ui/icons/icon-256.png,sha256=SrUxND4cRHSRC_0LCPHIzwYRo1r9ygR1aw_D0BRxfoM,6554
|
|
70
|
+
cfclient/ui/icons/tag.webp,sha256=ICAxETHJQ_ZI0vC_b-JuQBLC_LDbTkxBXnnZ1-JeONI,22776
|
|
71
|
+
cfclient/ui/tabs/ColorLEDTab.py,sha256=TG4fMRAt9uqmznDpEwEULQIIz1xcprGD2RWOiD6VTX0,27278
|
|
49
72
|
cfclient/ui/tabs/ConsoleTab.py,sha256=IP8FB_ev4iq5Bp4FfH9PrIIcEk_vtfdgaD3LYCv4ytw,5191
|
|
50
73
|
cfclient/ui/tabs/CrtpSharkToolbox.py,sha256=2TLhfunC7vqLBzl8Ld3sPPPrPbBvazfPU4UOV7woo24,4242
|
|
51
74
|
cfclient/ui/tabs/ExampleTab.py,sha256=PQZVNV2Rn0hp_WyY0jOQmUJKvZNMJSwIM77JIJOfgQg,3736
|
|
52
|
-
cfclient/ui/tabs/FlightTab.py,sha256=
|
|
75
|
+
cfclient/ui/tabs/FlightTab.py,sha256=rQ4hvEwAVtWdKfULOA1M1G2ZAzvjuUjmAMbttkc55ZY,32969
|
|
53
76
|
cfclient/ui/tabs/GpsTab.py,sha256=TZKoiSQomc-TSnQ4iXanMzmp4BnO07BGjbEFFmW0Tak,6118
|
|
54
|
-
cfclient/ui/tabs/
|
|
77
|
+
cfclient/ui/tabs/LEDRingTab.py,sha256=6HeedcV4HFNkF9PCWm2Yxeag_rI4PukG9fOU-IEZ3ss,10112
|
|
55
78
|
cfclient/ui/tabs/LogBlockDebugTab.py,sha256=mamAHKwrqifiXFu5zxROB2HCvxBuvh0A8Yjpf8Agczc,3892
|
|
56
79
|
cfclient/ui/tabs/LogBlockTab.py,sha256=Iktp20J8Rzxoaf8grcSw1n14DSmH_X32tmCRH_nT-oc,12327
|
|
57
80
|
cfclient/ui/tabs/LogClientTab.py,sha256=cEogxYAM0rkMHLbmJqp_6sNIIefqCGdZnbJZQXNpvEE,2630
|
|
58
|
-
cfclient/ui/tabs/LogTab.py,sha256=
|
|
59
|
-
cfclient/ui/tabs/ParamTab.py,sha256=
|
|
81
|
+
cfclient/ui/tabs/LogTab.py,sha256=A1xj0xlW25QjrpdnRYzrKXChGitf4MAePA_XWd2dtTM,4568
|
|
82
|
+
cfclient/ui/tabs/ParamTab.py,sha256=Ans2k_I4OAodBYbK1zdjnn_h1EVgSTYmOKBPBNmauNI,25447
|
|
60
83
|
cfclient/ui/tabs/PlotTab.py,sha256=M9HRunURxqQHlLqCeQSZaz_lYl3HA-oK0Y2BGBT2b4w,9097
|
|
61
84
|
cfclient/ui/tabs/TuningTab.py,sha256=iJHz0LehnfAb4iIPR_MMY5m-8iCtVhbAxm6_h_yobvc,13217
|
|
62
|
-
cfclient/ui/tabs/__init__.py,sha256=
|
|
63
|
-
cfclient/ui/tabs/
|
|
85
|
+
cfclient/ui/tabs/__init__.py,sha256=ucfOxJUh5CxQPWXSLt5ZfmME4sJmJBQ8cDMxhzcHec4,2118
|
|
86
|
+
cfclient/ui/tabs/colorLEDTab.ui,sha256=QApBTDZcKZMXlfLkyozLkfkF1Pfh5nB-olXPUifDvTQ,19603
|
|
87
|
+
cfclient/ui/tabs/consoleTab.ui,sha256=01CCRlvhhDf_iXSKpkmjjXDRsBdeTa01kmanlWU3uss,4420
|
|
64
88
|
cfclient/ui/tabs/crtpSharkToolbox.ui,sha256=8wfoLVOI7qaHw6F8Mzq42eKv8-NiOQfYcA2yMEThuUk,2134
|
|
65
89
|
cfclient/ui/tabs/exampleTab.ui,sha256=kJqTMt8fw8-yhRYtrVL1E0U2rxOI4xL2CM0mThBKvqc,429
|
|
66
90
|
cfclient/ui/tabs/flightActionContainer.ui,sha256=BQLE17AF9kARb4U78JmiKFmHnMtR8tmUOTYHLgFau6w,2645
|
|
67
|
-
cfclient/ui/tabs/flightTab.ui,sha256=
|
|
91
|
+
cfclient/ui/tabs/flightTab.ui,sha256=p06XcsZsMh0C8pRcpKSsIX_xquLscmn10X4wc2Sqc_w,42584
|
|
68
92
|
cfclient/ui/tabs/gpsTab.ui,sha256=IMtQRwhL7e8A-sv-_0nVm8FVCvo-uujJ9qdgg1aKTs0,5263
|
|
69
|
-
cfclient/ui/tabs/
|
|
93
|
+
cfclient/ui/tabs/ledRingTab.ui,sha256=VB_pvCJMK9JQTre7LCOk98NVj0NoZa16ynHlvBJQf64,9307
|
|
70
94
|
cfclient/ui/tabs/lighthouse_tab.py,sha256=N2tx45LLhGYZxcxDYjTMKrNgasYCEM15Hmr9J1451K4,27443
|
|
71
95
|
cfclient/ui/tabs/lighthouse_tab.ui,sha256=46uLJoFr7iZ6BHBRy6oHxdL812ZajU509Zy-CnCsnjM,15349
|
|
72
96
|
cfclient/ui/tabs/locopositioning_tab.py,sha256=F66j9ruKPk16f36x-6UfGIgFl-hLL6pMrUUrwZhG_kU,31507
|
|
@@ -96,12 +120,12 @@ cfclient/utils/config.py,sha256=yAcCJtixnzAGScKFLh1Pb5hg524OkYePkdwlGiXfxlE,3418
|
|
|
96
120
|
cfclient/utils/config_manager.py,sha256=sqyIHv9s9ztof0v-YKp8fGk0ftYvId6ppUe77HvdB3g,6915
|
|
97
121
|
cfclient/utils/logconfigreader.py,sha256=Y5RRhYm2Pk4R8s9W8EN643jbsiOMzDS_XJrBGth-cm0,13674
|
|
98
122
|
cfclient/utils/logdatawriter.py,sha256=Qso_w3WeTksrSGcacfmRpOy4KMOTHytCQeIkuo9bO7o,4012
|
|
99
|
-
cfclient/utils/periodictimer.py,sha256=
|
|
123
|
+
cfclient/utils/periodictimer.py,sha256=HHE8lhBeYMGSZlcHyZGdaAtLdKuzuVuMzQUgFXzKDJI,2592
|
|
100
124
|
cfclient/utils/singleton.py,sha256=yz-JMLr7F_rO6XpVn4VmGWt2c3vIascsZl0cUeoWqy0,1513
|
|
101
125
|
cfclient/utils/ui.py,sha256=85MeNFeFIjNE2PYn-rjtpfSaOEqFiyZPOZlEfEDS_yo,9687
|
|
102
126
|
cfclient/utils/zmq_led_driver.py,sha256=IJA4Q-FiqVEJH9lOOnFOTp85ygt56FBt4fOajrZ6Y2k,3591
|
|
103
127
|
cfclient/utils/zmq_param.py,sha256=Ok2XqQrv6Y7aalLePgd-bW_lbC1Y5QD7HDnGjjMjMNw,3936
|
|
104
|
-
cfclient/utils/input/__init__.py,sha256=
|
|
128
|
+
cfclient/utils/input/__init__.py,sha256=dGkzxKaf7INCUrjB2qOV63plxpPYvaO990TwLy2erFE,22487
|
|
105
129
|
cfclient/utils/input/inputreaderinterface.py,sha256=4tNV7fdO6cSTgPEvAHlhR3QvY2t36nN5GzuCXx73wwo,9698
|
|
106
130
|
cfclient/utils/input/inputinterfaces/__init__.py,sha256=kqBz9KEj6dgK8Wncr1i2xS2FzUgcY0OS7UOf3kwLi5A,3447
|
|
107
131
|
cfclient/utils/input/inputinterfaces/leapmotion.py,sha256=-jPtWPCqqUisKfMLsgWgi11EszMPFbqu0tPXL0A5-aY,4780
|
|
@@ -114,13 +138,15 @@ cfclient/utils/input/mux/__init__.py,sha256=TXP6Fqnj3eCZ5jrpzDhCjTbdnLDjuHn5cYcF
|
|
|
114
138
|
cfclient/utils/input/mux/nomux.py,sha256=HnQCoi-MqJvnOF3anyrlVMEWPJEBud_NYCoDFyJRC_o,1627
|
|
115
139
|
cfclient/utils/input/mux/takeovermux.py,sha256=7aftcx7-Kv2m2Cgs-Fuvs8i6NtvtPICSjUNsD04NGmA,1771
|
|
116
140
|
cfclient/utils/input/mux/takeoverselectivemux.py,sha256=nKX1mV331o37TrVT4FcsGdErFnzkyoxgSRj7rtBbZtI,2415
|
|
141
|
+
cfclient-2025.12.1.dist-info/licenses/LICENSE.txt,sha256=UMjaTs39CS8X5zNtH4UWpmDBTydaVVQSDG8j1N285mI,18415
|
|
142
|
+
cfconfig/Makefile,sha256=O2IZLnrGtKPfUC_eT_OWpAU5d9ULNjfBUdLi6VfPcK0,1775
|
|
143
|
+
cfconfig/configblock.py,sha256=aOzCnI-JJEyYI1-tJZMmzeB2p9bQL0M3fY9FZeNwQas,2901
|
|
117
144
|
cfloader/__init__.py,sha256=Cg4mKk5YlQytgZ-LXifDwW1YmYUZpw4nXbk4OtJUMgE,6023
|
|
118
145
|
cfloader/__main__.py,sha256=Ct5fO0RV6foPBMmTHpEASS6mZ-4roJKoXWL8lhuuda0,65
|
|
119
146
|
cfzmq/__init__.py,sha256=ik4QKjZP9syOqpEjSnzv57u_VTa-Cb3QcpaeyVpL_gc,14025
|
|
120
147
|
cfzmq/__main__.py,sha256=AoNwiCOwva0pyNZXMLRW5COKB6Fh3bPgQO-gE5hD_Cg,62
|
|
121
|
-
cfclient-
|
|
122
|
-
cfclient-
|
|
123
|
-
cfclient-
|
|
124
|
-
cfclient-
|
|
125
|
-
cfclient-
|
|
126
|
-
cfclient-2024.7.1.dist-info/RECORD,,
|
|
148
|
+
cfclient-2025.12.1.dist-info/METADATA,sha256=BtiyyXqbwKau9IATuXYu1YlrOXxunhlifQmdNUoN_E4,3389
|
|
149
|
+
cfclient-2025.12.1.dist-info/WHEEL,sha256=qELbo2s1Yzl39ZmrAibXA2jjPLUYfnVhUNTlyF1rq0Y,92
|
|
150
|
+
cfclient-2025.12.1.dist-info/entry_points.txt,sha256=8_UbQo4eRlY2aks3MbiuNTTpaDvjVSsraMj_fVcrBtY,127
|
|
151
|
+
cfclient-2025.12.1.dist-info/top_level.txt,sha256=kEMGlBZwPaeAdpoqXh5uBLBb0xaanO_wPW14T6BuJKs,33
|
|
152
|
+
cfclient-2025.12.1.dist-info/RECORD,,
|
cfconfig/Makefile
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
|
|
2
|
+
######### JTAG and environment configuration ##########
|
|
3
|
+
OPENOCD_INTERFACE ?= interface/jtagkey.cfg
|
|
4
|
+
OPENOCD_TARGET ?= target/stm32.cfg
|
|
5
|
+
#######################################################
|
|
6
|
+
|
|
7
|
+
CONFIGFILE := cblock.cfg
|
|
8
|
+
BINFILE := cblock.bin
|
|
9
|
+
|
|
10
|
+
help:
|
|
11
|
+
@echo "Crazyflie config block makefile utility"
|
|
12
|
+
@echo
|
|
13
|
+
@echo "This script permits to read and write the config block of Crazyflie using"
|
|
14
|
+
@echo "openocd and any JTAG probe supported by it. The copter has to be connected"
|
|
15
|
+
@echo "to the jtag probe"
|
|
16
|
+
@echo
|
|
17
|
+
@echo "Available action:"
|
|
18
|
+
@echo " help : Display this message"
|
|
19
|
+
@echo " read : Read the configuration block from the copter using openOCD,"
|
|
20
|
+
@echo " decode it and save it in a configuration file"
|
|
21
|
+
@echo " write : Compile the configuration file to a block and write the block"
|
|
22
|
+
@echo " in the copter using openOCD"
|
|
23
|
+
@echo
|
|
24
|
+
@echo "Parameters that can be configured: [current value] (can be altered from command line)"
|
|
25
|
+
@echo " CONFIGFILE [$(CONFIGFILE)]"
|
|
26
|
+
@echo " BINFILE [$(BINFILE)]"
|
|
27
|
+
@echo " OCD_INTERFACE [$(OPENOCD_INTERFACE)]"
|
|
28
|
+
@echo " OCD_TARGET [$(OPENOCD_TARGET)]"
|
|
29
|
+
|
|
30
|
+
read: readbin bin2cfg
|
|
31
|
+
|
|
32
|
+
write: cfg2bin writebin
|
|
33
|
+
|
|
34
|
+
readbin:
|
|
35
|
+
openocd -d0 -f $(OPENOCD_INTERFACE) -f $(OPENOCD_TARGET) -c init -c targets \
|
|
36
|
+
-c "reset halt" -c "dump_image $(BINFILE) 0x1FC00 1024" \
|
|
37
|
+
-c "reset run" -c shutdown
|
|
38
|
+
|
|
39
|
+
writebin:
|
|
40
|
+
openocd -d0 -f $(OPENOCD_INTERFACE) -f $(OPENOCD_TARGET) -c init -c targets \
|
|
41
|
+
-c "reset halt" -c "flash erase_sector 0 127 127" \
|
|
42
|
+
-c "flash write_bank 0 $(BINFILE) 0x1FC00" -c "verify_image $(BINFILE) 0x1FC00" \
|
|
43
|
+
-c "reset run" -c shutdown
|
|
44
|
+
|
|
45
|
+
bin2cfg:
|
|
46
|
+
./configblock.py extract $(BINFILE) $(CONFIGFILE)
|
|
47
|
+
|
|
48
|
+
cfg2bin:
|
|
49
|
+
./configblock.py generate $(CONFIGFILE) $(BINFILE)
|
|
50
|
+
|
|
51
|
+
|
cfconfig/configblock.py
ADDED
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
#!/usr/bin/env python
|
|
2
|
+
# -*- coding: utf-8 -*-
|
|
3
|
+
# Configuration block compiler/decompiler
|
|
4
|
+
# Fully static version (to be considered as a prototype...)!
|
|
5
|
+
from configparser import ConfigParser
|
|
6
|
+
import struct
|
|
7
|
+
import sys
|
|
8
|
+
from functools import reduce
|
|
9
|
+
|
|
10
|
+
# Radio speed enum type
|
|
11
|
+
speeds = ["250K", "1M", "2M"]
|
|
12
|
+
radioSpeedPos = 2
|
|
13
|
+
|
|
14
|
+
defaultConfig = """#Crazyflie config block
|
|
15
|
+
#default version generated from squatch
|
|
16
|
+
[radio]
|
|
17
|
+
channel= 100
|
|
18
|
+
speed= 2M
|
|
19
|
+
|
|
20
|
+
[calib]
|
|
21
|
+
pitchTrim= 0.0
|
|
22
|
+
rollTrim= 0.0
|
|
23
|
+
"""
|
|
24
|
+
|
|
25
|
+
config = """#Crazyflie config block
|
|
26
|
+
#Block version %d extracted from copter
|
|
27
|
+
[radio]
|
|
28
|
+
channel= %d
|
|
29
|
+
speed= %s
|
|
30
|
+
|
|
31
|
+
[calib]
|
|
32
|
+
pitchTrim= %f
|
|
33
|
+
rollTrim= %f
|
|
34
|
+
"""
|
|
35
|
+
|
|
36
|
+
configVersion = 0
|
|
37
|
+
structFormat = "<BBBff"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
def checksum256(st):
|
|
41
|
+
return reduce(lambda x, y: x + y, list(map(ord, st))) % 256
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def compileBlock(configFile, binFile):
|
|
45
|
+
config = ConfigParser()
|
|
46
|
+
|
|
47
|
+
config.read(configFile)
|
|
48
|
+
|
|
49
|
+
block = (configVersion,)
|
|
50
|
+
|
|
51
|
+
block += (config.getint("radio", "channel"),)
|
|
52
|
+
block += (speeds.index(config.get("radio", "speed").upper()),)
|
|
53
|
+
|
|
54
|
+
block += (config.getfloat("calib", "pitchTrim"),)
|
|
55
|
+
block += (config.getfloat("calib", "rollTrim"),)
|
|
56
|
+
|
|
57
|
+
bin = struct.pack(structFormat, *block)
|
|
58
|
+
|
|
59
|
+
# Adding some magic:
|
|
60
|
+
bin = "0xBC" + bin
|
|
61
|
+
|
|
62
|
+
bin += struct.pack("B", 256 - checksum256(bin))
|
|
63
|
+
|
|
64
|
+
# print("Config block checksum: %02x" % bin[len(bin)-1])
|
|
65
|
+
|
|
66
|
+
bfile = open(binFile, "w")
|
|
67
|
+
bfile.write(bin)
|
|
68
|
+
bfile.close()
|
|
69
|
+
|
|
70
|
+
print("Config block compiled successfully to", binFile)
|
|
71
|
+
|
|
72
|
+
|
|
73
|
+
def decompileBlock(binFile, configFile):
|
|
74
|
+
bfile = open(binFile)
|
|
75
|
+
bin = bfile.read()
|
|
76
|
+
bfile.close()
|
|
77
|
+
|
|
78
|
+
if (bin[0:4] != "0xBC" or len(bin) < (struct.calcsize(structFormat) + 5) or
|
|
79
|
+
checksum256(bin[0:struct.calcsize(structFormat) + 5]) != 0):
|
|
80
|
+
print("Config block erased of altered, generating default file")
|
|
81
|
+
cfile = open(configFile, "w")
|
|
82
|
+
cfile.write(defaultConfig)
|
|
83
|
+
cfile.close()
|
|
84
|
+
else:
|
|
85
|
+
block = struct.unpack(structFormat,
|
|
86
|
+
bin[4:struct.calcsize(structFormat) + 4])
|
|
87
|
+
if block[0] != configVersion:
|
|
88
|
+
print("Error! wrong configuration block version, "
|
|
89
|
+
"this program must certainly be updated!")
|
|
90
|
+
return
|
|
91
|
+
|
|
92
|
+
block = (block[0:radioSpeedPos] + (speeds[block[radioSpeedPos]],) +
|
|
93
|
+
block[radioSpeedPos + 1:len(block)])
|
|
94
|
+
|
|
95
|
+
cfile = open(configFile, "w")
|
|
96
|
+
cfile.write(config % block)
|
|
97
|
+
cfile.close()
|
|
98
|
+
print("Config block successfully extracted to", configFile)
|
|
99
|
+
|
|
100
|
+
|
|
101
|
+
if __name__ == "__main__":
|
|
102
|
+
if (len(sys.argv) < 4 or
|
|
103
|
+
(sys.argv[1] != "generate" and sys.argv[1] != "extract")):
|
|
104
|
+
print("Configuration block compiler/decompiler.")
|
|
105
|
+
print(" Usage: %s <generate|extract> <infile> <outfile>"
|
|
106
|
+
% sys.argv[0])
|
|
107
|
+
|
|
108
|
+
if sys.argv[1] == "generate":
|
|
109
|
+
compileBlock(sys.argv[2], sys.argv[3])
|
|
110
|
+
else:
|
|
111
|
+
decompileBlock(sys.argv[2], sys.argv[3])
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
Metadata-Version: 2.1
|
|
2
|
-
Name: cfclient
|
|
3
|
-
Version: 2024.7.1
|
|
4
|
-
Summary: Bitcraze Cazyflie quadcopter client
|
|
5
|
-
Home-page: http://www.bitcraze.io
|
|
6
|
-
Author: Bitcraze team
|
|
7
|
-
Author-email: contact@bitcraze.se
|
|
8
|
-
Keywords: quadcopter crazyflie
|
|
9
|
-
Classifier: License :: OSI Approved :: GNU General Public License v2 or later (GPLv2+)
|
|
10
|
-
Classifier: Programming Language :: Python :: 3.4
|
|
11
|
-
Classifier: Programming Language :: Python :: 3.5
|
|
12
|
-
Description-Content-Type: text/markdown
|
|
13
|
-
License-File: LICENSE.txt
|
|
14
|
-
Requires-Dist: cflib >=0.1.26
|
|
15
|
-
Requires-Dist: setuptools
|
|
16
|
-
Requires-Dist: appdirs ~=1.4.0
|
|
17
|
-
Requires-Dist: pyzmq ~=25.0
|
|
18
|
-
Requires-Dist: pyqtgraph ~=0.13
|
|
19
|
-
Requires-Dist: PyYAML ~=6.0.1
|
|
20
|
-
Requires-Dist: numpy ~=1.20
|
|
21
|
-
Requires-Dist: vispy ~=0.14.2
|
|
22
|
-
Requires-Dist: pyopengl ~=3.1.7
|
|
23
|
-
Requires-Dist: pyserial ~=3.5
|
|
24
|
-
Requires-Dist: pyqt6 >=6.4
|
|
25
|
-
Requires-Dist: PyQt6-sip >=13.4
|
|
26
|
-
Requires-Dist: pysdl2 ~=0.9.14 ; platform_system == "Windows" or platform_system == "Darwin"
|
|
27
|
-
Requires-Dist: pysdl2-dll ==2.24.0 ; platform_system == "Windows" or platform_system == "Darwin"
|
|
28
|
-
Provides-Extra: dev
|
|
29
|
-
Requires-Dist: pre-commit ; extra == 'dev'
|
|
30
|
-
Requires-Dist: cx-freeze ==5.1.1 ; (platform_system == "Windows") and extra == 'dev'
|
|
31
|
-
Requires-Dist: jinja2 ==2.10.3 ; (platform_system == "Windows") and extra == 'dev'
|
|
32
|
-
|
|
33
|
-
# Crazyflie PC client [](https://github.com/bitcraze/crazyflie-clients-python/actions?query=workflow%3ACI) [](https://snapcraft.io/cfclient)
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
The Crazyflie PC client enables flashing and controlling the Crazyflie.
|
|
37
|
-
It implements the user interface and high-level control (for example gamepad handling).
|
|
38
|
-
The communication with Crazyflie and the implementation of the CRTP protocol to control the Crazyflie is handled by the [cflib](https://github.com/bitcraze/crazyflie-lib-python) project.
|
|
39
|
-
|
|
40
|
-
## Installation
|
|
41
|
-
See the [installation instructions](docs/installation/install.md) in the GitHub docs folder.
|
|
42
|
-
|
|
43
|
-
## Official Documentation
|
|
44
|
-
|
|
45
|
-
Check out the [Bitcraze crazyflie-client-python documentation](https://www.bitcraze.io/documentation/repository/crazyflie-clients-python/master/) on our website.
|
|
46
|
-
|
|
47
|
-
## Contribute
|
|
48
|
-
Go to the [contribute page](https://www.bitcraze.io/contribute/) on our website to learn more.
|
|
49
|
-
|
|
50
|
-
### Test code for contribution
|
|
51
|
-
Run the automated build locally to test your code
|
|
52
|
-
|
|
53
|
-
python3 tools/build/build
|
|
File without changes
|
|
File without changes
|