enode-host 0.1.0__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.
- enode_host/__init__.py +1 -0
- enode_host/async_socket.py +165 -0
- enode_host/backup/c-wing3.py +226 -0
- enode_host/backup/c.py +226 -0
- enode_host/backup/esp_mesh.py +136 -0
- enode_host/backup/gui_comps.py +113 -0
- enode_host/backup/gui_wx_bk.py +270 -0
- enode_host/backup/load_file.py +27 -0
- enode_host/backup/mesh.py +0 -0
- enode_host/backup/mesh_bk.py +0 -0
- enode_host/backup/s.py +151 -0
- enode_host/backup/sandbox.py +93 -0
- enode_host/backup/shm.py +262 -0
- enode_host/backup/shmtools.py +70 -0
- enode_host/backup/smarts.py +243 -0
- enode_host/backup/test_wxpython_choice.py +49 -0
- enode_host/backup/view-wing3.py +494 -0
- enode_host/backup/wx_example.py +55 -0
- enode_host/backup/wx_test01.py +43 -0
- enode_host/cli.py +192 -0
- enode_host/config.py +8 -0
- enode_host/constants.py +25 -0
- enode_host/framed_mesh.py +237 -0
- enode_host/gui_framed.py +207 -0
- enode_host/model.py +1415 -0
- enode_host/protocol.py +311 -0
- enode_host/psd_recursive.py +139 -0
- enode_host/queues.py +11 -0
- enode_host/resampling.py +206 -0
- enode_host/shm_sigproc.py +47 -0
- enode_host/storage.py +93 -0
- enode_host/timestamping.py +79 -0
- enode_host/types.py +38 -0
- enode_host/view.py +1233 -0
- enode_host-0.1.0.dist-info/METADATA +81 -0
- enode_host-0.1.0.dist-info/RECORD +39 -0
- enode_host-0.1.0.dist-info/WHEEL +5 -0
- enode_host-0.1.0.dist-info/entry_points.txt +2 -0
- enode_host-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: enode-host
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Host-side tools that interact with the ESP-IDF firmware.
|
|
5
|
+
Author: eNode team
|
|
6
|
+
License: MIT
|
|
7
|
+
Requires-Python: >=3.10
|
|
8
|
+
Description-Content-Type: text/markdown
|
|
9
|
+
Requires-Dist: PyQt5>=5.15
|
|
10
|
+
Requires-Dist: matplotlib>=3.8
|
|
11
|
+
Requires-Dist: pandas>=2.2
|
|
12
|
+
|
|
13
|
+
# Host Python Tools
|
|
14
|
+
|
|
15
|
+
This folder contains host-side Python code that interacts with the ESP-IDF
|
|
16
|
+
firmware (e.g., over serial, sockets, or file exchange). It is kept separate
|
|
17
|
+
from the firmware build to avoid mixing tool dependencies with ESP-IDF.
|
|
18
|
+
|
|
19
|
+
## Quick start
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
python -m venv .venv
|
|
23
|
+
source .venv/bin/activate
|
|
24
|
+
pip install -e .
|
|
25
|
+
|
|
26
|
+
enode-host --help
|
|
27
|
+
enode-host socket 127.0.0.1 3333 "hello"
|
|
28
|
+
enode-host server --port 3333 --interactive
|
|
29
|
+
enode-host gui --port 3333
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Notes
|
|
33
|
+
|
|
34
|
+
- Add runtime dependencies to `pyproject.toml` under `project.dependencies`.
|
|
35
|
+
- Keep device/transport details in small modules so they can be shared by
|
|
36
|
+
scripts and tests.
|
|
37
|
+
- The GUI uses wxPython; install it if you plan to run `enode-host gui`.
|
|
38
|
+
|
|
39
|
+
## Protocol (TCP, length-prefixed)
|
|
40
|
+
|
|
41
|
+
Frame format: 1 byte message type, 2 bytes big-endian payload length, payload.
|
|
42
|
+
|
|
43
|
+
Message types:
|
|
44
|
+
- 0x10 COMMAND (host -> device)
|
|
45
|
+
- 0x20 STATUS (device -> host)
|
|
46
|
+
- 0x30 ACK (either direction)
|
|
47
|
+
- 0x40 DATA (device -> host, ACC batch)
|
|
48
|
+
- 0x41 PPS (device -> host, immediate PPS)
|
|
49
|
+
|
|
50
|
+
Commands (payload begins with command_id):
|
|
51
|
+
- 0x01 start_daq
|
|
52
|
+
- 0x02 stop_daq
|
|
53
|
+
- 0x03 set_mode (1 byte: 0 realtime, 1 past)
|
|
54
|
+
- 0x04 start_realtime_stream
|
|
55
|
+
- 0x05 stop_realtime_stream
|
|
56
|
+
- 0x06 start_past_stream (payload: 8-byte start_ms, 8-byte end_ms)
|
|
57
|
+
- 0x07 stop_past_stream
|
|
58
|
+
|
|
59
|
+
Status payload (16 bytes):
|
|
60
|
+
- node_type: uint8
|
|
61
|
+
- node_number: uint8
|
|
62
|
+
- level: uint8
|
|
63
|
+
- parent_mac: 6 bytes
|
|
64
|
+
- self_mac: 6 bytes
|
|
65
|
+
- rssi: int8
|
|
66
|
+
|
|
67
|
+
DATA payload:
|
|
68
|
+
- node_type: uint8
|
|
69
|
+
- node_number: uint8
|
|
70
|
+
- sample_count: uint8
|
|
71
|
+
- repeated samples (count):
|
|
72
|
+
- cc: uint64 (big-endian)
|
|
73
|
+
- acc_x: float32 (big-endian)
|
|
74
|
+
- acc_y: float32 (big-endian)
|
|
75
|
+
- acc_z: float32 (big-endian)
|
|
76
|
+
|
|
77
|
+
PPS payload:
|
|
78
|
+
- node_type: uint8
|
|
79
|
+
- node_number: uint8
|
|
80
|
+
- cc: uint64 (big-endian)
|
|
81
|
+
- epoch: int64 (big-endian)
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
enode_host/__init__.py,sha256=3u-uEwRU8FkoffjeP5Z06eQSAkLw68KD5n5tpydZaNo,69
|
|
2
|
+
enode_host/async_socket.py,sha256=rcH_8SbpaP5syzYclGOzpQC0Sp4sbQ7B3ojBhPpGMPk,5920
|
|
3
|
+
enode_host/cli.py,sha256=1Bllz6NHZjVhapAaXjo_RTDdhvjHlf0memJVXSxsE4M,6088
|
|
4
|
+
enode_host/config.py,sha256=XVJ7Yco78Yc7pUm3goTxEhBmRH-IFHex2S9UaKVB4Y0,310
|
|
5
|
+
enode_host/constants.py,sha256=4C4mPoA2lNTk2sBHtLc8KQnIOhJldjVvGJ8kd72zTY4,666
|
|
6
|
+
enode_host/framed_mesh.py,sha256=WcYC-AKLs4eNMRR8LrjuIooMZ1xcluYS8e9hUookCCU,10094
|
|
7
|
+
enode_host/gui_framed.py,sha256=3PPtZXjFoqa7_GMLgxGqs1U1-T-qOlFsHjGoMIUlhJ0,8340
|
|
8
|
+
enode_host/model.py,sha256=_Ia07v48_8G_om5I3CccbHqE8Uug84mL5kctyH3z_b4,55605
|
|
9
|
+
enode_host/protocol.py,sha256=_7mwMrKKpHIq_kRL828Bb91VfSnlJN9buKTuqUlRy7o,8356
|
|
10
|
+
enode_host/psd_recursive.py,sha256=j9IQJBtT3BeFNTkDNcxM4Dv_RNUFt98lQxoJEp33lPU,4159
|
|
11
|
+
enode_host/queues.py,sha256=ev243B-TppBkrlXiiBjJKGZCycccNyVZ4YvTfEE-EW4,252
|
|
12
|
+
enode_host/resampling.py,sha256=Cy-YTOq0-1qz7_UAFNRxeOD35xWH9jO_-NPJuMjz-p4,5967
|
|
13
|
+
enode_host/shm_sigproc.py,sha256=dIHxg2POcqdicRSoD2hNemK0bdT5v6qGF0UiH3yFMuA,1327
|
|
14
|
+
enode_host/storage.py,sha256=ms_7NEs4xadk0tRHxLmED3aEGhv0e0kQWd9bbYaEc7E,3340
|
|
15
|
+
enode_host/timestamping.py,sha256=TwgaDp1ZwfGMRx_aEU17ZcQpug3eybGS1QK8ZuXjW1M,3157
|
|
16
|
+
enode_host/types.py,sha256=hYfseOfs2P-Fs39Q3U_INcoVljI9QhL5BESZ5i8pK9c,1087
|
|
17
|
+
enode_host/view.py,sha256=s85ePCy31xrFEoyYwh7AAtkGZVzI9ybYhfKAfAd_7Lk,48525
|
|
18
|
+
enode_host/backup/c-wing3.py,sha256=eJcbo3Zi8pLx8fVoY1aXLlF2wluByaZup8JEEVMmzkw,7395
|
|
19
|
+
enode_host/backup/c.py,sha256=nojFZjhu1YhldcVzV3lsrCeLSHn5ypEYLz8JkW90ryc,7407
|
|
20
|
+
enode_host/backup/esp_mesh.py,sha256=88Qs_ABk2VyJssiFSgP2Bx53OW1GdhFy40BpaMiYwMQ,4879
|
|
21
|
+
enode_host/backup/gui_comps.py,sha256=SEpmaXCsA-xDs9B3lth1GzXDoNv3aOCecUw_cfrUZFQ,4707
|
|
22
|
+
enode_host/backup/gui_wx_bk.py,sha256=okDAj5HB8Veu8NkoRJ_WkiMYBdvSp1ZwRMWT9bM6Zcg,9674
|
|
23
|
+
enode_host/backup/load_file.py,sha256=hIWmktKVxZOZ7eTGsLY247Itg6TOFJ731Z9seF5IM_s,703
|
|
24
|
+
enode_host/backup/mesh.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
25
|
+
enode_host/backup/mesh_bk.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
enode_host/backup/s.py,sha256=fLOc6ijOgO5r5eWx6qD-EbuYW93jDfthQ_1RTxGbq74,4222
|
|
27
|
+
enode_host/backup/sandbox.py,sha256=N5DdQ5wMDzRi1VyILnmpqNRJ9U_LIyr2Jaadp9szD44,3399
|
|
28
|
+
enode_host/backup/shm.py,sha256=bUrj2AcAqAMfttCz0dHxjj20KSrpBpwAJr1JzYjc3_g,11146
|
|
29
|
+
enode_host/backup/shmtools.py,sha256=gCHxuMyj09FvUW8F7NPFr17Tnm31kyqPuhSa595GA6g,2048
|
|
30
|
+
enode_host/backup/smarts.py,sha256=ZEcsW9asjoO8X6gCtKVE_IS460QhaoUbIxFwTfs_Rpg,8457
|
|
31
|
+
enode_host/backup/test_wxpython_choice.py,sha256=D4X_F17WTmuOWjeSaoJSkdUaUQN1Smb6fJ3dD96frxE,1611
|
|
32
|
+
enode_host/backup/view-wing3.py,sha256=UC-btSlO0jBxXTcXDTJWCSTotDLYvl1I1Sow70SyPss,21280
|
|
33
|
+
enode_host/backup/wx_example.py,sha256=fYVNWW2UMZntfU43DWhoGRzzBSy_slS7TgpC3ADIAUM,1715
|
|
34
|
+
enode_host/backup/wx_test01.py,sha256=Hjxk6vH0fR9IiaiBmlvMrQxlAUav_2oM0N-rhuhuFko,1270
|
|
35
|
+
enode_host-0.1.0.dist-info/METADATA,sha256=WNAMDd96qFEnV_CvwbqJQ8GViYuoCGAOcSzzN7iYEtk,2080
|
|
36
|
+
enode_host-0.1.0.dist-info/WHEEL,sha256=wUyA8OaulRlbfwMtmQsvNngGrxQHAvkKcvRmdizlJi0,92
|
|
37
|
+
enode_host-0.1.0.dist-info/entry_points.txt,sha256=kIE7OEbJaaHseFwIL8JGkK13AnIcLPUpHZ8AaAU0aPw,51
|
|
38
|
+
enode_host-0.1.0.dist-info/top_level.txt,sha256=CLkZ85gscsAQAI6aophWEVtMQcLpyVI06DB4UoW4Xys,11
|
|
39
|
+
enode_host-0.1.0.dist-info/RECORD,,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
enode_host
|