Skip to content

Spectranet demo#32

Closed
Ninjabippo1205 wants to merge 2 commits into
mainfrom
spectranet-demo
Closed

Spectranet demo#32
Ninjabippo1205 wants to merge 2 commits into
mainfrom
spectranet-demo

Conversation

@Ninjabippo1205

Copy link
Copy Markdown
Contributor

Summary

Type of change

  • Bug fix
  • New feature / enhancement
  • New Service Model
  • Refactor (no behavior change)
  • Documentation
  • Test / CI / packaging
  • Other (explain):

Linked issue

Closes #

Mandatory test checklist

These mirror what CI (.github/workflows/pr-tests.yml) enforces. All boxes must be ticked before review.

  • ./build_libe3 -c -d build -j $(nproc) -r -t passes (Release build + tests)
  • ./build_libe3 -c -d build -j $(nproc) -g -t passes (Debug build + tests)
  • cd build && ctest --output-on-failure is clean
  • MPMC queue benchmark (./build/test_bench_mpmc_queue) shows no regression vs main
  • VERSION bumped per SemVer if the public API or ABI changed
  • If public headers under include/ were touched, ./build_libe3 --docs renders without new Doxygen warnings
  • If new build dependencies were added, they are installed by ./build_libe3 -I (update the script if needed)
  • If the libe3.pc interface changed, downstream consumers (dApp-openairinterface5g) still link cleanly

CI checklist

  • Unit Tests workflow is green (Debug + Release matrix on ubuntu-latest)
  • MPMC Queue Benchmark job has posted results to this PR with no regression

Twin-repo coordination

libe3 is paired with dapps and dApp-openairinterface5g. We do not accept patches that break or reduce compatibility with the twin repositories.

  • This PR does not change the E3 wire protocol or public ABI, OR a paired PR exists in each affected twin repo (link below).

Paired PR(s):

Workflow confirmation

  • Commits will be squashed at merge time. Updates to this PR will be applied via rebase only — no merge commits, no duplicated history. (See CONTRIBUTING.md § Pull Request Process.)
  • I have read and followed CONTRIBUTING.md.

…tranet-demo)

libe3's JSON encoder spoke snake_case keys with hex-string payloads
(dapp_identifier, protocol_data, ...), while the aerial dApp ecosystem
(NVIDIA aerial sample-apps and the spectranet dApps) speaks camelCase
with nested-JSON payloads (ranFunctionIdentifier, protocolData: {...}).
A JSON RAN agent built from main therefore could not interoperate with
those dApps.

Port the JSON encoder end-state from the spectranet-demo branch
(686ba11, 4ec3cb0, ea62ba9, af826b4, fc6284b, 5dbacba squashed; no
runtime dual-encoding, no core changes):
- camelCase keys + camelCase PDU type strings (PascalCase rejected)
- flat envelope: payload fields at root next to type/id/timestamp;
  messages with a "data" wrapper are rejected
- JSON-object payloads carried inline; binary payloads as hex with a
  sentinel; plain hex-string actionData accepted (aerial 19f9bd3 sends
  that shape)
- string_to_pdu_type returns std::optional; unknown PDU types fail
  decode instead of defaulting

types.hpp gains the optional wire fields the dialect carries:
SetupResponse.message, SubscriptionResponse{ran_function_identifier,
telemetry_granted_list, control_granted_list, periodicity_us, message},
IndicationMessage.subscription_id. All are optional/empty by default,
not populated by the core, and skipped on the wire when absent (the
aerial dApp reads them conditionally). Core construction sites all use
member assignment, so the layout change is source-compatible.

test_json_encoder.cpp ports the dialect's test suite (21 cases);
test_types.cpp aligns the encoder-default assertion with types.hpp's
ASN1-first precedence so the suite holds when both encoders are
compiled in.

Verified standalone: json_encoder TU compiles against these headers
(-std=c++17) and the 21-test suite passes; E3Config_defaults passes
with both LIBE3_ENABLE_ASN1 and LIBE3_ENABLE_JSON defined.
…-encoding lineage

spectranet-demo now tracks main + the aerial JSON dialect (fa187a0),
replacing the runtime dual-encoding lineage (old tip aa46f6b). Document
what the old lineage contained — per-commit, with re-implementation
notes — since its last six commits lose their ref with this rewrite
(the rest stays reachable via aerial-oai-integration), and map the
relation to the json-format branch.
@Ninjabippo1205 Ninjabippo1205 deleted the spectranet-demo branch July 9, 2026 14:52
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant