Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
P
proview
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
Esteban Blanc
proview
Commits
0aec4e2a
Commit
0aec4e2a
authored
Jan 26, 2018
by
Claes Sjofors
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'master'
parents
9b9e3bcc
1d40dca2
Changes
9
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
200 additions
and
47 deletions
+200
-47
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.cpp
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.cpp
+28
-1
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.h
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.h
+8
-2
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.cpp
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.cpp
+45
-1
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.h
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.h
+2
-1
profibus/lib/cow/src/cow_pn_gsdml.cpp
profibus/lib/cow/src/cow_pn_gsdml.cpp
+39
-10
profibus/lib/cow/src/cow_pn_gsdml.h
profibus/lib/cow/src/cow_pn_gsdml.h
+12
-1
profibus/lib/cow/src/cow_pn_gsdml_attr.h
profibus/lib/cow/src/cow_pn_gsdml_attr.h
+2
-1
profibus/lib/cow/src/cow_pn_gsdml_attrnav.cpp
profibus/lib/cow/src/cow_pn_gsdml_attrnav.cpp
+56
-22
profibus/lib/cow/src/cow_pn_gsdml_attrnav.h
profibus/lib/cow/src/cow_pn_gsdml_attrnav.h
+8
-8
No files found.
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.cpp
View file @
0aec4e2a
...
...
@@ -66,6 +66,14 @@ void GsdmlAttrGtk::message( char severity, const char *message)
gtk_label_set_text
(
GTK_LABEL
(
msg_label
),
message
);
}
void
GsdmlAttrGtk
::
attr_help_text
(
const
char
*
help_text
)
{
GtkTextBuffer
*
buffer
;
buffer
=
gtk_text_view_get_buffer
(
GTK_TEXT_VIEW
(
this
->
help_text
));
gtk_text_buffer_set_text
(
buffer
,
help_text
,
-
1
);
}
void
GsdmlAttrGtk
::
set_prompt
(
const
char
*
prompt
)
{
if
(
strcmp
(
prompt
,
""
)
==
0
)
{
...
...
@@ -486,6 +494,24 @@ GsdmlAttrGtk::GsdmlAttrGtk( GtkWidget *a_parent_wid,
attrnav
->
message_cb
=
&
GsdmlAttr
::
gsdmlattr_message
;
attrnav
->
change_value_cb
=
&
GsdmlAttr
::
gsdmlattr_change_value_cb
;
// Attribute Help Text
GtkWidget
*
help_area
=
gtk_hbox_new
(
FALSE
,
0
);
//We want scrollbars to the right in case the help text is very long
GtkWidget
*
scroll_window
=
gtk_scrolled_window_new
(
NULL
,
NULL
);
gtk_scrolled_window_set_policy
(
GTK_SCROLLED_WINDOW
(
scroll_window
),
GTK_POLICY_NEVER
,
GTK_POLICY_AUTOMATIC
);
// Set up the text view
help_text
=
gtk_text_view_new
();
gtk_text_view_set_editable
(
GTK_TEXT_VIEW
(
help_text
),
FALSE
);
gtk_text_view_set_wrap_mode
(
GTK_TEXT_VIEW
(
help_text
),
GTK_WRAP_WORD
);
gtk_widget_set_can_focus
(
help_text
,
FALSE
);
gtk_widget_set_size_request
(
help_text
,
-
1
,
100
);
//Add the text view to the container and pack it in the layout
gtk_container_add
(
GTK_CONTAINER
(
scroll_window
),
help_text
);
gtk_box_pack_start
(
GTK_BOX
(
help_area
),
scroll_window
,
TRUE
,
TRUE
,
0
);
// Status bar and value input
GtkWidget
*
statusbar
=
gtk_hbox_new
(
FALSE
,
0
);
msg_label
=
gtk_label_new
(
""
);
...
...
@@ -523,6 +549,7 @@ GsdmlAttrGtk::GsdmlAttrGtk( GtkWidget *a_parent_wid,
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
GTK_WIDGET
(
menu_bar
),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
brow_widget
,
TRUE
,
TRUE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
help_area
,
FALSE
,
FALSE
,
3
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
statusbar
,
FALSE
,
FALSE
,
3
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
gtk_hseparator_new
(),
FALSE
,
FALSE
,
0
);
gtk_box_pack_start
(
GTK_BOX
(
vbox
),
hboxbuttons
,
FALSE
,
FALSE
,
5
);
...
...
@@ -545,4 +572,4 @@ GsdmlAttrGtk::GsdmlAttrGtk( GtkWidget *a_parent_wid,
wow
=
new
CoWowGtk
(
toplevel
);
*
a_sts
=
attrnav
->
open
(
data_filename
);
}
\ No newline at end of file
}
profibus/lib/cow/gtk/cow_pn_gsdml_attr_gtk.h
View file @
0aec4e2a
...
...
@@ -49,9 +49,9 @@ class GsdmlAttrGtk : public GsdmlAttr {
GtkWidget
*
form_widget
;
GtkWidget
*
toplevel
;
GtkWidget
*
msg_label
;
GtkWidget
*
help_text
;
GtkWidget
*
cmd_prompt
;
GtkWidget
*
cmd_input
;
GtkWidget
*
attrnav_form
;
GtkWidget
*
cmd_ok
;
GtkWidget
*
cmd_apply
;
GtkWidget
*
cmd_cancel
;
...
...
@@ -74,6 +74,12 @@ class GsdmlAttrGtk : public GsdmlAttr {
~
GsdmlAttrGtk
();
void
message
(
char
severity
,
const
char
*
message
);
/**
* @brief attr_help_text Set the help text area to display a help text
* @param help_text Help text to display
*/
void
attr_help_text
(
const
char
*
help_text
);
void
set_prompt
(
const
char
*
prompt
);
void
change_value
();
...
...
@@ -105,4 +111,4 @@ class GsdmlAttrGtk : public GsdmlAttr {
//static void valchanged_cmd_input( GtkWidget *w, gpointer data);
};
#endif
\ No newline at end of file
#endif
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.cpp
View file @
0aec4e2a
...
...
@@ -99,4 +99,48 @@ GsdmlAttrNavGtk::~GsdmlAttrNavGtk()
void
GsdmlAttrNavGtk
::
set_inputfocus
()
{
gtk_widget_grab_focus
(
brow_widget
);
}
\ No newline at end of file
}
void
GsdmlAttrNavGtk
::
display_attr_help_text
()
{
brow_tNode
*
node_list
;
int
node_count
;
ItemPn
*
base_item
;
brow_GetSelectedNodes
(
brow
->
ctx
,
&
node_list
,
&
node_count
);
if
(
!
node_count
)
return
;
brow_GetUserData
(
node_list
[
0
],
(
void
**
)
&
base_item
);
free
(
node_list
);
switch
(
base_item
->
type
)
{
/*
* The following two item types could make use of the same info_text that the the base class does,
* but since they already contained references they were used instead...
*/
case
attrnav_eItemType_PnParValue
:
case
attrnav_eItemType_PnParEnum
:
{
ItemPnParEnum
*
item
=
(
ItemPnParEnum
*
)
base_item
;
gsdml_ValueItem
*
vi
=
0
;
if
(
item
->
value_ref
)
vi
=
(
gsdml_ValueItem
*
)
item
->
value_ref
->
Body
.
ValueItemTarget
.
p
;
//If we do have help available show it
if
(
vi
&&
vi
->
Body
.
Help
.
p
)
((
GsdmlAttrGtk
*
)
parent_ctx
)
->
attr_help_text
((
char
*
)
vi
->
Body
.
Help
.
p
);
else
((
GsdmlAttrGtk
*
)
parent_ctx
)
->
attr_help_text
(
""
);
break
;
}
default:
{
// Do we have an associated info text string to show the user some more info?
if
(
base_item
->
info_text
)
((
GsdmlAttrGtk
*
)
parent_ctx
)
->
attr_help_text
(
base_item
->
info_text
);
else
((
GsdmlAttrGtk
*
)
parent_ctx
)
->
attr_help_text
(
""
);
}
}
}
profibus/lib/cow/gtk/cow_pn_gsdml_attrnav_gtk.h
View file @
0aec4e2a
...
...
@@ -56,6 +56,7 @@ class GsdmlAttrNavGtk : public GsdmlAttrNav {
pwr_tStatus
*
status
);
~
GsdmlAttrNavGtk
();
void
set_inputfocus
();
void
display_attr_help_text
();
GtkWidget
*
parent_wid
;
GtkWidget
*
brow_widget
;
...
...
@@ -64,4 +65,4 @@ class GsdmlAttrNavGtk : public GsdmlAttrNav {
};
#endif
\ No newline at end of file
#endif
profibus/lib/cow/src/cow_pn_gsdml.cpp
View file @
0aec4e2a
...
...
@@ -154,6 +154,8 @@ static gsdml_sTag taglist[] = {
{
"RT_Class3TimingProperties"
,
gsdml_eTag_RT_Class3TimingProperties
,
gsdml_eType_
,
0
,
0
,
1
},
{
"MediaRedundancy"
,
gsdml_eTag_MediaRedundancy
,
gsdml_eType_
,
0
,
0
,
1
},
{
"PortSubmoduleItem"
,
gsdml_eTag_PortSubmoduleItem
,
gsdml_eType_
,
0
,
0
,
1
},
{
"MAUTypeList"
,
gsdml_eTag_MAUTypeList
,
gsdml_eType_
,
0
,
0
,
1
},
{
"MAUTypeItem"
,
gsdml_eTag_MAUTypeItem
,
gsdml_eType_
,
0
,
0
,
1
},
{
"UseableSubmodules"
,
gsdml_eTag_UseableSubmodules
,
gsdml_eType_
,
0
,
0
,
1
},
{
"SubmoduleItemRef"
,
gsdml_eTag_SubmoduleItemRef
,
gsdml_eType_
,
0
,
0
,
1
},
{
"SlotList"
,
gsdml_eTag_SlotList
,
gsdml_eType_
,
0
,
0
,
1
},
...
...
@@ -242,6 +244,7 @@ static gsdml_sAttribute attrlist[] = {
{
"LLDP_NoD_Supported"
,
gsdml_eTag_DeviceAccessPointItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sDeviceAccessPointItem
,
LLDP_NoD_Supported
),
0
,
"false"
},
{
"ResetToFactoryModes"
,
gsdml_eTag_DeviceAccessPointItem
,
gsdml_eTag_
,
gsdml_eType_Unsigned32
,
sizeof
(
gsdml_tUnsigned32
),
offsetof
(
gsdml_sDeviceAccessPointItem
,
ResetToFactoryModes
),
0
,
"0"
},
{
"SharedInputSupported"
,
gsdml_eTag_DeviceAccessPointItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sDeviceAccessPointItem
,
SharedInputSupported
),
0
,
"false"
},
{
"NumberOfDeviceAccessAR"
,
gsdml_eTag_DeviceAccessPointItem
,
gsdml_eTag_
,
gsdml_eType_Unsigned16
,
sizeof
(
gsdml_tUnsigned16
),
offsetof
(
gsdml_sDeviceAccessPointItem
,
ObjectUUID_LocalIndex
),
0
,
"1"
},
//
// ModuleInfo
//
...
...
@@ -254,7 +257,7 @@ static gsdml_sAttribute attrlist[] = {
{
"Value"
,
gsdml_eTag_HardwareRelease
,
gsdml_eTag_ModuleInfo
,
gsdml_eType_Token
,
sizeof
(
gsdml_tToken
),
offsetof
(
gsdml_sModuleInfo
,
HardwareRelease
),
0
,
""
},
{
"Value"
,
gsdml_eTag_SoftwareRelease
,
gsdml_eTag_ModuleInfo
,
gsdml_eType_Token
,
sizeof
(
gsdml_tToken
),
offsetof
(
gsdml_sModuleInfo
,
SoftwareRelease
),
0
,
""
},
{
"MainFamily"
,
gsdml_eTag_Family
,
gsdml_eTag_ModuleInfo
,
gsdml_eType_String
,
sizeof
(
gsdml_tString80
),
offsetof
(
gsdml_sModuleInfo
,
MainFamily
),
0
,
""
},
{
"ProductFamily"
,
gsdml_eTag_Family
,
gsdml_eTag_ModuleInfo
,
gsdml_eType_String
,
sizeof
(
gsdml_tString80
),
offsetof
(
gsdml_sModuleInfo
,
ProductFamily
),
0
,
""
},
{
"ProductFamily"
,
gsdml_eTag_Family
,
gsdml_eTag_ModuleInfo
,
gsdml_eType_String
,
sizeof
(
gsdml_tString80
),
offsetof
(
gsdml_sModuleInfo
,
ProductFamily
),
0
,
""
},
//
// CertificationInfo
//
...
...
@@ -291,6 +294,8 @@ static gsdml_sAttribute attrlist[] = {
{
"Writeable_IM_Records"
,
gsdml_eTag_VirtualSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_ValueList
,
sizeof
(
gsdml_tValueList
),
offsetof
(
gsdml_sVirtualSubmoduleItem
,
Writeable_IM_Records
),
0
,
"0"
},
{
"Max_iParameterSize"
,
gsdml_eTag_VirtualSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Unsigned32
,
sizeof
(
gsdml_tUnsigned32
),
offsetof
(
gsdml_sVirtualSubmoduleItem
,
Max_iParameterSize
),
0
,
"0"
},
{
"SubsysModuleDirIndex"
,
gsdml_eTag_VirtualSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Unsigned16
,
sizeof
(
gsdml_tUnsigned16
),
offsetof
(
gsdml_sVirtualSubmoduleItem
,
SubsysModuleDirIndex
),
0
,
""
},
//Added without doc, check type and default value
{
"MayIssueProcessAlarm"
,
gsdml_eTag_VirtualSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Unsigned16
,
sizeof
(
gsdml_tUnsigned16
),
offsetof
(
gsdml_sVirtualSubmoduleItem
,
MayIssueProcessAlarm
),
0
,
"0"
},
//
// IOData
//
...
...
@@ -458,6 +463,7 @@ static gsdml_sAttribute attrlist[] = {
{
"DCP_HelloSupported"
,
gsdml_eTag_InterfaceSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sInterfaceSubmoduleItem
,
DCP_HelloSupported
),
0
,
"false"
},
{
"PTP_BoundarySupported"
,
gsdml_eTag_InterfaceSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sInterfaceSubmoduleItem
,
PTP_BoundarySupported
),
0
,
"false"
},
{
"DCP_BoundarySupported"
,
gsdml_eTag_InterfaceSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sInterfaceSubmoduleItem
,
DCP_BoundarySupported
),
0
,
"false"
},
{
"DelayMeasurementSupported"
,
gsdml_eTag_InterfaceSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sInterfaceSubmoduleItem
,
DelayMeasurementSupported
),
0
,
"false"
},
//
// DCP_FlashOnceSignalUnit
//
...
...
@@ -535,6 +541,14 @@ static gsdml_sAttribute attrlist[] = {
{
"IsDefaultRingport"
,
gsdml_eTag_PortSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sPortSubmoduleItem
,
IsDefaultRingport
),
0
,
"false"
},
// Added without doc, TODO check type and default value
{
"CheckMAUTypeSupported"
,
gsdml_eTag_PortSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sPortSubmoduleItem
,
CheckMAUTypeSupported
),
0
,
"false"
},
{
"CheckMAUTypeDifferenceSupported"
,
gsdml_eTag_PortSubmoduleItem
,
gsdml_eTag_
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sPortSubmoduleItem
,
CheckMAUTypeDifferenceSupported
),
0
,
"false"
},
//
// MAUTypeList
//
{
"Value"
,
gsdml_eTag_MAUTypeItem
,
gsdml_eTag_MAUTypeList
,
gsdml_eType_Unsigned16
,
sizeof
(
gsdml_tUnsigned16
),
offsetof
(
gsdml_sMAUTypeItem
,
Value
),
0
,
""
},
{
"AdjustSupported"
,
gsdml_eTag_MAUTypeItem
,
gsdml_eTag_MAUTypeList
,
gsdml_eType_Boolean
,
sizeof
(
gsdml_tBoolean
),
offsetof
(
gsdml_sMAUTypeItem
,
AdjustSupported
),
0
,
"false"
},
//
// DeviceAccessPointItem-ApplicationRelations
//
...
...
@@ -3387,7 +3401,8 @@ void gsdml_DeviceAccessPointItem::print( int ind)
"%s MaxSupportedRecordSize=
\"
%u
\"\n
"
"%s PowerOnToCommReady=
\"
%u
\"\n
"
"%s ParameterizationSpeedSupported=
\"
%d
\"\n
"
"%s NameOfStationNotTransferable=
\"
%d
\"
/>
\n
"
,
"%s NameOfStationNotTransferable=
\"
%d
\"\n
"
"%s NumberOfDeviceAccessAR=
\"
%d
\"
/>
\n
"
,
is
,
is
,
Body
.
ID
,
is
,
Body
.
PhysicalSlots
.
str
,
...
...
@@ -3408,7 +3423,8 @@ void gsdml_DeviceAccessPointItem::print( int ind)
is
,
Body
.
MaxSupportedRecordSize
,
is
,
Body
.
PowerOnToCommReady
,
is
,
Body
.
ParameterizationSpeedSupported
,
is
,
Body
.
NameOfStationNotTransferable
);
is
,
Body
.
NameOfStationNotTransferable
,
is
,
Body
.
NumberOfDeviceAccessAR
);
if
(
ModuleInfo
)
ModuleInfo
->
print
(
ind
+
2
);
...
...
@@ -3456,7 +3472,7 @@ void gsdml_ModuleInfo::build()
Body
.
SubCategory1Ref
.
p
=
gsdml
->
find_category_ref
(
Body
.
SubCategory1Ref
.
ref
);
if
(
!
Body
.
SubCategory1Ref
.
p
)
gsdml
->
error_message
(
"SubCategory1Ref not found:
\"
%s
\"
"
,
Body
.
SubCategory1Ref
.
ref
);
}
}
}
void
gsdml_ModuleInfo
::
print
(
int
ind
)
...
...
@@ -3906,7 +3922,8 @@ void gsdml_VirtualSubmoduleItem::print( int ind)
"%s PROFISafeSupported=
\"
%u
\"\n
"
"%s Writeable_IM_Records=
\"
%s
\"\n
"
"%s Max_iParameterSize=
\"
%u
\"\n
"
"%s SubsysModuleDirIndex=
\"
%hu
\"
>
\n
"
,
"%s SubsysModuleDirIndex=
\"
%hu
\"\n
"
"%s MayIssueProcessAlarm=
\"
%hu
\"
>
\n
"
,
is
,
is
,
Body
.
ID
,
is
,
Body
.
SubmoduleIdentNumber
,
...
...
@@ -3915,7 +3932,8 @@ void gsdml_VirtualSubmoduleItem::print( int ind)
is
,
Body
.
PROFIsafeSupported
,
is
,
Body
.
Writeable_IM_Records
.
str
,
is
,
Body
.
Max_iParameterSize
,
is
,
Body
.
SubsysModuleDirIndex
);
is
,
Body
.
SubsysModuleDirIndex
,
is
,
Body
.
MayIssueProcessAlarm
);
if
(
IOData
)
IOData
->
print
(
ind
+
2
);
...
...
@@ -4086,7 +4104,8 @@ void gsdml_InterfaceSubmoduleItem::print( int ind)
"%s NetworkComponentDiagnosisSupported=
\"
%u
\"\n
"
"%s DCP_HelloSupported=
\"
%u
\"\n
"
"%s PTP_BoundarySupported=
\"
%u
\"\n
"
"%s DCP_BoundarySupported=
\"
%u
\"
>
\n
"
,
"%s DCP_BoundarySupported=
\"
%u
\"\n
"
"%s DelayMeasurementSupported=
\"
%u
\"
>
\n
"
,
is
,
is
,
Body
.
SubslotNumber
,
is
,
Body
.
TextId
.
ref
,
...
...
@@ -4100,7 +4119,8 @@ void gsdml_InterfaceSubmoduleItem::print( int ind)
is
,
Body
.
NetworkComponentDiagnosisSupported
,
is
,
Body
.
DCP_HelloSupported
,
is
,
Body
.
PTP_BoundarySupported
,
is
,
Body
.
DCP_BoundarySupported
);
is
,
Body
.
DCP_BoundarySupported
,
is
,
Body
.
DelayMeasurementSupported
);
if
(
General
)
General
->
print
(
ind
+
2
);
...
...
@@ -4136,7 +4156,9 @@ void gsdml_PortSubmoduleItem::print( int ind)
"%s LinkStateDianosisCapability=
\"
%s
\"\n
"
"%s PowerBudgetControlSupported=
\"
%u
\"\n
"
"%s SupportsRingportConfig=
\"
%u
\"\n
"
"%s IsDefauleRingport=
\"
%u
\"
>
\n
"
,
"%s IsDefauleRingport=
\"
%u
\"\n
"
"%s CheckMAUTTypeSupported=
\"
%u
\"\n
"
"%s CheckMAUTTypeDifferenceSupported=
\"
%u
\"
>
\n
"
,
is
,
is
,
Body
.
SubslotNumber
,
is
,
Body
.
TextId
.
ref
,
...
...
@@ -4150,7 +4172,9 @@ void gsdml_PortSubmoduleItem::print( int ind)
is
,
Body
.
LinkStateDiagnosisCapability
,
is
,
Body
.
PowerBudgetControlSupported
,
is
,
Body
.
SupportsRingportConfig
,
is
,
Body
.
IsDefaultRingport
);
is
,
Body
.
IsDefaultRingport
,
is
,
Body
.
CheckMAUTypeSupported
,
is
,
Body
.
CheckMAUTypeDifferenceSupported
);
if
(
RecordDataList
)
RecordDataList
->
print
(
ind
+
2
);
...
...
@@ -5068,6 +5092,11 @@ void gsdml_ValueItem::build()
for
(
unsigned
int
i
=
0
;
i
<
Assignments
->
Assign
.
size
();
i
++
)
Assignments
->
Assign
[
i
]
->
build
();
}
if
(
strcmp
(
Body
.
Help
.
ref
,
""
)
!=
0
)
{
Body
.
Help
.
p
=
gsdml
->
find_text_ref
(
Body
.
Help
.
ref
);
if
(
Body
.
Help
.
p
==
noref
)
gsdml
->
error_message
(
"Help not found:
\"
%s
\"
"
,
Body
.
Help
.
ref
);
}
}
gsdml_ValueItem
::~
gsdml_ValueItem
()
...
...
profibus/lib/cow/src/cow_pn_gsdml.h
View file @
0aec4e2a
...
...
@@ -202,6 +202,8 @@ typedef enum {
gsdml_eTag_RT_Class3TimingProperties
,
gsdml_eTag_MediaRedundancy
,
gsdml_eTag_PortSubmoduleItem
,
gsdml_eTag_MAUTypeList
,
gsdml_eTag_MAUTypeItem
,
gsdml_eTag_UseableSubmodules
,
gsdml_eTag_SubmoduleItemRef
,
gsdml_eTag_SlotList
,
...
...
@@ -414,6 +416,11 @@ class gsdml_ModuleInfo {
void
print
(
int
ind
);
};
typedef
struct
{
gsdml_tUnsigned16
Value
;
gsdml_tBoolean
AdjustSupported
;
}
gsdml_sMAUTypeItem
;
typedef
struct
{
gsdml_tString
ConformanceClass
;
gsdml_tString
ApplicationClass
;
...
...
@@ -746,6 +753,7 @@ typedef struct {
gsdml_tValueList
Writeable_IM_Records
;
gsdml_tUnsigned32
Max_iParameterSize
;
gsdml_tUnsigned16
SubsysModuleDirIndex
;
gsdml_tUnsigned16
MayIssueProcessAlarm
;
}
gsdml_sVirtualSubmoduleItem
;
class
gsdml_VirtualSubmoduleItem
{
...
...
@@ -914,6 +922,7 @@ typedef struct {
gsdml_tBoolean
DCP_HelloSupported
;
gsdml_tBoolean
PTP_BoundarySupported
;
gsdml_tBoolean
DCP_BoundarySupported
;
gsdml_tBoolean
DelayMeasurementSupported
;
}
gsdml_sInterfaceSubmoduleItem
;
class
gsdml_InterfaceSubmoduleItem
{
...
...
@@ -950,6 +959,7 @@ typedef struct {
gsdml_tBoolean
SupportsRingportConfig
;
gsdml_tBoolean
IsDefaultRingport
;
gsdml_tBoolean
CheckMAUTypeSupported
;
gsdml_tBoolean
CheckMAUTypeDifferenceSupported
;
}
gsdml_sPortSubmoduleItem
;
class
gsdml_PortSubmoduleItem
{
...
...
@@ -979,7 +989,7 @@ typedef struct {
gsdml_tUnsigned16
AR_BlockVersion
;
gsdml_tUnsigned16
IOCR_BlockVersion
;
gsdml_tUnsigned16
AlarmCR_BlockVersion
;
gsdml_tUnsigned16
SubmoduleDataBlockVersion
;
;
gsdml_tUnsigned16
SubmoduleDataBlockVersion
;
}
gsdml_sDeviceAccessPointItem_ApplicationRelations
;
class
gsdml_DeviceAccessPointItem_ApplicationRelations
{
...
...
@@ -1096,6 +1106,7 @@ typedef struct {
gsdml_tBoolean
LLDP_NoD_Supported
;
gsdml_tUnsigned32
ResetToFactoryModes
;
gsdml_tBoolean
SharedInputSupported
;
gsdml_tUnsigned16
NumberOfDeviceAccessAR
;
}
gsdml_sDeviceAccessPointItem
;
class
gsdml_DeviceAccessPointItem
{
...
...
profibus/lib/cow/src/cow_pn_gsdml_attr.h
View file @
0aec4e2a
...
...
@@ -90,6 +90,7 @@ class GsdmlAttr {
virtual
~
GsdmlAttr
();
virtual
void
message
(
char
severity
,
const
char
*
message
)
{}
virtual
void
attr_help_text
(
const
char
*
help_text
)
{}
virtual
void
set_prompt
(
const
char
*
prompt
)
{}
virtual
void
change_value
()
{}
...
...
@@ -117,4 +118,4 @@ class GsdmlAttr {
};
#endif
\ No newline at end of file
#endif
profibus/lib/cow/src/cow_pn_gsdml_attrnav.cpp
View file @
0aec4e2a
...
...
@@ -706,9 +706,11 @@ int GsdmlAttrNav::brow_cb( FlowCtx *ctx, flow_tEvent event)
}
}
}
brow_SelectClear
(
attrnav
->
brow
->
ctx
);
brow_SetInverse
(
object
,
1
);
brow_SelectInsert
(
attrnav
->
brow
->
ctx
,
object
);
attrnav
->
display_attr_help_text
();
if
(
!
brow_IsVisible
(
attrnav
->
brow
->
ctx
,
object
,
flow_eVisible_Full
))
brow_CenterObject
(
attrnav
->
brow
->
ctx
,
object
,
0.25
);
if
(
node_count
)
...
...
@@ -743,6 +745,7 @@ int GsdmlAttrNav::brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear
(
attrnav
->
brow
->
ctx
);
brow_SetInverse
(
object
,
1
);
brow_SelectInsert
(
attrnav
->
brow
->
ctx
,
object
);
attrnav
->
display_attr_help_text
();
if
(
!
brow_IsVisible
(
attrnav
->
brow
->
ctx
,
object
,
flow_eVisible_Full
))
brow_CenterObject
(
attrnav
->
brow
->
ctx
,
object
,
0.75
);
if
(
node_count
)
...
...
@@ -780,6 +783,7 @@ int GsdmlAttrNav::brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear
(
attrnav
->
brow
->
ctx
);
brow_SetInverse
(
event
->
object
.
object
,
1
);
brow_SelectInsert
(
attrnav
->
brow
->
ctx
,
event
->
object
.
object
);
attrnav
->
display_attr_help_text
();
}
break
;
default:
...
...
@@ -859,6 +863,7 @@ int GsdmlAttrNav::brow_cb( FlowCtx *ctx, flow_tEvent event)
brow_SelectClear
(
attrnav
->
brow
->
ctx
);
brow_SetInverse
(
object
,
1
);
brow_SelectInsert
(
attrnav
->
brow
->
ctx
,
object
);
attrnav
->
display_attr_help_text
();
if
(
!
brow_IsVisible
(
attrnav
->
brow
->
ctx
,
object
,
flow_eVisible_Full
))
brow_CenterObject
(
attrnav
->
brow
->
ctx
,
object
,
0.25
);
free
(
node_list
);
...
...
@@ -2047,8 +2052,8 @@ int ItemPn::close( GsdmlAttrNav *attrnav, double x, double y)
}
ItemPnEnumValue
::
ItemPnEnumValue
(
GsdmlAttrNav
*
attrnav
,
const
char
*
item_name
,
int
item_num
,
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
)
:
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
,
const
char
*
info_text
)
:
ItemPn
(
info_text
),
num
(
item_num
),
type_id
(
item_type_id
),
value_p
(
attr_value_p
),
first_scan
(
1
)
{
...
...
@@ -2090,8 +2095,7 @@ int ItemPnEnumValue::scan( GsdmlAttrNav *attrnav, void *p)
ItemPnEnumValueMType
::
ItemPnEnumValueMType
(
GsdmlAttrNav
*
attrnav
,
const
char
*
item_name
,
const
char
*
item_number
,
int
item_num
,
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
)
:
num
(
item_num
),
type_id
(
item_type_id
),
value_p
(
attr_value_p
),
first_scan
(
1
)
brow_tNode
dest
,
flow_eDest
dest_code
,
const
char
*
info_text
)
:
ItemPn
(
info_text
),
num
(
item_num
),
type_id
(
item_type_id
),
value_p
(
attr_value_p
),
first_scan
(
1
)
{
type
=
attrnav_eItemType_PnEnumValueMType
;
...
...
@@ -2175,10 +2179,11 @@ int ItemPnDevice::open_children( GsdmlAttrNav *attrnav, double x, double y)
&
attrnav
->
device_num
,
node
,
flow_eDest_IntoLast
);
for
(
unsigned
int
i
=
0
;
i
<
attrnav
->
gsdml
->
ApplicationProcess
->
DeviceAccessPointList
->
DeviceAccessPointItem
.
size
();
i
++
)
{
gsdml_DeviceAccessPointItem
*
item
=
attrnav
->
gsdml
->
ApplicationProcess
->
DeviceAccessPointList
->
DeviceAccessPointItem
[
i
];
char
name
[
80
];
s
trncpy
(
name
,
(
char
*
)
attrnav
->
gsdml
->
ApplicationProcess
->
DeviceAccessPointList
->
DeviceAccessPointItem
[
i
]
->
ModuleInfo
->
Body
.
Name
.
p
,
sizeof
(
name
)
);
new
ItemPnEnumValue
(
attrnav
,
name
,
idx
++
,
pwr_eType_UInt32
,
&
attrnav
->
device_num
,
node
,
flow_eDest_IntoLast
);
s
nprintf
(
name
,
sizeof
(
name
),
"%s (%s)"
,
(
char
*
)
item
->
ModuleInfo
->
Body
.
Name
.
p
,
item
->
ModuleInfo
->
Body
.
OrderNumber
);
new
ItemPnEnumValue
(
attrnav
,
name
,
idx
++
,
pwr_eType_UInt32
,
&
attrnav
->
device_num
,
node
,
flow_eDest_IntoLast
,
(
char
*
)
item
->
ModuleInfo
->
Body
.
InfoText
.
p
);
}
brow_SetOpen
(
node
,
attrnav_mOpen_Children
);
...
...
@@ -2232,9 +2237,8 @@ int ItemPnDevice::scan( GsdmlAttrNav *attrnav, void *p)
if
(
attrnav
->
device_num
==
0
)
strcpy
(
buf
,
"No"
);
else
{
strncpy
(
buf
,
(
char
*
)
attrnav
->
gsdml
->
ApplicationProcess
->
DeviceAccessPointList
->
DeviceAccessPointItem
[
attrnav
->
device_num
-
1
]
->
ModuleInfo
->
Body
.
Name
.
p
,
sizeof
(
buf
));
gsdml_DeviceAccessPointItem
*
item
=
attrnav
->
gsdml
->
ApplicationProcess
->
DeviceAccessPointList
->
DeviceAccessPointItem
[
attrnav
->
device_num
-
1
];
snprintf
(
buf
,
sizeof
(
buf
),
"%s (%s)"
,
(
char
*
)
item
->
ModuleInfo
->
Body
.
Name
.
p
,
item
->
ModuleInfo
->
Body
.
OrderNumber
);
}
}
brow_SetAnnotation
(
node
,
1
,
buf
,
strlen
(
buf
));
...
...
@@ -2534,7 +2538,8 @@ int ItemPnSlot::scan( GsdmlAttrNav *attrnav, void *p)
ModuleItemRef
[
slotdata
->
module_enum_number
-
1
]
->
Body
.
ModuleItemTarget
.
p
;
if
(
!
mi
||
!
mi
->
ModuleInfo
->
Body
.
Name
.
p
)
return
1
;
strncpy
(
buf
,
(
char
*
)
mi
->
ModuleInfo
->
Body
.
Name
.
p
,
sizeof
(
buf
));
snprintf
(
buf
,
sizeof
(
buf
),
"%s (%s)"
,
(
char
*
)
mi
->
ModuleInfo
->
Body
.
Name
.
p
,
mi
->
ModuleInfo
->
Body
.
OrderNumber
);
}
brow_SetAnnotation
(
node
,
1
,
buf
,
strlen
(
buf
));
old_value
=
*
(
int
*
)
p
;
...
...
@@ -3179,6 +3184,11 @@ int ItemPnInterfaceSubmodule::open_children( GsdmlAttrNav *attrnav, double x, do
pwr_eType_Boolean
,
sizeof
(
pwr_tBoolean
),
0
,
0
,
p
,
1
,
node
,
flow_eDest_IntoLast
);
p
=
(
char
*
)
&
ii
->
Body
.
DelayMeasurementSupported
;
new
ItemPnBase
(
attrnav
,
"DelayMeasurementSupported"
,
"LocalGsdmlAttr"
,
pwr_eType_Boolean
,
sizeof
(
pwr_tBoolean
),
0
,
0
,
p
,
1
,
node
,
flow_eDest_IntoLast
);
gsdml_RecordDataList
*
rl
=
ii
->
RecordDataList
;
if
(
rl
)
{
unsigned
int
record_index
=
0
;
...
...
@@ -3294,6 +3304,16 @@ int ItemPnPortSubmodule::open_children( GsdmlAttrNav *attrnav, double x, double
pwr_eType_Boolean
,
sizeof
(
pwr_tBoolean
),
0
,
0
,
p
,
1
,
node
,
flow_eDest_IntoLast
);
p
=
(
char
*
)
&
pi
->
Body
.
CheckMAUTypeSupported
;
new
ItemPnBase
(
attrnav
,
"CheckMAUTypeSupported"
,
"LocalGsdmlAttr"
,
pwr_eType_Boolean
,
sizeof
(
pwr_tBoolean
),
0
,
0
,
p
,
1
,
node
,
flow_eDest_IntoLast
);
p
=
(
char
*
)
&
pi
->
Body
.
CheckMAUTypeDifferenceSupported
;
new
ItemPnBase
(
attrnav
,
"CheckMAUTypeDifferenceSupported"
,
"LocalGsdmlAttr"
,
pwr_eType_Boolean
,
sizeof
(
pwr_tBoolean
),
0
,
0
,
p
,
1
,
node
,
flow_eDest_IntoLast
);
gsdml_RecordDataList
*
rl
=
pi
->
RecordDataList
;
if
(
rl
)
{
GsdmlDataRecord
*
dr
;
...
...
@@ -3474,7 +3494,7 @@ int ItemPnModuleType::open_children( GsdmlAttrNav *attrnav, double x, double y)
new
ItemPnEnumValueMType
(
attrnav
,
mname
,
mi
->
ModuleInfo
->
Body
.
OrderNumber
,
idx
,
pwr_eType_UInt32
,
&
attrnav
->
dev_data
.
slot_data
[
slot_idx
]
->
module_enum_number
,
node
,
flow_eDest_IntoLast
);
node
,
flow_eDest_IntoLast
,
(
char
*
)
mi
->
ModuleInfo
->
Body
.
InfoText
.
p
);
}
else
if
(
um
->
ModuleItemRef
[
i
]
->
Body
.
FixedInSlots
.
list
&&
um
->
ModuleItemRef
[
i
]
->
Body
.
FixedInSlots
.
list
->
in_list
(
slot_number
))
{
...
...
@@ -4142,7 +4162,7 @@ ItemPnParEnum::ItemPnParEnum( GsdmlAttrNav *attrnav, const char *item_name,
// Get the values and corresponding texts
gsdml_ValueItem
*
vi
=
(
gsdml_ValueItem
*
)
value_ref
->
Body
.
ValueItemTarget
.
p
;
gsdml_Valuelist
*
allowed_values
=
0
;
if
(
strcmp
(
value_ref
->
Body
.
AllowedValues
,
""
)
!=
0
)
allowed_values
=
new
gsdml_Valuelist
(
value_ref
->
Body
.
AllowedValues
);
...
...
@@ -4151,9 +4171,12 @@ ItemPnParEnum::ItemPnParEnum( GsdmlAttrNav *attrnav, const char *item_name,
for
(
unsigned
int
i
=
0
;
i
<
vi
->
Assignments
->
Assign
.
size
();
i
++
)
{
ParEnumValue
eval
;
int
num
;
num
=
sscanf
(
vi
->
Assignments
->
Assign
[
i
]
->
Body
.
Content
,
"%u"
,
&
eval
.
value
);
if
(
num
!=
1
)
continue
;
if
(
allowed_values
&&
!
allowed_values
->
in_list
(
eval
.
value
))
continue
;
...
...
@@ -4163,6 +4186,20 @@ ItemPnParEnum::ItemPnParEnum( GsdmlAttrNav *attrnav, const char *item_name,
values
.
push_back
(
eval
);
}
}
else
if
(
datatype
==
gsdml_eValueDataType_Bit
)
{
ParEnumValue
eval
;
eval
.
value
=
1
;
strncpy
(
eval
.
text
,
"On"
,
sizeof
(
eval
.
text
));
eval
.
value
<<=
bit_offset
;
values
.
push_back
(
eval
);
eval
.
value
=
0
;
strncpy
(
eval
.
text
,
"Off"
,
sizeof
(
eval
.
text
));
values
.
push_back
(
eval
);
}
if
(
allowed_values
)
delete
allowed_values
;
...
...
@@ -4218,15 +4255,12 @@ int ItemPnParEnum::open_children( GsdmlAttrNav *attrnav, double x, double y)
else
{
brow_SetNodraw
(
attrnav
->
brow
->
ctx
);
gsdml_ValueItem
*
vi
=
(
gsdml_ValueItem
*
)
value_ref
->
Body
.
ValueItemTarget
.
p
;
if
(
vi
&&
vi
->
Assignments
)
{
for
(
unsigned
int
i
=
0
;
i
<
values
.
size
();
i
++
)
{
new
ItemPnParEnumBit
(
attrnav
,
values
[
i
].
text
,
datatype
,
data
,
byte_offset
,
values
[
i
].
value
,
mask
,
noedit
,
node
,
flow_eDest_IntoLast
);
}
for
(
unsigned
int
i
=
0
;
i
<
values
.
size
();
i
++
)
{
new
ItemPnParEnumBit
(
attrnav
,
values
[
i
].
text
,
datatype
,
data
,
byte_offset
,
values
[
i
].
value
,
mask
,
noedit
,
node
,
flow_eDest_IntoLast
);
}
brow_SetOpen
(
node
,
attrnav_mOpen_Children
);
brow_SetAnnotPixmap
(
node
,
0
,
attrnav
->
brow
->
pixmap_openmap
);
brow_ResetNodraw
(
attrnav
->
brow
->
ctx
);
...
...
@@ -4973,4 +5007,4 @@ int ItemPnEnumSendClock::scan( GsdmlAttrNav *attrnav, void *p)
old_value
=
*
(
int
*
)
p
;
return
1
;
}
\ No newline at end of file
}
profibus/lib/cow/src/cow_pn_gsdml_attrnav.h
View file @
0aec4e2a
...
...
@@ -120,7 +120,7 @@ class ItemPn;
//! Class for handling of brow.
class
GsdmlAttrNavBrow
{
public:
GsdmlAttrNavBrow
(
BrowCtx
*
brow_ctx
,
void
*
xn
)
:
ctx
(
brow_ctx
),
attrnav
(
xn
)
{}
;
GsdmlAttrNavBrow
(
BrowCtx
*
brow_ctx
,
void
*
xn
)
:
ctx
(
brow_ctx
),
attrnav
(
xn
)
{}
~
GsdmlAttrNavBrow
();
BrowCtx
*
ctx
;
...
...
@@ -184,6 +184,7 @@ class GsdmlAttrNav {
pwr_tStatus
*
status
);
virtual
~
GsdmlAttrNav
();
virtual
void
display_attr_help_text
()
{}
virtual
void
set_inputfocus
()
{}
void
start_trace
(
pwr_tObjid
Objid
,
char
*
object_str
);
...
...
@@ -229,11 +230,13 @@ class GsdmlAttrNav {
class
ItemPn
{
public:
ItemPn
()
:
parent
(
0
)
{}
ItemPn
()
:
parent
(
0
),
info_text
(
0
)
{}
ItemPn
(
const
char
*
info_text
)
:
parent
(
0
),
info_text
(
info_text
)
{}
attrnav_eItemType
type
;
brow_tNode
node
;
char
name
[
120
];
int
parent
;
const
char
*
info_text
;
virtual
~
ItemPn
()
{}
...
...
@@ -269,8 +272,7 @@ class ItemPnBase : public ItemPn {
class
ItemPnEnumValue
:
public
ItemPn
{
public:
ItemPnEnumValue
(
GsdmlAttrNav
*
attrnav
,
const
char
*
item_name
,
int
item_num
,
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
);
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
,
const
char
*
info_text
=
0
);
int
num
;
int
type_id
;
void
*
value_p
;
...
...
@@ -284,9 +286,7 @@ class ItemPnEnumValue : public ItemPn {
class
ItemPnEnumValueMType
:
public
ItemPn
{
public:
ItemPnEnumValueMType
(
GsdmlAttrNav
*
attrnav
,
const
char
*
item_name
,
const
char
*
item_number
,
int
item_num
,
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
);
int
item_num
,
int
item_type_id
,
void
*
attr_value_p
,
brow_tNode
dest
,
flow_eDest
dest_code
,
const
char
*
info_text
=
0
);
int
num
;
int
type_id
;
void
*
value_p
;
...
...
@@ -686,4 +686,4 @@ class ItemPnEnumSendClock : public ItemPn {
#if defined __cplusplus
}
#endif
#endif
\ No newline at end of file
#endif
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment