0...2...........7...............15.............23...............31 +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ | INFO_TS | flags | octetsToNextHeader | +---------------+---------------+---------------+---------------+ |
| 282 | |
| 283 | |
| 284 | class RTPSSubMessage_INFO_TS(EPacket): |
| 285 | """ |
| 286 | 0...2...........7...............15.............23...............31 |
| 287 | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ |
| 288 | | INFO_TS | flags | octetsToNextHeader | |
| 289 | +---------------+---------------+---------------+---------------+ |
| 290 | | | |
| 291 | + Timestamp timestamp [only if T==1] + |
| 292 | | | |
| 293 | +---------------+---------------+---------------+---------------+ |
| 294 | """ |
| 295 | |
| 296 | name = "RTPS INFO_TS (0x09)" |
| 297 | fields_desc = [ |
| 298 | XByteField("submessageId", 0x09), |
| 299 | FlagsField( |
| 300 | "submessageFlags", 0, 8, |
| 301 | ["E", "I", "?", "?", "?", "?", "?", "?"]), |
| 302 | EField(ShortField("octetsToNextHeader", 0), |
| 303 | endianness_from=e_flags), |
| 304 | ConditionalField( |
| 305 | Field("ts_seconds", default=0, fmt="<l"), |
| 306 | lambda pkt: str(pkt.submessageFlags).find("I"), |
| 307 | ), |
| 308 | ConditionalField( |
| 309 | Field("ts_fraction", default=0, fmt="<L"), |
| 310 | lambda pkt: str(pkt.submessageFlags).find("I"), |
| 311 | ), |
| 312 | ] |
| 313 | |
| 314 | |
| 315 | class RTPSSubMessage_ACKNACK(EPacket): |
nothing calls this directly
no test coverage detected
searching dependent graphs…