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.
@@ -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,5 @@
1
+ Wheel-Version: 1.0
2
+ Generator: setuptools (80.10.2)
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
5
+
@@ -0,0 +1,2 @@
1
+ [console_scripts]
2
+ enode-host = enode_host.cli:main
@@ -0,0 +1 @@
1
+ enode_host