Connection – NC_PAS
(NC 100BB0|NC1017185879E 00000000005 06 )
MsgList = ({NC 100BB0} {NC1017185879E 00000000005 06 })
List length = 2
MsgData = (NC 100BB0)
{outdata {literal {NC 100BB0}}} {outbuffsequ {literal 001}} {outtransequ {literal 001}} {outeor {literal NLS}}
{ok write.getResponse} {error write.error} {timeout {10000 write.timeout}}
MsgData = (NC1017185879E 00000000005 06 )
{outdata {literal {NC1017185879E 00000000005 06 }}} {outbuffsequ {literal 002}} {outtransequ {literal 001}} {outeor {literal END}}
{ok write.getResponse} {error write.error} {timeout {10000 write.timeout}}
06/22/2009 11:54:39
[pdl :PDL :ERR /0: NC_PAS] assertion violated: ARGC == *pc++
06/22/2009 11:54:39
[pdl :PDL :ERR /0: NC_PAS] in pdl.cpp:1027
06/22/2009 11:54:39
[pdl :PDL :ERR /0: NC_PAS] Wrong number args to PDL function
06/22/2009 11:54:39
[pdl :PDL :ERR /0: NC_PAS] PDL signaled exception: code -1, msg PDL error: Wrong number args to PDL function
The part of the pdl that processes these segments is as follows:
proc hci_pd.write { info } {
global Transaction TranSequence BuffSequence TranSequence MsgContent NLSEND segcount segheader seg1 seg2 seg3 segsub
keylget info message MsgId ; # Read The Message Handle
set MsgList [split [msgget $MsgId] |] ; # Read The Message Data
echo “MsgList = ($MsgList)”
set segcount [llength $MsgList]
echo “List length = $segcount”
incr TranSequence
if {$TranSequence > 999} {set TranSequence 1}
#set BuffSequence 0
foreach MsgData $MsgList {
echo “MsgData = ($MsgData)”
incr BuffSequence
set tsequ [format “%03d” $TranSequence]
set bsequ [format “%03d” $BuffSequence]
if {$BuffSequence == $segcount} {
set NLSEND END
set BuffSequence 0
} {
set NLSEND NLS
}
set MsgContent
] ; # Message to data
lappend MsgContent
; # Sequence within Transaction
lappend MsgContent
; # Rolling Transaction Number
lappend MsgContent
; # Literal END or NLS
write.data
}
}
Whenever there is only one segment i.e. no pipe, there is no error. Where have I gone wrong? Is it my attempt to write data multiple times?