# `modules/core_hostlink` Home for shared hostlink protocol logic and state handling. ## Migrated now - `hostlink_protocol.md` - `include/hostlink/hostlink_types.h` - `include/hostlink/hostlink_codec.h` - `src/hostlink_codec.cpp` - `include/hostlink/hostlink_config_codec.h` - `src/hostlink_config_codec.cpp` - `include/hostlink/hostlink_service_codec.h` - `src/hostlink_service_codec.cpp` - `include/hostlink/hostlink_session.h` - `src/hostlink_session.cpp` - `include/hostlink/hostlink_frame_router.h` - `src/hostlink_frame_router.cpp` - `include/hostlink/hostlink_app_data_codec.h` - `src/hostlink_app_data_codec.cpp` - `include/hostlink/hostlink_event_codec.h` - `src/hostlink_event_codec.cpp` - `include/hostlink/c6/c6_protocol.h` - `include/hostlink/c6/c6_frame_codec.h` - `include/hostlink/c6/c6_frame_codec_c.h` - `src/c6_frame_codec.cpp` - `src/c6_frame_codec_c.c` These pieces are pure protocol/codec logic and do not depend on Arduino, FreeRTOS, USB, board support, or application composition. The `hostlink/c6/*` path is intentionally distinct from the Data Exchange HostLink frame format. C6 HostLink is the P4-to-ESP32-C6 wireless companion protocol defined by the companion architecture; it shares the module because it is portable wire protocol code, not because the two transports are interchangeable. ## Deferred for later - hostlink runtime ownership has moved out of `src/hostlink`, but it still remains in the ESP/Arduino platform layer because it owns USB transport, FreeRTOS tasks/queues, and current runtime scheduling policy