Skip to content
CAI
Software that uses CAICheck a score

sebastiw/otc

57.7

Adequate · 2 October 2026

24.5k

lines of production code

Erlang

primary language

2

measurements over time

CAI band scale
CAI trend line
CAI lens gauges

What this system is

This system is an Erlang library that encodes and decodes binary packets for various 3GPP and IETF telecom protocols. It provides codec implementations for signaling standards such as SS7 (MTP3, SCCP, M3UA, M2PA), Diameter, GTP, NAS, and SMPP. The library supports multi-protocol stack decapsulation and includes comprehensive test coverage for protocol structures and security operations.

Features

Added 3GPP Diameter protocol dictionaries

New Diameter dictionary files have been added to the dia directory, providing definitions for 3GPP-specific protocols and interfaces. These include the core 3GPP application identifiers and AVPs (dia\_3gpp.dia), 3GPP2 definitions (dia\_3gpp2.dia), and specific interface dictionaries for Gi/Sgi, Gmb, Mz, SGmb, Zh, Zn, Zpn, T6a/T6b, MM10, Ns, Nt, and Nta. These additions expand the library's support for parsing and generating Diameter messages used in 3GPP mobile network architectures.

dia · high confidence

Added 3GPP TS Diameter dictionaries for network standards

The library now includes new Diameter attribute-value pair (AVP) dictionaries for several 3GPP technical specifications, enabling support for protocols defined in TS 29.061 (MBMS), TS 29.109 (GBA), TS 29.128 (SCEF monitoring), TS 29.140 (VAS), TS 29.153/154 (Network Steering), TS 29.172/173 (Location Services), TS 29.212 (PCC), and TS 29.214 (Rx). These additions allow the Diameter engine to correctly parse and generate messages for these specific network interfaces.

priv · high confidence

Added ASN.1 protocol definitions for MAP, TCAP, and ROS

This change adds a comprehensive set of ASN.1 schema files to the \asn1\ directory, establishing the data structures for Mobile Application Part (MAP), Transaction Capabilities Application Part (TCAP), and Remote Operations Service Element (ROSE). The new files include \TCAPMessages.asn1\ and \TCAP-OTC.asn1\ for transaction handling, \DialoguePDUs.asn1\ and \UnidialoguePDUs.asn1\ for dialogue control, and \Remote-Operations-Generic-ROS-PDUs.asn1\ along with related information object definitions for ROS operations. Additionally, it introduces MAP-specific schemas such as \MAP-ApplicationContexts.asn1\ (covering versions 1, 2, and 3 from TS 29.002 and gsm09.02), \MAP-CH-DataTypes.asn1\ for call handling arguments and results, \MAP-CallHandlingOperations.asn1\ defining operations like \sendRoutingInfo\, and \MAP-BS-Code.asn1\ for bearer service codes. These definitions provide the foundational type system required for encoding and decoding these signaling protocols.

asn1 · high confidence

Added protocol constant headers for SS7, GTP, NAS, and SMS interfaces

The \include\ directory now provides Erlang header files defining message types, information element identifiers, and constants for multiple telecom protocols. This includes MTP3, M3UA, SCCP, M2PA, and point code structures for SS7 signaling; GTPv1-C and GTPv2-C message and IE definitions for GPRS/4G/5G core interfaces; NAS EPS and 5GS message types and security header constants; SGSAP and SMPP v5.0 command and status codes; and L3 protocol discriminators. These headers serve as the foundational type and constant definitions for the corresponding codec implementations.

include · high confidence

Added protocol specification documentation for SS7, GTP, Diameter, and ASN.1 codecs

New documentation files have been added to the \doc/\ directory to describe the structure and message formats of several supported protocols. This includes detailed breakdowns of GTP (v1 and v2) headers and information elements, M3UA and MTP3 signaling parameters and messages, Diameter dictionary organization, and ASN.1 specifications for standards such as ITU-T X.880, Q.773, and 3GPP TS 29.002. These files serve as reference material for the underlying codec implementations.

doc · high confidence

Initial release of OTC 3GPP protocol codec library

The OTC application is introduced as an Erlang library for encoding and decoding 3GPP telecommunication specifications. This release provides codecs for a wide range of protocols including GTPv1-C, GTPv2-C, M2PA, M3UA, MTP3, SCCP, TCAP, MAP, NAS (EPS and 5GS), SGsap, and SMPP. The library exposes a unified API for decoding binary packets into maps and encoding maps back into binaries, supporting both single-protocol and multi-protocol stack decapsulation.

src · high confidence

Initial release of OTC telecom protocol codec library

Introduces the Open Telecom Codec (OTC), an Erlang library for encoding and decoding 3GPP and IETF telecom protocols. The library provides \decode\ and \encode\ functions supporting protocols such as SCTP, M3UA, M2PA, MTP3, SCCP, L3, NAS EPS/5GS, SGSAP, GTPv1-C, GTPv2-C, and SMPP. It allows users to stop decoding at specific protocol layers via options and handles Diameter interfaces. The release includes the core library structure, build configuration via Rebar3, and documentation.

(repo-wide) · high confidence

New protocol decoding and encoding scripts for Diameter, GTP, NAS, SCCP, SGsAP, and SMPP

Added a suite of new AWK scripts in the scripts directory that generate Erlang code for decoding and encoding specific telecom protocols. These include diameter\_format\_codec.awk for parsing Diameter dictionaries, gtp\_decode\_msgs.awk and gtp\_encode\_msgs.awk for GTPv1-C message handling, gtp\_decode\_ieis.awk for GTPv1-C Information Element decoding, gtpv2\_decode\_msgs.awk for GTPv2 message decoding, nas\_decode\_msgs.awk and nas\_encode\_msgs.awk for NAS (EPS and 5GS) message handling, sccp\_decode\_msg.awk and sccp\_encode\_msg.awk for SCCP message processing, sgsap.awk for SGsAP protocol support, and smpp\_decode\_msgs.awk for SMPP PDU decoding. These scripts parse structured documentation or dictionary files to produce the corresponding Erlang codec implementations.

scripts · high confidence

Test coverage

Added codec and security tests for GTP, M2PA, M3UA, MAP, MTP3, and NAS EPS protocols

Added comprehensive EUnit test suites for the encoding and decoding of several telecom protocols. The new tests cover GTPv1-C and GTPv2-C message structures (such as create/update PDP context and session management), M2PA link status and user data messages, M3UA signaling network management and transfer messages, MAP sendRoutingInfoForSM operations, MTP3 management messages (including changeover and transfer prohibited signals), and NAS EPS mobility and session management messages (including attach, authentication, and security mode procedures). Additionally, tests were added for NAS security ciphering operations according to 3GPP TS 33.401 and TS 33.501 specifications.

test · high confidence

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

How this codebase got here

Score

  • CAI 58 → 58 (+0.0)
  • Rubric changed (rubric-2026.09.12 → rubric-2026.09.18) — scores are not directly comparable.

Lenses

  • Code Health 82 → 82 (+0.0)
  • Architecture 100 → 100 (+0.0)
  • Maturity 48 → 48 (+0.0)
  • Readiness 46 → 46 (+0.0)
  • Security 100 → 100 (+0.0)
  • Event Sourcing 83 → 83 (+0.0)

Resolved (1)

  • Coverage not measured — no coverage collector is wired up

New (4)

  • Documentation: no contributor guidance (README.org)
  • Documentation: no licence statement (README.org)
  • Documentation: no project overview (README.org)
  • Documentation: no usage examples (README.org)

Written by watchdog.canine.dev from the codebase's own history, inside the signed delivery this page is composed from.

Survey your own repository

sebastiw/otc was measured the same way every project in this corpus was: the same rubric, at a pinned commit, with the result published in full. Point a surveyor at a repository you know and see whether you agree with it.

About this page

  • The score is its most recent published measurement, taken on 2 October 2026 at a pinned commit. It is not a live figure and does not change until the project is measured again.
  • Measured at commit 2455283c5a95ee63a40bf272bf1caae308c2ae2e — the exact code this score is about.
  • Scored under rubric-2026.09.18 — the same rubric and the same method as every other entry in this index.
  • Measured by watchdog.canine.dev using codehealth-analyzer preprod-e569280dd5e2.