Objective Systems ASN1C + Amp

From ASN.1 pain to repeatable workflow.

We built an Amp skill and an early ASN1C Workbench app to make schema review, compiler runs, wrapper generation, test vectors, and reports easier to repeat.

SkillCLI AppHarness TemplatesPublic Docs
The problem

ASN.1 projects fail at the seams.

Schema ambiguity

Tagging, constraints, extension markers, and choices create subtle interoperability failures.

Compiler friction

Flags, generated directories, runtime context handling, and build integration are easy to drift.

Debugging gaps

Teams need reproducible evidence: logs, vectors, expected failures, and reports.

What we created

Four concrete deliverables.

1

Amp skill

working-with-objective-systems-asn1c gives Amp a repeatable checklist for ASN1C schema, encoding, generated-code, and vector work.

2

CLI + local dashboard

asn1c-workbench initializes config, runs ASN1C, captures logs, runs vector commands, writes reports, and serves a local static dashboard.

3

Wrapper templates

C/C++ starter wrappers isolate Objective Systems generated code behind stable encode/decode APIs.

4

Public presentation

This page documents the workflow, the legal boundary, and how Amp accelerates the engineering loop.

Workflow

One loop, repeatable evidence.

ASN.1 files
ASN1C Workbench
Logs + reports

Compile

Run the configured local ASN1C executable and store structured output in reports/last-compile.json.

Test

Run user-provided decoder/encoder commands against vectors and store reports/last-test.json.

CLI

Small commands instead of tribal memory.

python -m asn1c_workbench init
python -m asn1c_workbench compile asn1c-workbench.json
python -m asn1c_workbench wrapper asn1c-workbench.json --language c
python -m asn1c_workbench test asn1c-workbench.json
python -m asn1c_workbench report asn1c-workbench.json
python -m asn1c_workbench serve asn1c-workbench.json

The MVP stays honest: if no decoder command is configured, vector tests are marked skipped instead of inventing a generic decoder.

Config

Project intent lives in one file.

{
  "asn1c_path": "asn1c",
  "encoding": "uper",
  "asn_files": ["asn/protocol.asn"],
  "compiler_flags": ["-c", "-uper"],
  "primary_type": "MyMessage",
  "decode_command": "build/decoder --type {type} --hex {hex}"
}

This makes compiler flags, schema inputs, output paths, and test hooks explicit and reviewable.

Amp's role

Amp adds engineering memory and execution.

Skill memory

The ASN1C skill captures checklists for tagging, PER alignment, DER canonical rules, wrappers, and reports.

Code changes

Amp can create scripts, templates, tests, and docs while respecting repo constraints and local style.

Verification loop

Amp runs focused checks, reports what passed, and clearly marks what is blocked by missing proprietary tooling.

License boundary

We automate around ASN1C, not instead of ASN1C.

Allowed

Call the user's licensed compiler, analyze logs, generate wrapper templates, manage vectors, and produce reports.

Not included

No proprietary compiler, no Objective Systems runtime redistribution, and no claim to replace the vendor toolchain.

Next steps

Where this can go next.

Protocol-specific harnesses

Fill the generated wrappers with the exact C/C++ calls for your encoding rule and generated type names.

Richer diagnostics

Add BER/DER TLV views, PER bit maps, schema diff reports, and vendor compatibility profiles.

Richer web UI

The MVP has a static local dashboard; next add upload, decode, vector browser, and live report pages.

CI integration

Run compile and vectors on every schema change to catch drift early.

← Swipe to navigate →
1 / 9