Skip to content

Releases: jacobwi/SharpMeter

v0.1.0

08 Apr 15:15

Choose a tag to compare

Added

  • Complete ANSI C12.18/C12.19 PSEM protocol implementation
    • L2 framing with STP (0xEE), CRC-16 verification, multi-packet support
    • L7 services: Identify, Negotiate, Logon, Security, Logoff, Terminate
    • Full table read/write (ReadFull, ReadOffset, WriteFull, WriteOffset)
    • Procedure execution via ST7/ST8
    • Baud rate negotiation support (300-38400)
  • DLMS/COSEM (IEC 62056) protocol implementation
    • HDLC framing per IEC 62056-46
    • OBIS code system with well-known electricity metering objects
    • A-XDR (Adapted External Data Representation) codec
    • GET/SET/ACTION DLMS services
    • Authentication mechanism support (None, LLS, HLS)
  • Pluggable transport layer via ITransport interface
    • SerialTransport (System.IO.Ports)
    • TcpTransport (async TCP with DNS resolution)
    • LoopbackTransport (System.IO.Pipelines, for testing)
  • Full PSEM meter emulator
    • Complete session state machine (Idle -> Identified -> Negotiated -> LoggedOn -> Authenticated)
    • In-memory table store with pre-populated standard tables
    • EmulatorTransport for seamless client integration
  • Result discriminated union for error handling without exceptions
  • IAsyncEnumerable streaming for large table reads
  • CRC-16 CCITT (reversed) calculation with lookup table
  • Comprehensive enum types for all protocol values
  • xUnit v3 test suite covering CRC, framing, encoding, transport, and emulator
  • CI/CD pipeline with GitHub Actions
  • Multi-target: net9.0 and net10.0
  • Central package management via Directory.Packages.props