Skip to content

SoundMatt/go-SOMEIP

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

32 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

go-SOMEIP

A generic Go library for SOME/IP (Scalable service-Oriented MiddlewarE over IP). Works in automotive Ethernet stacks, zonal architectures, simulation, and testing.

The API is a stable Go interface. Implementations are swappable without changing application code.

CI Go Reference

Packages

Package Description Requires
mock In-process transport. Zero dependencies. Default for development and testing. Nothing
codec SOME/IP wire-frame serialization and deserialization. Nothing
sd SOME/IP Service Discovery (SOME/IP-SD). Nothing
udp Pure-Go UDP transport — unreliable unicast and multicast. Nothing
tcp Pure-Go TCP transport — reliable unicast with session management. Nothing

Install

go get github.com/SoundMatt/go-SOMEIP

Quick start

import (
    someip "github.com/SoundMatt/go-SOMEIP"
    "github.com/SoundMatt/go-SOMEIP/mock"
)

// Server side
srv, _ := mock.NewServer(someip.ServiceID(0x1234), someip.InstanceID(0x0001))
srv.RegisterMethod(someip.MethodID(0x0001), func(ctx context.Context, req someip.Message) ([]byte, error) {
    return []byte("pong"), nil
})

// Client side
svc, _ := mock.NewService(someip.ServiceID(0x1234), someip.InstanceID(0x0001))
resp, _ := svc.Call(context.Background(), someip.MethodID(0x0001), []byte("ping"))
fmt.Println(string(resp.Payload)) // pong

Docker quickstart

docker compose -f docker/docker-compose.yml up

See docker/ for the full quickstart configuration.

Switching implementations

// Development / tests — no network needed:
import "github.com/SoundMatt/go-SOMEIP/mock"
srv, _ := mock.NewServer(serviceID, instanceID)
svc, _ := mock.NewService(serviceID, instanceID)

// Production — pure-Go UDP:
import "github.com/SoundMatt/go-SOMEIP/udp"
srv, _ := udp.NewServer(someip.ServerConfig{...})
svc, _ := udp.NewService(someip.ServiceConfig{...})

// Production — pure-Go TCP (reliable):
import "github.com/SoundMatt/go-SOMEIP/tcp"
srv, _ := tcp.NewServer(someip.ServerConfig{...})
svc, _ := tcp.NewService(someip.ServiceConfig{...})

Related projects

Project Role
go-DDS Data-centric pub/sub (DDSI-RTPS)
go-mqtt IoT pub/sub (MQTT v3.1.1)
go-FuSa Functional safety toolkit (ISO 26262, IEC 61508)
go-RCP Remote control plane for zonal Ethernet

License

Mozilla Public License v2.0 © 2026 Matt Jones

About

Pluggable Go SOME/IP library — mock, pure-Go UDP/TCP, SOME/IP-SD, automotive Ethernet

Resources

License

Contributing

Stars

0 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors

Languages