Skip to content

Commit 7f1877a

Browse files
committed
Use polymorphism to obtain the correct SKU number for OPC UA.
1 parent c726189 commit 7f1877a

File tree

6 files changed

+38
-21
lines changed

6 files changed

+38
-21
lines changed

src/expansion/AnalogExpansion.cpp

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,9 +28,8 @@ AnalogExpansion::AnalogExpansion(
2828
UA_Server * server,
2929
UA_NodeId const parent_node_id,
3030
char * display_name,
31-
char * node_name,
32-
char * model_name)
33-
: Expansion(server, parent_node_id, display_name, node_name, model_name)
31+
char * node_name)
32+
: Expansion(server, parent_node_id, display_name, node_name, (char *)toSKUString().c_str())
3433
, _analog_input_mgr{opcua::AnalogInputManager::create(_server, _node_id)}
3534
, _analog_output_mgr{opcua::AnalogOutputManager::create(_server, _node_id)}
3635
, _pwm_output_mgr{opcua::PwmOutputManager::create(_server, _node_id)}
@@ -62,9 +61,7 @@ AnalogExpansion::create(
6261
char node_name[32] = {0};
6362
snprintf(node_name, sizeof(node_name), "AnaExp_%d", exp_num);
6463

65-
char model_name[] = {"AFX00007"};
66-
67-
auto const instance_ptr = std::make_shared<AnalogExpansion>(server, parent_node_id, display_name, node_name, model_name);
64+
auto const instance_ptr = std::make_shared<AnalogExpansion>(server, parent_node_id, display_name, node_name);
6865
return instance_ptr;
6966
}
7067

src/expansion/AnalogExpansion.h

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,16 @@ class AnalogExpansion : public Expansion
5050
UA_Server * server,
5151
UA_NodeId const parent_node_id,
5252
char * display_name,
53-
char * node_name,
54-
char * model_name);
53+
char * node_name);
54+
virtual ~AnalogExpansion() = default;
5555

5656

57+
virtual std::string
58+
toSKUString() const override final
59+
{
60+
return std::string("AFX00007");
61+
}
62+
5763
void
5864
add_analog_input(
5965
UA_Server * server,

src/expansion/DigitalExpansion.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ class DigitalExpansion : public Expansion
4444
char * display_name,
4545
char * node_name,
4646
char * model_name);
47-
47+
virtual ~DigitalExpansion() = default;
4848

4949
void
5050
add_analog_input(

src/expansion/DigitalMechExpansion.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ class DigitalMechExpansion : public DigitalExpansion
4444
char node_name[32] = {0};
4545
snprintf(node_name, sizeof(node_name), "DigExpSoli_%d", exp_num);
4646

47-
char model_name[] = {"AFX00005"};
48-
49-
auto const instance_ptr = std::make_shared<DigitalMechExpansion>(server, parent_node_id, display_name, node_name, model_name);
47+
auto const instance_ptr = std::make_shared<DigitalMechExpansion>(server, parent_node_id, display_name, node_name);
5048
return instance_ptr;
5149
}
5250

@@ -55,10 +53,17 @@ class DigitalMechExpansion : public DigitalExpansion
5553
UA_Server * server,
5654
UA_NodeId const parent_node_id,
5755
char * display_name,
58-
char * node_name,
59-
char * model_name)
60-
: DigitalExpansion{server, parent_node_id, display_name, node_name, model_name}
56+
char * node_name)
57+
: DigitalExpansion(server, parent_node_id, display_name, node_name, (char *)toSKUString().c_str())
6158
{}
59+
virtual ~DigitalMechExpansion() = default;
60+
61+
62+
virtual std::string
63+
toSKUString() const override final
64+
{
65+
return std::string("AFX00005");
66+
}
6267
};
6368

6469
/**************************************************************************************

src/expansion/DigitalStSolidExpansion.h

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ class DigitalStSolidExpansion : public DigitalExpansion
4444
char node_name[32] = {0};
4545
snprintf(node_name, sizeof(node_name), "DigExpSoli_%d", exp_num);
4646

47-
char model_name[] = {"AFX00006"};
48-
49-
auto const instance_ptr = std::make_shared<DigitalStSolidExpansion>(server, parent_node_id, display_name, node_name, model_name);
47+
auto const instance_ptr = std::make_shared<DigitalStSolidExpansion>(server, parent_node_id, display_name, node_name);
5048
return instance_ptr;
5149
}
5250

@@ -55,10 +53,17 @@ class DigitalStSolidExpansion : public DigitalExpansion
5553
UA_Server * server,
5654
UA_NodeId const parent_node_id,
5755
char * display_name,
58-
char * node_name,
59-
char * model_name)
60-
: DigitalExpansion{server, parent_node_id, display_name, node_name, model_name}
56+
char * node_name)
57+
: DigitalExpansion{server, parent_node_id, display_name, node_name, (char *)toSKUString().c_str()}
6158
{}
59+
virtual ~DigitalStSolidExpansion() = default;
60+
61+
62+
virtual std::string
63+
toSKUString() const override final
64+
{
65+
return std::string("AFX00006");
66+
}
6267
};
6368

6469
/**************************************************************************************

src/expansion/Expansion.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,10 @@ class Expansion
4040
char * display_name,
4141
char * node_name,
4242
char * model_name);
43+
virtual ~Expansion() = default;
44+
45+
virtual std::string
46+
toSKUString() const = 0;
4347

4448

4549
protected:

0 commit comments

Comments
 (0)