diff --git a/.gitignore b/.gitignore index bfe2a43..b555c43 100644 --- a/.gitignore +++ b/.gitignore @@ -1,7 +1,6 @@ #Ignore List /syn/** /sim/** -/download/** *.NPPSESS #Unignore Directories (Needed to unignore files in Subdirectories) @@ -23,4 +22,8 @@ #Settings File !*.qsf #QSYS File -!*.qsys \ No newline at end of file +!*.qsys + +#Delete download from existence +/download +/download/** \ No newline at end of file diff --git a/src/REF.txt b/src/REF.txt index c96a341..2288822 100644 --- a/src/REF.txt +++ b/src/REF.txt @@ -70,106 +70,111 @@ The elements of an array are in order (but the elements themselves may need to b RTPS IN/OUT FORMAT ================== -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------------------+ -| SRC_IPv4_ADDR | -+-------------------------------------------------------------+ -| DEST_IPv4_ADDR | -+-----------------------------+-------------------------------+ -| SRC_UDP_PORT | DEST_UDP_PORT | -+-----------------------------+-------------------------------+ -| PACKET_LENGTH | -+-------------------------------------------------------------+ -| | -~ PACKET ~ -| | -+-------------------------------------------------------------+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------------------+ +| SRC_IPv4_ADDR | ++---------------------------------------------------------------+ +| DEST_IPv4_ADDR | ++-------------------------------+-------------------------------+ +| SRC_UDP_PORT | DEST_UDP_PORT | ++-------------------------------+-------------------------------+ +| PACKET_LENGTH | ++---------------------------------------------------------------+ +| | +~ PACKET ~ +| | ++---------------------------------------------------------------+ ENDPOINT PACKET FORMAT ====================== -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------+---------------+-------------------------------+ -| OPCODE | FLAGS | SRC_UDP_PORT | -+-------------+---------------+-------------------------------+ -| SRC_IPv4_ADDR | -+-------------------------------------------------------------+ -| | -+ + -| SRC_GUIDPREFIX | -+ + -| | -+-------------------------------------------------------------+ -| SRC_ENTITYID | -+-------------------------------------------------------------+ -| DEST_ENTITYID [only for Builtin Destinations] | -+-------------------------------------------------------------+ -| | -+ Sequence Number [only for DATA Submessage] + -| | -+-------------------------------------------------------------+ -| | -+ Timestamp + -| [only for DATA Submessage and User Destinations] | -+-------------------------------------------------------------+ -| | -~ PAYLOAD (SUBMESSAGE CONTENT) ~ -| | -+-------------------------------------------------------------+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------+---------------+-------------------------------+ +| OPCODE | FLAGS | SRC_UDP_PORT | ++---------------+---------------+-------------------------------+ +| SRC_IPv4_ADDR | ++---------------------------------------------------------------+ +| | ++ + +| SRC_GUIDPREFIX | ++ + +| | ++---------------------------------------------------------------+ +| SRC_ENTITYID | ++---------------------------------------------------------------+ +| DEST_ENTITYID [only for Builtin Destinations] | ++---------------------------------------------------------------+ +| | ++ Sequence Number [only for DATA Submessage] + +| | ++---------------------------------------------------------------+ +| | ++ Timestamp + +| [only for DATA Submessage and User Destinations] | ++---------------------------------------------------------------+ +| | +~ PAYLOAD (SUBMESSAGE CONTENT) ~ +| | ++---------------------------------------------------------------+ HEARTBEAT PAYLOAD ----------------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------------------+ -| | -+ FirstSN + -| | -+-------------------------------------------------------------+ -| | -+ LastSN + -| | -+-------------------------------------------------------------+ -| Count | -+-------------------------------------------------------------+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------------------+ +| | ++ FirstSN + +| | ++---------------------------------------------------------------+ +| | ++ LastSN + +| | ++---------------------------------------------------------------+ +| Count | ++---------------------------------------------------------------+ ACKNACK PAYLOAD --------------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------------------+ -| | -+ ReaderSNState.BASE + -| | -+-------------------------------------------------------------+ -| ReaderSNState.NumBits | -+-------------------------------------------------------------+ -| [ReaderSNState.Bitmap] x 0-8 | -+-------------------------------------------------------------+ -| Count | -+-------------------------------------------------------------+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------------------+ +| | ++ ReaderSNState.BASE + +| | ++---------------------------------------------------------------+ +| ReaderSNState.NumBits | ++---------------------------------------------------------------+ +| [ReaderSNState.Bitmap] x 0-8 | ++---------------------------------------------------------------+ +| Count | ++---------------------------------------------------------------+ GAP PAYLOAD ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------------------+ -| | -+ GapStart + -| | -+-------------------------------------------------------------+ -| | -+ GapList.BASE + -| | -+-------------------------------------------------------------+ -| GapList.NumBits | -+-------------------------------------------------------------+ -| [GapList.Bitmap] x 0-8 | -+-------------------------------------------------------------+ -| UNUSED | -+-------------------------------------------------------------+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------------------+ +| | ++ GapStart + +| | ++---------------------------------------------------------------+ +| | ++ GapList.BASE + +| | ++---------------------------------------------------------------+ +| GapList.NumBits | ++---------------------------------------------------------------+ +| [GapList.Bitmap] x 0-8 | ++---------------------------------------------------------------+ +| UNUSED | ++---------------------------------------------------------------+ ENDPOINT_ID =========== @@ -186,57 +191,58 @@ HISTORY: kind = KEEP_LAST, depth = 1 PARTICICPANT DATA ================= - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| NEXT_ADDRESS | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ -04| META_IPv4_ADDRESS | - +-------------------------------------------------------------+ -05| DEFAULT_IPv4_ADDRESS | - +-----------------------------+-------------------------------+ -06| META_UDP_PORT | DEFAULT_UDP_PORT | - +-----------------------------+-------------------------------+ -07| | - + SPDP_SEQ_NR + -08| | - +-------------------------------------------------------------+ -09| | - + LEASE_DURATION + -10| | - +-------------------------------------------------------------+ -11| | - + LEASE_DEADLINE + -12| | - +-------------------------------------------------------+-+-+-+ -13| UNUSED |P|S|M| - +-------------------------------------------------------+-+-+-+ -14| | - + ACKNACK_RES_TIME + -15| | - +-------------------------------------------------------------+ -16| | - + HEARTBEAT_RES_TIME + -17| | - +-------------------------------------------------------------+ -18| | - + PUBLICATION_SEQ_NR + -19| | - +-------------------------------------------------------------+ -20| | - + SUBSCRIPTION_SEQ_NR + -21| | - +-------------------------------------------------------------+ -22| | - + MESSAGE_SEQ_NR + -23| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| NEXT_ADDRESS | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ +04| META_IPv4_ADDRESS | + +---------------------------------------------------------------+ +05| DEFAULT_IPv4_ADDRESS | + +-------------------------------+-------------------------------+ +06| META_UDP_PORT | DEFAULT_UDP_PORT | + +-------------------------------+-------------------------------+ +07| | + + SPDP_SEQ_NR + +08| | + +---------------------------------------------------------------+ +09| | + + LEASE_DURATION + +10| | + +---------------------------------------------------------------+ +11| | + + LEASE_DEADLINE + +12| | + +---------------------------------------------------------+-+-+-+ +13| UNUSED |P|S|M| + +---------------------------------------------------------+-+-+-+ +14| | + + ACKNACK_RES_TIME + +15| | + +---------------------------------------------------------------+ +16| | + + HEARTBEAT_RES_TIME + +17| | + +---------------------------------------------------------------+ +18| | + + PUBLICATION_SEQ_NR + +19| | + +---------------------------------------------------------------+ +20| | + + SUBSCRIPTION_SEQ_NR + +21| | + +---------------------------------------------------------------+ +22| | + + MESSAGE_SEQ_NR + +23| | + +---------------------------------------------------------------+ M...Send Message Data (Liveliness Update) S...Send Subriber Data @@ -245,27 +251,29 @@ P...Send Publisher Data ENDPOINT MATCH FRAME ==================== - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| OPCODE | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ -04| ENTITYID | - +-------------------------------------------------------------+ -05| IPv4_ADDRESS | - +-----------------------------+-------------------------------+ -06| UDP_PORT | READER_FLAGS | - +-----------------------------+-------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| OPCODE | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ +04| ENTITYID | + +---------------------------------------------------------------+ +05| IPv4_ADDRESS | + +-------------------------------+-------------------------------+ +06| UDP_PORT | READER_FLAGS | + +-------------------------------+-------------------------------+ READER_FLAGS ------------ -16..............8...............0 + 15............8...............0 +| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-------------------------+-+-+-+ | UNUSED |B|H|Q| @@ -276,120 +284,126 @@ B...Reader has RELIABILITY BEST_EFFORT ENDPOINT UNMATCH FRAME ====================== - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| OPCODE | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ -04| ENTITYID | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| OPCODE | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ +04| ENTITYID | + +---------------------------------------------------------------+ PARTICIPANT UNMATCH FRAME ========================= - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| OPCODE | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| OPCODE | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ ENDPOINT LIVELINESS UPDATE ========================== - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| OPCODE | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| OPCODE | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ LOCAL ENDPOINT BUFFER ===================== READER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| ENTITYID | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ -04| IPv4_ADDRESS | [Reliable Only] - +-----------------------------+-------------------------------+ -05| UDP_PORT | UNUSED | [Reliable Only] - +-----------------------------+-------------------------------+ -06| | - + NEXT_SEQ_NR + -07| | - +-------------------------------------------------------------+ -08| | - + LEASE_DEADLINE + -09| | - +-------------------------------------------------------------+ -10| | - + RES_TIME + [Reliable Only] -11| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| ENTITYID | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ +04| IPv4_ADDRESS | [Reliable Only] + +-------------------------------+-------------------------------+ +05| UDP_PORT | UNUSED | [Reliable Only] + +-------------------------------+-------------------------------+ +06| | + + NEXT_SEQ_NR + +07| | + +---------------------------------------------------------------+ +08| | + + LEASE_DEADLINE + +09| | + +---------------------------------------------------------------+ +10| | + + RES_TIME + [Reliable Only] +11| | + +---------------------------------------------------------------+ WRITER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| ENTITYID | - +-------------------------------------------------------------+ -01| | - + + -02| GUIDPREFIX | - + + -03| | - +-------------------------------------------------------------+ -04| IPv4_ADDRESS | - +-----------------------------+-------------------------------+ -05| UDP_PORT | READER_FLAGS | - +-----------------------------+-------------------------------+ -06| | - + LEASE_DEADLINE + [Reliable Only] -07| | - +-------------------------------------------------------------+ -08| | - + RES_TIME + [Reliable Only] -09| | - +-------------------------------------------------------------+ -10| | - + ACK_SEQ_NR_BASE + [Reliable Only] -11| | - +-------------------------------------------------------------+ -12| | - + REQ_SEQ_NR_BASE + [Reliable Only] -13| | - +-------------------------------------------------------------+ -14| REQ_BITMAP | [Reliable Only] - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| ENTITYID | + +---------------------------------------------------------------+ +01| | + + + +02| GUIDPREFIX | + + + +03| | + +---------------------------------------------------------------+ +04| IPv4_ADDRESS | + +-------------------------------+-------------------------------+ +05| UDP_PORT | READER_FLAGS | + +-------------------------------+-------------------------------+ +06| | + + LEASE_DEADLINE + [Reliable Only] +07| | + +---------------------------------------------------------------+ +08| | + + RES_TIME + [Reliable Only] +09| | + +---------------------------------------------------------------+ +10| | + + ACK_SEQ_NR_BASE + [Reliable Only] +11| | + +---------------------------------------------------------------+ +12| | + + REQ_SEQ_NR_BASE + [Reliable Only] +13| | + +---------------------------------------------------------------+ +14| REQ_BITMAP | [Reliable Only] + +---------------------------------------------------------------+ READER_FLAGS ------------ -16..............8...............0 + 15............8...............0 +| | | +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ +-------------------------+-+-+-+ | UNUSED |B|H|Q| @@ -403,39 +417,41 @@ HISTORY CACHE READER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| STATUS_INFO | - +-------------------------------------------------------------+ -01| | - + TIMESTAMP + -02| | - +-------------------------------------------------------------+ -03| | - + LIFESPAN_DEADLINE + -04| | - +-------------------------------------------------------------+ -05| PAYLOAD_ADDRESS | - +-------------------------------------------------------------+ -06| INSTANCE_ADDRESS | [only if WITH_KEY] - +-------------------------------------------------------------+ -07| DISPOSED_GENERATION_COUNT | - +-------------------------------------------------------------+ -08| NO_WRITERS_GENERATION_COUNT | - +-------------------------------------------------------------+ -09| PREV_ADDRESS | - +-------------------------------------------------------------+ -10| NEXT_ADDRESS | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| STATUS_INFO | + +---------------------------------------------------------------+ +01| | + + TIMESTAMP + +02| | + +---------------------------------------------------------------+ +03| | + + LIFESPAN_DEADLINE + +04| | + +---------------------------------------------------------------+ +05| PAYLOAD_ADDRESS | + +---------------------------------------------------------------+ +06| INSTANCE_ADDRESS | [only if WITH_KEY] + +---------------------------------------------------------------+ +07| DISPOSED_GENERATION_COUNT | + +---------------------------------------------------------------+ +08| NO_WRITERS_GENERATION_COUNT | + +---------------------------------------------------------------+ +09| PREV_ADDRESS | + +---------------------------------------------------------------+ +10| NEXT_ADDRESS | + +---------------------------------------------------------------+ STATUS INFO ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-------------------------------------------------+-+-+-+ -|R|P|A| UNUSED |F|U|D| -+-+-+-+-------------------------------------------------+-+-+-+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++-+-+-+---------------------------------------------------+-+-+-+ +|R|P|A| UNUSED |F|U|D| ++-+-+-+---------------------------------------------------+-+-+-+ R...Sample has been Read P...Sample has associated DATA Payload @@ -449,39 +465,41 @@ NOTE: The Key Hash Flag is actually only needed during the ADD_CACHE_CHANGE proc WRITER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| STATUS_INFO | - +-------------------------------------------------------------+ -01| | - + SEQ_NR + -02| | - +-------------------------------------------------------------+ -03| | - + TIMESTAMP + -04| | - +-------------------------------------------------------------+ -05| | - + LIFESPAN_DEADLINE + [only if LIFESPAN /= INFINITE] -06| | - +-------------------------------------------------------------+ -07| PAYLOAD_ADDRESS | - +-------------------------------------------------------------+ -08| INSTANCE_ADDRESS | [only if WITH_KEY] - +-------------------------------------------------------------+ -09| PREV_ADDRESS | - +-------------------------------------------------------------+ -10| NEXT_ADDRESS | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| STATUS_INFO | + +---------------------------------------------------------------+ +01| | + + SEQ_NR + +02| | + +---------------------------------------------------------------+ +03| | + + TIMESTAMP + +04| | + +---------------------------------------------------------------+ +05| | + + LIFESPAN_DEADLINE + [only if LIFESPAN /= INFINITE] +06| | + +---------------------------------------------------------------+ +07| PAYLOAD_ADDRESS | + +---------------------------------------------------------------+ +08| INSTANCE_ADDRESS | [only if WITH_KEY] + +---------------------------------------------------------------+ +09| PREV_ADDRESS | + +---------------------------------------------------------------+ +10| NEXT_ADDRESS | + +---------------------------------------------------------------+ STATUS INFO ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-------------------------------------------------+-+-+-+ -|R|P|A| UNUSED |F|U|D| -+-+-+-+-------------------------------------------------+-+-+-+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++-+-+-+---------------------------------------------------+-+-+-+ +|R|P|A| UNUSED |F|U|D| ++-+-+-+---------------------------------------------------+-+-+-+ R...Sample has been ACKed P...Sample has associated DATA Payload @@ -493,55 +511,58 @@ D...DisposedFlag (1:1 PID_STATUS_INFO Mapping) PAYLOAD MEMORY ============== - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| NEXT_ADDRESS | - +-------------------------------------------------------------+ -01| | - ~ PAYLOAD ~ -**| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| NEXT_ADDRESS | + +---------------------------------------------------------------+ +01| | + ~ PAYLOAD ~ +**| | + +---------------------------------------------------------------+ DDS ENTITY INPUT ================ READER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| STATUS_INFO | - +-------------------------------------------------------------+ -01| | - + TIMESTAMP + -02| | - +-------------------------------------------------------------+ -03| | - + LIFESPAN_DEADLINE + -04| | - +-------------------------------------------------------------+ -05| | - + + -06| | - + KEY_HASH + [only if K Flag set] -07| | - + + -08| | - +-------------------------------------------------------------+ -09| WRITER_ID | - +-------------------------------------------------------------+ -10| | - ~ PAYLOAD ~ -**| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| STATUS_INFO | + +---------------------------------------------------------------+ +01| | + + TIMESTAMP + +02| | + +---------------------------------------------------------------+ +03| | + + LIFESPAN_DEADLINE + +04| | + +---------------------------------------------------------------+ +05| | + + + +06| | + + KEY_HASH + [only if K Flag set] +07| | + + + +08| | + +---------------------------------------------------------------+ +09| WRITER_ID | + +---------------------------------------------------------------+ +10| | + ~ PAYLOAD ~ +**| | + +---------------------------------------------------------------+ STATUS INFO ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-+-+-+-+-----------------------------------------------+-+-+-+ -| |P| |K| UNUSED |F|U|D| -+-+-+-+-+-----------------------------------------------+-+-+-+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++-+-+-+-+-------------------------------------------------+-+-+-+ +| |P| |K| UNUSED |F|U|D| ++-+-+-+-+-------------------------------------------------+-+-+-+ P...Sample has associated DATA Payload K...Key Hash available @@ -555,43 +576,45 @@ INSTANCE MEMORY READER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| NEXT_ADDRESS | - +-------------------------------------------------------------+ -01| | - + + -02| | - + KEY_HASH + -03| | - + + -04| | - +-------------------------------------------------------------+ -05| STATUS_INFO | - +-------------------------------------------------------------+ -06| SAMPLE_COUNT | - +-------------------------------------------------------------+ -07| DISPOSED_GENERATION_COUNT | - +-------------------------------------------------------------+ -08| NO_WRITERS_GENERATION_COUNT | - +-------------------------------------------------------------+ -09| | - + IGNORE_DEADLINE + [only TIME_BASED_FILTER] -10| | - +-------------------------------------------------------------+ -11| | - ~ WRITER_BITMAP ~ -**| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| NEXT_ADDRESS | + +---------------------------------------------------------------+ +01| | + + + +02| | + + KEY_HASH + +03| | + + + +04| | + +---------------------------------------------------------------+ +05| STATUS_INFO | + +---------------------------------------------------------------+ +06| SAMPLE_COUNT | + +---------------------------------------------------------------+ +07| DISPOSED_GENERATION_COUNT | + +---------------------------------------------------------------+ +08| NO_WRITERS_GENERATION_COUNT | + +---------------------------------------------------------------+ +09| | + + IGNORE_DEADLINE + [only TIME_BASED_FILTER] +10| | + +---------------------------------------------------------------+ +11| | + ~ WRITER_BITMAP ~ +**| | + +---------------------------------------------------------------+ STATUS INFO ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------+-+-+-+-+-+-+ -| UNUSED |G|M|V|L|W|D| -+-------------------------------------------------+-+-+-+-+-+-+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------+-+-+-+-+-+-+ +| UNUSED |G|M|V|L|W|D| ++---------------------------------------------------+-+-+-+-+-+-+ D...NOT_ALIVE_DISPOSED W...NOT_ALIVE_NO_WRITERS @@ -602,34 +625,36 @@ G...GENERATE SAMPLE WRITER ------ - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ - +-------------------------------------------------------------+ -00| NEXT_ADDRESS | - +-------------------------------------------------------------+ -01| | - + + -02| | - + KEY_HASH + -03| | - + + -04| | - +-------------------------------------------------------------+ -05| STATUS_INFO | - +-------------------------------------------------------------+ -06| SAMPLE_COUNT | - +-------------------------------------------------------------+ -07| ACK_COUNT | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| NEXT_ADDRESS | + +---------------------------------------------------------------+ +01| | + + + +02| | + + KEY_HASH + +03| | + + + +04| | + +---------------------------------------------------------------+ +05| STATUS_INFO | + +---------------------------------------------------------------+ +06| SAMPLE_COUNT | + +---------------------------------------------------------------+ +07| ACK_COUNT | + +---------------------------------------------------------------+ STATUS INFO ----------- -31............24..............16..............8...............0 -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -+-------------------------------------------------------+-+-+-+ -| UNUSED |L|U|D| -+-------------------------------------------------------+-+-+-+ + 31............24..............16..............8...............0 +| | | | | ++-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ ++---------------------------------------------------------+-+-+-+ +| UNUSED |L|U|D| ++---------------------------------------------------------+-+-+-+ D...DISPOSED W...UNREGISTERED @@ -637,18 +662,20 @@ L...LIVELINESS FLAG OUTPUT DATA =========== - 31............24..............16..............8...............0 - +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ -00| SRC_IPv4_ADDRESS | - +-------------------------------------------------------------+ -01| DEST_IPv4_ADDRESS | - +-----------------------------+-------------------------------+ -02| SRC_UDP_PORT | DEST_UDP_PORT | - +-----------------------------+-------------------------------+ -03| | - ~ RTPS_MESSAGE ~ -**| | - +-------------------------------------------------------------+ + 31............24..............16..............8...............0 + | | | | | + +-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ + +---------------------------------------------------------------+ +00| SRC_IPv4_ADDRESS | + +---------------------------------------------------------------+ +01| DEST_IPv4_ADDRESS | + +-------------------------------+-------------------------------+ +02| SRC_UDP_PORT | DEST_UDP_PORT | + +-------------------------------+-------------------------------+ +03| | + ~ RTPS_MESSAGE ~ +**| | + +---------------------------------------------------------------+ TOPIC KEYS @@ -694,6 +721,17 @@ implementations must include an InfoTimestamp Submessage with every update from The ParameterList may contain multiple Parameters with the same value for the parameterId. This is used to provide a collection of values for that kind of Parameter. +9.4.2.11 (DDSI-RTPS) +For alignment purposes, the CDR stream is logically reset for each parameter value (i.e., no initial padding is +required) after the parameterId and length are serialized. + +7.4.3.5.2 Encoding of Optional Members (DDS-XTYPES) +PLAIN_CDR serializes optional members by prepending either a ShortMemberHeader or a 12 +byte LongMemberHeader. See Clause 7.4.1.1.5.2. The associated size is set to zero if the +optional member is not present or to the actual serialized size if the member is present. These +headers are serialized at a 4-byte offset relative to the current stream origin (XCDR.origin) and +adjust the alignment origin to zero for the serialization of the member itself. + DDS_Advanced_Tutorial_2006_00-T1-2_Pardo.pdf P.16 diff --git a/src/rtps_builtin_endpoint.vhd b/src/rtps_builtin_endpoint.vhd index 6a498c4..f2a2380 100644 --- a/src/rtps_builtin_endpoint.vhd +++ b/src/rtps_builtin_endpoint.vhd @@ -395,12 +395,12 @@ architecture arch of rtps_builtin_endpoint is alias header_flags : std_logic_vector(7 downto 0) is data_in(23 downto 16); alias header_udp_port : std_logic_vector(15 downto 0) is data_in(15 downto 0); -- RTPS PARAMETER LIST HEADER - alias parameter_id : std_logic_vector(15 downto 0) is data_in(31 downto 16); - alias parameter_length : std_logic_vector(15 downto 0) is data_in(15 downto 0); - alias must_understand : std_logic is parameter_id(14); + alias parameter_id : std_logic_vector(PARAMETER_ID_WIDTH-1 downto 0) is data_in(WORD_WIDTH-1 downto WORD_WIDTH-PARAMETER_ID_WIDTH); + alias parameter_length : std_logic_vector(PARAMETER_LENGTH_WIDTH-1 downto 0) is data_in(PARAMETER_LENGTH_WIDTH-1 downto 0); + alias must_understand : std_logic is parameter_id(PARAMETER_ID_WIDTH-1); -- RTPS DATA PAYLOAD HEADER - alias representation_id : std_logic_vector(15 downto 0) is data_in(31 downto 16); - alias representation_options : std_logic_vector(15 downto 0) is data_in(15 downto 0); + alias representation_id : std_logic_vector(PAYLOAD_REPRESENTATION_ID_WIDTH-1 downto 0) is data_in(WORD_WIDTH-1 downto WORD_WIDTH-PAYLOAD_REPRESENTATION_ID_WIDTH); + alias representation_options : std_logic_vector(PAYLOAD_REPRESENTATION_ID_WIDTH-1 downto 0) is data_in(PAYLOAD_REPRESENTATION_OPTIONS_WIDTH-1 downto 0); -- RTPS SUBMESSAGE FLAGS alias endian_flag : std_logic is flags(0); alias endian_flag_next : std_logic is flags_next(0); diff --git a/src/rtps_package.vhd b/src/rtps_package.vhd index bf0e856..4e5e308 100644 --- a/src/rtps_package.vhd +++ b/src/rtps_package.vhd @@ -14,10 +14,12 @@ package rtps_package is constant UDP_PORT_WIDTH : natural := 16; constant IPv4_ADDRESS_WIDTH : natural := 32; constant UDP_HEADER_LENGTH_WIDTH : natural := 16; - -- CDR ENCODING WIDTHS + -- IDL CDR ENCODING WIDTHS + constant CDR_INT8_WIDTH : natural := 8; constant CDR_CHAR_WIDTH : natural := 8; constant CDR_OCTET_WIDTH : natural := 8; constant CDR_BOOLEAN_WIDTH : natural := 8; + constant CDR_WCHAR_WIDTH : natural := 16; constant CDR_SHORT_WIDTH : natural := 16; constant CDR_ENUMERATION_SHORT_WIDTH : natural := 16; constant CDR_LONG_WIDTH : natural := 32; @@ -25,7 +27,7 @@ package rtps_package is constant CDR_ENUMERATION_WIDTH : natural := 32; constant CDR_LONG_LONG_WIDTH : natural := 64; constant CDR_DOUBLE_WIDTH : natural := 64; - constant CDR_LONG_DOUBLE_WIDTH : natural := 64; + constant CDR_LONG_DOUBLE_WIDTH : natural := 128; -- RTPS -- NOTE: Widths not defined with a CDR Width are defined as byte arrays (Same Endian representation) constant GUIDPREFIX_WIDTH : natural := 96; @@ -159,16 +161,16 @@ package rtps_package is constant ANY_SAMPLE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"FFFFFFFF"; -- *VIEW STATE KIND* (DDS) - constant NEW_VIEW_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000001"; - constant NOT_NEW_VIEW_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000002"; - constant ANY_VIEW_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"FFFFFFFF"; + constant NEW_VIEW_STATE : std_logic_vector(VIEW_STATE_KIND_WIDTH-1 downto 0) := x"00000001"; + constant NOT_NEW_VIEW_STATE : std_logic_vector(VIEW_STATE_KIND_WIDTH-1 downto 0) := x"00000002"; + constant ANY_VIEW_STATE : std_logic_vector(VIEW_STATE_KIND_WIDTH-1 downto 0) := x"FFFFFFFF"; -- *INSTANCE STATE KIND* (DDS) - constant ALIVE_INSTANCE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000001"; - constant NOT_ALIVE_DISPOSED_INSTANCE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000002"; - constant NOT_ALIVE_NO_WRITERS_INSTANCE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000004"; - constant NOT_ALIVE_INSTANCE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"00000006"; - constant ANY_INSTANCE_STATE : std_logic_vector(SAMPLE_STATE_KIND_WIDTH-1 downto 0) := x"FFFFFFFF"; + constant ALIVE_INSTANCE_STATE : std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0) := x"00000001"; + constant NOT_ALIVE_DISPOSED_INSTANCE_STATE : std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0) := x"00000002"; + constant NOT_ALIVE_NO_WRITERS_INSTANCE_STATE : std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0) := x"00000004"; + constant NOT_ALIVE_INSTANCE_STATE : std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0) := x"00000006"; + constant ANY_INSTANCE_STATE : std_logic_vector(INSTANCE_STATE_KIND_WIDTH-1 downto 0) := x"FFFFFFFF"; -- *SAMPLE REJECTED STATUS KIND* (DDS) constant NOT_REJECTED : std_logic_vector(CDR_ENUMERATION_WIDTH-1 downto 0) := std_logic_vector(to_unsigned(0,CDR_ENUMERATION_WIDTH));