summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--epan/dissectors/packet-opensafety.c198
1 files changed, 103 insertions, 95 deletions
diff --git a/epan/dissectors/packet-opensafety.c b/epan/dissectors/packet-opensafety.c
index 77ca88280b..54677a5831 100644
--- a/epan/dissectors/packet-opensafety.c
+++ b/epan/dissectors/packet-opensafety.c
@@ -48,6 +48,7 @@
#include <epan/expert.h>
#include <epan/reassemble.h>
#include <epan/strutil.h>
+#include <epan/tfs.h>
#include <epan/dissectors/packet-udp.h>
#include <epan/dissectors/packet-frame.h>
@@ -200,68 +201,63 @@ static const value_string sn_fail_error_group[] = {
{ 0, NULL }
};
-/* SNTM extended Services */
-#define OPENSAFETY_MSG_SSDO_ABORT 0x04
-#define OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE 0x08
-#define OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE 0x09
-#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED 0x20
-#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED 0x21
-#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED 0x28
-#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED 0x29
-#define OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END 0x48
-#define OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END 0x49
-#if 0
-#define OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_SEGMENT_MIDDLE 0x88
-#define OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_SEGMENT_MIDDLE 0x89
-#define OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_INITIATE 0xA8
-#define OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_INITIATE 0xA9
-#define OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_INITIATE_EXPEDITED 0xC0
-#define OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_SEGMENT_END 0x40
-#define OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_SEGMENT_END 0xC9
-#endif
+/* SSDO Access Command */
+
+#define OPENSAFETY_SSDO_SACMD_ACC 0x01
+#define OPENSAFETY_SSDO_SACMD_PRLD 0x02
+#define OPENSAFETY_SSDO_SACMD_ABRT 0x04
+#define OPENSAFETY_SSDO_SACMD_SEG 0x08
+#define OPENSAFETY_SSDO_SACMD_TGL 0x10
+#define OPENSAFETY_SSDO_SACMD_INI 0x20
+#define OPENSAFETY_SSDO_SACMD_ENSG 0x40
+#define OPENSAFETY_SSDO_SACMD_RES 0x80
+
+#define OPENSAFETY_SSDO_UPLOAD 0x00
+#define OPENSAFETY_SSDO_DOWNLOAD 0x01
+
+#define OPENSAFETY_MSG_SSDO_ABORT ( OPENSAFETY_SSDO_SACMD_ABRT )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE ( OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_UPLOAD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE ( OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_DOWNLOAD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MID_PRELOAD ( OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MID_PRELOAD ( OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED ( OPENSAFETY_SSDO_SACMD_INI | OPENSAFETY_SSDO_UPLOAD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED ( OPENSAFETY_SSDO_SACMD_INI | OPENSAFETY_SSDO_DOWNLOAD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXP_PRELOAD ( OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXP_PRELOAD ( OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED ( OPENSAFETY_SSDO_SACMD_INI | OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_UPLOAD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ( OPENSAFETY_SSDO_SACMD_INI | OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_DOWNLOAD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEG_PRELOAD ( OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEG_PRELOAD ( OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED | OPENSAFETY_SSDO_SACMD_PRLD )
+#define OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END ( OPENSAFETY_SSDO_SACMD_ENSG | OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_UPLOAD )
+#define OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END ( OPENSAFETY_SSDO_SACMD_ENSG | OPENSAFETY_SSDO_SACMD_SEG | OPENSAFETY_SSDO_DOWNLOAD )
static const value_string ssdo_sacmd_values[] = {
-#if 0
- { OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_SEGMENT_END, "Block Download Segment End" },
- { OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_INITIATE, "Block Upload Expedited Initiate" },
- { OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_INITIATE_EXPEDITED, "Block Upload Initiate" },
- { OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_INITIATE, "Block Download Initiate" },
- { OPENSAFETY_MSG_SSDO_BLOCK_DOWNLOAD_SEGMENT_MIDDLE, "Block Download Middle Segment" },
- { OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_SEGMENT_MIDDLE, "Block Upload Middle Segment" },
- { OPENSAFETY_MSG_SSDO_BLOCK_UPLOAD_SEGMENT_END, "Block Upload End Segment" },
-#endif
{ OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END, "Download End Segment" },
{ OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END, "Upload End Segment" },
{ OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED, "Download Expedited Initiate" },
{ OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED, "Upload Initiate Segmented" },
{ OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED, "Download Initiate Segmented" },
{ OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED, "Upload Expedited Initiate" },
+ { OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXP_PRELOAD, "Upload Expedited Initiate w.Preload" },
+ { OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXP_PRELOAD, "Download Initiate Segmented w.Preload" },
+ { OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEG_PRELOAD, "Upload Initiate Segmented w. Preload" },
+ { OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEG_PRELOAD, "Download Expedited Initiate w.Preload" },
{ OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE, "Download Middle Segment" },
{ OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE, "Upload Middle Segment" },
+ { OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MID_PRELOAD, "Download Middle Segment w. Preload" },
+ { OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MID_PRELOAD, "Upload Middle Segment w. Preload" },
{ OPENSAFETY_MSG_SSDO_ABORT, "Abort" },
{ 0, NULL }
};
-#define OPENSAFETY_SSDO_SACMD_ACC 0x01
-#define OPENSAFETY_SSDO_SACMD_RES 0x02
-#define OPENSAFETY_SSDO_SACMD_ABRT 0x04
-#define OPENSAFETY_SSDO_SACMD_SEG 0x08
-#define OPENSAFETY_SSDO_SACMD_TGL 0x10
-#define OPENSAFETY_SSDO_SACMD_INI 0x20
-#define OPENSAFETY_SSDO_SACMD_ENSG 0x40
-#define OPENSAFETY_SSDO_SACMD_BLK 0x80
-
-static const true_false_string opensafety_sacmd_acc = { "Write Access", "Read Access" };
+static const true_false_string opensafety_sacmd_acc = { "Write Access", "Read Access" };
+static const true_false_string opensafety_sacmd_abrt = { "Abort Transfer", "Successful Transfer" };
+static const true_false_string opensafety_sacmd_seg = { "Segmented Access", "Expedited Access" };
+static const true_false_string opensafety_sacmd_ini = { "Initiate", "No Initiate" };
+static const true_false_string opensafety_sacmd_ensg = { "No more segments", "More segments" };
#if 0
-static const true_false_string opensafety_sacmd_res = { "Reserved", "Reserved" };
+static const true_false_string opensafety_sacmd_res = { "Reserved", "Reserved" };
#endif
-static const true_false_string opensafety_sacmd_abrt = { "Abort Transfer", "Successful Transfer" };
-static const true_false_string opensafety_sacmd_seg = { "Segmented Access", "Expedited Access" };
-static const true_false_string opensafety_on_off = { "On", "Off" };
-static const true_false_string opensafety_set_notset = { "Set", "Not set" };
-static const true_false_string opensafety_sacmd_ini = { "Initiate", "No Initiate" };
-static const true_false_string opensafety_sacmd_ensg = { "No more segments", "More segments" };
-static const true_false_string opensafety_sacmd_blk = { "Block Transfer", "Normal Transfer" };
#define OPENSAFETY_SPDO_CONNECTION_VALID 0x04
@@ -503,8 +499,9 @@ static int hf_oss_ssdo_payload = -1;
static int hf_oss_ssdo_payload_size = -1;
static int hf_oss_ssdo_sodentry_size = -1;
static int hf_oss_ssdo_sodentry_data = -1;
-/* static int hf_oss_ssdo_inhibit_time = -1; */
static int hf_oss_ssdo_abort_code = -1;
+static int hf_oss_ssdo_preload_queue = -1;
+static int hf_oss_ssdo_preload_error = -1;
static int hf_oss_sod_par_timestamp = -1;
static int hf_oss_sod_par_checksum = -1;
@@ -512,13 +509,15 @@ static int hf_oss_ssdo_sodmapping = -1;
static int hf_oss_ssdo_sodmapping_bits = -1;
static int hf_oss_ssdo_sacmd_access_type = -1;
-/* static int hf_oss_ssdo_sacmd_reserved = -1; */
+static int hf_oss_ssdo_sacmd_preload = -1;
static int hf_oss_ssdo_sacmd_abort_transfer = -1;
static int hf_oss_ssdo_sacmd_segmentation = -1;
static int hf_oss_ssdo_sacmd_toggle = -1;
static int hf_oss_ssdo_sacmd_initiate = -1;
static int hf_oss_ssdo_sacmd_end_segment = -1;
-static int hf_oss_ssdo_sacmd_block_transfer = -1;
+#if 0
+static int hf_oss_ssdo_sacmd_reserved = -1;
+#endif
static int hf_oss_ssdo_extpar_parset = -1;
static int hf_oss_ssdo_extpar_version = -1;
@@ -1195,15 +1194,14 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
proto_tree *ssdo_tree, *ssdo_payload, *ssdo_sacmd_tree;
guint16 taddr = 0, sdn = 0, server = 0, client = 0, n = 0, ct = 0;
guint32 abortcode, ssdoIndex = 0, ssdoSubIndex = 0, payloadSize, fragmentId = 0, entry = 0;
- guint8 db0Offset, db0, sacmd, payloadOffset;
+ guint8 db0Offset, db0, sacmd, payloadOffset, preload;
guint dataLength;
gint calcDataLength;
- gboolean isResponse, decodePayload, isEndSegment, isSegmented, saveFragmented;
+ gboolean isResponse, isDownload, isInitiate, isEndSegment, isSegmented, saveFragmented;
tvbuff_t *new_tvb = NULL;
fragment_head *frag_msg = NULL;
dataLength = tvb_get_guint8(message_tvb, OSS_FRAME_POS_LEN + frameStart1);
- decodePayload = FALSE;
db0Offset = frameStart1 + OSS_FRAME_POS_DATA;
db0 = tvb_get_guint8(message_tvb, db0Offset);
@@ -1214,6 +1212,12 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
if ( ( sacmd & OPENSAFETY_SSDO_SACMD_TGL ) == OPENSAFETY_SSDO_SACMD_TGL )
sacmd = sacmd & ( ~OPENSAFETY_SSDO_SACMD_TGL );
+ isDownload = ( sacmd & OPENSAFETY_SSDO_DOWNLOAD ) == OPENSAFETY_SSDO_DOWNLOAD;
+ isInitiate = ( sacmd & OPENSAFETY_SSDO_SACMD_INI ) == OPENSAFETY_SSDO_SACMD_INI;
+ isSegmented = ( sacmd & OPENSAFETY_SSDO_SACMD_SEG ) == OPENSAFETY_SSDO_SACMD_SEG;
+ isEndSegment = ( sacmd & OPENSAFETY_SSDO_SACMD_ENSG ) == OPENSAFETY_SSDO_SACMD_ENSG;
+
+ /* Response is determined by the openSAFETY message field */
isResponse = ( ( OSS_FRAME_ID_T(message_tvb, frameStart1) & 0x04 ) == 0x04 );
if ( validSCMUDID )
@@ -1297,12 +1301,15 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
col_append_fstr(pinfo->cinfo, COL_INFO, ", SACMD: %s", val_to_str_const(sacmd, ssdo_sacmd_values, " "));
ssdo_sacmd_tree = proto_item_add_subtree(item, ett_opensafety_ssdo_sacmd);
- proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_block_transfer, message_tvb, db0Offset, 1, db0);
+#if 0
+ proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_reserved, message_tvb, db0Offset, 1, db0);
+#endif
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_end_segment, message_tvb, db0Offset, 1, db0);
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_initiate, message_tvb, db0Offset, 1, db0);
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_toggle, message_tvb, db0Offset, 1, db0);
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_segmentation, message_tvb, db0Offset, 1, db0);
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_abort_transfer, message_tvb, db0Offset, 1, db0);
+ proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_preload, message_tvb, db0Offset, 1, db0);
proto_tree_add_boolean(ssdo_sacmd_tree, hf_oss_ssdo_sacmd_access_type, message_tvb, db0Offset, 1, db0);
payloadOffset = db0Offset + 1;
@@ -1313,10 +1320,29 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
proto_tree_add_uint(ssdo_tree, hf_oss_ssdo_sano, message_tvb, frameStart1 + 3, 1, ct );
+ /* Evaluate preload field [field TR] */
+ if ( validSCMUDID && ( ( sacmd & OPENSAFETY_SSDO_SACMD_PRLD ) == OPENSAFETY_SSDO_SACMD_PRLD ) && isResponse )
+ {
+ /* Preload info are the higher 6 bit of the TR field */
+ preload = ( (tvb_get_guint8(message_tvb, frameStart2 + 4) ^ scm_udid[4]) & 0xFC ) >> 2;
+
+ if ( isInitiate )
+ {
+ /* Use the lower 4 bits from the preload as size */
+ proto_tree_add_uint_format_value(ssdo_tree, hf_oss_ssdo_preload_queue, message_tvb, frameStart2 + 4, 1,
+ preload & 0x0F, "%d", preload & 0x0F );
+ }
+ else
+ {
+ /* The highest 2 bits of information contain an error flag */
+ item = proto_tree_add_boolean(ssdo_tree, hf_oss_ssdo_preload_error, message_tvb, frameStart2 + 4, 1, ( (preload & 0x30) == 0x30 ) );
+ if ( (preload & 0x30) == 0x30 )
+ proto_item_append_text(item, " (SOD Access Request Number is last successful)" );
+ }
+ }
+
/* When the following clause is met, DB1,2 contain the SOD index, and DB3 the SOD subindex */
- if ( ( ( sacmd & OPENSAFETY_SSDO_SACMD_INI ) == OPENSAFETY_SSDO_SACMD_INI ) &&
- ( sacmd != OPENSAFETY_MSG_SSDO_ABORT )
- )
+ if ( isInitiate && sacmd != OPENSAFETY_MSG_SSDO_ABORT )
{
ssdoIndex = tvb_get_letohs(message_tvb, db0Offset + 1);
ssdoSubIndex = tvb_get_guint8(message_tvb, db0Offset + 3);
@@ -1350,34 +1376,18 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
} else {
-
/* Either the SSDO msg is a response, then data is sent by the server and only in uploads,
* or the message is a request, then data is coming from the client and payload data is
- * sent in downloads */
- if ( ( isResponse && (sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_EXPEDITED ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_MIDDLE ||
- sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END ) )||
- ( !isResponse && (sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_EXPEDITED ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_MIDDLE ||
- sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END ) ) )
- {
- decodePayload = TRUE;
- }
-
- if ( decodePayload )
+ * sent in downloads. Data is only sent in initiate, segmented or end-segment messages */
+ if ( ( isInitiate || isSegmented || isEndSegment ) &&
+ ( ( isResponse && !isDownload ) || ( !isResponse && isDownload ) ) )
{
saveFragmented = pinfo->fragmented;
if ( server != 0 && client != 0 )
fragmentId = (guint32)((((guint32)client) << 16 ) + server );
- isSegmented = ( ( db0 & OPENSAFETY_SSDO_SACMD_SEG ) == OPENSAFETY_SSDO_SACMD_SEG );
-
/* If payload data has to be calculated, either a total size is given, or not */
- if ( ( sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_INITIATE_SEGMENTED ) ||
- ( sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_INITIATE_SEGMENTED )
- )
+ if ( isSegmented && isInitiate )
{
payloadOffset += 4;
@@ -1417,10 +1427,6 @@ dissect_opensafety_ssdo_message(tvbuff_t *message_tvb, packet_info *pinfo, proto
}
else
{
- isEndSegment = FALSE;
- if ( ( sacmd == OPENSAFETY_MSG_SSDO_DOWNLOAD_SEGMENT_END ) || ( sacmd == OPENSAFETY_MSG_SSDO_UPLOAD_SEGMENT_END ) )
- isEndSegment = TRUE;
-
payloadSize = dataLength - (payloadOffset - db0Offset);
if ( fragmentId != 0 && isSegmented )
@@ -2621,24 +2627,24 @@ proto_register_opensafety(void)
{"Reassembled Data", "opensafety.ssdo.reassembled.data",
FT_BYTES, BASE_NONE, NULL, 0x00, NULL, HFILL } },
-#if 0
- { &hf_oss_ssdo_inhibit_time,
- { "Inhibit Time", "opensafety.ssdo.inhibittime",
- FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
-#endif
{ &hf_oss_ssdo_abort_code,
{ "Abort Code", "opensafety.ssdo.abortcode",
FT_UINT32, BASE_HEX, NULL, 0x0, NULL, HFILL } },
+ { &hf_oss_ssdo_preload_error,
+ { "Wrong/missing segment", "opensafety.ssdo.preload.error",
+ FT_BOOLEAN, BASE_NONE, NULL, 0x0, NULL, HFILL } },
+ { &hf_oss_ssdo_preload_queue,
+ { "Preload Queue Size", "opensafety.ssdo.preload.queuesize",
+ FT_UINT8, BASE_DEC, NULL, 0x0, NULL, HFILL } },
+
/* SSDO SACmd specific fields */
{ &hf_oss_ssdo_sacmd_access_type,
{ "Access Type", "opensafety.ssdo.sacmd.access",
FT_BOOLEAN, 8, TFS(&opensafety_sacmd_acc), OPENSAFETY_SSDO_SACMD_ACC, NULL, HFILL } },
-#if 0
- { &hf_oss_ssdo_sacmd_reserved,
- { "Reserved", "opensafety.ssdo.sacmd.reserved",
- FT_BOOLEAN, 8, TFS(&opensafety_sacmd_res), OPENSAFETY_SSDO_SACMD_RES, NULL, HFILL } },
-#endif
+ { &hf_oss_ssdo_sacmd_preload,
+ { "Preload Transfer", "opensafety.ssdo.sacmd.preload",
+ FT_BOOLEAN, 8, TFS(&tfs_enabled_disabled), OPENSAFETY_SSDO_SACMD_PRLD, NULL, HFILL } },
{ &hf_oss_ssdo_sacmd_abort_transfer,
{ "Abort Transfer", "opensafety.ssdo.sacmd.abort_transfer",
FT_BOOLEAN, 8, TFS(&opensafety_sacmd_abrt), OPENSAFETY_SSDO_SACMD_ABRT, NULL, HFILL } },
@@ -2647,21 +2653,23 @@ proto_register_opensafety(void)
FT_BOOLEAN, 8, TFS(&opensafety_sacmd_seg), OPENSAFETY_SSDO_SACMD_SEG, NULL, HFILL } },
{ &hf_oss_ssdo_sacmd_toggle,
{ "Toggle Bit", "opensafety.ssdo.sacmd.toggle",
- FT_BOOLEAN, 8, TFS(&opensafety_on_off), OPENSAFETY_SSDO_SACMD_TGL, NULL, HFILL } },
+ FT_BOOLEAN, 8, TFS(&tfs_on_off), OPENSAFETY_SSDO_SACMD_TGL, NULL, HFILL } },
{ &hf_oss_ssdo_sacmd_initiate,
{ "Initiate Transfer", "opensafety.ssdo.sacmd.initiate",
FT_BOOLEAN, 8, TFS(&opensafety_sacmd_ini), OPENSAFETY_SSDO_SACMD_INI, NULL, HFILL } },
{ &hf_oss_ssdo_sacmd_end_segment,
{ "End Segment", "opensafety.ssdo.sacmd.end_segment",
FT_BOOLEAN, 8, TFS(&opensafety_sacmd_ensg), OPENSAFETY_SSDO_SACMD_ENSG, NULL, HFILL } },
- { &hf_oss_ssdo_sacmd_block_transfer,
- { "Block Transfer", "opensafety.ssdo.sacmd.block_transfer",
- FT_BOOLEAN, 8, TFS(&opensafety_sacmd_blk), OPENSAFETY_SSDO_SACMD_BLK, NULL, HFILL } },
+#if 0
+ { &hf_oss_ssdo_sacmd_reserved,
+ { "Reserved", "opensafety.ssdo.sacmd.reserved",
+ FT_BOOLEAN, 8, TFS(&opensafety_sacmd_res), OPENSAFETY_SSDO_SACMD_RES, NULL, HFILL } },
+#endif
/* SPDO Specific fields */
{ &hf_oss_spdo_connection_valid,
{ "Connection Valid Bit", "opensafety.spdo.connection_valid",
- FT_BOOLEAN, BASE_NONE, TFS(&opensafety_set_notset), 0x0, NULL, HFILL } },
+ FT_BOOLEAN, BASE_NONE, TFS(&tfs_set_notset), 0x0, NULL, HFILL } },
{ &hf_oss_spdo_payload,
{ "SPDO Payload", "opensafety.spdo.payload",
FT_BYTES, BASE_NONE, NULL, 0x0, NULL, HFILL } },