▸ SOME/IP fixed 16-byte header: Service ID (2B, e.g., 0x1234=BrakeControl); Method ID (2B: 0x0001–0x7FFF=methods, 0x8001–0xFFFE=events, 0x7FFF=SD port); Length (4B: payload + 8, counts from Request ID); Client ID (2B); Session ID (2B, incremented per request, wraps at 0xFFFF); Protocol Version (1B: 0x01); Interface Version (1B); Message Type (1B: REQUEST=0x00, REQUEST_NO_RETURN=0x01, NOTIFICATION=0x02, RESPONSE=0x80, ERROR=0x81); Return Code (1B: E_OK=0x00, E_NOT_OK=0x01, E_UNKNOWN_SERVICE=0x02, E_TIMEOUT=0x06, E_MALFORMED_MESSAGE=0x09)
▸ Serialization wire format: big-endian (network byte order) per AUTOSAR standard; uint8=1B, uint16=2B BE, uint32=4B BE, float32=4B IEEE754 BE; struct members in declaration order, no padding (unlike C ABI); string: 4B length prefix + UTF-8 data + null terminator; array: 4B element-count prefix + elements; TLV (optional fields): tag (2B field ID) + length (4B) + value; AUTOSAR AP ara::com Serializer<>/Deserializer<> via vsomeip or CommonAPI-C++; AUTOSAR CP SomeIpXf_Serialize() / SomeIpXf_Deserialize() transformers
▸ vsomeip configuration (/etc/vsomeip/vsomeip.json): {"service-discovery":{"enable":"true","multicast":"239.192.255.251","port":"30490"}, "services":[{"service":"0x1234","instance":"0x0001","reliable":{"port":"30501"},"unreliable":{"port":"30500"}}]}; app init: vsomeip::runtime::get()->create_application("RadarApp"); app->init(); app->register_message_handler(service_id, instance_id, method_id, callback); app->start(); io-threads: 4 (vsomeip.json "io-threads":4); serialize: auto msg=runtime->create_request(); msg->set_service(0x1234); msg->set_method(0x0001); auto pl=runtime->create_payload(); pl->set_data({0x01,0x02}); msg->set_payload(pl); app->send(msg)
▸ Error handling and tooling: return code 0x04=E_NOT_READY (service unavailable), 0x07=E_WRONG_PROTOCOL_VERSION, 0x08=E_WRONG_INTERFACE_VERSION, 0x09=E_MALFORMED_MESSAGE, 0x0A=E_WRONG_MESSAGE_TYPE; error response: message_type=0x81 + applicable return_code; AUTOSAR DET: SomeIpXf_ReportError(SOMEIPXF_MODULE_ID); Wireshark SOME/IP: filter=someip; fields: someip.service_id, someip.method_id, someip.message_type, someip.return_code; arxml binding generators: ISOLAR-AB, EB Tresos ComXf, Vector DaVinci Configurator; SomeIpXf_Init() must be called before first transformation