needing some pdl guidance no-match: no more phrases to try

Clovertech Forums Read Only Archives Cloverleaf Cloverleaf needing some pdl guidance no-match: no more phrases to try

  • Creator
    Topic
  • #55767
    Nancy McDaniel
    Participant

      This is in regards to an existing adt interface to a client.  It has been in place for years before I started working for this company this year.  I have been cleaning up errors in the process logs.  

      errors:

      match phrase basic-msg rejected

      no-match: no more phrases to try

      this is my last one and I need some guidance from folks who have modified pdls  on how to handle this.   the pdl used is the standard mlp_tcp.pdl shipped by cloverleaf.

      We know we probably need to create a copy of this for this client and tweak that copy to resolve this year.

      I turned on enable all to see what they are sending – see below.  

      you can see we get two bytes before we ever get the ack

      [0.0.21198800] Writing message succeeded

      [pd  :pdtd:INFO/0:    storz_out:08/16/2018 10:34:39] NOW AWAITING A REPLY!

      [pd  :pdtd:INFO/3:    storz_out:08/16/2018 10:34:39] Thread(adt2_in) will expect incoming reply

      [diag:leak:DBUG/0:    storz_out:08/16/2018 10:34:39] diag ev alloc 0x0x7fe1505baa30

      [diag:leak:DBUG/0:    storz_out:08/16/2018 10:34:39] diag dqe alloc 0x0x7fe150655e20

      [pti :even:DBUG/0:    storz_out:08/16/2018 10:34:39] tiRegistering TIMER () event 0x0x7fe1505baa30 for tid 2

      [pti :even:DBUG/0:    storz_out:08/16/2018 10:34:39] evRegistering TIMER () event 0x0x7fe1505baa30 for tid 2

      [dbi :elog:DBUG/3:    storz_out:08/16/2018 10:34:39] [0.0.21198820] Looking for mid in error db

      [dbi :rlog:DBUG/3:    storz_out:08/16/2018 10:34:39] [0.0.21198820] Looking for mid in recovery db

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘cl_keyfindlock: About to do d_keylock’

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (1000) ‘cl_keyfindlock: About to do d_keyfind, keyval:’

      [msg :Mid :DBUG/3:    storz_out:08/16/2018 10:34:39] Assigned mid [0.0.21198820] to msg 0x7fe15c032b50

      [msg :Msg :DBUG/0:    storz_out:08/16/2018 10:34:39] msg_Alloc new message 0x0x7fe15c032b50

      [msg :Msg :DBUG/0:    storz_out:08/16/2018 10:34:39] msgCopy from 0x0x7fe15c033750 [0.0.21198800]  to 0x0x7fe15c032b50 [0.0.21198820]

      [pd  :pdtd:INFO/1:    storz_out:08/16/2018 10:34:39] [0.0.21198800] Latencies: Outbound 0.044, Que 0.041, Total 0.074 secs

      [dbi :rlog:INFO/1:    storz_out:08/16/2018 10:34:39] [0.0.21198800] Update msg in recovery db to state OB delivered OK

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39] log context: type 1, dbn 1, msgRec 10001, mdRec 10002, bodyRec 10003

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39]              state 14, mode 1

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘cl_lock: Trying to lock database ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘ENGINE=w, rec=10001

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (1) ‘ENGINE=w, rec=10002

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (2) ‘ENGINE=w, rec=10003

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘cl_lock: Succeeded in locking database ‘

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39] update var MD, upd 1, dirty 0

      [pd  :thrd:INFO/0:    storz_out:08/16/2018 10:34:39] [0.0.21198800] Invoking SENDOK

      [dbi :rlog:INFO/1:    storz_out:08/16/2018 10:34:39] [0.0.21198800] Update msg in recovery db to state OB reserved for IB Reply

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39] log context: type 1, dbn 1, msgRec 10001, mdRec 10002, bodyRec 10003

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39]              state 16, mode 1

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘cl_lock: Trying to lock database ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘ENGINE=w, rec=10001

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (1) ‘ENGINE=w, rec=10002

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (2) ‘ENGINE=w, rec=10003

      [dbi :dbi :DBUG/1:    storz_out:–/–/—- –:–:–] ‘

      [dbi :dbi :DBUG/1:    storz_out:08/16/2018 10:34:39] (0) ‘cl_lock: Succeeded in locking database ‘

      [dbi :log :DBUG/2:    storz_out:08/16/2018 10:34:39] update var MD, upd 1, dirty 0

      [pti :sche:INFO/1:    storz_out:08/16/2018 10:34:39] Thread has 0 ready events left.

      [pti :sche:DBUG/2:    storz_out:08/16/2018 10:34:39] Thread 2 has been enabled

      [pti :sche:INFO/1:    storz_out:08/16/2018 10:34:39] Thread has 1 ready events.

      [pti :even:DBUG/0:    storz_out:08/16/2018 10:34:39] Processing SOCKET (PDL server) event 0x0x7fe150798ed0

      [pti :even:DBUG/1:    storz_out:08/16/2018 10:34:39] Calling cb 0x553106

      [pdl :read:DBUG/2:    storz_out:08/16/2018 10:34:39] Events: E 0, R 8, W 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] read 2 bytes

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] input buffer accepted 2 bytes, now 2

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  00 2d                     |.-|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] IDLE and 2 bytes but no error: starting READ

      [pdl :PDL :DBUG/2:    storz_out:08/16/2018 10:34:39] PDL changed states: old 0, new 1

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Calling Tcl procedure: hci_pd.read

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] with args: {}

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Tcl procedure hci_pd.read returns ‘RECEIVE’

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] trying to match phrase: basic-msg

      [pdl :PDL :WARN/0:    storz_out:08/16/2018 10:34:39] match phrase basic-msg rejected

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] multi: phrase #0 rejected; trying next

      [pdl :PDL :ERR /0:    storz_out:08/16/2018 10:34:39] no-match: no more phrases to try

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Calling Tcl procedure: read.error

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] with args: {{status error} {type no-match}}

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] pdiIgnoreInput: chop to 1, bolen 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] pdiIgnoreInput: after memmove: 0 + 1

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] pdiIgnoreInput: chop to 18446744073709551615, bolen 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] pdiIgnoreInput: after clear: 0 + 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Tcl procedure read.error returns ‘0’

      [pdl :PDL :DBUG/2:    storz_out:08/16/2018 10:34:39] PDL changed states: old 1, new 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] READ operation completed (0 bytes buffered still, 2 before)

      [pti :sche:INFO/1:    storz_out:08/16/2018 10:34:39] Thread has 0 ready events left.

      [pti :sche:DBUG/2:    storz_out:08/16/2018 10:34:39] Thread 2 has been enabled

      [pti :sche:INFO/1:    storz_out:08/16/2018 10:34:39] Thread has 1 ready events.

      [pti :even:DBUG/0:    storz_out:08/16/2018 10:34:39] Processing SOCKET (PDL server) event 0x0x7fe150798ed0

      [pti :even:DBUG/1:    storz_out:08/16/2018 10:34:39] Calling cb 0x553106

      [pdl :read:DBUG/2:    storz_out:08/16/2018 10:34:39] Events: E 0, R 8, W 0

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] read 45 bytes

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] input buffer accepted 45 bytes, now 45

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  0b 4d 53 48  7c 5e 7e 5c  |.MSH|^~|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  26 7c 7c 7c  7c 7c 7c 7c  |&||||||||

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  41 43 4b 7c  33 33 33 32  |ACK|3332|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  7c 50 7c 32  2e 33 0d 4d  ||P|2.3.M|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  53 41 7c 41  41 7c 33 33  |SA|AA|33|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39]  33 32 0d 1c  0d           |32…|

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] IDLE and 45 bytes but no error: starting READ

      [pdl :PDL :DBUG/2:    storz_out:08/16/2018 10:34:39] PDL changed states: old 0, new 1

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Calling Tcl procedure: hci_pd.read

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] with args: {}

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] Tcl procedure hci_pd.read returns ‘RECEIVE’

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] trying to match phrase: basic-msg

      [pdl :PDL :DBUG/0:    storz_out:08/16/2018 10:34:39] multi_phrase_2: status = ok

    Viewing 14 reply threads
    • Author
      Replies
      • #86435
        Jim Kosloskey
        Participant

          Your sending system is causing this issue.

          Show them this – that you are receiving hex 00 2d before the properly encapsulated message.

          They need to clean that up on their side. Nothing you should have to do – they are not following the MLP Protocol.

          email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

        • #86436
          Nancy McDaniel
          Participant

            Jim – the client is not wanting to address it.  they say they have an upgrade in the works and would prefer to look at it again when we go to their upgrade.  

            I can follow up with them again on it.  I was hoping to try and suppress these warnings.  we are getting their acks and they are getting our adt data.

          • #86437
            Jim Kosloskey
            Participant

              Well,

              I suppose you could make a copy of the standard mlp pdl then modify it to make the beginning phrase 00 20 0b instead of 0b. But I am not sure the hex 00 won’t cause an issue.

              Have you ever done a pdl? If not, read the documentation. I have not done that many in the 23 years I have worked with Cloverleaf but I do recall you need to compile the pdl after you edit it.

              Does this vendor assure the issue will be gone with the next release (in other words is a known accepted problem with a fix)?

              If not, I would insist they fix it now and then assure the fix gets in the next release.

              If they have assured the next release will contain a fix, then how long will that be?

              If it will be a while, then you have to decide if you want to remember to create anew pdl then remember to exchange it to mlp pdl when they ‘say’ the fix is in (if they fix it and you don’t change back to the mlp pdl then you won’t get the ack) – or since you have been living with this for a while – if it won’t be long, just put this on your list of things to check when their new release is deployed.

              But I don’t think you can suppress the errors.

              Just my thoughts…

              email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

            • #86438
              manoune sadakhom
              Participant

                Per the previous email suggestion, you can just make a copy of the PDL that would come close to what you need and modify to your new requirement. You can usse the HEX editor to determine your new data enveloping and change your new PDL to that.

                Once you saved it, run “hcipdc from the command line under the pdls folder.

                Hope that helps.

              • #86439
                Nancy McDaniel
                Participant

                  I have been trying to locate good documentation on PDL drivers for pdl-tcpip (mlp_tcp.pdl).

                  the mlp_tcp.pdl we are using – just has the info below.  I am not sure on the format to modify as it looks like we get the 2 bytes before we ever the ack back.   If I had some good documentation on how these pdl drivers should be setup for mlp tcp protcol, than I can have a better understand of how to correctly format it.  I was unsuccessful in getting to format correctly so appreciate any guidance.

                  define driver tcpip-mlp;

                     version: “2.0”;

                  end driver;

                  /* This driver manages the transmission of messages using the HL7 defined

                  * MLP protocol.  Each message is bounded by a start character

                  * and a stop string .

                  *

                  * The phrase basic-msg recognizes this message format.  Once recognized,

                  * the message data will be available from the ‘data’ field.

                  */

                  define phrase basic-msg;

                     ;

                     field data = variable-array( not( ) );

                     ; ;

                  end phrase;

                • #86440
                  Jim Kosloskey
                  Participant

                    Rather than looking for doc specific to mlp pdl, look in the Help files under Testing and Maintenance -> PDL.

                    I think your Phrase needs to have

                       ;;;

                      instead of ; at the beginning.

                    email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

                  • #86441
                    Nancy McDaniel
                    Participant

                      I took the suggestions and also looked at old post by Greg Day regarding flushing out the extra bytes.  

                      The vendor (who will not make changes to the current version and this is an old interface that has been here for some time – I just want to do some cleanup) is sending two bytes (null, sometimes 2f (forward slash) [00 2f].

                      The 2 extra bytes are (00) followed by another character.  

                      there is no issue recognizing the ack message.

                      I am wanting to suppress the PDL warn/error messages that get written to the log file.  It fills up the log files and adds clutter to the log files when reviewing for “real” errors.

                      Help is greatly appreciated.

                      [pdl :PDL :WARN/0:    storz_out:10/27/2018 10:53:44] match phrase basic-msg rejected

                      [pdl :PDL :ERR /0:    storz_out:10/27/2018 10:53:44] no-match: no more phrases to try

                      I have attached my latest copy of the pdl

                      Sometimes I see it as 2 bytes read  [00 2f]

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] input buffer accepted 2 bytes, now 2

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44]  00 2f                     |./|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] IDLE and 2 bytes but no error: starting READ

                      [pdl :PDL :DBUG/2:    storz_out:10/27/2018 10:53:44] PDL changed states: old 0, new 1

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] Calling Tcl procedure: hci_pd.read

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] with args: {}

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] Tcl procedure hci_pd.read returns ‘RECEIVE’

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] trying to match phrase: basic-msg

                      [pdl :PDL :WARN/0:    storz_out:10/27/2018 10:53:44] match phrase basic-msg rejected

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] multi: phrase #0 rejected; trying next

                      [pdl :PDL :ERR /0:    storz_out:10/27/2018 10:53:44] no-match: no more phrases to try

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] Calling Tcl procedure: read.error

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] with args: {{status error} {type no-match}}

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] pdiIgnoreInput: chop to 1, bolen 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] pdiIgnoreInput: after memmove: 0 + 1

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] pdiIgnoreInput: chop to 18446744073709551615, bolen 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] pdiIgnoreInput: after clear: 0 + 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] Tcl procedure read.error returns ‘0’

                      [pdl :PDL :DBUG/2:    storz_out:10/27/2018 10:53:44] PDL changed states: old 1, new 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:53:44] READ operation completed (0 bytes buffered still, 2 before)

                      Sometimes I see it as right  before the message (example 49 bytes read, 1st two are the junk chars):

                      [pdl :read:DBUG/2:    storz_out:10/27/2018 10:48:11] Events: E 0, R 8, W 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] read 49 bytes

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] input buffer accepted 49 bytes, now 49

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  00 2f 0b 4d  53 48 7c 5e  |./.MSH|^|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  7e 5c 26 7c  7c 7c 7c 7c  |~&||||||

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  7c 7c 41 43  4b 7c 32 34  |||ACK|24|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  31 30 38 7c  50 7c 32 2e  |108|P|2.|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  33 0d 4d 53  41 7c 41 41  |3.MSA|AA|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  7c 32 34 31  30 38 0d 1c  ||24108..|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11]  0d                        |.|

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] IDLE and 49 bytes but no error: starting READ

                      [pdl :PDL :DBUG/2:    storz_out:10/27/2018 10:48:11] PDL changed states: old 0, new 1

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Calling Tcl procedure: hci_pd.read

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] with args: {}

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Tcl procedure hci_pd.read returns ‘RECEIVE’

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] trying to match phrase: basic-msg

                      [pdl :PDL :WARN/0:    storz_out:10/27/2018 10:48:11] match phrase basic-msg rejected

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] multi: phrase #0 rejected; trying next

                      [pdl :PDL :ERR /0:    storz_out:10/27/2018 10:48:11] no-match: no more phrases to try

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Calling Tcl procedure: read.error

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] with args: {{status error} {type no-match}}

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] pdiIgnoreInput: chop to 1, bolen 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] pdiIgnoreInput: after memmove: 0 + 48

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] pdiIgnoreInput: chop to 1, bolen 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] pdiIgnoreInput: after memmove: 0 + 47

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Tcl procedure read.error returns ’47’

                      [pdl :PDL :DBUG/2:    storz_out:10/27/2018 10:48:11] PDL changed states: old 1, new 0

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] READ operation completed (47 bytes buffered still, 49 before)

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] IDLE and 47 bytes but no error: starting READ

                      [pdl :PDL :DBUG/2:    storz_out:10/27/2018 10:48:11] PDL changed states: old 0, new 1

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Calling Tcl procedure: hci_pd.read

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] with args: {}

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Tcl procedure hci_pd.read returns ‘RECEIVE’

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] trying to match phrase: basic-msg

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] multi_phrase_2: status = ok

                      [pdl :PDL :DBUG/0:    storz_out:10/27/2018 10:48:11] Calling Tcl procedure: read.done

                    • #86442
                      Jim Kosloskey
                      Participant

                        Are you saying that there could be any character following the null (hex 00)?

                        email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

                      • #86443
                        Steve Pringle
                        Participant

                          Another option might be to ditch the pdl approach and go with the tcpip protocol instead of the pdl-tcpip protocol.  Using the tcpip protocol lets you configure the start and end blocks via the Encapsulated Data Option.  Select USER for the Mode, add your start and end block settings.

                        • #86444
                          Jim Kosloskey
                          Participant

                            Well if one of the characters is not reliably known then it does not matter the tool used if the tool does not allow for wildcard.

                            email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

                          • #86445
                            Steve Pringle
                            Participant

                              True.  Determining if it is an issue, and if it is, resolving it, should be the first priority.

                            • #86446
                              Nancy McDaniel
                              Participant

                                I turned on eo for this thread and looks like vendor is sending 00 2f (null and forward slash) before 0b starting the ack message.

                                see below – any ideas in the pdl I  sent earlier that would prevent triggering the PDL error?

                                below is the info from this mornings log file:

                                pdl :read:DBUG/2:    storz_out:10/30/2018 12:19:44] Events: E 0, R 8, W 0

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] read 49 bytes

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] input buffer accepted 49 bytes, now 49

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  00 2f 0b 4d  53 48 7c 5e  |./.MSH|^|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  7e 5c 26 7c  7c 7c 7c 7c  |~&||||||

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  7c 7c 41 43  4b 7c 32 34  |||ACK|24|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  37 38 34 7c  50 7c 32 2e  |784|P|2.|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  33 0d 4d 53  41 7c 41 41  |3.MSA|AA|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  7c 32 34 37  38 34 0d 1c  ||24784..|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44]  0d                        |.|

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] IDLE and 49 bytes but no error: starting READ

                                [pdl :PDL :DBUG/2:    storz_out:10/30/2018 12:19:44] PDL changed states: old 0, new 1

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Calling Tcl procedure: hci_pd.read

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] with args: {}

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Tcl procedure hci_pd.read returns ‘RECEIVE’

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] trying to match phrase: basic-msg

                                [pdl :PDL :WARN/0:    storz_out:10/30/2018 12:19:44] match phrase basic-msg rejected

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] multi: phrase #0 rejected; trying next

                                [pdl :PDL :ERR /0:    storz_out:10/30/2018 12:19:44] no-match: no more phrases to try

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Calling Tcl procedure: read.error

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] with args: {{status error} {type no-match}}

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] pdiIgnoreInput: chop to 1, bolen 0

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] pdiIgnoreInput: after memmove: 0 + 48

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] pdiIgnoreInput: chop to 1, bolen 0

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] pdiIgnoreInput: after memmove: 0 + 47

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Tcl procedure read.error returns ’47’

                                [pdl :PDL :DBUG/2:    storz_out:10/30/2018 12:19:44] PDL changed states: old 1, new 0

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] READ operation completed (47 bytes buffered still, 49 before)

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] IDLE and 47 bytes but no error: starting READ

                                [pdl :PDL :DBUG/2:    storz_out:10/30/2018 12:19:44] PDL changed states: old 0, new 1

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Calling Tcl procedure: hci_pd.read

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] with args: {}

                                [pdl :PDL :DBUG/0:    storz_out:10/30/2018 12:19:44] Tcl procedure hci_pd.read returns ‘RECEIVE’

                              • #86447
                                Nancy McDaniel
                                Participant

                                  also switching to the user mode on tcpip – encapsulated – definitely understanding putting the start and end blocks but if we are getting 2 bytes invalid data before the valid start block on the ack – won’t we get a PDL error still in the log file?

                                • #86448
                                  Jim Kosloskey
                                  Participant

                                    You need to change your basic phrase to match what is being sent.

                                    Try using below. What I have attempted to do us to indicate the beginning of the phrase is hex 00 (); followed by a slash; followed by hex 0b then the rest of the message ended by hex 1c () and hex 0d ().

                                    This assumes the vendor will always start their message with the hex pattern 00 2f 0b

                                    I am hoping you only have to specify the / as below and not the hex equivalent. It has been quite a few years since I have played around with PDL at the source level.

                                    define phrase basic-msg;

                                       ; /; ;

                                       field data = variable-array( not( ) );

                                       ; ;

                                    end phrase;

                                    email: jim.kosloskey@jim-kosloskey.com 29+ years Cloverleaf, 59 years IT - old fart.

                                  • #86449
                                    Steve Pringle
                                    Participant

                                      If you use encapsulation I don’t think you’ll get a pdl error in the process log because you’re not using a pdl.

                                  Viewing 14 reply threads
                                  • The forum ‘Cloverleaf’ is closed to new topics and replies.