Some/IP | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||
Message ID 用于唯一标识消息 | Service ID | Method ID (methods 0~32767 events 32768-65535) | ||||||||||||||||||||||||||||||||
Length | ||||||||||||||||||||||||||||||||||
Request ID | Client ID | Session ID (0x0000 无效) | ||||||||||||||||||||||||||||||||
Protocol version | Interface version | Message Type | Return code | |||||||||||||||||||||||||||||||
Payload的长度应该限制在1400字节以内,超了则要分段SOME/IP-TP) | variable size | |||||||||||||||||||||||||||||||||
Some/IP-SD SD报文可能包含多个Entry,每个Entry大小都是16个字节,一个Entry可能包含0-2个Option | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | ||
Message ID | Service ID | Method ID (methods 0~32767 events 32768-65535) | ||||||||||||||||||||||||||||||||
Length | ||||||||||||||||||||||||||||||||||
Request ID | Client ID | Session ID (0x0000 无效) | ||||||||||||||||||||||||||||||||
Protocol version | Interface version | Message Type | Return code | |||||||||||||||||||||||||||||||
Payload | Flags= 重新启动标志+单播标志+显示初始数据控制标志 | Reserved | ||||||||||||||||||||||||||||||||
Entries Array* | length of Entries Array | |||||||||||||||||||||||||||||||||
Service Entry | Type | index 1 st of options | index 2nd of options | # of opt 1 | # of opt 2 | |||||||||||||||||||||||||||||
Service ID:Entry关于哪个服务 | Instance ID:Entry关于服务的哪个实例,0xFFFF表示全部实例 | |||||||||||||||||||||||||||||||||
Major version:服务的主版本号 | TTL:“入口”的生命周期,单位为秒,我理解为发现服务时的搜索时间,提供服务时的有效时间 | |||||||||||||||||||||||||||||||||
Minor version:服务的次版本号 | ||||||||||||||||||||||||||||||||||
Eventgroup Entry | Type | index 1 st of options | index 2nd of options | # of opt 1 | # of opt 2 | |||||||||||||||||||||||||||||
Service ID:Entry关于哪个服务 | Instance ID:Entry关于服务的哪个实例,0xFFFF表示全部实例 | |||||||||||||||||||||||||||||||||
Major version:服务的主版本号 | TTL:“入口”的生命周期,单位为秒,我理解为发现服务时的搜索时间,提供服务时的有效时间 | |||||||||||||||||||||||||||||||||
Reserved | Initial data requested flag | Reserved2 | Counter | EventGroup ID | ||||||||||||||||||||||||||||||
optional Array | Length | Type | Reserved | |||||||||||||||||||||||||||||||
Notification消息的策略 | 循环更新:以固定间隔发送更新值(例如,每100毫秒,对于Alive的安全相关消息) 改变时更新:一旦“值”发生改变(例如门打开),立即发送更新 满足差值时更新:仅当与最后一个值的差异大于某个值时才发送更新,这个概念可能是自适应的,即预测是基于历史的,因此,只有当预测值和当前值之间的差异大于某个值时,才会传输更新 | |||
Message-type | Message-type | Return-code | ||
Message-type | 0x00 REQUEST (期待响应的请求) | 0x00 | 0x00 | |
0x01 REQUEST_NO_RETURN(不期待响应的请求) | 0x01 | 0x00 | ||
0x02 NOTIFICATION(事件通知) | 0x02 | 0x00 | ||
0x80 RESPONSE(响应消息) | 0x80 | Return-code 具体 | ||
0x81 ERROR(报错消息) | 0x81 | Return-code 具体 | ||
Request和Response方法的Return Code不会被视为错误,这意味着如果请求/响应方法以不等于0x00的返回码退出,则消息类型仍为0x80. 所有的消息都有Return Code字段,只有Response消息(Message Type 0x80)和Error消息(Message Type 0x81)使用Return Code字段承载Return Code值回复请求(Message Type 0x00),除0x80和0x81之外的所有其他消息都应将Return Code字段设置为0x00 | ||||
Return-code | 0x00 E_OK | |||
0x01 E_NOT_OK | ||||
0x02 E_UNKNOWN_SERVICE | ||||
0x03 E_UNKNOWN_METHOD | ||||
0x04 E_NOT_READY | ||||
0x05 E_NOT_REACHABLE | ||||
0x06 E_TIMEOUT | ||||
0x07 E_WRONG_PROTOCOL_VERSION | ||||
0x08 E_WRONG_INTERFACE_VERSION | ||||
0x09 E_MALFORMED_MESSAGE | ||||
0x0a E_WRONG_MESSAGE_TYPE | ||||
0x0b E_E2E_REPEATED | ||||
0x0c E_E2E_WRONG_SEQUENCE | ||||
0x0d E_E2E | ||||
0x0e E_E2E_NOT_AVAILABLE | ||||
0x0f E_E2E_NOT_NEW_DATA | ||||
0x10-0x1f RESERVED | ||||
0x20-0x5E RESERVED | ||||