Add COM protocol entry

This commit is contained in:
2026-04-11 09:28:32 +08:00
parent cfd640f308
commit c71c26bf8f
5 changed files with 139 additions and 0 deletions

58
docs/host_com_rebuild.md Normal file
View File

@@ -0,0 +1,58 @@
# Host COM Rebuild
## Goal
Keep the protocol layer small and explicit.
The COM layer should:
- define packet-facing helpers
- own frame parsing and packet building
- avoid transport concerns
- avoid UI and session concerns
## Completed Nodes
### Node 1: legacy protocol baseline
Files already present before this step:
- `KeyBorad/KeyBorad/COM/Com_Cdc.h`
- `KeyBorad/KeyBorad/COM/Com_CdcEncode.h`
- `KeyBorad/KeyBorad/COM/Com_CdcEncode.cpp`
- `KeyBorad/KeyBorad/COM/Com_CdcDecode.h`
- `KeyBorad/KeyBorad/COM/Com_CdcDecode.cpp`
Design notes:
- these files preserve the old packet format
- they already encode and decode complete CDC frames
- they also contain per-packet payload helpers
### Node 2: unified protocol entry
Files added in this step:
- `KeyBorad/KeyBorad/COM/Com_ProtoCodec.h`
- `KeyBorad/KeyBorad/COM/Com_ProtoCodec.cpp`
Design notes:
- provides a thin and readable entry point for higher layers
- keeps `DRI` from depending on packet parsing
- keeps `LGC` from depending on low-level byte layout details
- starts from the smallest useful handshake path
Implemented behavior:
- build `HelloReq` frame
- validate whether a parsed packet is `HelloRsp`
- decode `HelloRsp`
- forward frame parsing and stream extraction to the existing low-level codec
## Next COM nodes
- bitmap encode/decode helper
- ack/error helper
- time sync and theme helper
- replace direct `Com_Cdc*` calls in higher layers with `Com_ProtoCodec*`