Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
S
sdptr
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Requirements
Jira
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Locked files
Build
Pipelines
Jobs
Pipeline schedules
Test cases
Artifacts
Deploy
Releases
Package registry
Container registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Code review analytics
Issue analytics
Insights
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
GitLab community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
Corné Lukken
sdptr
Commits
ddea3fd6
Commit
ddea3fd6
authored
Jan 29, 2021
by
Kenneth Hiemstra
Browse files
Options
Downloads
Patches
Plain Diff
changed to 16 fpgas, removed unbN/pnM from opcua
parent
309e8a05
No related branches found
No related tags found
No related merge requests found
Changes
5
Show whitespace changes
Inline
Side-by-side
Showing
5 changed files
src/fpga.cpp
+16
-0
16 additions, 0 deletions
src/fpga.cpp
src/fpga.h
+2
-0
2 additions, 0 deletions
src/fpga.h
src/opcua/ua_server.cpp
+94
-152
94 additions, 152 deletions
src/opcua/ua_server.cpp
src/registers.h
+5
-4
5 additions, 4 deletions
src/registers.h
src/uniboard.conf
+24
-24
24 additions, 24 deletions
src/uniboard.conf
with
141 additions
and
180 deletions
src/fpga.cpp
+
16
−
0
View file @
ddea3fd6
...
...
@@ -48,10 +48,21 @@ using namespace std;
Fpga
::
Fpga
(
list
<
class
Node
*>&
nodelist
)
{
FPGA
=
nodelist
;
pointMap
=
new
RegisterMap
();
// Add points:
pointMap
->
add_register
(
"fpga_mask_R"
,
0
,
16
,
0xffffffff
,
0
,
"RO"
,
"COMP"
,
0
,
REG_FORMAT_BOOLEAN
);
pointMap
->
add_register
(
"fpga_mask_RW"
,
0
,
16
,
0xffffffff
,
0
,
"RW"
,
"COMP"
,
0
,
REG_FORMAT_BOOLEAN
);
pointMap
->
add_register
(
"fpga_status_R"
,
0
,
16
,
0xffffffff
,
0
,
"RO"
,
"COMP"
,
0
,
REG_FORMAT_BOOLEAN
);
pointMap
->
add_register
(
"fpga_temp_R"
,
0
,
16
,
0xffffffff
,
0
,
"RO"
,
"COMP"
,
0
,
REG_FORMAT_FLOAT
);
pointMap
->
add_register
(
"fpga_version_R"
,
0
,
16
,
0xffffffff
,
0
,
"RO"
,
"COMP"
,
0
,
REG_FORMAT_STRING
);
pointMap
->
add_register
(
"fpga_scrap_R"
,
0
,
16
,
0xffffffff
,
0
,
"RO"
,
"COMP"
,
0
,
REG_FORMAT_INTEGER
);
pointMap
->
add_register
(
"fpga_scrap_RW"
,
0
,
16
,
0xffffffff
,
0
,
"RW"
,
"COMP"
,
0
,
REG_FORMAT_INTEGER
);
}
Fpga
::~
Fpga
()
{
if
(
pointMap
!=
NULL
)
delete
pointMap
;
}
Node
*
Fpga
::
select_node
(
const
int
nr
)
...
...
@@ -85,6 +96,11 @@ uint Fpga::node_number(Node *node)
return
(
node
->
GetUniboardNr
()
*
4
)
+
node
->
GetLocalNr
();
}
RegisterMap
*
Fpga
::
get_pointMap
(
void
)
{
return
pointMap
;
}
bool
Fpga
::
point
(
const
uint
clientId
,
TermOutput
&
termout
,
const
char
cmd
,
const
string
addr
,
const
uint
offs
,
std
::
vector
<
unsigned
int
>&
data
,
const
int
len
)
{
...
...
This diff is collapsed.
Click to expand it.
src/fpga.h
+
2
−
0
View file @
ddea3fd6
...
...
@@ -36,6 +36,7 @@ class Fpga
{
private:
list
<
class
Node
*>
FPGA
;
RegisterMap
*
pointMap
;
public:
Fpga
(
std
::
list
<
class
Node
*>&
nodelist
);
...
...
@@ -46,6 +47,7 @@ public:
Node
*
select_node
(
const
int
nr
);
std
::
vector
<
int
>
get_all_nodes
(
void
);
std
::
vector
<
bool
>
get_all_enabled_nodes
(
void
);
RegisterMap
*
get_pointMap
(
void
);
uint
node_number
(
Node
*
node
);
bool
is_fpga
(
const
std
::
string
addr
);
};
...
...
This diff is collapsed.
Click to expand it.
src/opcua/ua_server.cpp
+
94
−
152
View file @
ddea3fd6
...
...
@@ -115,8 +115,6 @@ static void beforeReadArrayWeights(UA_Server *server,
const
UA_NumericRange
*
range
,
const
UA_DataValue
*
data
)
{
string
node_str
=
"weights"
;
// UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "beforeReadArrayWeights: %s", (char *)node_str.c_str());
//update_UNB_Variable(server, string(node_str));
}
static
void
afterWriteArrayWeights
(
UA_Server
*
server
,
...
...
@@ -207,24 +205,25 @@ static void addValueCallbackTo_BAND_Variable(UA_Server *server, std::string regn
UA_Server_setVariableNode_valueCallback
(
server
,
currentNodeId
,
callback
);
}
static
void
add_BAND_Variable
(
UA_Server
*
server
,
std
::
string
regname
)
static
void
add_BAND_Variable_string
(
UA_Server
*
server
,
std
::
string
regname
,
unsigned
int
size
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_BAND_Variable: %s"
,
(
char
*
)
regname
.
c_str
());
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_BAND_Variable
_string
: %s"
,
(
char
*
)
regname
.
c_str
());
UA_VariableAttributes
vattr
=
UA_VariableAttributes_default
;
const
size_t
array_size
=
32
;
// FIXME 32...
//UA_Int32 *values = (UA_Int32 *) UA_Array_new(array_size, &UA_TYPES[UA_TYPES_INT32]);
UA_Float
*
values
=
(
UA_Float
*
)
UA_Array_new
(
array_size
,
&
UA_TYPES
[
UA_TYPES_FLOAT
]);
for
(
int
i
=
0
;
i
<
array_size
;
i
++
)
{
values
[
i
]
=
UA_Float
(
0.0
);
}
static
void
add_BAND_Variable_integer
(
UA_Server
*
server
,
std
::
string
regname
,
unsigned
int
size
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_BAND_Variable_integer: %s"
,
(
char
*
)
regname
.
c_str
());
UA_VariableAttributes
vattr
=
UA_VariableAttributes_default
;
UA_Int32
*
values
=
(
UA_Int32
*
)
UA_Array_new
(
size
,
&
UA_TYPES
[
UA_TYPES_INT32
]);
for
(
unsigned
int
i
=
0
;
i
<
size
;
i
++
)
{
values
[
i
]
=
UA_Int32
(
0
);
}
UA_Variant_setArray
(
&
vattr
.
value
,
values
,
array_
size
,
&
UA_TYPES
[
UA_TYPES_
FLOAT
]);
UA_Variant_setArray
(
&
vattr
.
value
,
values
,
size
,
&
UA_TYPES
[
UA_TYPES_
INT32
]);
vattr
.
accessLevel
=
UA_ACCESSLEVELMASK_READ
|
UA_ACCESSLEVELMASK_WRITE
;
vattr
.
valueRank
=
UA_VALUERANK_ONE_DIMENSION
;
vattr
.
dataType
=
UA_TYPES
[
UA_TYPES_
FLOAT
].
typeId
;
UA_UInt32
myArrayDimensions
[
1
]
=
{
array_
size
};
vattr
.
dataType
=
UA_TYPES
[
UA_TYPES_
INT32
].
typeId
;
UA_UInt32
myArrayDimensions
[
1
]
=
{
size
};
vattr
.
arrayDimensions
=
myArrayDimensions
;
vattr
.
arrayDimensionsSize
=
1
;
...
...
@@ -240,133 +239,89 @@ static void add_BAND_Variable(UA_Server *server, std::string regname)
// handle error
printf
(
"Error adding node"
);
}
// clean up
//UA_Array_delete(values, array_size, &UA_TYPES[UA_TYPES_STRING]);
}
// for test:
static
void
updateVariable
(
UA_Server
*
server
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"updateVariable()"
);
UA_Int32
my_integer
=
30
;
// FIXME: this is example code, remove later
UA_Variant
value
;
UA_Variant_setScalar
(
&
value
,
&
my_integer
,
&
UA_TYPES
[
UA_TYPES_INT32
]);
UA_NodeId
currentNodeId
=
UA_NODEID_STRING
(
1
,
(
char
*
)
"sensors"
);
UA_Server_writeValue
(
server
,
currentNodeId
,
value
);
}
// for test:
static
void
addVariable
(
UA_Server
*
server
)
static
void
add_BAND_Variable_float
(
UA_Server
*
server
,
std
::
string
regname
,
unsigned
int
size
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"addVariable()"
);
/* Define the attribute of the myInteger variable node */
UA_VariableAttributes
attr
=
UA_VariableAttributes_default
;
UA_Int32
myInteger
=
42
;
// FIXME: this is example code, remove later
UA_Variant_setScalar
(
&
attr
.
value
,
&
myInteger
,
&
UA_TYPES
[
UA_TYPES_INT32
]);
attr
.
description
=
UA_LOCALIZEDTEXT
((
char
*
)
"en-US"
,(
char
*
)
"sensors"
);
attr
.
displayName
=
UA_LOCALIZEDTEXT
((
char
*
)
"en-US"
,(
char
*
)
"sensors"
);
attr
.
dataType
=
UA_TYPES
[
UA_TYPES_INT32
].
typeId
;
attr
.
accessLevel
=
UA_ACCESSLEVELMASK_READ
|
UA_ACCESSLEVELMASK_WRITE
;
/* Add the variable node to the information model */
UA_NodeId
myIntegerNodeId
=
UA_NODEID_STRING
(
1
,
(
char
*
)
"sensors"
);
UA_QualifiedName
myIntegerName
=
UA_QUALIFIEDNAME
(
1
,
(
char
*
)
"sensors"
);
UA_NodeId
parentNodeId
=
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_OBJECTSFOLDER
);
UA_NodeId
parentReferenceNodeId
=
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_ORGANIZES
);
UA_Server_addVariableNode
(
server
,
myIntegerNodeId
,
parentNodeId
,
parentReferenceNodeId
,
myIntegerName
,
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_BASEDATAVARIABLETYPE
),
attr
,
NULL
,
NULL
);
updateVariable
(
server
);
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_BAND_Variable_float: %s"
,
(
char
*
)
regname
.
c_str
());
UA_VariableAttributes
vattr
=
UA_VariableAttributes_default
;
UA_Float
*
values
=
(
UA_Float
*
)
UA_Array_new
(
size
,
&
UA_TYPES
[
UA_TYPES_FLOAT
]);
for
(
unsigned
int
i
=
0
;
i
<
size
;
i
++
)
{
values
[
i
]
=
UA_Float
(
0.0
);
}
UA_Variant_setArray
(
&
vattr
.
value
,
values
,
size
,
&
UA_TYPES
[
UA_TYPES_FLOAT
]);
vattr
.
accessLevel
=
UA_ACCESSLEVELMASK_READ
|
UA_ACCESSLEVELMASK_WRITE
;
vattr
.
valueRank
=
UA_VALUERANK_ONE_DIMENSION
;
vattr
.
dataType
=
UA_TYPES
[
UA_TYPES_FLOAT
].
typeId
;
UA_UInt32
myArrayDimensions
[
1
]
=
{
size
};
static
void
update_UNB_Variable
(
UA_Server
*
server
,
std
::
string
regname
)
{
// UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "update_UNB_Variable: %s", (char *)regname.c_str());
CMD
Cmd
;
string
cmdname
=
""
;
CMDstatus
cmdstatus
=
{
CMD_STATUS_OK
,
0
,
0
};
CMDstatus
cmdstatusnew
=
cmdstatus
;
TermOutput
termout
;
uint
UNB_client_ID
=
c_CLIENT_ID_UASERVER
;
while
(
!
SD
.
control_mutex
[
UNB_client_ID
].
try_lock
())
{
cerr
<<
"uaserver: mutex not ready
\n
"
;
usleep
(
100000
);
}
try
{
string
input_cmd_str
=
"read "
+
regname
;
cmdstatusnew
=
Cmd
.
command
(
UNB_client_ID
,
input_cmd_str
,
termout
,
cmdname
,
&
SD
);
if
(
cmdstatusnew
.
status
!=
CMD_EMPTY
)
cmdstatus
=
cmdstatusnew
;
}
catch
(
runtime_error
&
e
)
{
cerr
<<
"update_UNB_Variable: "
<<
e
.
what
()
<<
endl
;
termout
.
strout
<<
e
.
what
();
vattr
.
arrayDimensions
=
myArrayDimensions
;
vattr
.
arrayDimensionsSize
=
1
;
vattr
.
displayName
=
UA_LOCALIZEDTEXT
((
char
*
)
"locale"
,
(
char
*
)
regname
.
c_str
());
UA_StatusCode
retval
=
UA_Server_addVariableNode
(
server
,
UA_NODEID_STRING
(
1
,
(
char
*
)
regname
.
c_str
()),
// new node id
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_OBJECTSFOLDER
),
// parent node
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_ORGANIZES
),
// reference type
UA_QUALIFIEDNAME
(
1
,
(
char
*
)
regname
.
c_str
()),
// node browse name
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_BASEDATAVARIABLETYPE
),
vattr
,
NULL
,
NULL
);
if
(
retval
!=
UA_STATUSCODE_GOOD
)
{
// handle error
printf
(
"Error adding node"
);
}
SD
.
control_mutex
[
UNB_client_ID
].
unlock
();
UA_String
str
=
UA_STRING_ALLOC
((
char
*
)
p_termout
(
termout
).
c_str
());
UA_Variant
value
;
UA_Variant_setScalar
(
&
value
,
&
str
,
&
UA_TYPES
[
UA_TYPES_STRING
]);
UA_NodeId
currentNodeId
=
UA_NODEID_STRING
(
1
,
(
char
*
)
regname
.
c_str
());
UA_Server_writeValue
(
server
,
currentNodeId
,
value
);
// clean up
//UA_Array_delete(values, array_size, &UA_TYPES[UA_TYPES_STRING]);
}
static
void
add_UNB_Variable
(
UA_Server
*
server
,
std
::
string
regname
)
static
void
add_BAND_Variable_boolean
(
UA_Server
*
server
,
std
::
string
regname
,
unsigned
int
size
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_UNB_Variable: %s"
,
(
char
*
)
regname
.
c_str
());
UA_String
str
=
UA_STRING_ALLOC
((
char
*
)
"Hello UNB"
);
// FIXME: clear afterwards?
UA_VariableAttributes
attr
=
UA_VariableAttributes_default
;
attr
.
displayName
=
UA_LOCALIZEDTEXT
((
char
*
)
"en-US"
,
(
char
*
)
regname
.
c_str
());
attr
.
accessLevel
=
UA_ACCESSLEVELMASK_READ
|
UA_ACCESSLEVELMASK_WRITE
;
attr
.
dataType
=
UA_TYPES
[
UA_TYPES_STRING
].
typeId
;
UA_Variant_setScalar
(
&
attr
.
value
,
&
str
,
&
UA_TYPES
[
UA_TYPES_STRING
]);
UA_NodeId
currentNodeId
=
UA_NODEID_STRING
(
1
,
(
char
*
)
regname
.
c_str
());
UA_QualifiedName
currentName
=
UA_QUALIFIEDNAME
(
1
,
(
char
*
)
regname
.
c_str
());
UA_NodeId
parentNodeId
=
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_OBJECTSFOLDER
);
UA_NodeId
parentReferenceNodeId
=
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_ORGANIZES
);
UA_NodeId
variableTypeNodeId
=
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_BASEDATAVARIABLETYPE
);
UA_Server_addVariableNode
(
server
,
currentNodeId
,
parentNodeId
,
parentReferenceNodeId
,
currentName
,
variableTypeNodeId
,
attr
,
NULL
,
NULL
);
//update_UNB_Variable(server, regname); // this causes "mutex not ready" fix?
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"add_BAND_Variable_boolean: %s"
,
(
char
*
)
regname
.
c_str
());
UA_VariableAttributes
vattr
=
UA_VariableAttributes_default
;
UA_Boolean
*
values
=
(
UA_Boolean
*
)
UA_Array_new
(
size
,
&
UA_TYPES
[
UA_TYPES_BOOLEAN
]);
for
(
unsigned
int
i
=
0
;
i
<
size
;
i
++
)
{
values
[
i
]
=
UA_Boolean
(
false
);
}
static
void
beforeReadUNB
(
UA_Server
*
server
,
const
UA_NodeId
*
sessionId
,
void
*
sessionContext
,
const
UA_NodeId
*
nodeid
,
void
*
nodeContext
,
const
UA_NumericRange
*
range
,
const
UA_DataValue
*
data
)
{
// (why is it so hard to get the nodeid?)
char
*
node_str
=
new
char
[
nodeid
->
identifier
.
string
.
length
+
1
];
memcpy
((
void
*
)
node_str
,
(
void
*
)
nodeid
->
identifier
.
string
.
data
,
nodeid
->
identifier
.
string
.
length
);
node_str
[
nodeid
->
identifier
.
string
.
length
]
=
0
;
// add end of string char
UA_Variant_setArray
(
&
vattr
.
value
,
values
,
size
,
&
UA_TYPES
[
UA_TYPES_BOOLEAN
]);
vattr
.
accessLevel
=
UA_ACCESSLEVELMASK_READ
|
UA_ACCESSLEVELMASK_WRITE
;
vattr
.
valueRank
=
UA_VALUERANK_ONE_DIMENSION
;
vattr
.
dataType
=
UA_TYPES
[
UA_TYPES_BOOLEAN
].
typeId
;
UA_UInt32
myArrayDimensions
[
1
]
=
{
size
};
//UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "beforeReadUNB: %s", node_str);
update_UNB_Variable
(
server
,
string
(
node_str
));
delete
[]
node_str
;
vattr
.
arrayDimensions
=
myArrayDimensions
;
vattr
.
arrayDimensionsSize
=
1
;
vattr
.
displayName
=
UA_LOCALIZEDTEXT
((
char
*
)
"locale"
,
(
char
*
)
regname
.
c_str
());
UA_StatusCode
retval
=
UA_Server_addVariableNode
(
server
,
UA_NODEID_STRING
(
1
,
(
char
*
)
regname
.
c_str
()),
// new node id
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_OBJECTSFOLDER
),
// parent node
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_ORGANIZES
),
// reference type
UA_QUALIFIEDNAME
(
1
,
(
char
*
)
regname
.
c_str
()),
// node browse name
UA_NODEID_NUMERIC
(
0
,
UA_NS0ID_BASEDATAVARIABLETYPE
),
vattr
,
NULL
,
NULL
);
if
(
retval
!=
UA_STATUSCODE_GOOD
)
{
// handle error
printf
(
"Error adding node"
);
}
static
void
afterWriteUNB
(
UA_Server
*
server
,
const
UA_NodeId
*
sessionId
,
void
*
sessionContext
,
const
UA_NodeId
*
nodeId
,
void
*
nodeContext
,
const
UA_NumericRange
*
range
,
const
UA_DataValue
*
data
)
{
//UA_LOG_INFO(UA_Log_Stdout, UA_LOGCATEGORY_USERLAND, "afterWriteUNB: The variable was updated"); // TODO
}
static
void
add
ValueCallbackTo_UNB
_Variable
(
UA_Server
*
server
,
std
::
string
regname
)
static
void
add
_BAND
_Variable
(
UA_Server
*
server
,
std
::
string
regname
,
int
format
,
unsigned
int
size
)
{
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"addValueCallbackTo_UNB_Variable: %s"
,
(
char
*
)
regname
.
c_str
());
UA_NodeId
currentNodeId
=
UA_NODEID_STRING
(
1
,
(
char
*
)
regname
.
c_str
());
UA_ValueCallback
callback
;
callback
.
onRead
=
beforeReadUNB
;
callback
.
onWrite
=
afterWriteUNB
;
UA_Server_setVariableNode_valueCallback
(
server
,
currentNodeId
,
callback
);
switch
(
format
)
{
case
REG_FORMAT_STRING
:
add_BAND_Variable_string
(
server
,
regname
,
size
);
break
;
case
REG_FORMAT_INTEGER
:
add_BAND_Variable_integer
(
server
,
regname
,
size
);
break
;
case
REG_FORMAT_FLOAT
:
add_BAND_Variable_float
(
server
,
regname
,
size
);
break
;
case
REG_FORMAT_BOOLEAN
:
add_BAND_Variable_boolean
(
server
,
regname
,
size
);
break
;
default:
return
;
// nothing
}
}
...
...
@@ -383,22 +338,8 @@ int ua_server_init(bool warm_start)
UA_LOG_INFO
(
UA_Log_Stdout
,
UA_LOGCATEGORY_USERLAND
,
"UA Server add nodes"
);
addArrayWeights
(
mUaServer
);
addValueCallbackTo_ArrayWeights
(
mUaServer
);
addVariable
(
mUaServer
);
uint
nodeid
=
1
;
for
(
auto
node
:
nodes
)
{
RegisterMap
*
regmap
=
SD
.
unb
->
get_RegisterMap
(
node
);
std
::
string
prefix
=
SD
.
unb
->
string_node_id
(
node
);
std
::
vector
<
std
::
string
>
regnames
=
regmap
->
getRegnames
(
prefix
);
for
(
auto
m
:
regnames
)
{
//add_UNB_Method(mUaServer, m, nodeid);
add_UNB_Variable
(
mUaServer
,
m
);
addValueCallbackTo_UNB_Variable
(
mUaServer
,
m
);
nodeid
++
;
}
}
std
::
vector
<
int
>
bands
=
SD
.
unb
->
get_bands
();
for
(
auto
band
:
bands
)
{
...
...
@@ -407,23 +348,24 @@ int ua_server_init(bool warm_start)
std
::
string
prefix
=
SD
.
unb
->
string_band_id
(
band
);
std
::
vector
<
std
::
string
>
regnames
=
applicationmap
->
getRegnames
(
prefix
);
for
(
auto
m
:
regnames
)
{
add_BAND_Variable
(
mUaServer
,
m
);
int
format
=
applicationmap
->
getFormat
(
m
);
unsigned
int
size
=
applicationmap
->
getSpan
(
m
);
add_BAND_Variable
(
mUaServer
,
m
,
format
,
size
);
addValueCallbackTo_BAND_Variable
(
mUaServer
,
m
);
nodeid
++
;
}
}
std
::
string
regname
=
"fpga_temp_R"
;
add_BAND_Variable
(
mUaServer
,
regname
);
addValueCallbackTo_BAND_Variable
(
mUaServer
,
regname
);
regname
=
"fpga_mask_R"
;
add_BAND_Variable
(
mUaServer
,
regname
);
addValueCallbackTo_BAND_Variable
(
mUaServer
,
regname
);
regname
=
"fpga_status_R"
;
add_BAND_Variable
(
mUaServer
,
regname
);
addValueCallbackTo_BAND_Variable
(
mUaServer
,
regname
);
RegisterMap
*
pointmap
=
SD
.
unb
->
get_pointMap
();
std
::
vector
<
std
::
string
>
regnames
=
pointmap
->
getRegnames
(
""
);
for
(
auto
m
:
regnames
)
{
int
format
=
pointmap
->
getFormat
(
m
);
unsigned
int
size
=
pointmap
->
getSpan
(
m
);
add_BAND_Variable
(
mUaServer
,
m
,
format
,
size
);
addValueCallbackTo_BAND_Variable
(
mUaServer
,
m
);
nodeid
++
;
}
return
0
;
}
...
...
This diff is collapsed.
Click to expand it.
src/registers.h
+
5
−
4
View file @
ddea3fd6
...
...
@@ -27,8 +27,9 @@
#define REG_ADDR_ROM_SYSTEM_SPAN (8192)
#define REG_FORMAT_STRING 0
#define REG_FORMAT_INT
1
#define REG_FORMAT_INT
EGER
1
#define REG_FORMAT_FLOAT 2
#define REG_FORMAT_BOOLEAN 3
class
RegisterMap
{
...
...
@@ -41,7 +42,7 @@ class RegisterMap {
std
::
string
access
;
std
::
string
type
;
uint32_t
instance
;
u
int
32_t
format
;
int
format
;
}
register_info
;
std
::
map
<
std
::
string
,
register_info
>
reg
;
...
...
This diff is collapsed.
Click to expand it.
src/uniboard.conf
+
24
−
24
View file @
ddea3fd6
# Configuration file for
sdpunb
# Configuration file for
band0 (low band)
# the following nodes are contributing
# NODE config:
...
...
@@ -28,26 +28,26 @@ node 13 10.99.2.14 unb2b_minimal 2 0
node
14
10
.
99
.
2
.
15
unb2b_minimal
2
0
node
15
10
.
99
.
2
.
16
unb2b_minimal
2
0
# UNB 4
node
16
10
.
99
.
2
.
17
unb2b_minimal
2
0
node
17
10
.
99
.
2
.
18
unb2b_minimal
2
0
node
18
10
.
99
.
2
.
19
unb2b_minimal
2
0
node
19
10
.
99
.
2
.
20
unb2b_minimal
2
0
# UNB 5
node
20
10
.
99
.
2
.
21
unb2b_minimal
2
0
node
21
10
.
99
.
2
.
22
unb2b_minimal
2
0
node
22
10
.
99
.
2
.
23
unb2b_minimal
2
0
node
23
10
.
99
.
2
.
24
unb2b_minimal
2
0
# UNB 6
node
24
10
.
99
.
2
.
25
unb2b_minimal
2
0
node
25
10
.
99
.
2
.
26
unb2b_minimal
2
0
node
26
10
.
99
.
2
.
27
unb2b_minimal
2
0
node
27
10
.
99
.
2
.
28
unb2b_minimal
2
0
# UNB 7
node
28
10
.
99
.
2
.
29
unb2b_minimal
2
0
node
29
10
.
99
.
2
.
30
unb2b_minimal
2
0
node
30
10
.
99
.
2
.
31
unb2b_minimal
2
0
node
31
10
.
99
.
2
.
32
unb2b_minimal
2
0
#
# UNB 4
#
node 16 10.99.2.17 unb2b_minimal 2 0
#
node 17 10.99.2.18 unb2b_minimal 2 0
#
node 18 10.99.2.19 unb2b_minimal 2 0
#
node 19 10.99.2.20 unb2b_minimal 2 0
#
#
# UNB 5
#
node 20 10.99.2.21 unb2b_minimal 2 0
#
node 21 10.99.2.22 unb2b_minimal 2 0
#
node 22 10.99.2.23 unb2b_minimal 2 0
#
node 23 10.99.2.24 unb2b_minimal 2 0
#
#
# UNB 6
#
node 24 10.99.2.25 unb2b_minimal 2 0
#
node 25 10.99.2.26 unb2b_minimal 2 0
#
node 26 10.99.2.27 unb2b_minimal 2 0
#
node 27 10.99.2.28 unb2b_minimal 2 0
#
#
# UNB 7
#
node 28 10.99.2.29 unb2b_minimal 2 0
#
node 29 10.99.2.30 unb2b_minimal 2 0
#
node 30 10.99.2.31 unb2b_minimal 2 0
#
node 31 10.99.2.32 unb2b_minimal 2 0
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment