Skip to content

pvxput to NTtable does not work #137

@hjunkes

Description

@hjunkes

Describe the bug
I am trying to put into arrays in NTTable (group).

To Reproduce
Steps to reproduce the behavior:

IOC:

epics> pvxgl,3
TST:Tbl
  Atomic Get/Put:yes Atomic Members:5
  /	<meta> chan=TST:Card_ID.VAL
  labels	<plain> chan=TST:Labels_.VAL
  value.Card_ID	<plain> chan=TST:Card_ID.VAL
  value.Day	<plain> chan=TST:Day.VAL
  _save	<proc> chan=TST:Save.VAL has triggers
    /
    _save
    labels
    value.Card_ID
    value.Day

db file:

record(aai, "$(N)Labels_") {
    field(FTVL, "STRING")
    field(NELM, "2")
    field(INP , {const:["$(LBL1)", "$(LBL2)"]})
    info(Q:group, {
        "$(N)Tbl":{
            +id:"epics:nt/NTTable:1.0",
            "labels":{+type:"plain", +channel:"VAL"}
        }
    })
    field(TPRO, "1")
}

record(aao, "$(N)$(LBL1)") {
    field(FTVL, "ULONG")
    field(NELM, "1000")
    info(Q:group, {
        "$(N)Tbl":{
            "":{+type:"meta", +channel:"VAL"},
            "value.$(LBL1)":{+type:"plain", +channel:"VAL", +putorder:$(PO1)}
        }
    })
    field(TPRO, "1")
}

record(aao, "$(N)$(LBL2)") {
    field(FTVL, "ULONG")
    field(NELM, "1000")
    info(Q:group, {
        "$(N)Tbl":{
            "value.$(LBL2)":{+type:"plain", +channel:"VAL", +putorder:$(PO2)}
        }
    })
    field(TPRO, "1")
}

record(longout, "$(N)Save") {
    field(MDEL, "-1") # ensure we always trigger group monitor
    field(TPRO, "1")
    info(Q:group, {
        "$(N)Tbl":{
            "_save":{+type:"proc",
                     +channel:"VAL",
                     +putorder:2,
                     +trigger:"*"}
        }
    })
}

st.cmd:

## Load record instances
dbLoadRecords("../../db/testTable.db","N=TST:, LBL1=Card_ID, LBL2=Day, PO1=0,PO2=1")

Client:

junkes@mac darwin-aarch64 % ./pvxget TST:Tbl
TST:Tbl
    record._options.atomic bool = true
    alarm.severity int32_t = 0
    alarm.status int32_t = 0
    alarm.message string = ""
    timeStamp.secondsPastEpoch int64_t = 1760964672
    timeStamp.nanoseconds int32_t = 782255000
    timeStamp.userTag int32_t = 0
    labels string[] = {2}["Card_ID", "Day"]
    value.Card_ID uint32_t[] = {3}[12344, 1234, 2345]
    value.Day uint32_t[] = {3}[12344, 1234, 2345]

junkes@mac darwin-aarch64 % ./pvxput TST:Tbl value.Card_ID="[12345,3456,12]" value.Day="[1,2,3]"
Error St13runtime_error : Unable to assign value.Card_ID from "[12345,3456,12]"

junkes@mac darwin-aarch64 % ./pvxget TST:Tbl
TST:Tbl
    record._options.atomic bool = true
    alarm.severity int32_t = 0
    alarm.status int32_t = 0
    alarm.message string = ""
    timeStamp.secondsPastEpoch int64_t = 1760964672
    timeStamp.nanoseconds int32_t = 782255000
    timeStamp.userTag int32_t = 0
    labels string[] = {2}["Card_ID", "Day"]
    value.Card_ID uint32_t[] = {3}[12344, 1234, 2345]
    value.Day uint32_t[] = {3}[12344, 1234, 2345]

junkes@mac darwin-aarch64 % caput -a TST:Day X 1 2 3
Old : TST:Day 1000 12344 1234 2345 0 0 ...
New : TST:Day 1000 1 2 3 0 0 0 0 ...

junkes@mac darwin-aarch64 % caput -a TST:Card_ID X 21 34 23
Old : TST:Card_ID 1000 12344 1234 2345 0 0 ...
New : TST:Card_ID 1000 21 34 23 0 0 ...

junkes@mac darwin-aarch64 % ./pvxget TST:Tbl
TST:Tbl
    record._options.atomic bool = true
    alarm.severity int32_t = 0
    alarm.status int32_t = 0
    alarm.message string = ""
    timeStamp.secondsPastEpoch int64_t = 1760965474
    timeStamp.nanoseconds int32_t = 158884000
    timeStamp.userTag int32_t = 0
    labels string[] = {2}["Card_ID", "Day"]
    value.Card_ID uint32_t[] = {3}[21, 34, 23]
    value.Day uint32_t[] = {3}[1, 2, 3]

Expected behavior
To write data into the arrays ...

Information (please complete the following):

IOC :
epics> pvxsi
Host: darwin-aarch64
Target: darwin-aarch64 Darwin clang
Toolchain
__cplusplus = 201103
clang 17.0.0 (clang-1700.0.13.5)
GCC 4.2.1
_LIBCPP_VERSION 200100
Versions
PVXS 1.4.1 (1.4.1-4-g4249885f8e8c1b04c9ce)
EPICS 7.0.9.1-DEV
libevent 2.1.12-stable
Runtime
uname() -> Darwin mac.rz-berlin.mpg.de 25.0.0 Darwin Kernel Version 25.0.0: Wed Sep 17 21:35:32 PDT 2025; root:xnu-12377.1.9~141/RELEASE_ARM64_T6020 arm64
epicsThreadGetCPUs() -> 12
osiLocalAddr() -> 172.16.33.52
osiSockDiscoverBroadcastAddresses() ->
172.16.35.255
192.168.105.255
Effective Client config from environment
EPICS_PVA_ADDR_LIST=172.16.35.255 192.168.105.255
EPICS_PVA_AUTO_ADDR_LIST=NO
EPICS_PVA_BROADCAST_PORT=5076
EPICS_PVA_CONN_TMO=30
EPICS_PVA_INTF_ADDR_LIST=0.0.0.0
EPICS_PVA_NAME_SERVERS=
EPICS_PVA_SERVER_PORT=5075
Effective Server config from environment
EPICS_PVAS_AUTO_BEACON_ADDR_LIST=NO
EPICS_PVAS_BEACON_ADDR_LIST=172.16.35.255 192.168.105.255
EPICS_PVAS_BROADCAST_PORT=5076
EPICS_PVAS_IGNORE_ADDR_LIST=
EPICS_PVAS_INTF_ADDR_LIST=0.0.0.0
EPICS_PVAS_SERVER_PORT=5075

Additional context
Same behaviour on other target systems like linux etc.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions