S1F1R | Are You Online? |
Sent by Host and Equipment |
// S1F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 1, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 1)) {recvS1F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S1F1R
S1F2 | On Line Data |
Different Host and Equipment Use |
Comment: Equipment sends the reply to indicate an online control state, otherwise an abort reply is seen.
Equipment Send Format:
Host Send Format:
// S1F2 Java Parse Equipment reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 MDLN SOFTREV
// variables for data items and parsing
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
// S1F2 Java Parse Host reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(1, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:0
// variables for data items and parsing
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 1 || list0[0] != "L:0") { ok = false; break; }
// single token data such as L:0 or U4:0 has been received as expected
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F3R | Selected Equipment Status Request |
Sent by Host Only |
// S1F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 3)) {recvS1F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n SVID
// variables for data items and parsing
String SVID; // U4:1 (varies) status variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { SVID = list1[1];} else { SVID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F3R
S1F4 | Selected Equipment Status Data |
Sent by Equipment Only |
Comment: zero length value returned for unknown SVID
Format:
// S1F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n SV
// variables for data items and parsing
String SV; // A:n (varies) status variable value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { SV = list1[1];} else { SV = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F5R | Formatted Status Request |
Sent by Host Only |
// S1F5R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 5)) {recvS1F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SFCD
// variables for data items and parsing
int SFCD; // B:1 (always) status form code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
SFCD = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F5R
S1F6 | Formatted Status Data |
Sent by Equipment Only |
Comment: message structure varies, superseded by dynamic reports
Format:
// S1F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n SV
// variables for data items and parsing
String SV; // A:n (varies) status variable value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { SV = list1[1];} else { SV = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F7 | Fixed Form Request |
Sent by Host Only |
// S1F7 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 7)) {recvS1F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SFCD
// variables for data items and parsing
int SFCD; // B:1 (always) status form code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
SFCD = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 8, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F7
S1F8 | Fixed Form Data |
Sent by Equipment Only |
Comment: format varies, superseded by dynamic reports
Format:
// S1F8 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:2 SVNAME SV0}
// variables for data items and parsing
String SVNAME; // A:n (always) status variable name
String SV0; // A:0 (varies) Zero length value used to convey format type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { SVNAME = list2[1];} else { SVNAME = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { SV0 = list2[1];} else { SV0 = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F9R | Material Transfer Status Request |
Sent by Host Only |
// S1F9R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 9)) {recvS1F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 10, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F9R
S1F10 | Material Transfer Status Data |
Sent by Equipment Only |
Comment: An L:0 reply can be sent if there are no material ports
Format:
// S1F10 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TSIP TSOP
// variables for data items and parsing
int [] TSIP; // B:n (always) transfer status of input ports
int [] TSOP; // B:n (always) transfer status of output ports
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("B:")) { ok = false; break; }
TSIP = new int[list1.length-1];
for(int i=0; i < TSIP.length; i++) {
TSIP[i] = sp.binToInt(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("B:")) { ok = false; break; }
TSOP = new int[list1.length-1];
for(int i=0; i < TSOP.length; i++) {
TSOP[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F11R | Status Variable Namelist Request |
Sent by Host Only |
Comment: Host sends L:0 to request all SVIDs.
Format:
// S1F11R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 11)) {recvS1F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n SVID
// variables for data items and parsing
String SVID; // U4:1 (varies) status variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { SVID = list1[1];} else { SVID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F11R
S1F12 | Status Variable Namelist Reply |
Sent by Equipment Only |
Comment: A:0 for SVNAME and UNITS indicates unknown SVID
Format:
// S1F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 SVID SVNAME UNITS}
// variables for data items and parsing
String SVID; // U4:1 (varies) status variable ID
String SVNAME; // A:n (always) status variable name
String UNITS; // A:n (always) units identifier (see E5 Section 9)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { SVID = list2[1];} else { SVID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { SVNAME = list2[1];} else { SVNAME = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F13R | Establish Communications Request |
Different Host and Equipment Use |
Equipment Send Format:
Host Send Format:
// S1F13R Java Receive Equipment message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 1, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 13)) {recvS1F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MDLN SOFTREV
// variables for data items and parsing
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S1F13R
// S1F13R Java Receive Host message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 13)) {recvS1F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:0
// variables for data items and parsing
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 1 || list0[0] != "L:0") { ok = false; break; }
// single token data such as L:0 or U4:0 has been received as expected
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F13R
S1F14 | Establish Communications Request Acknowledge |
Different Host and Equipment Use |
Comment: MDLN and SOFTREV may not be valid unless COMMACK value is 0
Equipment Send Format:
Host Send Format:
// S1F14 Java Parse Equipment reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 COMMACK {L:2 MDLN SOFTREV}
// variables for data items and parsing
int COMMACK; // B:1 (always) establish communications acknowledgement code
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
COMMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { MDLN = list2[1];} else { MDLN = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { SOFTREV = list2[1];} else { SOFTREV = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
// S1F14 Java Parse Host reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(1, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 COMMACK L:0
// variables for data items and parsing
int COMMACK; // B:1 (always) establish communications acknowledgement code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
COMMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length != 1 || list1[0] != "L:0") { ok = false; break; }
// single token data such as L:0 or U4:0 has been received as expected
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F15R | Request OFF-LINE |
Sent by Host Only |
// S1F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 15)) {recvS1F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F15R
S1F16 | OFF-LINE Acknowledge |
Sent by Equipment Only |
// S1F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect OFLACK
// variables for data items and parsing
int OFLACK; // B:1 (always) offline acknowledge, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
OFLACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F17R | Request ON-LINE |
Sent by Host Only |
// S1F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 17)) {recvS1F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F17R
S1F18 | ON-LINE Acknowledge |
Sent by Equipment Only |
// S1F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ONLACK
// variables for data items and parsing
int ONLACK; // B:1 (always) online acknowledge, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ONLACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F19R | Get Attribute |
Sent by Host and Equipment |
Comment: L:m = L:0 for all objects, L:n = L:0 for all attributes
Format:
// S1F19R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 1, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 19)) {recvS1F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 OBJTYPE {L:m OBJID} {L:n ATTRID}
// variables for data items and parsing
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S1F19R
S1F20 | Attribute Data |
Sent by Host and Equipment |
Comment: Ordered per request., m=0 means OBJTYPE unknown, n=0 means instance not found, error associations are problematic
Format:
// S1F20 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(1, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:m {L:n ATTRDATA}} {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F21R | Data Variable Namelist Request |
Sent by Host Only |
Comment: Host sends L:0 to request all DVVALs. VIDs are limited to DVVAL variables only. (proposed ballot item 4824B, Oct 2011)
Format:
// S1F21R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 21)) {recvS1F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n VID
// variables for data items and parsing
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { VID = list1[1];} else { VID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F21R
S1F22 | Data Variable Namelist Reply |
Sent by Equipment Only |
Comment: A:0 for DVVALNAME and UNITS indicates unknown VID or that VID is not a DVVAL. (proposed ballot item 4824B, Oct 2011)
Format:
// S1F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 VID DVVALNAME UNITS}
// variables for data items and parsing
String VID; // A:n (varies) A variable ID
String DVVALNAME; // A:n (always) a descriptive name for a Data Value variable (DVVAL)
String UNITS; // A:n (always) units identifier (see E5 Section 9)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { DVVALNAME = list2[1];} else { DVVALNAME = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S1F23R | Collection Event Namelist Request |
Sent by Host Only |
Comment: Host sends L:0 to imply all CEIDs. (proposed ballot item 4824B, Oct 2011)
Format:
// S1F23R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 1, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 1) && (function = 23)) {recvS1F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS1F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n CEID
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(1, 24, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S1F23R
S1F24 | Collection Event Namelist Reply |
Sent by Equipment Only |
Comment: Only associated DVVAL VIDs are listed. A:0 for CENAME and L:0 for L:a indicates non-existent CEID. (proposed ballot item 4824B, Oct 2011)
Format:
// S1F24 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(1, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 CEID CENAME {L:a VID}}
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String CENAME; // A:n (always) a descriptive name for a Data Collection Event
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { CENAME = list2[1];} else { CENAME = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F1 | Service Program Load Inquire |
Sent by Host and Equipment |
// S2F1 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 1)) {recvS2F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 SPID LENGTH
// variables for data items and parsing
String SPID; // A:6 (always) service program identifier
int LENGTH; // U4:1 (always) program length in bytes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SPID = list1[1];} else { SPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LENGTH = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F1
S2F2 | Service Program Load Grant |
Sent by Host and Equipment |
// S2F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F3 | Service Program Send |
Sent by Host and Equipment |
// S2F3 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 3)) {recvS2F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SPD
// variables for data items and parsing
int [] SPD; // B:n (always) service program data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
SPD = new int[list0.length-1];
for(int i=0; i < SPD.length; i++) {
SPD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F3
S2F4 | Service Program Send Acknowledge |
Sent by Host and Equipment |
// S2F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SPAACK
// variables for data items and parsing
int SPAACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
SPAACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F5 | Service Program Load Request |
Sent by Host and Equipment |
// S2F5 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 5)) {recvS2F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SPID
// variables for data items and parsing
String SPID; // A:6 (always) service program identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F5
S2F6 | Service Program Load Data |
Sent by Host and Equipment |
// S2F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SPD
// variables for data items and parsing
int [] SPD; // B:n (always) service program data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
SPD = new int[list0.length-1];
for(int i=0; i < SPD.length; i++) {
SPD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F7 | Service Program Run Send |
Sent by Host and Equipment |
// S2F7 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 7)) {recvS2F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SPID
// variables for data items and parsing
String SPID; // A:6 (always) service program identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F7
S2F8 | Service Program Run Acknowledge |
Sent by Host and Equipment |
// S2F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect CSAACK
// variables for data items and parsing
int CSAACK; // U1:1 (always) equipment acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
CSAACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F9 | Service Program Results Request |
Sent by Host and Equipment |
// S2F9 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 9)) {recvS2F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SPID
// variables for data items and parsing
String SPID; // A:6 (always) service program identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { SPID = list0[1];} else { SPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F9
S2F10 | Service Program Results Data |
Sent by Host and Equipment |
// S2F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SPR
// variables for data items and parsing
String SPR; // A:n (varies) device dependent, any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { SPR = list0[1];} else { SPR = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F11 | Service Program Directory Request |
Sent by Host and Equipment |
// S2F11 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 11)) {recvS2F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F11
S2F12 | Service Program Directory Data |
Sent by Host and Equipment |
// S2F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n SPID
// variables for data items and parsing
String SPID; // A:6 (always) service program identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SPID = list1[1];} else { SPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F13R | Equipment Constant Request |
Sent by Host Only |
Comment: Host sends L:0 to receive all in predefined order
Format:
// S2F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 13)) {recvS2F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n ECID
// variables for data items and parsing
String ECID; // U4:1 (varies) equipment constant ID, GEM requires U4
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ECID = list1[1];} else { ECID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F13R
S2F14 | Equipment Constant Data |
Sent by Equipment Only |
Comment: An L:0 is substituted if an ECID does not exist, L format is not allowed for an ECV.
Format:
// S2F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n ECV
// variables for data items and parsing
String ECV; // A:n (varies) equipment constant value, any scalar type (constant is a misnomer)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ECV = list1[1];} else { ECV = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F15R | New Equipment Constant Send |
Sent by Host Only |
Comment: Constant is a misnomer, they are settable parameters.
Format:
// S2F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 15)) {recvS2F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n {L:2 ECID ECV}
// variables for data items and parsing
String ECID; // U4:1 (varies) equipment constant ID, GEM requires U4
String ECV; // A:n (varies) equipment constant value, any scalar type (constant is a misnomer)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECID = list2[1];} else { ECID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECV = list2[1];} else { ECV = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F15R
S2F16 | New Equipment Constant Ack |
Sent by Equipment Only |
Comment: if any input value is not proper, none of the input values are set
Format:
// S2F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect EAC
// variables for data items and parsing
int EAC; // B:1 (always) equipment acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
EAC = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F17R | Date and Time Request |
Sent by Host and Equipment |
Comment: NTP servers should be used instead for better accuracy and to avoid lack of time zone specification.
Format:
// S2F17R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 17)) {recvS2F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F17R
S2F18 | Date and Time Data |
Sent by Host and Equipment |
Comment: The value should not be used for system clock synchronization.
Format:
// S2F18 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect TIME
// variables for data items and parsing
String TIME; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { TIME = list0[1];} else { TIME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F19R | Reset/Initialize Send |
Sent by Host Only |
// S2F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 19)) {recvS2F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RIC
// variables for data items and parsing
String RIC; // U1:1 (varies) reset code, 1 means power up reset
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { RIC = list0[1];} else { RIC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F19R
S2F20 | Reset Acknowledge |
Sent by Equipment Only |
// S2F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect RAC
// variables for data items and parsing
String RAC; // U1:1 (varies) reset acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { RAC = list0[1];} else { RAC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F21[R] | Remote Command Send |
Sent by Host Only |
Comment: Compare to S2F41R. Arguments can be passed as you would on a command line.
Format:
// S2F21 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 21)) {recvS2F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RCMD
// variables for data items and parsing
String RCMD; // A:n (varies) remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { RCMD = list0[1];} else { RCMD = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F21
S2F22 | Remote Command Acknowledge |
Sent by Equipment Only |
// S2F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect CMDA
// variables for data items and parsing
int CMDA; // B:1 (always) command acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
CMDA = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F23R | Trace Initialize Send |
Sent by Host Only |
Comment: Set TOTSMP=0 to terminate a trace. Set zero-length TRID to delete all traces.
Format:
// S2F23R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 23)) {recvS2F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 TRID DSPER TOTSMP REPGSZ {L:n SVID}
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
String DSPER; // A:6 (varies) data sample period, hhmmss is always supported, A:8 hhmmsscc may be supported
String TOTSMP; // U4:1 (varies) total samples to be made, should be an even multiple of REPGSZ
String REPGSZ; // U4:1 (varies) reporting group size, TOTSMP modulo REPGSZ should be 0
String SVID; // U4:1 (varies) status variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSPER = list1[1];} else { DSPER = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TOTSMP = list1[1];} else { TOTSMP = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { REPGSZ = list1[1];} else { REPGSZ = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { SVID = list2[1];} else { SVID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 24, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F23R
S2F24 | Trace Initialize Acknowledge |
Sent by Equipment Only |
// S2F24 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect TIAACK
// variables for data items and parsing
int TIAACK; // B:1 (always) trace acknowledgement code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
TIAACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F25R | Loopback Diagnostic Request |
Sent by Host and Equipment |
Comment: it is useful to test the telnet escape sequence
Format:
// S2F25R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 2, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 25)) {recvS2F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect ABS
// variables for data items and parsing
int [] ABS; // B:n (always) any binary string
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
ABS = new int[list0.length-1];
for(int i=0; i < ABS.length; i++) {
ABS[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 26, transID, reply);
}
return;
} // end while(ok)
} // end recv_S2F25R
S2F26 | Loopback Diagnostic Data |
Sent by Host and Equipment |
// S2F26 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(2, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ABS
// variables for data items and parsing
int [] ABS; // B:n (always) any binary string
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
ABS = new int[list0.length-1];
for(int i=0; i < ABS.length; i++) {
ABS[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F27R | Initiate Processing Request |
Sent by Host Only |
Comment: made obsolete by S2F41R ?
Format:
// S2F27R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 27)) {recvS2F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 LOC PPID {L:n MID}
// variables for data items and parsing
int LOC; // B:1 (always) material location code
String PPID; // A:80 (varies) process program ID
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
LOC = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { MID = list2[1];} else { MID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 28, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F27R
S2F28 | Initiate Processing Acknowledge |
Sent by Equipment Only |
// S2F28 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect CMDA
// variables for data items and parsing
int CMDA; // B:1 (always) command acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
CMDA = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F29R | Equipment Constant Namelist Request |
Sent by Host Only |
Comment: Host sends L:0 for all ECIDs
Format:
// S2F29R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 29)) {recvS2F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n ECID
// variables for data items and parsing
String ECID; // U4:1 (varies) equipment constant ID, GEM requires U4
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ECID = list1[1];} else { ECID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 30, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F29R
S2F30 | Equipment Constant Namelist |
Sent by Equipment Only |
// S2F30 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:6 ECID ECNAME ECMIN ECMAX ECDEF UNITS}
// variables for data items and parsing
String ECID; // U4:1 (varies) equipment constant ID, GEM requires U4
String ECNAME; // A:n (always) equipment constant name
String ECMIN; // A:n (varies) equipment constant minimum value, any scalar type
String ECMAX; // A:n (varies) equipment constant maximum value, any scalar type
String ECDEF; // A:n (varies) equipment constant default value
String UNITS; // A:n (always) units identifier (see E5 Section 9)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 7) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECID = list2[1];} else { ECID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ECNAME = list2[1];} else { ECNAME = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECMIN = list2[1];} else { ECMIN = ""; }
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECMAX = list2[1];} else { ECMAX = ""; }
list2 = TclList.split(list1[5]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ECDEF = list2[1];} else { ECDEF = ""; }
list2 = TclList.split(list1[6]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { UNITS = list2[1];} else { UNITS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F31R | Date and Time Set Request |
Sent by Host Only |
Comment: Modern equipment should use NTP servers to synchronize the system clock. SECS is inaccurate and does not include timezone info.
Format:
// S2F31R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 31)) {recvS2F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TIME
// variables for data items and parsing
String TIME; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { TIME = list0[1];} else { TIME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 32, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F31R
S2F32 | Date and Time Set Acknowledge |
Sent by Equipment Only |
// S2F32 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 31, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect TIACK
// variables for data items and parsing
int TIACK; // B:1 (always) time set acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
TIACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F33R | Define Report |
Sent by Host Only |
Comment: a=0 means delete all reports and event links, b=0 means delete the RPTID type and its event links
Format:
// S2F33R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 33)) {recvS2F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID {L:a {L:2 RPTID {L:b VID}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RPTID; // U4:1 (varies) report ID
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { VID = list4[1];} else { VID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 34, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F33R
S2F34 | Define Report Acknowledge |
Sent by Equipment Only |
// S2F34 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 33, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect DRACK
// variables for data items and parsing
int DRACK; // B:1 (always) define report acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
DRACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F35R | Link Event Report |
Sent by Host Only |
Comment: b=0 disassociates the CEID from all report links. The message links reports to an event, it does not imply a particular output sequence in the event report.
Format:
// S2F35R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 35, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 35)) {recvS2F35(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID {L:a {L:2 CEID {L:b RPTID}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CEID = list3[1];} else { CEID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { RPTID = list4[1];} else { RPTID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 36, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F35R
S2F36 | Link Event Report Acknowledge |
Sent by Equipment Only |
// S2F36 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 35, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect LRACK
// variables for data items and parsing
int LRACK; // B:1 (always) link report acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
LRACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F37R | Enable/Disable Event Report |
Sent by Host Only |
Comment: n=0 means all CEIDs
Format:
// S2F37R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 37, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 37)) {recvS2F37(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 CEED {L:n CEID}
// variables for data items and parsing
int CEED; // TF:1 (always) collection event or trace enablement, true is enabled
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
CEED = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 38, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F37R
S2F38 | Enable/Disable Event Report Acknowledge |
Sent by Equipment Only |
// S2F38 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 37, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ERACK
// variables for data items and parsing
int ERACK; // B:1 (always) enable/disable event report acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ERACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F39R | Multi-block Inquire |
Sent by Host Only |
Comment: for SECS-I mullti-block S2F23 F33, F35, F45, or F49, not required for HSMS
Format:
// S2F39R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 39, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 39)) {recvS2F39(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 40, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F39R
S2F40 | Multi-block Grant |
Sent by Equipment Only |
// S2F40 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 39, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F41R | Host Command Send |
Sent by Host Only |
// S2F41R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 41, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 41)) {recvS2F41(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 RCMD {L:n {L:2 CPNAME CPVAL}}
// variables for data items and parsing
String RCMD; // A:n (varies) remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
String CPNAME; // A:n (varies) command parameter name
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RCMD = list1[1];} else { RCMD = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 42, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F41R
S2F42 | Host Command Acknowledge |
Sent by Equipment Only |
Comment: n is equal to the number of parameters having errors
Format:
// S2F42 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 41, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 HCACK {L:n {L:2 CPNAME CPACK}}
// variables for data items and parsing
int HCACK; // B:1 (always) remote command acknowledge
String CPNAME; // A:n (varies) command parameter name
int CPACK; // B:1 (always) remote command parameter acknowledge, only received if error
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
HCACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
CPACK = sp.binToInt(list3[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F43R | Configure Spooling |
Sent by Host Only |
Comment: m=0 turns off all streams and fns, n=0 turns on all functions in the stream, stream 1 is not spooled
Format:
// S2F43R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 43, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 43)) {recvS2F43(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:m {L:2 STRID {L:n FCNID}}
// variables for data items and parsing
int STRID; // U1:1 (always) stream value
int FCNID; // U1:1 (always) message type function value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int m=1; m < list0.length; m++) {
String [] list1;
list1 = TclList.split(list0[m]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
STRID = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
FCNID = Integer.parse(list3[1]);
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 44, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F43R
S2F44 | Configure Spooling Acknowledge |
Sent by Equipment Only |
Comment: m=0 when there are no errors; n is the number of functions in error in a stream
Format:
// S2F44 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 43, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RSPACK {L:m {L:3 STRID STRACK {L:n FCNID}}}
// variables for data items and parsing
int RSPACK; // B:1 (always) spooling response
int STRID; // U1:1 (always) stream value
int STRACK; // B:1 (always) spooling stream acknowledge
int FCNID; // U1:1 (always) message type function value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RSPACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
STRID = Integer.parse(list3[1]);
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
STRACK = sp.binToInt(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
FCNID = Integer.parse(list4[1]);
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F45R | Define Variable Limit Attributes |
Sent by Host Only |
Comment: L:2* can be L:2 or L:0
Format:
// S2F45R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 45, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 45)) {recvS2F45(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F45(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID {L:m {L:2 VID {L:n {L:2 LIMITID {L:2* UPPERDB LOWERDB}}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String VID; // A:n (varies) A variable ID
int LIMITID; // B:1 (always) identifies a specific limit
String UPPERDB; // F4:1 (varies) the upper bound of a deadband limit
String LOWERDB; // F4:1 (varies) the lower bound of a deadband limit
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].equals("B:1")) { ok = false; break; }
LIMITID = sp.binToInt(list5[1]);
list5 = TclList.split(list4[2]);
if (list5.length == 3) { // 2 optional items found
String [] list6;
list6 = TclList.split(list5[1]);
if (list6.length < 1) { ok = false; break; }
if (list6.length == 2) { UPPERDB = list6[1];} else { UPPERDB = ""; }
list6 = TclList.split(list5[2]);
if (list6.length < 1) { ok = false; break; }
if (list6.length == 2) { LOWERDB = list6[1];} else { LOWERDB = ""; }
}
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 46, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F45R
S2F46 | Define Variable Limit Attributes Acknowledge |
Sent by Equipment Only |
Comment: L:2* can be L:2 or L:0, varies with VID
Format:
// S2F46 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 45, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 VLAACK {L:m {L:3 VID LVACK {L:2* LIMITID LIMITACK}}}
// variables for data items and parsing
int VLAACK; // B:1 (always) variable limit attribute acknowledge
String VID; // A:n (varies) A variable ID
int LVACK; // B:1 (always) variable limit error code
int LIMITID; // B:1 (always) identifies a specific limit
int LIMITACK; // B:1 (always) variable limit value error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
VLAACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
LVACK = sp.binToInt(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length == 3) { // 2 optional items found
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("B:1")) { ok = false; break; }
LIMITID = sp.binToInt(list4[1]);
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("B:1")) { ok = false; break; }
LIMITACK = sp.binToInt(list4[1]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F47R | Variable Limit Attribute Request |
Sent by Host Only |
Comment: Host sends L:0 to discover VIDs that support limits
Format:
// S2F47R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 47, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 47)) {recvS2F47(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F47(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:m VID
// variables for data items and parsing
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int m=1; m < list0.length; m++) {
String [] list1;
list1 = TclList.split(list0[m]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { VID = list1[1];} else { VID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 48, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F47R
S2F48 | Variable Limit Attribute Send |
Sent by Equipment Only |
Comment: L:4* can be L:4 or L:0
Format:
// S2F48 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 47, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:m {L:2 VID {L:4* UNITS LIMITMIN LIMITMAX {L:n {L:3 LIMITID UPPERDB LOWERDB}}}}
// variables for data items and parsing
String VID; // A:n (varies) A variable ID
String UNITS; // A:n (always) units identifier (see E5 Section 9)
String LIMITMIN; // F4:1 (varies) The minimum value allowed for the lower dead band limit
String LIMITMAX; // F4:1 (varies) The maximum value allowed for the upper dead band limit
int LIMITID; // B:1 (always) identifies a specific limit
String UPPERDB; // F4:1 (varies) the upper bound of a deadband limit
String LOWERDB; // F4:1 (varies) the lower bound of a deadband limit
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int m=1; m < list0.length; m++) {
String [] list1;
list1 = TclList.split(list0[m]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length == 5) { // 4 optional items found
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UNITS = list3[1];} else { UNITS = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { LIMITMIN = list3[1];} else { LIMITMIN = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { LIMITMAX = list3[1];} else { LIMITMAX = ""; }
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length != 4) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].equals("B:1")) { ok = false; break; }
LIMITID = sp.binToInt(list5[1]);
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { UPPERDB = list5[1];} else { UPPERDB = ""; }
list5 = TclList.split(list4[3]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { LOWERDB = list5[1];} else { LOWERDB = ""; }
}
if (!ok) break;
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F49R | Enhanced Remote Command |
Sent by Host Only |
Comment: the standard fails to show the message is sent with reply requested; CEPVAL can be a list of same format values or CPNAME CEPVAL pairs, possible nested list inclusion is implied
Format:
// S2F49R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 49, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 49)) {recvS2F49(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F49(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID OBJSPEC RCMD {L:m {L:2 CPNAME CEPVAL}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String RCMD; // A:n (varies) remote command, GEM requires a maximum length of 20 printable characters, taken from hex 21-7E (no spaces)
String CPNAME; // A:n (varies) command parameter name
String CEPVAL; // A:n (varies) an enhanced parameter value, may be a scalar of any type, a list of values of the same type, or a list of possibly nested {L:2 CPNAME CEPVAL}
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RCMD = list1[1];} else { RCMD = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CEPVAL = list3[1];} else { CEPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 50, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F49R
S2F50 | Enhanced Remote Command Acknowledge |
Sent by Equipment Only |
Comment: CEPACK can be a list structure with possible nesting of additional list structures
Format:
// S2F50 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 49, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 HCACK {L:n {L:2 CPNAME CEPACK}}
// variables for data items and parsing
int HCACK; // B:1 (always) remote command acknowledge
String CPNAME; // A:n (varies) command parameter name
int CEPACK; // B:1 (always) command enhanced parameter acknowledge, may be a list or nested list structure to mirror the input structure of a CEPVAL
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
HCACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
CEPACK = sp.binToInt(list3[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F51R | Request Report Identifiers |
Sent by Host Only |
Comment: Host sends S2F51R to discover defined RPTIDs, new 8/2021
Format:
// S2F51R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 51, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 51)) {recvS2F51(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F51(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 52, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F51R
S2F52 | Return Report Identifiers |
Sent by Equipment Only |
// S2F52 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 51, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n RPTID
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F53R | Request Report Definitions |
Sent by Host Only |
Comment: Host sends L:0 for all defined reports, new 8/2021
Format:
// S2F53R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 53, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 53)) {recvS2F53(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F53(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n RPTID
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 54, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F53R
S2F54 | Return Report Definitions |
Sent by Equipment Only |
Comment: a is 0 for unknown RPTID, n is 0 for no reports defined and L:0 request, new 8/2021
Format:
// S2F54 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 53, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:2 RPTID {L:a VID}}
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F55R | Request Event Report Links |
Sent by Host Only |
Comment: Host sends L:0 to discover linked events and links, new 8/2021
Format:
// S2F55R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 55, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 55)) {recvS2F55(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F55(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n CEID
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 56, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F55R
S2F56 | Return Event Report Links |
Sent by Equipment Only |
Comment: CENAME is A:0 for unknown CEID, a is 0 for no linked reports, L:0 reply to L:0 if no links defined, new 8/2021
Format:
// S2F56 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 55, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 CEID CENAME {L:a RPTID}}
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String CENAME; // A:n (always) a descriptive name for a Data Collection Event
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CEID = list2[1];} else { CEID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { CENAME = list2[1];} else { CENAME = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F57R | Request Enabled Events |
Sent by Host Only |
Comment: Host sends header-only to discover events that are enabled for reporting, new 8/2021
Format:
// S2F57R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 57, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 57)) {recvS2F57(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F57(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 58, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F57R
S2F58 | Return Enabled Events |
Sent by Equipment Only |
// S2F58 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 57, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n CEID
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F59R | Request Spool Streams and Functions |
Sent by Host Only |
Comment: Host sends header-only to discover SFs configured for spooling, new 8/2021
Format:
// S2F59R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 59, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 59)) {recvS2F59(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F59(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 60, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F59R
S2F60 | Return Spool Streams and Functions |
Sent by Equipment Only |
Comment: n=0 indicates spooling disabled, b=0 implies all Fs in stream, new 8/2021
Format:
// S2F60 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 59, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:2 STRID {L:a FCNID}}
// variables for data items and parsing
int STRID; // U1:1 (always) stream value
int FCNID; // U1:1 (always) message type function value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
STRID = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
FCNID = Integer.parse(list3[1]);
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F61R | Request Trace Identifiers |
Sent by Host Only |
Comment: Host sends header-only to discover S2F23 trace reports, new 8/2021
Format:
// S2F61R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 61, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 61)) {recvS2F61(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F61(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 62, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F61R
S2F62 | Return Trace Identifiers |
Sent by Equipment Only |
Comment: Host configures traces with S2F23, new message 8/2021
Format:
// S2F62 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 61, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S2F63R | Request Trace Definitions |
Sent by Host Only |
Comment: Host sends L:0 for all traces setup with S2F23, new 8/2021
Format:
// S2F63R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 2, 63, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 2) && (function = 63)) {recvS2F63(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS2F63(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(2, 64, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S2F63R
S2F64 | Return Trace Definitions |
Sent by Equipment Only |
Comment: zero-length items sent for unknown TRID, n=0 for no traces defined and L:0 query, new 8/2021
Format:
// S2F64 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(2, 63, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:5 TRID DSPER TOTSMP REPGSZ {L:a SVID}}
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
String DSPER; // A:6 (varies) data sample period, hhmmss is always supported, A:8 hhmmsscc may be supported
String TOTSMP; // U4:1 (varies) total samples to be made, should be an even multiple of REPGSZ
String REPGSZ; // U4:1 (varies) reporting group size, TOTSMP modulo REPGSZ should be 0
String SVID; // U4:1 (varies) status variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 6) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRID = list2[1];} else { TRID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { DSPER = list2[1];} else { DSPER = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TOTSMP = list2[1];} else { TOTSMP = ""; }
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { REPGSZ = list2[1];} else { REPGSZ = ""; }
list2 = TclList.split(list1[5]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { SVID = list3[1];} else { SVID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F1R | Material Status Request |
Sent by Host Only |
// S3F1R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 1)) {recvS3F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 2, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F1R
S3F2 | Material Status Data |
Sent by Equipment Only |
// S3F2 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 MF {L:m {L:3 LOC QUA MID}}
// variables for data items and parsing
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
int LOC; // B:1 (always) material location code
int QUA; // B:1 (always) quantity (format limits max to 255!)
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
LOC = sp.binToInt(list3[1]);
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
QUA = sp.binToInt(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F3R | Time to Completion Data |
Sent by Host Only |
// S3F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 3)) {recvS3F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F3R
S3F4 | Time to Completion Data |
Sent by Equipment Only |
// S3F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 MF {L:m {L:3 TTC QUA MID}}
// variables for data items and parsing
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
String TTC; // U4:1 (varies) time to completion, standard does not specify units, in seconds??
int QUA; // B:1 (always) quantity (format limits max to 255!)
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { TTC = list3[1];} else { TTC = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
QUA = sp.binToInt(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F5[R] | Material Found Send |
Sent by Equipment Only |
// S3F5 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 3, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 5)) {recvS3F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MF QUA
// variables for data items and parsing
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
int QUA; // B:1 (always) quantity (format limits max to 255!)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
QUA = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F5
S3F6 | Material Found Acknowledge |
Sent by Host Only |
// S3F6 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(3, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC3
// variables for data items and parsing
int ACKC3; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC3 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F7[R] | Material Lost Send |
Sent by Equipment Only |
// S3F7 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 3, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 7)) {recvS3F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 MF QUA MID
// variables for data items and parsing
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
int QUA; // B:1 (always) quantity (format limits max to 255!)
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
QUA = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F7
S3F8 | Material Lost Ack |
Sent by Host Only |
// S3F8 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(3, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC3
// variables for data items and parsing
int ACKC3; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC3 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F9R | Matl ID Equate Send |
Sent by Equipment Only |
// S3F9R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 3, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 9)) {recvS3F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MID EMID
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
String EMID; // A:16 (varies) equivalent material ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { EMID = list1[1];} else { EMID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F9R
S3F10 | Matl ID Equate Ack |
Sent by Host Only |
// S3F10 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(3, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC3
// variables for data items and parsing
int ACKC3; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC3 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F11R | Matl ID Request |
Sent by Equipment Only |
// S3F11R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 3, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 11)) {recvS3F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect PTN
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { PTN = list0[1];} else { PTN = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F11R
S3F12 | Matl ID Request Ack |
Sent by Host Only |
// S3F12 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(3, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 PTN MIDRA MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
int MIDRA; // B:1 (always) material ID Ack code
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
MIDRA = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F13R | Matl ID Send |
Sent by Host Only |
// S3F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 13)) {recvS3F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F13R
S3F14 | Matl ID Ack |
Sent by Equipment Only |
// S3F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect MIDAC
// variables for data items and parsing
int MIDAC; // B:1 (always) material ID ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
MIDAC = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F15R | SECS-I Matls Multi-block Inquire, not required for HSMS |
Sent by Host Only |
// S3F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 15)) {recvS3F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F15R
S3F16 | Matls Multi-block Grant |
Sent by Equipment Only |
// S3F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F17R | Carrier Action Request |
Sent by Host Only |
// S3F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 17)) {recvS3F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID CARRIERACTION CARRIERID PTN {L:n {L:2 CATTRID CATTRDATA}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CARRIERACTION; // A:n (always) carrier action request
String CARRIERID; // A:n (always) carrier ID
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String CATTRID; // A:n (varies) carrier attribute identifier, E87 requires text per E39.1, Sec 6
String CATTRDATA; // A:n (varies) carrier attribute value (any data type)
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { CARRIERACTION = list1[1];} else { CARRIERACTION = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { CARRIERID = list1[1];} else { CARRIERID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CATTRID = list3[1];} else { CATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CATTRDATA = list3[1];} else { CATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F17R
S3F18 | Carrier Action Ack |
Sent by Equipment Only |
// S3F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F19R | Cancel All Carrier Out Req |
Sent by Host Only |
// S3F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 19)) {recvS3F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F19R
S3F20 | Cancel All Carrier Out Ack |
Sent by Equipment Only |
// S3F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F21R | Port Group Defn |
Sent by Host Only |
Comment: E87 used to refer to PORTACCESS but E5 defines ACCESSMODE
Format:
// S3F21R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 21)) {recvS3F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 PORTGRPNAME ACCESSMODE {L:n PTN}
// variables for data items and parsing
String PORTGRPNAME; // A:n (always) name of a group of ports
int ACCESSMODE; // U1:1 (always) load port access mode
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PORTGRPNAME = list1[1];} else { PORTGRPNAME = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
ACCESSMODE = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PTN = list2[1];} else { PTN = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F21R
S3F22 | Port Group Defn Ack |
Sent by Equipment Only |
// S3F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F23R | Port Group Action Req |
Sent by Host Only |
Comment: not documented in E87, port group names - is this vendor specific?
Format:
// S3F23R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 23)) {recvS3F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 PGRPACTION PORTGRPNAME {L:m {L:2 PARAMNAME PARAMVAL}}
// variables for data items and parsing
String PGRPACTION; // A:n (always) port group command, an alias for PORTACTION?
String PORTGRPNAME; // A:n (always) name of a group of ports
String PARAMNAME; // A:n (always) argument name
String PARAMVAL; // U1:1 (varies) argument value, only defined use is ServiceStatus, 0 = OUT OF SERVICE, 1 = IN SERVICE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PGRPACTION = list1[1];} else { PGRPACTION = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PORTGRPNAME = list1[1];} else { PORTGRPNAME = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PARAMNAME = list3[1];} else { PARAMNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { PARAMVAL = list3[1];} else { PARAMVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 24, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F23R
S3F24 | Port Group Action Ack |
Sent by Equipment Only |
// S3F24 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F25R | Port Action Req |
Sent by Host Only |
// S3F25R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 25)) {recvS3F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 PORTACTION PTN {L:m {L:2 PARAMNAME PARAMVAL}}
// variables for data items and parsing
String PORTACTION; // A:n (always) ChangeServiceStatus, CancelReservationAtPort or ReserveAtPort
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String PARAMNAME; // A:n (always) argument name
String PARAMVAL; // U1:1 (varies) argument value, only defined use is ServiceStatus, 0 = OUT OF SERVICE, 1 = IN SERVICE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PORTACTION = list1[1];} else { PORTACTION = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PARAMNAME = list3[1];} else { PARAMNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { PARAMVAL = list3[1];} else { PARAMVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 26, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F25R
S3F26 | Port Action Ack |
Sent by Equipment Only |
// S3F26 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F27R | Change Access |
Sent by Host Only |
// S3F27R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 27)) {recvS3F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 ACCESSMODE {L:n PTN}
// variables for data items and parsing
int ACCESSMODE; // U1:1 (always) load port access mode
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
ACCESSMODE = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PTN = list2[1];} else { PTN = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 28, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F27R
S3F28 | Change Access Ack |
Sent by Equipment Only |
// S3F28 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:3 PTN ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { PTN = list3[1];} else { PTN = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F29R | Carrier Tag Read Req |
Sent by Host Only |
// S3F29R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 29)) {recvS3F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 LOCID CARRIERSPEC DATASEG DATALENGTH
// variables for data items and parsing
String LOCID; // A:n (varies) logical ID of carrier location, E87 requires text
String CARRIERSPEC; // A:n (always) carrier object specifier (OBJSPEC)
String DATASEG; // A:n (varies) identifies data requested, E87 requires text
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { LOCID = list1[1];} else { LOCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { CARRIERSPEC = list1[1];} else { CARRIERSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 30, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F29R
S3F30 | Carrier Tag Read Data |
Sent by Equipment Only |
// S3F30 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 DATA {L:2 CAACK {L:s {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String DATA; // A:n (varies) unformatted data
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int s=1; s < list2.length; s++) {
String [] list3;
list3 = TclList.split(list2[s]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F31R | Carrier Tag Write Data |
Sent by Host Only |
// S3F31R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 3, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 31)) {recvS3F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 LOCID CARRIERSPEC DATASEG DATALENGTH DATA
// variables for data items and parsing
String LOCID; // A:n (varies) logical ID of carrier location, E87 requires text
String CARRIERSPEC; // A:n (always) carrier object specifier (OBJSPEC)
String DATASEG; // A:n (varies) identifies data requested, E87 requires text
String DATALENGTH; // U4:1 (varies) total bytes of the message body
String DATA; // A:n (varies) unformatted data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { LOCID = list1[1];} else { LOCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { CARRIERSPEC = list1[1];} else { CARRIERSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 32, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S3F31R
S3F32 | Carrier Tag Write Ack |
Sent by Equipment Only |
// S3F32 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(3, 31, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:s {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F33 | Cancel All Pod Out Req |
Sent by Host and Equipment |
// S3F33 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 3, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 33)) {recvS3F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 34, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F33
S3F34 | Cancel All Pod Out Ack |
Sent by Host and Equipment |
// S3F34 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(3, 33, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 CAACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int CAACK; // U1:1 (always) carrier action acknowledge
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CAACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S3F35 | Reticle Transfer Job Req |
Sent by Host and Equipment |
Comment: earlier standard descriptions have errors and undefined data items
Format:
// S3F35 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 3, 35, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 3) && (function = 35)) {recvS3F35(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS3F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:7 JOBACTION PODID INPTN OUTPTN {L:n {L:2 ATTRID ATTRDATA}} {L:m {L:3 RETICLEID RETREMOVEINSTR {L:r {L:2 ATTRID ATTRDATA}}}} {L:k {L:2 RETICLEID2 RETPLACEINSTR}}
// variables for data items and parsing
String JOBACTION; // A:n (always) reticle transfer command
String PODID; // A:n (always) OBJSPEC for a Pod instance
int INPTN; // B:1 (always) input material port number
String OUTPTN; // B:1 (varies) output port (PTN)
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String RETICLEID; // A:n (always) OBJSPEC value for a reticle
int RETREMOVEINSTR; // U1:1 (always) pod slot reticle remove instruction
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String RETICLEID2; // A:n (always) OBJSPEC value for a second reticle
int RETPLACEINSTR; // U1:1 (always) pod slot reticle place instruction
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { JOBACTION = list1[1];} else { JOBACTION = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PODID = list1[1];} else { PODID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
INPTN = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OUTPTN = list1[1];} else { OUTPTN = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RETICLEID = list3[1];} else { RETICLEID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
RETREMOVEINSTR = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok=false; break; }
for(int r=1; r < list3.length; r++) {
String [] list4;
list4 = TclList.split(list3[r]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int k=1; k < list1.length; k++) {
String [] list2;
list2 = TclList.split(list1[k]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RETICLEID2 = list3[1];} else { RETICLEID2 = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
RETPLACEINSTR = Integer.parse(list3[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(3, 36, transID, reply);
}
return;
} // end while(ok)
} // end recv_S3F35
S3F36 | Reticle Transfer Job Ack |
Sent by Host and Equipment |
// S3F36 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(3, 35, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RPMACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RPMACK; // U1:1 (always) reticle pod management ack code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RPMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F1R | Ready to Send Materials |
Sent by Host and Equipment |
// S4F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 1)) {recvS4F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F1R
S4F2 | Ready to Send Ack |
Sent by Host and Equipment |
// S4F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(4, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect RSACK
// variables for data items and parsing
int RSACK; // B:1 (always) ready to send acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
RSACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F3 | Send Material |
Sent by Host and Equipment |
// S4F3 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 3)) {recvS4F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F3
S4F5 | Handshake Complete |
Sent by Host and Equipment |
// S4F5 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 5)) {recvS4F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F5
S4F7 | Not Ready to Send |
Sent by Host and Equipment |
// S4F7 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 7)) {recvS4F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F7
S4F9 | Stuck in Sender |
Sent by Host and Equipment |
Comment: standard does not show as bidirectional
Format:
// S4F9 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 9)) {recvS4F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F9
S4F11 | Stuck in Receiver |
Sent by Host and Equipment |
Comment: standard does not show as bidirectional
Format:
// S4F11 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 11)) {recvS4F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F11
S4F13 | Send Incomplete Timeout |
Sent by Host and Equipment |
// S4F13 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 13)) {recvS4F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F13
S4F15 | Material Received |
Sent by Host and Equipment |
// S4F15 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 15)) {recvS4F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F15
S4F17R | Request to Receive |
Sent by Host and Equipment |
// S4F17R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 17)) {recvS4F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PTN MID
// variables for data items and parsing
String PTN; // U1:1 (varies) material port number, E87 shows type U1:1 with data 1-255
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PTN = list1[1];} else { PTN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F17R
S4F18 | Request to Receive Ack |
Sent by Host and Equipment |
// S4F18 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(4, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect RRACK
// variables for data items and parsing
int RRACK; // B:1 (always) request to receive acknowledge
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
RRACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F19R | Transfer Job Create |
Sent by Host Only |
// S4F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 4, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 19)) {recvS4F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID {L:2 TRJOBNAME {L:n {L:12 TRLINK TRPORT TROBJNAME TROBJTYPE TRROLE TRRCP TRPTNR TRPTPORT TRDIR TRTYPE TRLOCATION TRAUTOSTART}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String TRJOBNAME; // A:80 (always) host assigned id for transfer job
String TRLINK; // U4:1 (varies) task identifier correlation value
String TRPORT; // U4:1 (varies) port identifier
String TROBJNAME; // A:n (varies) identifies material to be transferred
String TROBJTYPE; // U4:1 (varies) identifies type of object to be transferred
int TRROLE; // U1:1 (always) indicates equipment transfer role
String TRRCP; // A:80 (always) name of transfer recipe for this handoff
String TRPTNR; // A:n (always) EQNAME of transfer partner equipment
String TRPTPORT; // U4:1 (varies) transfer partner port
int TRDIR; // U1:1 (always) transfer direction
int TRTYPE; // U1:1 (always) equipment is active or passive transfer participant
String TRLOCATION; // U4:1 (varies) material transfer location
int TRAUTOSTART; // TF:1 (always) if true material transfer is initiated by the primary when ready
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { TRJOBNAME = list2[1];} else { TRJOBNAME = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 13) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TRLINK = list4[1];} else { TRLINK = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TRPORT = list4[1];} else { TRPORT = ""; }
list4 = TclList.split(list3[3]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TROBJNAME = list4[1];} else { TROBJNAME = ""; }
list4 = TclList.split(list3[4]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TROBJTYPE = list4[1];} else { TROBJTYPE = ""; }
list4 = TclList.split(list3[5]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
TRROLE = Integer.parse(list4[1]);
list4 = TclList.split(list3[6]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { TRRCP = list4[1];} else { TRRCP = ""; }
list4 = TclList.split(list3[7]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { TRPTNR = list4[1];} else { TRPTNR = ""; }
list4 = TclList.split(list3[8]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TRPTPORT = list4[1];} else { TRPTPORT = ""; }
list4 = TclList.split(list3[9]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
TRDIR = Integer.parse(list4[1]);
list4 = TclList.split(list3[10]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
TRTYPE = Integer.parse(list4[1]);
list4 = TclList.split(list3[11]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { TRLOCATION = list4[1];} else { TRLOCATION = ""; }
list4 = TclList.split(list3[12]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("TF:1")) { ok = false; break; }
TRAUTOSTART = Integer.parse(list4[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S4F19R
S4F20 | Transfer Job Acknowledge |
Sent by Equipment Only |
// S4F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(4, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TRJOBID {L:m TRATOMCID} {L:2 TRACK {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int TRJOBID; // B:1 (always) assigned identifier for transfer job
String TRATOMCID; // U4:1 (varies) assigned identifier for atomic transfer
int TRACK; // TF:1 (always) transfer activity success flag
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TRJOBID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRATOMCID = list2[1];} else { TRATOMCID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
TRACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F21R | Transfer Job Command |
Sent by Host Only |
// S4F21R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 4, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 21)) {recvS4F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 TRJOBID TRCMDNAME {L:n {L:2 CPNAME CPVAL}}
// variables for data items and parsing
int TRJOBID; // B:1 (always) assigned identifier for transfer job
String TRCMDNAME; // A:n (always) text enum, CANCEL, PAUSE, RESUME, ABORT, STOP, STARTHANDOFF
String CPNAME; // A:n (varies) command parameter name
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TRJOBID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TRCMDNAME = list1[1];} else { TRCMDNAME = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S4F21R
S4F22 | Transfer Job Command Ack |
Sent by Equipment Only |
// S4F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(4, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TRACK {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int TRACK; // TF:1 (always) transfer activity success flag
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
TRACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F23[R] | Transfer Command Alert |
Sent by Equipment Only |
// S4F23 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 4, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 23)) {recvS4F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TRJOBID TRJOBNAME TRJOBMS {L:2 TRACK {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int TRJOBID; // B:1 (always) assigned identifier for transfer job
String TRJOBNAME; // A:80 (always) host assigned id for transfer job
int TRJOBMS; // U1:1 (always) transfer job milestone
int TRACK; // TF:1 (always) transfer activity success flag
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TRJOBID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TRJOBNAME = list1[1];} else { TRJOBNAME = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
TRJOBMS = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
TRACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 24, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F23
S4F24 | Transfer Alert Ack |
Sent by Host Only |
// S4F24 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(4, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S4F25R | Multi-block Inquire |
Sent by Host Only |
Comment: for SECS-I, not required for HSMS
Format:
// S4F25R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 4, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 25)) {recvS4F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 26, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S4F25R
S4F26 | Multi-block Grant |
Sent by Equipment Only |
// S4F26 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(4, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S4F27 | Handoff Ready |
Sent by Host and Equipment |
// S4F27 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 27)) {recvS4F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 EQNAME {L:11 TRLINK TRPORT TROBJNAME TROBJTYPE TRROLE TRPTNR TRPTPORT TRDIR TRTYPE TRLOCATION}
// variables for data items and parsing
String EQNAME; // A:80 (always) factory assigned equipment identifier
String TRLINK; // U4:1 (varies) task identifier correlation value
String TRPORT; // U4:1 (varies) port identifier
String TROBJNAME; // A:n (varies) identifies material to be transferred
String TROBJTYPE; // U4:1 (varies) identifies type of object to be transferred
int TRROLE; // U1:1 (always) indicates equipment transfer role
String TRPTNR; // A:n (always) EQNAME of transfer partner equipment
String TRPTPORT; // U4:1 (varies) transfer partner port
int TRDIR; // U1:1 (always) transfer direction
int TRTYPE; // U1:1 (always) equipment is active or passive transfer participant
String TRLOCATION; // U4:1 (varies) material transfer location
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EQNAME = list1[1];} else { EQNAME = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 12) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRLINK = list2[1];} else { TRLINK = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRPORT = list2[1];} else { TRPORT = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TROBJNAME = list2[1];} else { TROBJNAME = ""; }
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TROBJTYPE = list2[1];} else { TROBJTYPE = ""; }
list2 = TclList.split(list1[5]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
TRROLE = Integer.parse(list2[1]);
list2 = TclList.split(list1[6]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { TRPTNR = list2[1];} else { TRPTNR = ""; }
list2 = TclList.split(list1[7]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRPTPORT = list2[1];} else { TRPTPORT = ""; }
list2 = TclList.split(list1[8]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
TRDIR = Integer.parse(list2[1]);
list2 = TclList.split(list1[9]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
TRTYPE = Integer.parse(list2[1]);
list2 = TclList.split(list1[10]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TRLOCATION = list2[1];} else { TRLOCATION = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 28, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F27
S4F29 | Handoff Command |
Sent by Host and Equipment |
// S4F29 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 29)) {recvS4F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TRLINK MCINDEX HOCMDNAME {L:n {L:2 CPNAME CPVAL}}
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
String MCINDEX; // U4:1 (varies) correlation value for handoff command
String HOCMDNAME; // A:n (varies) handoff command identifier
String CPNAME; // A:n (varies) command parameter name
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MCINDEX = list1[1];} else { MCINDEX = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { HOCMDNAME = list1[1];} else { HOCMDNAME = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 30, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F29
S4F31 | Handoff Command Complete |
Sent by Host and Equipment |
// S4F31 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 31)) {recvS4F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 TRLINK MCINDEX {L:2 HOACK {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
String MCINDEX; // U4:1 (varies) correlation value for handoff command
int HOACK; // TF:1 (always) handoff success flag
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MCINDEX = list1[1];} else { MCINDEX = ""; }
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
HOACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 32, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F31
S4F33 | Handoff Verified |
Sent by Host and Equipment |
// S4F33 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 33)) {recvS4F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TRLINK {L:2 HOACK {L:n ERRCODE ERRTEXT}}
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
int HOACK; // TF:1 (always) handoff success flag
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
HOACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[n]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 34, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F33
S4F35 | Handoff Cancel Ready |
Sent by Host and Equipment |
// S4F35 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 35, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 35)) {recvS4F35(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TRLINK
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { TRLINK = list0[1];} else { TRLINK = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 36, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F35
S4F37 | Handoff Cancel Ready Ack |
Sent by Host and Equipment |
// S4F37 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 37, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 37)) {recvS4F37(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TRLINK HOCANCELACK
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
int HOCANCELACK; // U1:1 (always) hand off cancel ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
HOCANCELACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 38, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F37
S4F39 | Handoff Halt |
Sent by Host and Equipment |
// S4F39 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 39, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 39)) {recvS4F39(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TRLINK
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { TRLINK = list0[1];} else { TRLINK = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 40, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F39
S4F41 | Handoff Halt Ack |
Sent by Host and Equipment |
// S4F41 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 4, 41, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 4) && (function = 41)) {recvS4F41(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS4F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TRLINK HOHALTACK
// variables for data items and parsing
String TRLINK; // U4:1 (varies) task identifier correlation value
int HOHALTACK; // U1:1 (always) hand off halt ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRLINK = list1[1];} else { TRLINK = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
HOHALTACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(4, 42, transID, reply);
}
return;
} // end while(ok)
} // end recv_S4F41
S5F1[R] | Alarm Report Send |
Sent by Equipment Only |
// S5F1 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 5, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 1)) {recvS5F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 ALCD ALID ALTX
// variables for data items and parsing
int ALCD; // B:1 (always) alarm code byte, >= 128 alarm is set, bit field use is deprecated
String ALID; // U4:1 (varies) Alarm type ID
String ALTX; // A:120 (always) alarm text, the length limit was recently raised from 40
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ALCD = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ALID = list1[1];} else { ALID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ALTX = list1[1];} else { ALTX = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S5F1
S5F2 | Alarm Report Ack |
Sent by Host Only |
// S5F2 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(5, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC5
// variables for data items and parsing
int ACKC5; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC5 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S5F3[R] | Enable/Disable Alarm Send |
Sent by Host Only |
// S5F3 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 5, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 3)) {recvS5F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 ALED ALID
// variables for data items and parsing
int ALED; // B:1 (always) enable/disable alarm, 128 means enable, 0 disable
String ALID; // U4:1 (varies) Alarm type ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ALED = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ALID = list1[1];} else { ALID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S5F3
S5F4 | Enable/Disable Alarm Ack |
Sent by Equipment Only |
// S5F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(5, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC5
// variables for data items and parsing
int ACKC5; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC5 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S5F5R | List Alarms Request |
Sent by Host Only |
Comment: Host sends zero length item for all, otherwise ALID vector
Format:
// S5F5R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 5, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 5)) {recvS5F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect ALIDVECTOR
// variables for data items and parsing
int [] ALIDVECTOR; // U4:n (varies) alarm ID vector
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
ALIDVECTOR = new int[list0.length-1];
for(int i=0; i < ALIDVECTOR.length; i++) {
ALIDVECTOR[i] = Integer.parse(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S5F5R
S5F6 | List Alarm Data |
Sent by Equipment Only |
// S5F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(5, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 ALCD ALID ALTX}
// variables for data items and parsing
int ALCD; // B:1 (always) alarm code byte, >= 128 alarm is set, bit field use is deprecated
String ALID; // U4:1 (varies) Alarm type ID
String ALTX; // A:120 (always) alarm text, the length limit was recently raised from 40
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("B:1")) { ok = false; break; }
ALCD = sp.binToInt(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ALID = list2[1];} else { ALID = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ALTX = list2[1];} else { ALTX = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S5F7R | List Enabled Alarm Request |
Sent by Host Only |
// S5F7R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 5, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 7)) {recvS5F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 8, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S5F7R
S5F8 | List Enabled Alarm Data |
Sent by Equipment Only |
// S5F8 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(5, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 ALCD ALID ALTX}
// variables for data items and parsing
int ALCD; // B:1 (always) alarm code byte, >= 128 alarm is set, bit field use is deprecated
String ALID; // U4:1 (varies) Alarm type ID
String ALTX; // A:120 (always) alarm text, the length limit was recently raised from 40
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("B:1")) { ok = false; break; }
ALCD = sp.binToInt(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ALID = list2[1];} else { ALID = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ALTX = list2[1];} else { ALTX = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S5F9[R] | Exception Post Notify |
Sent by Equipment Only |
// S5F9 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 5, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 9)) {recvS5F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 TIMESTAMP EXID EXTYPE EXMESSAGE {L:n EXRECVRA}
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String EXID; // A:20 (always) exception identifier
String EXTYPE; // A:5 (always) exception type, "ALARM" or "ERROR"
String EXMESSAGE; // A:n (always) exception description
String EXRECVRA; // A:40 (always) exception recovery action description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXTYPE = list1[1];} else { EXTYPE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXMESSAGE = list1[1];} else { EXMESSAGE = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { EXRECVRA = list2[1];} else { EXRECVRA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S5F9
S5F10 | Exception Post Confirm |
Sent by Host Only |
// S5F10 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(5, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S5F11[R] | Exception Clear Notify |
Sent by Equipment Only |
// S5F11 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 5, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 11)) {recvS5F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TIMESTAMP EXID EXTYPE EXMESSAGE
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String EXID; // A:20 (always) exception identifier
String EXTYPE; // A:5 (always) exception type, "ALARM" or "ERROR"
String EXMESSAGE; // A:n (always) exception description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXTYPE = list1[1];} else { EXTYPE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXMESSAGE = list1[1];} else { EXMESSAGE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S5F11
S5F12 | Exception Clear Confirm |
Sent by Host Only |
// S5F12 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(5, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S5F13R | Exception Recover Request |
Sent by Host Only |
// S5F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 5, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 13)) {recvS5F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 EXID EXRECVRA
// variables for data items and parsing
String EXID; // A:20 (always) exception identifier
String EXRECVRA; // A:40 (always) exception recovery action description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXRECVRA = list1[1];} else { EXRECVRA = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S5F13R
S5F14 | Exception Recover Acknowledge |
Sent by Equipment Only |
Comment: L:2* can be L:2 or L:0
Format:
// S5F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(5, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
// variables for data items and parsing
String EXID; // A:20 (always) exception identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length == 3) { // 2 optional items found
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S5F15[R] | Exception Recovery Complete Notify |
Sent by Equipment Only |
Comment: L:2* can be L:2 or L:0; see E41
Format:
// S5F15 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 5, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 15)) {recvS5F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 TIMESTAMP EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String EXID; // A:20 (always) exception identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length == 3) { // 2 optional items found
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S5F15
S5F16 | Exception Recovery Complete Confirm |
Sent by Host Only |
// S5F16 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(5, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S5F17R | Exception Recovery Abort Request |
Sent by Host Only |
// S5F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 5, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 5) && (function = 17)) {recvS5F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS5F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect EXID
// variables for data items and parsing
String EXID; // A:20 (always) exception identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { EXID = list0[1];} else { EXID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(5, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S5F17R
S5F18 | Exception Recovery Abort Ack |
Sent by Equipment Only |
Comment: L:2* can be L:2 or L:0
Format:
// S5F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(5, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 EXID {L:2 ACKA {L:2* ERRCODE ERRTEXT}}
// variables for data items and parsing
String EXID; // A:20 (always) exception identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EXID = list1[1];} else { EXID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length == 3) { // 2 optional items found
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F1[R] | Trace Data Send |
Sent by Equipment Only |
// S6F1 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 1)) {recvS6F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TRID SMPLN STIME {L:n SV}
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
String SMPLN; // U4:1 (varies) sample number
String STIME; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String SV; // A:n (varies) status variable value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { SMPLN = list1[1];} else { SMPLN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { STIME = list1[1];} else { STIME = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { SV = list2[1];} else { SV = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F1
S6F2 | Trace Data Ack |
Sent by Host Only |
// S6F2 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F3[R] | Discrete Variable Data Send |
Sent by Equipment Only |
Comment: Discrete implies event-based such as analysis completion. Use S2F15 to choose supported events.
Format:
// S6F3 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 3)) {recvS6F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID CEID {L:n {L:2 DSID {L:m {L:2 DVNAME DVVAL}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String DSID; // A:n (varies) data set ID, akin to a report type
String DVNAME; // U4:1 (varies) data value name, generically a VID, therefore GEM requires Un type
String DVVAL; // A:n (varies) data value, any format including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { DSID = list3[1];} else { DSID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int m=1; m < list3.length; m++) {
String [] list4;
list4 = TclList.split(list3[m]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { DVNAME = list5[1];} else { DVNAME = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { DVVAL = list5[1];} else { DVVAL = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F3
S6F4 | Discrete Variable Data Send Ack |
Sent by Host Only |
// S6F4 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F5R | Multi-block Data Send Inquire |
Sent by Equipment Only |
Comment: for SECS-I and S6F3 F9 F11 and F13, not required for HSMS
Format:
// S6F5R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 5)) {recvS6F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F5R
S6F6 | Multi-block Grant |
Sent by Host Only |
// S6F6 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT6
// variables for data items and parsing
int GRANT6; // B:1 (always) multblock permission grant
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F7R | Data Transfer Request |
Sent by Host Only |
// S6F7R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 7)) {recvS6F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DATAID
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DATAID = list0[1];} else { DATAID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 8, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F7R
S6F8 | Data Transfer Data |
Sent by Equipment Only |
// S6F8 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 DATAID CEID {L:n DSID {L:m {L:2 DVNAME DVVAL}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String DSID; // A:n (varies) data set ID, akin to a report type
String DVNAME; // U4:1 (varies) data value name, generically a VID, therefore GEM requires Un type
String DVVAL; // A:n (varies) data value, any format including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { DSID = list2[1];} else { DSID = ""; }
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { DVNAME = list4[1];} else { DVNAME = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { DVVAL = list4[1];} else { DVVAL = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F9[R] | Formatted Variable Send |
Sent by Equipment Only |
Comment: like S6F3 without names
Format:
// S6F9 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 9)) {recvS6F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 PFCD DATAID CEID {L:n {L:2 DSID {L:m DVVAL}}}
// variables for data items and parsing
int PFCD; // B:1 (always) predefined form selector
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String DSID; // A:n (varies) data set ID, akin to a report type
String DVVAL; // A:n (varies) data value, any format including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
PFCD = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { DSID = list3[1];} else { DSID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int m=1; m < list3.length; m++) {
String [] list4;
list4 = TclList.split(list3[m]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { DVVAL = list4[1];} else { DVVAL = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F9
S6F10 | Formatted Variable Ack |
Sent by Host Only |
// S6F10 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F11R | Event Report Send |
Sent by Equipment Only |
// S6F11R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 11)) {recvS6F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b V}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { V = list4[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F11R
S6F12 | Event Report Ack |
Sent by Host Only |
// S6F12 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F13R | Annotated Event Report Send |
Sent by Equipment Only |
// S6F13R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 13)) {recvS6F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b {L:2 VID V}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
String VID; // A:n (varies) A variable ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { VID = list5[1];} else { VID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { V = list5[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F13R
S6F14 | Annotated Event Report Ack |
Sent by Host Only |
// S6F14 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F15R | Event Report Request |
Sent by Host Only |
// S6F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 15)) {recvS6F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect CEID
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { CEID = list0[1];} else { CEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F15R
S6F16 | Event Report Data |
Sent by Equipment Only |
// S6F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b V}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { V = list4[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F17R | Annotated Event Report Request |
Sent by Host Only |
// S6F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 17)) {recvS6F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect CEID
// variables for data items and parsing
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { CEID = list0[1];} else { CEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F17R
S6F18 | Annotated Event Report Data |
Sent by Equipment Only |
// S6F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 DATAID CEID {L:a {L:2 RPTID {L:b {L:2 VID V}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
String VID; // A:n (varies) A variable ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int b=1; b < list3.length; b++) {
String [] list4;
list4 = TclList.split(list3[b]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { VID = list5[1];} else { VID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { V = list5[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F19R | Individual Report Request |
Sent by Host Only |
// S6F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 19)) {recvS6F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RPTID
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { RPTID = list0[1];} else { RPTID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F19R
S6F20 | Individual Report Data |
Sent by Equipment Only |
// S6F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n V
// variables for data items and parsing
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { V = list1[1];} else { V = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F21R | Annotated Individual Report Request |
Sent by Host Only |
// S6F21R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 21)) {recvS6F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RPTID
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { RPTID = list0[1];} else { RPTID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F21R
S6F22 | Annotated Individual Report Data |
Sent by Equipment Only |
// S6F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:2 VID V}
// variables for data items and parsing
String VID; // A:n (varies) A variable ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { V = list2[1];} else { V = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F23R | Request or Purge Spooled Data |
Sent by Host Only |
// S6F23R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 23)) {recvS6F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RSDC
// variables for data items and parsing
int RSDC; // U1:1 (always) spool request code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
RSDC = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 24, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F23R
S6F24 | Request or Purge Spooled Data Ack |
Sent by Equipment Only |
// S6F24 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect RSDA
// variables for data items and parsing
int RSDA; // B:1 (always) spool request reply
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
RSDA = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F25[R] | Notification Report Send |
Sent by Host and Equipment |
// S6F25 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 6, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 25)) {recvS6F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:7 DATAID OPID LINKID RCPSPEC RMCHGSTAT {L:m {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OPID; // U4:1 (varies) operation identifier
int LINKID; // U4:1 (always) correlates the RMOPID value in a request to a completion report
String RCPSPEC; // A:n (always) recipe specifier
String RMCHGSTAT; // U4:1 (varies) object change type
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LINKID = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMCHGSTAT = list1[1];} else { RMCHGSTAT = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[7]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 26, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F25
S6F26 | Notification Report Send Ack |
Sent by Host and Equipment |
// S6F26 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(6, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC6
// variables for data items and parsing
int ACKC6; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC6 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F27[R] | Trace Report Send |
Sent by Equipment Only |
// S6F27 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 6, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 27)) {recvS6F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID TRID {L:n {L:p {L:2 RPTID {L:m V}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String TRID; // A:n (varies) trace request ID
String RPTID; // U4:1 (varies) report ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { RPTID = list4[1];} else { RPTID = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok=false; break; }
for(int m=1; m < list4.length; m++) {
String [] list5;
list5 = TclList.split(list4[m]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { V = list5[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 28, transID, reply);
}
return;
} // end while(ok)
} // end recv_S6F27
S6F28 | Trace Report Send Ack |
Sent by Host Only |
// S6F28 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(6, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { TRID = list0[1];} else { TRID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S6F29R | Trace Report Request |
Sent by Host Only |
// S6F29R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 6, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 6) && (function = 29)) {recvS6F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS6F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { TRID = list0[1];} else { TRID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(6, 30, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S6F29R
S6F30 | Trace Report Data |
Sent by Equipment Only |
Comment: ERRCODE is set to zero length when there is no error.
Format:
// S6F30 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(6, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TRID {L:n {L:2 RPTID {L:m V}}} ERRCODE
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
String RPTID; // U4:1 (varies) report ID
String V; // A:n (varies) variable value, any type including list
String ERRCODE; // U4:1 (varies) error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int m=1; m < list3.length; m++) {
String [] list4;
list4 = TclList.split(list3[m]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { V = list4[1];} else { V = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F1R | Process Program Load Inquire |
Sent by Host and Equipment |
// S7F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 1)) {recvS7F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PPID LENGTH
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
int LENGTH; // U4:1 (always) program length in bytes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LENGTH = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F1R
S7F2 | Process Program Load Grant |
Sent by Host and Equipment |
// S7F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PPGNT
// variables for data items and parsing
int PPGNT; // B:1 (always) process program transfer grant status
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
PPGNT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F3R | Process Program Send |
Sent by Host and Equipment |
// S7F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 3)) {recvS7F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PPID PPBODY
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
int [] PPBODY; // B:n (varies) process program data, any non-list type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
PPBODY = new int[list1.length-1];
for(int i=0; i < PPBODY.length; i++) {
PPBODY[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F3R
S7F4 | Process Program Send Acknowledge |
Sent by Host and Equipment |
// S7F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F5R | Process Program Request |
Sent by Host and Equipment |
// S7F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 5)) {recvS7F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect PPID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F5R
S7F6 | Process Program Data |
Sent by Host and Equipment |
// S7F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 PPID PPBODY
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
int [] PPBODY; // B:n (varies) process program data, any non-list type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
PPBODY = new int[list1.length-1];
for(int i=0; i < PPBODY.length; i++) {
PPBODY[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F7R | Process Program ID Request |
Sent by Equipment Only |
// S7F7R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 7, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 7)) {recvS7F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MID
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { MID = list0[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F7R
S7F8 | Process Program ID Data |
Sent by Host Only |
// S7F8 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(7, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 PPID MID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F9R | Matl/Process Matrix Request |
Sent by Host and Equipment |
// S7F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 9)) {recvS7F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F9R
S7F10 | Matl/Process Matrix Data |
Sent by Host and Equipment |
// S7F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:2 PPID {L:a MID}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F11[R] | Matl/Process Matrix Update Send |
Sent by Host Only |
// S7F11 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 11)) {recvS7F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n {L:2 PPID {L:a MID}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F11
S7F12 | Matl/Process Matrix Update Ack |
Sent by Equipment Only |
// S7F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F13[R] | Matl/Process Matrix Delete Entry Send |
Sent by Host Only |
// S7F13 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 13)) {recvS7F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n {L:2 PPID {L:a MID}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PPID = list2[1];} else { PPID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MID = list3[1];} else { MID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F13
S7F14 | Delete Matl/Process Matrix Entry Acknowledge |
Sent by Equipment Only |
// S7F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F15R | Matrix Mode Select Send |
Sent by Host Only |
// S7F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 15)) {recvS7F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MMODE
// variables for data items and parsing
int MMODE; // B:1 (always) matrix mode selection
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
MMODE = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F15R
S7F16 | Matrix Mode Select Ack |
Sent by Equipment Only |
// S7F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F17R | Delete Process Program Send |
Sent by Host Only |
Comment: Host can send L:0 to delete all.
Format:
// S7F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 17)) {recvS7F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n PPID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F17R
S7F18 | Delete Process Program Acknowledge |
Sent by Equipment Only |
// S7F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F19R | Current Process Program Dir Request |
Sent by Host Only |
// S7F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 19)) {recvS7F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F19R
S7F20 | Current Process Program Data |
Sent by Equipment Only |
// S7F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n PPID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F21 | Process Capabilities Request |
Sent by Host Only |
// S7F21 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 21)) {recvS7F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F21
S7F22 | Process Capabilities Data |
Sent by Equipment Only |
Comment: L:x can be L:9, L:5, or L:4 with different data items
Format:
// S7F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:5 MDLN SOFTREV CMDMAX BYTMAX {L:c {L:11 CCODE CNAME RQCMD BLKDEF BCDS IBCDS NBCDS ACDS IACDS NACDS {L:p L:x}}}
// variables for data items and parsing
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
String CMDMAX; // U1:1 (varies) maximum number of commands allowed, 0=unlimited
String BYTMAX; // U4:1 (varies) process program maximum byte length, 0 means no limit
String CCODE; // A:n (varies) process operation command code
String CNAME; // A:16 (always) text name for a CCODE
int RQCMD; // TF:1 (always) flag that command is required
int BLKDEF; // I1:1 (always) command definition block relationship, standard incorrectly says type U1 is possible
int [] BCDS; // U2:n (varies) before command code vector
int [] IBCDS; // U2:n (varies) vector of immediately before command codes
int [] NBCDS; // U2:n (varies) vector of not before command codes
String ACDS; // U2:1 (varies) after command codes
int [] IACDS; // U2:n (varies) vector of immediately after command codes
int [] NACDS; // U2:n (varies) vector of not after command codes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CMDMAX = list1[1];} else { CMDMAX = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { BYTMAX = list1[1];} else { BYTMAX = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length != 12) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { CNAME = list3[1];} else { CNAME = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("TF:1")) { ok = false; break; }
RQCMD = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("I1:1")) { ok = false; break; }
BLKDEF = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
BCDS = new int[list3.length-1];
for(int i=0; i < BCDS.length; i++) {
BCDS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
IBCDS = new int[list3.length-1];
for(int i=0; i < IBCDS.length; i++) {
IBCDS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
NBCDS = new int[list3.length-1];
for(int i=0; i < NBCDS.length; i++) {
NBCDS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ACDS = list3[1];} else { ACDS = ""; }
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
IACDS = new int[list3.length-1];
for(int i=0; i < IACDS.length; i++) {
IACDS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[10]);
if (list3.length < 1) { ok = false; break; }
NACDS = new int[list3.length-1];
for(int i=0; i < NACDS.length; i++) {
NACDS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[11]);
if (list3.length < 1) { ok=false; break; }
for(int p=1; p < list3.length; p++) {
String [] list4;
list4 = TclList.split(list3[p]);
if (list4.length != 1 || list4[0] != "L:x") { ok = false; break; }
// single token data such as L:0 or U4:0 has been received as expected
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F23R | Formatted Process Program Send |
Sent by Host and Equipment |
// S7F23R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 23)) {recvS7F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
String CCODE; // A:n (varies) process operation command code
String PPARM; // A:n (varies) process parameter, any scalar or vector
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int p=1; p < list3.length; p++) {
String [] list4;
list4 = TclList.split(list3[p]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 24, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F23R
S7F24 | Formatted Process Program Acknowledge |
Sent by Host and Equipment |
// S7F24 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F25R | Formatted Process Program Request |
Sent by Host and Equipment |
// S7F25R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 25)) {recvS7F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect PPID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 26, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F25R
S7F26 | Formatted Process Program Data |
Sent by Host and Equipment |
// S7F26 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
String CCODE; // A:n (varies) process operation command code
String PPARM; // A:n (varies) process parameter, any scalar or vector
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int p=1; p < list3.length; p++) {
String [] list4;
list4 = TclList.split(list3[p]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F27R | Process Program Verification Send |
Sent by Equipment Only |
// S7F27R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 7, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 27)) {recvS7F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PPID {L:n {L:3 ACKC7A SEQNUM ERRW7}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String ACKC7A; // U4:1 (varies) process program check code
String SEQNUM; // U4:1 (varies) process program command number
String ERRW7; // A:n (varies) process program error description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ACKC7A = list3[1];} else { ACKC7A = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { SEQNUM = list3[1];} else { SEQNUM = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRW7 = list3[1];} else { ERRW7 = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 28, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F27R
S7F28 | Process Program Verification Acknowledge |
Sent by Host Only |
// S7F28 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(7, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S7F29R | Process Program Verification Inquire |
Sent by Equipment Only |
Comment: This is a multiblock inquire for S7F27 so the LENGTH is the S7F27 message length an not the PP length.
Format:
// S7F29R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 7, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 29)) {recvS7F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect LENGTH
// variables for data items and parsing
int LENGTH; // U4:1 (always) program length in bytes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U4:1")) { ok = false; break; }
LENGTH = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 30, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F29R
S7F30 | Process Program Verification Grant |
Sent by Host Only |
// S7F30 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(7, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PPGNT
// variables for data items and parsing
int PPGNT; // B:1 (always) process program transfer grant status
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
PPGNT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F31R | Verification Request Send |
Sent by Host Only |
// S7F31R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 7, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 31)) {recvS7F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 PPID MDLN SOFTREV {L:c {L:2 CCODE {L:p PPARM}}}
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String MDLN; // A:20 (always) equipment model type
String SOFTREV; // A:20 (always) software revision
String CCODE; // A:n (varies) process operation command code
String PPARM; // A:n (varies) process parameter, any scalar or vector
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MDLN = list1[1];} else { MDLN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SOFTREV = list1[1];} else { SOFTREV = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CCODE = list3[1];} else { CCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int p=1; p < list3.length; p++) {
String [] list4;
list4 = TclList.split(list3[p]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { PPARM = list4[1];} else { PPARM = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 32, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S7F31R
S7F32 | Verification Request Acknowledge |
Sent by Equipment Only |
// S7F32 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(7, 31, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F33R | Process Program Available Request |
Sent by Host and Equipment |
// S7F33R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 33)) {recvS7F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect PPID
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { PPID = list0[1];} else { PPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 34, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F33R
S7F34 | Process Program Availability Data |
Sent by Host and Equipment |
// S7F34 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 33, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 PPID UNFLEN FRMLEN
// variables for data items and parsing
String PPID; // A:80 (varies) process program ID
String UNFLEN; // U4:1 (varies) unformatted process program length if available, else 0
String FRMLEN; // U4:1 (varies) formatted process program length if available, else 0
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { UNFLEN = list1[1];} else { UNFLEN = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { FRMLEN = list1[1];} else { FRMLEN = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F35R | Process Program for MID Request |
Sent by Host and Equipment |
// S7F35R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 35, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 35)) {recvS7F35(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MID
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { MID = list0[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 36, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F35R
S7F36 | Process Program for MID Data |
Sent by Host and Equipment |
// S7F36 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 35, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 MID PPID PPBODY
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
String PPID; // A:80 (varies) process program ID
int [] PPBODY; // B:n (varies) process program data, any non-list type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PPID = list1[1];} else { PPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
PPBODY = new int[list1.length-1];
for(int i=0; i < PPBODY.length; i++) {
PPBODY[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F37R | Large PP Send |
Sent by Host and Equipment |
// S7F37R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 37, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 37)) {recvS7F37(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 38, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F37R
S7F38 | Large PP Send Ack |
Sent by Host and Equipment |
// S7F38 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 37, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F39R | Large Formatted PP Send |
Sent by Host and Equipment |
// S7F39R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 39, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 39)) {recvS7F39(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 40, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F39R
S7F40 | Large Formatted PP Ack |
Sent by Host and Equipment |
// S7F40 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 39, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F41R | Large PP Req |
Sent by Host and Equipment |
// S7F41R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 41, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 41)) {recvS7F41(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 42, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F41R
S7F42 | Large PP Req Ack |
Sent by Host and Equipment |
// S7F42 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 41, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S7F43R | Large Formatted PP Req |
Sent by Host and Equipment |
// S7F43R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 7, 43, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 7) && (function = 43)) {recvS7F43(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS7F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(7, 44, transID, reply);
}
return;
} // end while(ok)
} // end recv_S7F43R
S7F44 | Large Formatted PP Req Ack |
Sent by Host and Equipment |
// S7F44 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(7, 43, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC7
// variables for data items and parsing
int ACKC7; // B:1 (always) S7 acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC7 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S8F1R | Boot Program Request |
Sent by Host and Equipment |
// S8F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 8, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 8) && (function = 1)) {recvS8F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS8F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(8, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S8F1R
S8F2 | Boot Program Data |
Sent by Host and Equipment |
// S8F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(8, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect BPD
// variables for data items and parsing
int [] BPD; // B:n (always) boot program data, the fantasy of using SECS for boot programs has been revived
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
BPD = new int[list0.length-1];
for(int i=0; i < BPD.length; i++) {
BPD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S8F3R | Executive Program Request |
Sent by Host and Equipment |
// S8F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 8, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 8) && (function = 3)) {recvS8F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS8F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(8, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S8F3R
S8F4 | Executive Program Data |
Sent by Host and Equipment |
// S8F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(8, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect EPD
// variables for data items and parsing
int [] EPD; // B:n (always) executive program data, the fantasy of using SECS for this has been revived
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
EPD = new int[list0.length-1];
for(int i=0; i < EPD.length; i++) {
EPD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S9F1 | Unknown Device ID |
Sent by Equipment Only |
// S9F1 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 1)) {recvS9F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MHEAD
// variables for data items and parsing
int [] MHEAD; // B:10 (always) message header of received block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
MHEAD = new int[list0.length-1];
for(int i=0; i < MHEAD.length; i++) {
MHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F1
S9F3 | Unknown Stream |
Sent by Equipment Only |
// S9F3 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 3)) {recvS9F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MHEAD
// variables for data items and parsing
int [] MHEAD; // B:10 (always) message header of received block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
MHEAD = new int[list0.length-1];
for(int i=0; i < MHEAD.length; i++) {
MHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F3
S9F5 | Unknown Function |
Sent by Equipment Only |
// S9F5 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 5)) {recvS9F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MHEAD
// variables for data items and parsing
int [] MHEAD; // B:10 (always) message header of received block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
MHEAD = new int[list0.length-1];
for(int i=0; i < MHEAD.length; i++) {
MHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F5
S9F7 | Illegal Data |
Sent by Equipment Only |
// S9F7 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 7)) {recvS9F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MHEAD
// variables for data items and parsing
int [] MHEAD; // B:10 (always) message header of received block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
MHEAD = new int[list0.length-1];
for(int i=0; i < MHEAD.length; i++) {
MHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F7
S9F9 | Transaction Timeout |
Sent by Equipment Only |
// S9F9 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 9)) {recvS9F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect SHEAD
// variables for data items and parsing
int [] SHEAD; // B:10 (always) message header of sent block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
SHEAD = new int[list0.length-1];
for(int i=0; i < SHEAD.length; i++) {
SHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F9
S9F11 | Data Too Long |
Sent by Equipment Only |
// S9F11 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 11)) {recvS9F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect MHEAD
// variables for data items and parsing
int [] MHEAD; // B:10 (always) message header of received block
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("B:")) { ok = false; break; }
MHEAD = new int[list0.length-1];
for(int i=0; i < MHEAD.length; i++) {
MHEAD[i] = sp.binToInt(list0[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F11
S9F13 | Conversation Timeout |
Sent by Equipment Only |
// S9F13 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 9, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 9) && (function = 13)) {recvS9F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS9F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MEXP EDID
// variables for data items and parsing
String MEXP; // A:6 (always) message expected in form of SxxFyy
String EDID; // A:80 (varies) expected data identification, PPID or SPID or PTN
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { MEXP = list1[1];} else { MEXP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { EDID = list1[1];} else { EDID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
} // end while(ok)
} // end recv_S9F13
S10F1[R] | Terminal Request |
Sent by Equipment Only |
// S10F1 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 10, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 10) && (function = 1)) {recvS10F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS10F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TID TEXT
// variables for data items and parsing
int TID; // B:1 (always) terminal ID
String TEXT; // A:120 (varies) line of text for display, no standard max size
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TEXT = list1[1];} else { TEXT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(10, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S10F1
S10F2 | Terminal Request Acknowledge |
Sent by Host Only |
// S10F2 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(10, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC10
// variables for data items and parsing
int ACKC10; // B:1 (always) acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC10 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S10F3[R] | Terminal Display, Single |
Sent by Host Only |
// S10F3 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 10, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 10) && (function = 3)) {recvS10F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS10F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TID TEXT
// variables for data items and parsing
int TID; // B:1 (always) terminal ID
String TEXT; // A:120 (varies) line of text for display, no standard max size
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TEXT = list1[1];} else { TEXT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(10, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S10F3
S10F4 | Terminal Display, Single Acknowledge |
Sent by Equipment Only |
// S10F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(10, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC10
// variables for data items and parsing
int ACKC10; // B:1 (always) acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC10 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S10F5[R] | Terminal Display, Multi-Block |
Sent by Host Only |
// S10F5 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 10, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 10) && (function = 5)) {recvS10F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS10F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TID {L:n TEXT}
// variables for data items and parsing
int TID; // B:1 (always) terminal ID
String TEXT; // A:120 (varies) line of text for display, no standard max size
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
TID = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TEXT = list2[1];} else { TEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(10, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S10F5
S10F6 | Terminal Display, Multi-Block Acknowledge |
Sent by Equipment Only |
// S10F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(10, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC10
// variables for data items and parsing
int ACKC10; // B:1 (always) acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC10 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S10F7 | Multi-block Not Allowed |
Sent by Equipment Only |
// S10F7 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 10, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 10) && (function = 7)) {recvS10F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS10F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TID
// variables for data items and parsing
int TID; // B:1 (always) terminal ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
TID = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(10, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S10F7
S10F9 | Broadcast |
Sent by Host Only |
// S10F9 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 10, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 10) && (function = 9)) {recvS10F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS10F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TEXT
// variables for data items and parsing
String TEXT; // A:120 (varies) line of text for display, no standard max size
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { TEXT = list0[1];} else { TEXT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(10, 10, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S10F9
S10F10 | Broadcast Acknowledge |
Sent by Equipment Only |
// S10F10 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(10, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC10
// variables for data items and parsing
int ACKC10; // B:1 (always) acknowledge code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC10 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F1R | Map Setup Data Send |
Sent by Equipment Only |
// S12F1R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 1)) {recvS12F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:15 MID IDTYP FNLOC FFROT ORLOC RPSEL {L:n REFP} DUTMS XDIES YDIES ROWCT COLCT NULBC PRDCT PRAXI
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int FNLOC; // U2:1 (always) flat/notch location in degrees clockwise from bottom
int FFROT; // U2:1 (always) film frame location in degrees clockwise from bottom
int ORLOC; // B:1 (always) origin location
int RPSEL; // U1:1 (always) reference point select
int [] REFP; // I4:2 (varies) x y reference point
String DUTMS; // A:n (always) die units of measure (per E5 Section 12)
String XDIES; // F4:1 (varies) X-axis die size
String YDIES; // F4:1 (varies) Y-axis die size
String ROWCT; // U4:1 (varies) row count in die increments
String COLCT; // U4:1 (varies) column count in die increments
String NULBC; // A:n (varies) null bin code value
String PRDCT; // U4:1 (varies) process die count
int PRAXI; // B:1 (always) process access
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 16) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
FNLOC = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
FFROT = Integer.parse(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ORLOC = sp.binToInt(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RPSEL = Integer.parse(list1[1]);
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
REFP = new int[list2.length-1];
for(int i=0; i < REFP.length; i++) {
REFP[i] = Integer.parse(list2[1+i]);
}
}
if (!ok) break;
list1 = TclList.split(list0[8]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { DUTMS = list1[1];} else { DUTMS = ""; }
list1 = TclList.split(list0[9]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { XDIES = list1[1];} else { XDIES = ""; }
list1 = TclList.split(list0[10]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { YDIES = list1[1];} else { YDIES = ""; }
list1 = TclList.split(list0[11]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ROWCT = list1[1];} else { ROWCT = ""; }
list1 = TclList.split(list0[12]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { COLCT = list1[1];} else { COLCT = ""; }
list1 = TclList.split(list0[13]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
list1 = TclList.split(list0[14]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PRDCT = list1[1];} else { PRDCT = ""; }
list1 = TclList.split(list0[15]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
PRAXI = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F1R
S12F2 | Map Setup Data Acknowledge |
Sent by Host Only |
// S12F2 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SDACK
// variables for data items and parsing
int SDACK; // B:1 (always) setup data ack, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
SDACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F3R | Map Setup Data Request |
Sent by Equipment Only |
// S12F3R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 3)) {recvS12F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:9 MID IDTYP MAPFT FNLOC FFROT ORLOC PRAXI BCEQU NULBC
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int MAPFT; // B:1 (always) map data format type
int FNLOC; // U2:1 (always) flat/notch location in degrees clockwise from bottom
int FFROT; // U2:1 (always) film frame location in degrees clockwise from bottom
int ORLOC; // B:1 (always) origin location
int PRAXI; // B:1 (always) process access
int [] BCEQU; // U1:n (varies) array of bin code equivalents
String NULBC; // A:n (varies) null bin code value
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 10) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
MAPFT = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
FNLOC = Integer.parse(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
FFROT = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ORLOC = sp.binToInt(list1[1]);
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
PRAXI = sp.binToInt(list1[1]);
list1 = TclList.split(list0[8]);
if (list1.length < 1) { ok = false; break; }
BCEQU = new int[list1.length-1];
for(int i=0; i < BCEQU.length; i++) {
BCEQU[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[9]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F3R
S12F4 | Map Setup Data |
Sent by Host Only |
// S12F4 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:15 MID IDTYP FNLOC ORLOC RPSEL {L:n REFP} DUTMS XDIES YDIES ROWCT COLCT PRDCT BCEQU NULBC MLCL
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int FNLOC; // U2:1 (always) flat/notch location in degrees clockwise from bottom
int ORLOC; // B:1 (always) origin location
int RPSEL; // U1:1 (always) reference point select
int [] REFP; // I4:2 (varies) x y reference point
String DUTMS; // A:n (always) die units of measure (per E5 Section 12)
String XDIES; // F4:1 (varies) X-axis die size
String YDIES; // F4:1 (varies) Y-axis die size
String ROWCT; // U4:1 (varies) row count in die increments
String COLCT; // U4:1 (varies) column count in die increments
String PRDCT; // U4:1 (varies) process die count
int [] BCEQU; // U1:n (varies) array of bin code equivalents
String NULBC; // A:n (varies) null bin code value
String MLCL; // U4:1 (varies) message length in bytes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 16) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
FNLOC = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ORLOC = sp.binToInt(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RPSEL = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
REFP = new int[list2.length-1];
for(int i=0; i < REFP.length; i++) {
REFP[i] = Integer.parse(list2[1+i]);
}
}
if (!ok) break;
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { DUTMS = list1[1];} else { DUTMS = ""; }
list1 = TclList.split(list0[8]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { XDIES = list1[1];} else { XDIES = ""; }
list1 = TclList.split(list0[9]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { YDIES = list1[1];} else { YDIES = ""; }
list1 = TclList.split(list0[10]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ROWCT = list1[1];} else { ROWCT = ""; }
list1 = TclList.split(list0[11]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { COLCT = list1[1];} else { COLCT = ""; }
list1 = TclList.split(list0[12]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PRDCT = list1[1];} else { PRDCT = ""; }
list1 = TclList.split(list0[13]);
if (list1.length < 1) { ok = false; break; }
BCEQU = new int[list1.length-1];
for(int i=0; i < BCEQU.length; i++) {
BCEQU[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[14]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { NULBC = list1[1];} else { NULBC = ""; }
list1 = TclList.split(list0[15]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MLCL = list1[1];} else { MLCL = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F5R | Map Transmit Inquire |
Sent by Equipment Only |
// S12F5R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 5)) {recvS12F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 MID IDTYP MAPFT MLCL
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int MAPFT; // B:1 (always) map data format type
String MLCL; // U4:1 (varies) message length in bytes
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
MAPFT = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MLCL = list1[1];} else { MLCL = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F5R
S12F6 | Map Transmit Grant |
Sent by Host Only |
// S12F6 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRNT1
// variables for data items and parsing
int GRNT1; // B:1 (always) grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRNT1 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F7R | Map Data Send Type 1 |
Sent by Equipment Only |
// S12F7R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 7)) {recvS12F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 MID IDTYP {L:n {L:2 RSINF BINLT}}
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] RSINF; // I4:3 (varies) starting location for row or column, x,y,direction triplet
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
RSINF = new int[list3.length-1];
for(int i=0; i < RSINF.length; i++) {
RSINF[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
BINLT = new int[list3.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list3[1+i]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F7R
S12F8 | Map Data Ack Type 1 |
Sent by Host Only |
// S12F8 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect MDACK
// variables for data items and parsing
int MDACK; // B:1 (always) map data ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
MDACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F9R | Map Data Send Type 2 |
Sent by Equipment Only |
// S12F9R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 9)) {recvS12F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 MID IDTYP STRP BINLT
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] STRP; // I2:2 (varies) x y die coordinate starting position
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
STRP = new int[list1.length-1];
for(int i=0; i < STRP.length; i++) {
STRP[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
BINLT = new int[list1.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F9R
S12F10 | Map Data Ack Type 2 |
Sent by Host Only |
// S12F10 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect MDACK
// variables for data items and parsing
int MDACK; // B:1 (always) map data ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
MDACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F11R | Map Data Send Type 3 |
Sent by Equipment Only |
// S12F11R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 11)) {recvS12F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 MID IDTYP {L:n {L:2 XYPOS BINLT}}
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] XYPOS; // I2:2 (varies) x y coordinate position
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
XYPOS = new int[list3.length-1];
for(int i=0; i < XYPOS.length; i++) {
XYPOS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
BINLT = new int[list3.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list3[1+i]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F11R
S12F12 | Map Data Ack Type 3 |
Sent by Host Only |
// S12F12 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect MDACK
// variables for data items and parsing
int MDACK; // B:1 (always) map data ack
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
MDACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F13R | Map Data Request Type 1 |
Sent by Equipment Only |
// S12F13R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 13)) {recvS12F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MID IDTYP
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F13R
S12F14 | Map Data Type 1 |
Sent by Host Only |
// S12F14 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 MID IDTYP {L:n {L:2 RSINF BINLT}}
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] RSINF; // I4:3 (varies) starting location for row or column, x,y,direction triplet
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
RSINF = new int[list3.length-1];
for(int i=0; i < RSINF.length; i++) {
RSINF[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
BINLT = new int[list3.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list3[1+i]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F15R | Map Data Request Type 2 |
Sent by Equipment Only |
// S12F15R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 15)) {recvS12F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MID IDTYP
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F15R
S12F16 | Map Data Type 2 |
Sent by Host Only |
// S12F16 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 MID IDTYP STRP BINLT
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] STRP; // I2:2 (varies) x y die coordinate starting position
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
STRP = new int[list1.length-1];
for(int i=0; i < STRP.length; i++) {
STRP[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
BINLT = new int[list1.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F17R | Map Data Request Type 3 |
Sent by Equipment Only |
// S12F17R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 12, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 17)) {recvS12F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 MID IDTYP SDBIN
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int SDBIN; // B:1 (always) send bin data flag, 0=send, else do not
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
SDBIN = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F17R
S12F18 | Map Data Type 3 |
Sent by Host Only |
// S12F18 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(12, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 MID IDTYP {L:n {L:2 XYPOS BINLT}}
// variables for data items and parsing
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int IDTYP; // B:1 (always) ID type
int [] XYPOS; // I2:2 (varies) x y coordinate position
int [] BINLT; // U1:n (varies) array of bin values, text or U1 array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
IDTYP = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
XYPOS = new int[list3.length-1];
for(int i=0; i < XYPOS.length; i++) {
XYPOS[i] = Integer.parse(list3[1+i]);
}
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
BINLT = new int[list3.length-1];
for(int i=0; i < BINLT.length; i++) {
BINLT[i] = Integer.parse(list3[1+i]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S12F19 | Map Error Report Send |
Sent by Host and Equipment |
// S12F19 Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 12, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 12) && (function = 19)) {recvS12F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS12F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 MAPER DATLC
// variables for data items and parsing
int MAPER; // B:1 (always) map error
int DATLC; // U1:1 (always) location of invalid data, offset in bytes in the SECS-II message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
MAPER = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
DATLC = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(12, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S12F19
S13F1R | Send Data Set Send |
Sent by Host and Equipment |
Comment: S13F1 seems to have the L: wrapper that S13F2 is missing. Be prepared to receive DSNAME without the L:
Format:
// S13F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 1)) {recvS13F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:1 DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 2) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F1R
S13F2 | Send Data Set Ack |
Sent by Host and Equipment |
Comment: The standards have had an erroneous structure for years - the L:2 has been missing. Unfortunately some implementations have not realized it was an error. The latest Hume versions automagically create the L:2 wrapper when it is missing.
Format:
// S13F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 DSNAME ACKC13
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
int ACKC13; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ACKC13 = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F3R | Open Data Set Request |
Sent by Host and Equipment |
Comment: Sent by the receiver to open a data set for reading
Format:
// S13F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 3)) {recvS13F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 HANDLE DSNAME CKPNT
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
int CKPNT; // U4:1 (always) data set checkpoint defined by sender
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
CKPNT = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F3R
S13F4 | Open Data Set Data |
Sent by Host and Equipment |
// S13F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:5 HANDLE DSNAME ACKC13 RTYPE RECLEN
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
int ACKC13; // B:1 (always) acknowledge code, 0 ok
String RTYPE; // U1:1 (varies) type of data record
String RECLEN; // U4:1 (varies) maximum number of bytes or characters in a discrete record
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ACKC13 = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RTYPE = list1[1];} else { RTYPE = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RECLEN = list1[1];} else { RECLEN = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F5R | Read Data Set Request |
Sent by Host and Equipment |
// S13F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 5)) {recvS13F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 HANDLE READLN
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
String READLN; // U4:1 (varies) maximum number of bytes or characters to read
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { READLN = list1[1];} else { READLN = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F5R
S13F6 | Read Data Set Data |
Sent by Host and Equipment |
// S13F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 HANDLE ACKC13 CKPNT {L:n FILDAT}
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
int ACKC13; // B:1 (always) acknowledge code, 0 ok
int CKPNT; // U4:1 (always) data set checkpoint defined by sender
int [] FILDAT; // B (varies) Data Set Data, binary or ascii. Max length is the RECLEN from open.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ACKC13 = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
CKPNT = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
FILDAT = new int[list2.length-1];
for(int i=0; i < FILDAT.length; i++) {
FILDAT[i] = sp.binToInt(list2[1+i]);
}
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F7R | Close Data Set Send |
Sent by Host and Equipment |
// S13F7R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 7)) {recvS13F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:1 HANDLE
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 2) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F7R
S13F8 | Close Data Set Ack |
Sent by Host and Equipment |
// S13F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 HANDLE ACKC13
// variables for data items and parsing
int [] HANDLE; // U4 (varies) logical unit or handle for a data set
int ACKC13; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
HANDLE = new int[list1.length-1];
for(int i=0; i < HANDLE.length; i++) {
HANDLE[i] = Integer.parse(list1[1+i]);
}
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ACKC13 = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F9R | Reset Data Set Send |
Sent by Host and Equipment |
// S13F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 9)) {recvS13F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F9R
S13F10 | Reset Data Set Ack |
Sent by Host and Equipment |
// S13F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S13F11R | Data Set Obj Multi-Block Inquire |
Sent by Host and Equipment |
// S13F11R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 11)) {recvS13F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID OBJSPEC DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F11R
S13F12 | Data Set Obj Multi-Block Grant |
Sent by Host and Equipment |
// S13F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F13R | Table Data Send |
Sent by Host and Equipment |
Comment: The first element of every row is a primary key value which identifies the row. The row items correspond in sequence to the column headers. E58 uses attributes NumCols, NumRows, and DataLength
Format:
// S13F13R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 13)) {recvS13F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:8 DATAID OBJSPEC TBLTYP TBLID TBLCMD {L:n {L:2 ATTRID ATTRDATA}} {L:c COLHDR} {L:r {L:m TBLELT}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String TBLTYP; // A:n (always) denotes the format and application of the table, conforms to OBJTYPE
String TBLID; // A:80 (varies) table identifier, a kind of OBJSPEC
int TBLCMD; // U1:1 (always) table command
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String COLHDR; // A:20 (always) table column name
String TBLELT; // A:n (varies) table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 9) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
TBLCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[8]);
if (list1.length < 1) { ok=false; break; }
for(int r=1; r < list1.length; r++) {
String [] list2;
list2 = TclList.split(list1[r]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { TBLELT = list3[1];} else { TBLELT = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F13R
S13F14 | Table Data Ack |
Sent by Host and Equipment |
// S13F14 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TBLACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int TBLACK; // U1:1 (always) acknowledge code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
TBLACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S13F15R | Table Data Request |
Sent by Host and Equipment |
Comment: Either p or q or both are 0.
Format:
// S13F15R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 13, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 13) && (function = 15)) {recvS13F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS13F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:7 DATAID OBJSPEC TBLTYP TBLID TBLCMD {L:p COLHDR} {L:q TBLELT}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String TBLTYP; // A:n (always) denotes the format and application of the table, conforms to OBJTYPE
String TBLID; // A:80 (varies) table identifier, a kind of OBJSPEC
int TBLCMD; // U1:1 (always) table command
String COLHDR; // A:20 (always) table column name
String TBLELT; // A:n (varies) table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
TBLCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int q=1; q < list1.length; q++) {
String [] list2;
list2 = TclList.split(list1[q]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TBLELT = list2[1];} else { TBLELT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(13, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S13F15R
S13F16 | Table Data |
Sent by Host and Equipment |
// S13F16 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(13, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:6 TBLTYP TBLID {L:n {L:2 ATTRID ATTRDATA}} {L:c COLHDR} {L:r {L:c TBLELT}} {L:2 TBLACK {L:p ERRCODE ERRTEXT}}
// variables for data items and parsing
String TBLTYP; // A:n (always) denotes the format and application of the table, conforms to OBJTYPE
String TBLID; // A:80 (varies) table identifier, a kind of OBJSPEC
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String COLHDR; // A:20 (always) table column name
String TBLELT; // A:n (varies) table element any type, list types or array types are discouraged, first column type must be a primary key value and not be a list or array
int TBLACK; // U1:1 (always) acknowledge code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TBLTYP = list1[1];} else { TBLTYP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TBLID = list1[1];} else { TBLID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { COLHDR = list2[1];} else { COLHDR = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int r=1; r < list1.length; r++) {
String [] list2;
list2 = TclList.split(list1[r]);
if (list2.length < 1) { ok=false; break; }
for(int c=1; c < list2.length; c++) {
String [] list3;
list3 = TclList.split(list2[c]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { TBLELT = list3[1];} else { TBLELT = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[6]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
TBLACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[p]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F1R | Get Attributes Request |
Sent by Host and Equipment |
Comment: List lengths can be 0, and OBJSPEC can be zero-length.
Format:
// S14F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 1)) {recvS14F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJSPEC OBJTYPE {L:i OBJID} {L:q {L:3 ATTRID ATTRDATA ATTRRELN}} {L:a ATTRID}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int ATTRRELN; // U1:1 (always) relationship of a value to an attribute value of an object
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int i=1; i < list1.length; i++) {
String [] list2;
list2 = TclList.split(list1[i]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int q=1; q < list1.length; q++) {
String [] list2;
list2 = TclList.split(list1[q]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ATTRRELN = Integer.parse(list3[1]);
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F1R
S14F2 | Attribute Data |
Sent by Host and Equipment |
// S14F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:2 OBJID {L:a {L:2 ATTRID ATTRDATA}}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { OBJID = list3[1];} else { OBJID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int a=1; a < list3.length; a++) {
String [] list4;
list4 = TclList.split(list3[a]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F3R | Set Attributes |
Sent by Host and Equipment |
// S14F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 3)) {recvS14F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJSPEC OBJTYPE {L:i OBJID} {L:n {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int i=1; i < list1.length; i++) {
String [] list2;
list2 = TclList.split(list1[i]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJID = list2[1];} else { OBJID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F3R
S14F4 | Set Attributes Reply |
Sent by Host and Equipment |
// S14F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:i {L:2 OBJID {L:n {L:2 ATTRID ATTRDATA}}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int i=1; i < list1.length; i++) {
String [] list2;
list2 = TclList.split(list1[i]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { OBJID = list3[1];} else { OBJID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRID = list5[1];} else { ATTRID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { ATTRDATA = list5[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F5R | Get Type Data |
Sent by Host and Equipment |
Comment: Asks for the types of objects owned by the type of specified object
Format:
// S14F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 5)) {recvS14F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect OBJSPEC
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { OBJSPEC = list0[1];} else { OBJSPEC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F5R
S14F6 | Type Data |
Sent by Host and Equipment |
// S14F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n OBJTYPE} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F7R | Get Attribute Names for the types |
Sent by Host and Equipment |
// S14F7R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 7)) {recvS14F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 OBJSPEC {L:n OBJTYPE}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F7R
S14F8 | Attribute Names of the object types |
Sent by Host and Equipment |
// S14F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:2 OBJTYPE {L:a ATTRID}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { OBJTYPE = list3[1];} else { OBJTYPE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int a=1; a < list3.length; a++) {
String [] list4;
list4 = TclList.split(list3[a]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ATTRID = list4[1];} else { ATTRID = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F9R | Create Obj Request |
Sent by Host and Equipment |
// S14F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 9)) {recvS14F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 OBJSPEC OBJTYPE {L:a {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F9R
S14F10 | Create Obj Ack |
Sent by Host and Equipment |
// S14F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 OBJSPEC {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int b=1; b < list1.length; b++) {
String [] list2;
list2 = TclList.split(list1[b]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F11R | Delete Obj Request |
Sent by Host and Equipment |
// S14F11R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 11)) {recvS14F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 OBJSPEC {L:a {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F11R
S14F12 | Delete Obj Ack |
Sent by Host and Equipment |
// S14F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int b=1; b < list1.length; b++) {
String [] list2;
list2 = TclList.split(list1[b]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F13R | Object Attach Request |
Sent by Host and Equipment |
// S14F13R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 13)) {recvS14F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 OBJSPEC {L:a {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F13R
S14F14 | Object Attach Ack |
Sent by Host and Equipment |
// S14F14 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 OBJTOKEN {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int OBJTOKEN; // U4:1 (always) token used for authorization
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
OBJTOKEN = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int b=1; b < list1.length; b++) {
String [] list2;
list2 = TclList.split(list1[b]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F15R | Attached Obj Action Req. |
Sent by Host and Equipment |
// S14F15R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 15)) {recvS14F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJSPEC OBJCMD OBJTOKEN {L:a {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
int OBJCMD; // U1:1 (always) Specifies an action to be performed by an object
int OBJTOKEN; // U4:1 (always) token used for authorization
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OBJCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
OBJTOKEN = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F15R
S14F16 | Attached Obj Action Ack |
Sent by Host and Equipment |
// S14F16 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int b=1; b < list1.length; b++) {
String [] list2;
list2 = TclList.split(list1[b]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F17R | Supervised Obj Action Req |
Sent by Host and Equipment |
// S14F17R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 17)) {recvS14F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJSPEC OBJCMD TARGETSPEC {L:a {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
int OBJCMD; // U1:1 (always) Specifies an action to be performed by an object
String TARGETSPEC; // A:40 (always) Specifier of target object
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OBJCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETSPEC = list1[1];} else { TARGETSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int a=1; a < list1.length; a++) {
String [] list2;
list2 = TclList.split(list1[a]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F17R
S14F18 | Supervised Obj Action Ack |
Sent by Host and Equipment |
// S14F18 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:b {L:2 ATTRID ATTRDATA}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int b=1; b < list1.length; b++) {
String [] list2;
list2 = TclList.split(list1[b]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F19R | Generic Service Req |
Sent by Host Only |
// S14F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 14, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 19)) {recvS14F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID OPID OBJSPEC SVCNAME {L:m {L:2 SPNAME SPVAL}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OPID; // U4:1 (varies) operation identifier
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String SVCNAME; // A:n (always) service name
String SPNAME; // A:n (always) service parameter name
String SPVAL; // A:n (varies) service parameter value, any format type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SVCNAME = list1[1];} else { SVCNAME = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S14F19R
S14F20 | Generic Service Ack |
Sent by Host and Equipment |
Comment: it is not a mistake that SVCACK is included twice
Format:
// S14F20 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 SVCACK LINKID {L:n {L:2 SPNAME SPVAL}} {L:2 SVCACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int SVCACK; // B:1 (always) service acknowledge code
int LINKID; // U4:1 (always) correlates the RMOPID value in a request to a completion report
String SPNAME; // A:n (always) service parameter name
String SPVAL; // A:n (varies) service parameter value, any format type
int SVCACK; // B:1 (always) service acknowledge code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
SVCACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LINKID = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("B:1")) { ok = false; break; }
SVCACK = sp.binToInt(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F21R | Generic Service Completion |
Sent by Host and Equipment |
// S14F21R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 21)) {recvS14F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID OPID LINKID {L:n {L:2 SPNAME SPVAL}} {L:2 SVCACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OPID; // U4:1 (varies) operation identifier
int LINKID; // U4:1 (always) correlates the RMOPID value in a request to a completion report
String SPNAME; // A:n (always) service parameter name
String SPVAL; // A:n (varies) service parameter value, any format type
int SVCACK; // B:1 (always) service acknowledge code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LINKID = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { SPNAME = list3[1];} else { SPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { SPVAL = list3[1];} else { SPVAL = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("B:1")) { ok = false; break; }
SVCACK = sp.binToInt(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 22, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F21R
S14F22 | Generic Service Comp Ack |
Sent by Host and Equipment |
// S14F22 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect DATAACK
// variables for data items and parsing
int DATAACK; // B:1 (always) Acknowledgement code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
DATAACK = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F23R | Multi-block Generic Service Inquire |
Sent by Host and Equipment |
Comment: You are advised not to implement this message.
Format:
// S14F23R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 23)) {recvS14F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 24, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F23R
S14F24 | Multi-block Generic Service Grant |
Sent by Host and Equipment |
// S14F24 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F25R | Service Name Request |
Sent by Host and Equipment |
// S14F25R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 25)) {recvS14F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 OBJSPEC {L:n OBJTYPE}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OBJTYPE = list2[1];} else { OBJTYPE = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 26, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F25R
S14F26 | Service Name Data |
Sent by Host and Equipment |
// S14F26 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:2 OBJTYPE {L:a SVCNAME}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String SVCNAME; // A:n (always) service name
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { OBJTYPE = list3[1];} else { OBJTYPE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int a=1; a < list3.length; a++) {
String [] list4;
list4 = TclList.split(list3[a]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { SVCNAME = list4[1];} else { SVCNAME = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S14F27R | Service Parameter Name Req |
Sent by Host and Equipment |
// S14F27R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 14, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 14) && (function = 27)) {recvS14F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS14F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 OBJSPEC OBJTYPE {L:n SVCNAME}
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String SVCNAME; // A:n (always) service name
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { SVCNAME = list2[1];} else { SVCNAME = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(14, 28, transID, reply);
}
return;
} // end while(ok)
} // end recv_S14F27R
S14F28 | Service Parameter Name Data |
Sent by Host and Equipment |
// S14F28 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(14, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:2 SVCNAME {L:a SPNAME}}} {L:2 OBJACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String SVCNAME; // A:n (always) service name
String SPNAME; // A:n (always) service parameter name
int OBJACK; // U1:1 (always) acknowledge code, 0 ok, 1 error
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { SVCNAME = list3[1];} else { SVCNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int a=1; a < list3.length; a++) {
String [] list4;
list4 = TclList.split(list3[a]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { SPNAME = list4[1];} else { SPNAME = ""; }
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
OBJACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F1R | Recipe Management Multi-Block Inquire |
Sent by Host and Equipment |
Comment: E5 fails to mention the message type is optional for HSMS
Format:
// S15F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 1)) {recvS15F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID RCPSPEC RMDATASIZE
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RCPSPEC; // A:n (always) recipe specifier
String RMDATASIZE; // U4:1 (varies) the maximum total message body length of a SECS-II message
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMDATASIZE = list1[1];} else { RMDATASIZE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F1R
S15F2 | Recipe Management Multi-block Grant |
Sent by Host and Equipment |
// S15F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect RMGRNT
// variables for data items and parsing
int RMGRNT; // B:1 (always) grant code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
RMGRNT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F3R | Recipe Namespace Action Req |
Sent by Host and Equipment |
// S15F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 3)) {recvS15F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 RMNSSPEC RMNSCMD
// variables for data items and parsing
String RMNSSPEC; // A:n (always) object id of a recipe namespace
int RMNSCMD; // U1:1 (always) recipe namespace command
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMNSCMD = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F3R
S15F4 | Recipe Namespace Action |
Sent by Host and Equipment |
// S15F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F5R | Recipe Namespace Rename Req |
Sent by Host and Equipment |
// S15F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 5)) {recvS15F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 RMNSSPEC RMNEWNS
// variables for data items and parsing
String RMNSSPEC; // A:n (always) object id of a recipe namespace
String RMNEWNS; // A:n (always) new name for a recipe namespace
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNEWNS = list1[1];} else { RMNEWNS = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F5R
S15F6 | Recipe Namespace Rename Ack |
Sent by Host and Equipment |
// S15F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F7R | Recipe Space Req |
Sent by Host and Equipment |
// S15F7R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 7)) {recvS15F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect OBJSPEC
// variables for data items and parsing
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { OBJSPEC = list0[1];} else { OBJSPEC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F7R
S15F8 | Recipe Space Data |
Sent by Host and Equipment |
// S15F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMSPACE {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RMSPACE; // U4:1 (varies) the amount of storage available in bytes for at least one recipe
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMSPACE = list1[1];} else { RMSPACE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F9R | Recipe Status Request |
Sent by Host and Equipment |
// S15F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 9)) {recvS15F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RCPSPEC
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { RCPSPEC = list0[1];} else { RCPSPEC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F9R
S15F10 | Recipe Status Data |
Sent by Host and Equipment |
// S15F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 RCPSTAT RCPVERS {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int RCPSTAT; // U1:1 (always) Recipe status code
String RCPVERS; // A:n (always) recipe version
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RCPSTAT = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPVERS = list1[1];} else { RCPVERS = ""; }
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F11R | Recipe Version Request |
Sent by Host and Equipment |
// S15F11R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 11)) {recvS15F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 RMNSSPEC RCPCLASS RCPNAME AGENT
// variables for data items and parsing
String RMNSSPEC; // A:n (always) object id of a recipe namespace
String RCPCLASS; // A:n (always) Recipe class
String RCPNAME; // A:n (always) recipe name
String AGENT; // A:n (always) no description, no max length
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPCLASS = list1[1];} else { RCPCLASS = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPNAME = list1[1];} else { RCPNAME = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F11R
S15F12 | Recipe Version Data |
Sent by Host and Equipment |
// S15F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 AGENT RCPVERS {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String AGENT; // A:n (always) no description, no max length
String RCPVERS; // A:n (always) recipe version
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPVERS = list1[1];} else { RCPVERS = ""; }
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F13R | Recipe Create Req |
Sent by Host and Equipment |
// S15F13R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 13)) {recvS15F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID RCPUPDT RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
int RCPUPDT; // TF:1 (always) true for a recipe update, false for create
String RCPSPEC; // A:n (always) recipe specifier
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int [] RCPBODY; // B:n (varies) Recipe body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
RCPUPDT = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
RCPBODY = new int[list1.length-1];
for(int i=0; i < RCPBODY.length; i++) {
RCPBODY[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F13R
S15F14 | Recipe Create Ack |
Sent by Host and Equipment |
// S15F14 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F15R | Recipe Store Req |
Sent by Host and Equipment |
Comment: L:2* can be L:2 or L:0; E5 documentation is inadequate for L:q other than L:3
Format:
// S15F15R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 15)) {recvS15F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID RCPSPEC RCPSECCODE {L:3 {L:2* RCPSECNM {L:g {L:2 RCPATTRID RCPATTRDATA}}} RCPBODY {L:m {L:2 RCPSECNM {L:a {L:2 RCPATTRID RCPATTRDATA}}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RCPSPEC; // A:n (always) recipe specifier
int RCPSECCODE; // B:1 (always) indicates the sections of a recipe
String RCPSECNM; // A:n (always) Recipe section name, "Generic", "Body", "ASDS"
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int [] RCPBODY; // B:n (varies) Recipe body
String RCPSECNM; // A:n (always) Recipe section name, "Generic", "Body", "ASDS"
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RCPSECCODE = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length == 3) { // 2 optional items found
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPSECNM = list3[1];} else { RCPSECNM = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int g=1; g < list3.length; g++) {
String [] list4;
list4 = TclList.split(list3[g]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].startsWith("A:")) { ok = false; break; }
if (list5.length == 2) { RCPATTRID = list5[1];} else { RCPATTRID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { RCPATTRDATA = list5[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
}
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
RCPBODY = new int[list2.length-1];
for(int i=0; i < RCPBODY.length; i++) {
RCPBODY[i] = sp.binToInt(list2[1+i]);
}
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPSECNM = list4[1];} else { RCPSECNM = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok=false; break; }
for(int a=1; a < list4.length; a++) {
String [] list5;
list5 = TclList.split(list4[a]);
if (list5.length != 3) { ok=false; break; }
String [] list6;
list6 = TclList.split(list5[1]);
if (list6.length < 1) { ok = false; break; }
if (!list6[0].startsWith("A:")) { ok = false; break; }
if (list6.length == 2) { RCPATTRID = list6[1];} else { RCPATTRID = ""; }
list6 = TclList.split(list5[2]);
if (list6.length < 1) { ok = false; break; }
if (list6.length == 2) { RCPATTRDATA = list6[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F15R
S15F16 | Recipe Store Ack |
Sent by Host and Equipment |
// S15F16 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RCPSECCODE {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
int RCPSECCODE; // B:1 (always) indicates the sections of a recipe
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RCPSECCODE = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F17R | Recipe Retrieve Req |
Sent by Host and Equipment |
// S15F17R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 17)) {recvS15F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 RCPSPEC RCPSECCODE
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
int RCPSECCODE; // B:1 (always) indicates the sections of a recipe
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RCPSECCODE = sp.binToInt(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F17R
S15F18 | Recipe Retrieve Data |
Sent by Host and Equipment |
// S15F18 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:q {L:r RCPSECNM {L:g {L:2 RCPATTRID RCPATTRDATA}}} RCPBODY {L:m {L:2 RCPSECNM {L:a {L:2 RCPATTRID RCPATTRDATA}}}}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPSECNM; // A:n (always) Recipe section name, "Generic", "Body", "ASDS"
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int [] RCPBODY; // B:n (varies) Recipe body
String RCPSECNM; // A:n (always) Recipe section name, "Generic", "Body", "ASDS"
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int q=1; q < list1.length; q++) {
String [] list2;
list2 = TclList.split(list1[q]);
if (list2.length < 1) { ok=false; break; }
for(int r=1; r < list2.length; r++) {
String [] list3;
list3 = TclList.split(list2[r]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPSECNM = list3[1];} else { RCPSECNM = ""; }
list3 = TclList.split(list2[r]);
if (list3.length < 1) { ok=false; break; }
for(int g=1; g < list3.length; g++) {
String [] list4;
list4 = TclList.split(list3[g]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].startsWith("A:")) { ok = false; break; }
if (list5.length == 2) { RCPATTRID = list5[1];} else { RCPATTRID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { RCPATTRDATA = list5[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
list2 = TclList.split(list1[q]);
if (list2.length < 1) { ok = false; break; }
RCPBODY = new int[list2.length-1];
for(int i=0; i < RCPBODY.length; i++) {
RCPBODY[i] = sp.binToInt(list2[1+i]);
}
list2 = TclList.split(list1[q]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPSECNM = list4[1];} else { RCPSECNM = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok=false; break; }
for(int a=1; a < list4.length; a++) {
String [] list5;
list5 = TclList.split(list4[a]);
if (list5.length != 3) { ok=false; break; }
String [] list6;
list6 = TclList.split(list5[1]);
if (list6.length < 1) { ok = false; break; }
if (!list6[0].startsWith("A:")) { ok = false; break; }
if (list6.length == 2) { RCPATTRID = list6[1];} else { RCPATTRID = ""; }
list6 = TclList.split(list5[2]);
if (list6.length < 1) { ok = false; break; }
if (list6.length == 2) { RCPATTRDATA = list6[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F19R | Recipe Rename Req |
Sent by Host and Equipment |
// S15F19R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 19)) {recvS15F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 RCPSPEC RCPRENAME RCPNEWID
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
int RCPRENAME; // TF:1 (always) whether a recipe is to be renamed (TRUE) or copied (FALSE)
String RCPNEWID; // A:n (always) the new recipe identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
RCPRENAME = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPNEWID = list1[1];} else { RCPNEWID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F19R
S15F20 | Recipe Rename Ack |
Sent by Host and Equipment |
// S15F20 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F21R | Recipe Action Req |
Sent by Host and Equipment |
// S15F21R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 21)) {recvS15F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 DATAID RCPCMD RMNSSPEC OPID AGENT {L:n RCPID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
int RCPCMD; // U1:1 (always) recipe action
String RMNSSPEC; // A:n (always) object id of a recipe namespace
String OPID; // U4:1 (varies) operation identifier
String AGENT; // A:n (always) no description, no max length
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RCPCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 22, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F21R
S15F22 | Recipe Action Ack |
Sent by Host and Equipment |
// S15F22 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 AGENT LINKID RCPCMD {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String AGENT; // A:n (always) no description, no max length
int LINKID; // U4:1 (always) correlates the RMOPID value in a request to a completion report
int RCPCMD; // U1:1 (always) recipe action
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LINKID = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RCPCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F23R | Recipe Descriptor Req |
Sent by Host and Equipment |
// S15F23R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 23)) {recvS15F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID OBJSPEC {L:n RCPID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 24, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F23R
S15F24 | Recipe Descriptor Data |
Sent by Host and Equipment |
// S15F24 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:a {L:3* RCPDESCNM RCPDESCTIME RCPDESCLTH}}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPDESCNM; // A:n (always) Identifies a descriptor type "ASDesc", "BodyDesc", "GenDesc"
String RCPDESCTIME; // A:16 (always) timestamp of a recipe section "YYYYMMDDhhmmsscc"
String RCPDESCLTH; // U4:1 (varies) the byte length of a recipe
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok=false; break; }
for(int a=1; a < list2.length; a++) {
String [] list3;
list3 = TclList.split(list2[a]);
if (list3.length == 4) { // 3 optional items found
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPDESCNM = list4[1];} else { RCPDESCNM = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPDESCTIME = list4[1];} else { RCPDESCTIME = ""; }
list4 = TclList.split(list3[3]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { RCPDESCLTH = list4[1];} else { RCPDESCLTH = ""; }
}
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F25R | Recipe Parameter Update Req |
Sent by Host and Equipment |
// S15F25R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 25)) {recvS15F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID RMNSSPEC AGENT {L:n {L:3 RCPPARNM RCPPARVAL RCPPARRULE}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RMNSSPEC; // A:n (always) object id of a recipe namespace
String AGENT; // A:n (always) no description, no max length
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
String RCPPARRULE; // A:80 (always) the restrictions applied to a recipe variable parameter setting
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { AGENT = list1[1];} else { AGENT = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPPARNM = list3[1];} else { RCPPARNM = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPPARVAL = list3[1];} else { RCPPARVAL = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPPARRULE = list3[1];} else { RCPPARRULE = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 26, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F25R
S15F26 | Recipe Parameter Update Ack |
Sent by Host and Equipment |
// S15F26 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F27R | Recipe Download Req |
Sent by Host Only |
// S15F27R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 27)) {recvS15F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID RCPOWCODE RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
int RCPOWCODE; // TF:1 (always) recipe overwrite code, true=overwrite ok, false=do not overwrite
String RCPSPEC; // A:n (always) recipe specifier
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int [] RCPBODY; // B:n (varies) Recipe body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
RCPOWCODE = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
RCPBODY = new int[list1.length-1];
for(int i=0; i < RCPBODY.length; i++) {
RCPBODY[i] = sp.binToInt(list1[1+i]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 28, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F27R
S15F28 | Recipe Download Ack |
Sent by Equipment Only |
// S15F28 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 RCPID {L:n {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F29R | Recipe Verify Req |
Sent by Host Only |
// S15F29R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 29)) {recvS15F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID OPID RESPEC {L:m RCPID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OPID; // U4:1 (varies) operation identifier
String RESPEC; // A:n (always) object specifier for the recipe executor
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 30, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F29R
S15F30 | Recipe Verify Ack |
Sent by Equipment Only |
// S15F30 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:5 OPID LINKID RCPID {L:n {L:2 RCPATTRID RCPATTRDATA}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String OPID; // U4:1 (varies) operation identifier
int LINKID; // U4:1 (always) correlates the RMOPID value in a request to a completion report
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
LINKID = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F31R | Recipe Unload Req |
Sent by Host Only |
// S15F31R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 31)) {recvS15F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect RCPSPEC
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { RCPSPEC = list0[1];} else { RCPSPEC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 32, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F31R
S15F32 | Recipe Unload Data |
Sent by Equipment Only |
// S15F32 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 31, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 RCPSPEC {L:m {L:2 RCPATTRID RCPATTRDATA}} RCPBODY {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
String RCPATTRID; // A:n (always) the name of a recipe attribute, but not used to indicate the recipe identifier
String RCPATTRDATA; // A:n (varies) the value of a recipe attribute, any type of data including list
int [] RCPBODY; // B:n (varies) Recipe body
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPATTRID = list3[1];} else { RCPATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPATTRDATA = list3[1];} else { RCPATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
RCPBODY = new int[list1.length-1];
for(int i=0; i < RCPBODY.length; i++) {
RCPBODY[i] = sp.binToInt(list1[1+i]);
}
list1 = TclList.split(list0[4]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F33R | Recipe Select Req |
Sent by Host Only |
// S15F33R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 33)) {recvS15F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID RESPEC {L:r {L:2 RCPID {L:p {L:2 RCPPARNM RCPPARVAL}}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RESPEC; // A:n (always) object specifier for the recipe executor
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int r=1; r < list1.length; r++) {
String [] list2;
list2 = TclList.split(list1[r]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPID = list3[1];} else { RCPID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int p=1; p < list3.length; p++) {
String [] list4;
list4 = TclList.split(list3[p]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].startsWith("A:")) { ok = false; break; }
if (list5.length == 2) { RCPPARNM = list5[1];} else { RCPPARNM = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { RCPPARVAL = list5[1];} else { RCPPARVAL = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 34, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F33R
S15F34 | Recipe Select Ack |
Sent by Equipment Only |
// S15F34 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 33, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F35R | Recipe Delete Req |
Sent by Host Only |
// S15F35R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 35, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 35)) {recvS15F35(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F35(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID RESPEC RCPDEL {L:n RCPID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RESPEC; // A:n (always) object specifier for the recipe executor
int RCPDEL; // U1:1 (always) recipe action
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RESPEC = list1[1];} else { RESPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RCPDEL = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 36, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F35R
S15F36 | Recipe Delete Ack |
Sent by Equipment Only |
// S15F36 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 35, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F37R | DRNS Segment Approve Action Req |
Sent by Host and Equipment |
// S15F37R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 37, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 37)) {recvS15F37(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F37(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 RMSEGSPEC OBJTOKEN RMGRNT OPID RCPID RMCHGTYPE
// variables for data items and parsing
String RMSEGSPEC; // A:n (always) The object ID of a distributed recipe namespace segment
int OBJTOKEN; // U4:1 (always) token used for authorization
int RMGRNT; // B:1 (always) grant code, 0 ok
String OPID; // U4:1 (varies) operation identifier
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RMCHGTYPE; // U4:1 (varies) type of change for a recipe
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMSEGSPEC = list1[1];} else { RMSEGSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
OBJTOKEN = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RMGRNT = sp.binToInt(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 38, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F37R
S15F38 | DRNS Segment Approve Action Ack |
Sent by Host and Equipment |
// S15F38 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 37, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F39R | DRNS Recorder Seg Req |
Sent by Host and Equipment |
// S15F39R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 39, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 39)) {recvS15F39(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F39(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID RMNSCMD RMRECSPEC RMSEGSPEC OBJTOKEN
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
int RMNSCMD; // U1:1 (always) recipe namespace command
String RMRECSPEC; // A:n (always) object id of a distributed recipe namespace recorder
String RMSEGSPEC; // A:n (always) The object ID of a distributed recipe namespace segment
int OBJTOKEN; // U4:1 (always) token used for authorization
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMNSCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMSEGSPEC = list1[1];} else { RMSEGSPEC = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
OBJTOKEN = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 40, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F39R
S15F40 | DRNS Recorder Seg Ack |
Sent by Host and Equipment |
// S15F40 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 39, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F41R | DRNS Recorder Mod Req |
Sent by Host and Equipment |
Comment: L:c is L:7 or L:1, no explanation of L:1 item
Format:
// S15F41R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 41, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 41)) {recvS15F41(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F41(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID RMRECSPEC OBJTOKEN RMNSCMD {L:c RCPID RCPNEWID RMSEGSPEC RMCHGTYPE OPID TIMESTAMP RMREQUESTOR}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RMRECSPEC; // A:n (always) object id of a distributed recipe namespace recorder
int OBJTOKEN; // U4:1 (always) token used for authorization
int RMNSCMD; // U1:1 (always) recipe namespace command
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RCPNEWID; // A:n (always) the new recipe identifier
String RMSEGSPEC; // A:n (always) The object ID of a distributed recipe namespace segment
String RMCHGTYPE; // U4:1 (varies) type of change for a recipe
String OPID; // U4:1 (varies) operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
int RMREQUESTOR; // TF:1 (always) True when the initiator of a change request is an attached segment, otherwise false
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
OBJTOKEN = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMNSCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPID = list2[1];} else { RCPID = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPNEWID = list2[1];} else { RCPNEWID = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RMSEGSPEC = list2[1];} else { RMSEGSPEC = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { RMCHGTYPE = list2[1];} else { RMCHGTYPE = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { OPID = list2[1];} else { OPID = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { TIMESTAMP = list2[1];} else { TIMESTAMP = ""; }
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
RMREQUESTOR = Integer.parse(list2[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 42, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F41R
S15F42 | DRNS Recorder Mod Ack |
Sent by Host and Equipment |
// S15F42 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 41, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F43R | DRNS Get Change Req |
Sent by Host and Equipment |
// S15F43R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 43, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 43)) {recvS15F43(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F43(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 DATAID OBJSPEC TARGETSPEC
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String TARGETSPEC; // A:40 (always) Specifier of target object
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETSPEC = list1[1];} else { TARGETSPEC = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 44, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F43R
S15F44 | DRNS Get Change Ack |
Sent by Host and Equipment |
// S15F44 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 43, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:7 RCPID RCPNEWID RMSEGSPEC RMCHGTYPE OPID TIMESTAMP RMREQUESTOR}} {L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
String RCPNEWID; // A:n (always) the new recipe identifier
String RMSEGSPEC; // A:n (always) The object ID of a distributed recipe namespace segment
String RMCHGTYPE; // U4:1 (varies) type of change for a recipe
String OPID; // U4:1 (varies) operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
int RMREQUESTOR; // TF:1 (always) True when the initiator of a change request is an attached segment, otherwise false
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 8) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPID = list3[1];} else { RCPID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPNEWID = list3[1];} else { RCPNEWID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RMSEGSPEC = list3[1];} else { RMSEGSPEC = ""; }
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RMCHGTYPE = list3[1];} else { RMCHGTYPE = ""; }
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { OPID = list3[1];} else { OPID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("TF:1")) { ok = false; break; }
RMREQUESTOR = Integer.parse(list3[1]);
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int p=1; p < list2.length; p++) {
String [] list3;
list3 = TclList.split(list2[p]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F45R | DRNS Mgr Seg Aprvl Req |
Sent by Host and Equipment |
// S15F45R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 45, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 45)) {recvS15F45(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F45(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID RCPSPEC RCPNEWID RMCHGTYPE
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RCPSPEC; // A:n (always) recipe specifier
String RCPNEWID; // A:n (always) the new recipe identifier
String RMCHGTYPE; // U4:1 (varies) type of change for a recipe
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPNEWID = list1[1];} else { RCPNEWID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 46, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F45R
S15F46 | DRNS Mgr Seg Aprvl Ack |
Sent by Host and Equipment |
// S15F46 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 45, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 RMCHGTYPE RMGRNT OPID
// variables for data items and parsing
String RMCHGTYPE; // U4:1 (varies) type of change for a recipe
int RMGRNT; // B:1 (always) grant code, 0 ok
String OPID; // U4:1 (varies) operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RMCHGTYPE = list1[1];} else { RMCHGTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
RMGRNT = sp.binToInt(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OPID = list1[1];} else { OPID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F47R | DRNS Mgr Rebuild Req |
Sent by Host and Equipment |
// S15F47R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 15, 47, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 47)) {recvS15F47(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F47(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID OBJSPEC RMNSSPEC RMRECSPEC {L:n RMSEGSPEC}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String OBJSPEC; // A:n (varies) E39 structured text identifying an object, [object type:object id>]+
String RMNSSPEC; // A:n (always) object id of a recipe namespace
String RMRECSPEC; // A:n (always) object id of a distributed recipe namespace recorder
String RMSEGSPEC; // A:n (always) The object ID of a distributed recipe namespace segment
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJSPEC = list1[1];} else { OBJSPEC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMNSSPEC = list1[1];} else { RMNSSPEC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMRECSPEC = list1[1];} else { RMRECSPEC = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RMSEGSPEC = list2[1];} else { RMSEGSPEC = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 48, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F47R
S15F48 | DRNS Mgr Rebuild Ack |
Sent by Host and Equipment |
// S15F48 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(15, 47, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RMACK {L:p {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F49R | Large Recipe Download Req |
Sent by Host Only |
Comment: The DSNAME is the RCPSPEC for Stream 13 transfer.
Format:
// S15F49R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 49, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 49)) {recvS15F49(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F49(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DSNAME RCPOWCODE
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
int RCPOWCODE; // TF:1 (always) recipe overwrite code, true=overwrite ok, false=do not overwrite
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DSNAME = list1[1];} else { DSNAME = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
RCPOWCODE = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 50, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F49R
S15F50 | Large Recipe Download Ack |
Sent by Equipment Only |
// S15F50 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 49, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC15
// variables for data items and parsing
int ACKC15; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC15 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F51R | Large Recipe Upload Req |
Sent by Host Only |
Comment: The DSNAME is the RCPSPEC used in Stream 13.
Format:
// S15F51R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 15, 51, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 51)) {recvS15F51(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F51(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DSNAME
// variables for data items and parsing
String DSNAME; // A:50 (varies) the name of a dataset such as a PPID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DSNAME = list0[1];} else { DSNAME = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 52, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S15F51R
S15F52 | Large Recipe Upload Ack |
Sent by Equipment Only |
// S15F52 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(15, 51, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKC15
// variables for data items and parsing
int ACKC15; // B:1 (always) acknowledge code, 0 ok
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
ACKC15 = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S15F53R | Recipe Verification Send |
Sent by Equipment Only |
// S15F53R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 15, 53, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 15) && (function = 53)) {recvS15F53(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS15F53(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 RCPSPEC RCPID {L:2 RMACK {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String RCPSPEC; // A:n (always) recipe specifier
String RCPID; // A:n (always) recipe identifier conforming to OBJSPEC
int RMACK; // U1:1 (always) recipe managment completion code
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPSPEC = list1[1];} else { RCPSPEC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RCPID = list1[1];} else { RCPID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
RMACK = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(15, 54, transID, reply);
}
return;
} // end while(ok)
} // end recv_S15F53R
S15F54 | Recipe Verification Ack |
Sent by Host Only |
// S15F54 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(15, 53, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S16F1R | Process Job Data MBI |
Sent by Host Only |
Comment: SECS-I multiblock inquire/grant for all process management messages, optional for HSMS
Format:
// S16F1R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 1)) {recvS16F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID DATALENGTH
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 2, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F1R
S16F2 | PJD MBI Grant |
Sent by Equipment Only |
// S16F2 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F3R | Process Job Create Req |
Sent by Host Only |
// S16F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 3)) {recvS16F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 DATAID MF {L:n MID} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
String MID; // A:16 (varies) material ID, E40 restricts to A:n
int PRRECIPEMETHOD; // U1:1 (always) recipe type
String RCPSPEC; // A:n (always) recipe specifier
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
int PRPROCESSSTART; // TF:1 (always) automatic start flag, false implies manual start
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { MID = list2[1];} else { MID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
PRRECIPEMETHOD = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPSPEC = list2[1];} else { RCPSPEC = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPPARNM = list4[1];} else { RCPPARNM = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { RCPPARVAL = list4[1];} else { RCPPARVAL = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
PRPROCESSSTART = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F3R
S16F4 | Process Job Create Ack |
Sent by Equipment Only |
// S16F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F5R | Process Job Cmd Req |
Sent by Host Only |
// S16F5R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 5)) {recvS16F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID PRJOBID PRCMDNAME {L:n {L:2 CPNAME CPVAL}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String PRJOBID; // A:n (always) process job identifier
String PRCMDNAME; // A:6 (always) process job commmands, START, STOP, PAUSE, RESUME, ABORT, CANCEL
String CPNAME; // A:n (varies) command parameter name
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRCMDNAME = list1[1];} else { PRCMDNAME = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPNAME = list3[1];} else { CPNAME = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { CPVAL = list3[1];} else { CPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F5R
S16F6 | Process Job Cmd Ack |
Sent by Equipment Only |
// S16F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F7[R] | Process Job Alert Notify |
Sent by Equipment Only |
Comment: Unlike S5F1 there is no message to enable/disable selected alerts. ACKA false indicates failure.
Format:
// S16F7 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 16, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 7)) {recvS16F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TIMESTAMP PRJOBID PRJOBMILESTONE {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String PRJOBID; // A:n (always) process job identifier
String PRJOBMILESTONE; // U1:1 (varies) process job status
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PRJOBMILESTONE = list1[1];} else { PRJOBMILESTONE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S16F7
S16F8 | Process Job Alert Ack |
Sent by Host Only |
// S16F8 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(16, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S16F9[R] | Process Job Event Notify |
Sent by Equipment Only |
Comment: There is no message to define the VID list or enable/disable. Less featured than Stream 6 and superseded by Stream 17.
Format:
// S16F9 Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 16, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 9)) {recvS16F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 PREVENTID TIMESTAMP PRJOBID {L:n {L:2 VID V}}
// variables for data items and parsing
String PREVENTID; // U1:1 (varies) process job event ID
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String PRJOBID; // A:n (always) process job identifier
String VID; // A:n (varies) A variable ID
String V; // A:n (varies) variable value, any type including list
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { PREVENTID = list1[1];} else { PREVENTID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TIMESTAMP = list1[1];} else { TIMESTAMP = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { VID = list3[1];} else { VID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { V = list3[1];} else { V = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S16F9
S16F10 | Process Job Event Ack |
Sent by Host Only |
// S16F10 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(16, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S16F11R | PRJobCreateEnh |
Sent by Host Only |
Comment: The L:n list can be {L:n MID} depending on MF, {L:j SLOTID} might be an array instead
Format:
// S16F11R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 11)) {recvS16F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:7 DATAID PRJOBID MF {L:n {L:2 CARRIERID {L:j SLOTID}}} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART {L:p PRPAUSEEVENTID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String PRJOBID; // A:n (always) process job identifier
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
String CARRIERID; // A:n (always) carrier ID
int SLOTID; // U1:1 (always) slot position within a carrier
int PRRECIPEMETHOD; // U1:1 (always) recipe type
String RCPSPEC; // A:n (always) recipe specifier
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
int PRPROCESSSTART; // TF:1 (always) automatic start flag, false implies manual start
String PRPAUSEEVENTID; // U4:1 (varies) an event identifier for which a process job should be paused
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MF = list1[1];} else { MF = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { CARRIERID = list3[1];} else { CARRIERID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int j=1; j < list3.length; j++) {
String [] list4;
list4 = TclList.split(list3[j]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
SLOTID = Integer.parse(list4[1]);
}
if (!ok) break;
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
PRRECIPEMETHOD = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RCPSPEC = list2[1];} else { RCPSPEC = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok=false; break; }
for(int m=1; m < list2.length; m++) {
String [] list3;
list3 = TclList.split(list2[m]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPPARNM = list4[1];} else { RCPPARNM = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { RCPPARVAL = list4[1];} else { RCPPARVAL = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
PRPROCESSSTART = Integer.parse(list1[1]);
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { PRPAUSEEVENTID = list2[1];} else { PRPAUSEEVENTID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F11R
S16F12 | PRJobCreateEnh Ack |
Sent by Equipment Only |
// S16F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 PRJOBID {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F15R | PRJobMultiCreate |
Sent by Host Only |
Comment: The L:n list can be {L:n MID} depending on MF, {L:j SLOTID} might be an array instead
Format:
// S16F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 15)) {recvS16F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 DATAID {L:p {L:6 PRJOBID MF {L:n {L:2 CARRIERID {L:j SLOTID}}} {L:3 PRRECIPEMETHOD RCPSPEC {L:m {L:2 RCPPARNM RCPPARVAL}}} PRPROCESSSTART {L:k PRPAUSEEVENTID}}}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String PRJOBID; // A:n (always) process job identifier
String MF; // B:1 (varies) material format code, ASCII indicates generic units, E40 restricts to B:1
String CARRIERID; // A:n (always) carrier ID
int SLOTID; // U1:1 (always) slot position within a carrier
int PRRECIPEMETHOD; // U1:1 (always) recipe type
String RCPSPEC; // A:n (always) recipe specifier
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
int PRPROCESSSTART; // TF:1 (always) automatic start flag, false implies manual start
String PRPAUSEEVENTID; // U4:1 (varies) an event identifier for which a process job should be paused
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int p=1; p < list1.length; p++) {
String [] list2;
list2 = TclList.split(list1[p]);
if (list2.length != 7) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PRJOBID = list3[1];} else { PRJOBID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { MF = list3[1];} else { MF = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].startsWith("A:")) { ok = false; break; }
if (list5.length == 2) { CARRIERID = list5[1];} else { CARRIERID = ""; }
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok=false; break; }
for(int j=1; j < list5.length; j++) {
String [] list6;
list6 = TclList.split(list5[j]);
if (list6.length < 1) { ok = false; break; }
if (!list6[0].equals("U1:1")) { ok = false; break; }
SLOTID = Integer.parse(list6[1]);
}
if (!ok) break;
}
if (!ok) break;
list3 = TclList.split(list2[4]);
if (list3.length != 4) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].equals("U1:1")) { ok = false; break; }
PRRECIPEMETHOD = Integer.parse(list4[1]);
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { RCPSPEC = list4[1];} else { RCPSPEC = ""; }
list4 = TclList.split(list3[3]);
if (list4.length < 1) { ok=false; break; }
for(int m=1; m < list4.length; m++) {
String [] list5;
list5 = TclList.split(list4[m]);
if (list5.length != 3) { ok=false; break; }
String [] list6;
list6 = TclList.split(list5[1]);
if (list6.length < 1) { ok = false; break; }
if (!list6[0].startsWith("A:")) { ok = false; break; }
if (list6.length == 2) { RCPPARNM = list6[1];} else { RCPPARNM = ""; }
list6 = TclList.split(list5[2]);
if (list6.length < 1) { ok = false; break; }
if (list6.length == 2) { RCPPARVAL = list6[1];} else { RCPPARVAL = ""; }
}
if (!ok) break;
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("TF:1")) { ok = false; break; }
PRPROCESSSTART = Integer.parse(list3[1]);
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok=false; break; }
for(int k=1; k < list3.length; k++) {
String [] list4;
list4 = TclList.split(list3[k]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { PRPAUSEEVENTID = list4[1];} else { PRPAUSEEVENTID = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F15R
S16F16 | PRJobMultiCreate Ack |
Sent by Equipment Only |
// S16F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F17R | PRJobDequeue |
Sent by Host Only |
Comment: If m = 0 then the request is for all jobs that have not begun processing.
Format:
// S16F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 17)) {recvS16F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:m PRJOBID
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int m=1; m < list0.length; m++) {
String [] list1;
list1 = TclList.split(list0[m]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F17R
S16F18 | PRJobDequeue Ack |
Sent by Equipment Only |
// S16F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F19R | PRJob List Req |
Sent by Host Only |
// S16F19R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 19)) {recvS16F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 20, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F19R
S16F20 | PRJob List Data |
Sent by Equipment Only |
// S16F20 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:m {L:2 PRJOBID PRSTATE}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int PRSTATE; // U1:1 (always) process job state, E40 definition
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int m=1; m < list0.length; m++) {
String [] list1;
list1 = TclList.split(list0[m]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
PRSTATE = Integer.parse(list2[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F21R | PRJob Create Limit Req |
Sent by Host Only |
// S16F21R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 21)) {recvS16F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 22, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F21R
S16F22 | PRJob Create Limit Data |
Sent by Equipment Only |
// S16F22 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PRJOBSPACE
// variables for data items and parsing
int PRJOBSPACE; // U2:1 (always) the number of process jobs that can be created
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U2:1")) { ok = false; break; }
PRJOBSPACE = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F23R | PRJob Recipe Variable Set |
Sent by Host Only |
// S16F23R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 23)) {recvS16F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 PRJOBID {L:m {L:2 RCPPARNM RCPPARVAL}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
String RCPPARNM; // A:256 (always) the name of a recipe variable parameter
String RCPPARVAL; // A:80 (varies) the value of a recipe variable parameter, any scalar format type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RCPPARNM = list3[1];} else { RCPPARNM = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPPARVAL = list3[1];} else { RCPPARVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 24, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F23R
S16F24 | PRJob Recipe Variable Ack |
Sent by Host Only |
// S16F24 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(16, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F25R | PRJob Start Method Set |
Sent by Host Only |
// S16F25R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 25)) {recvS16F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 {L:m PRJOBID} PRPROCESSSTART
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int PRPROCESSSTART; // TF:1 (always) automatic start flag, false implies manual start
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
PRPROCESSSTART = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 26, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F25R
S16F26 | PRJob Start Method Ack |
Sent by Equipment Only |
// S16F26 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:m PRJOBID} {L:2 ACKA {L:n {L:2 ERRCODE ERRTEXT}}}
// variables for data items and parsing
String PRJOBID; // A:n (always) process job identifier
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { PRJOBID = list2[1];} else { PRJOBID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok=false; break; }
for(int n=1; n < list2.length; n++) {
String [] list3;
list3 = TclList.split(list2[n]);
if (list3.length != 3) { ok=false; break; }
String [] list4;
list4 = TclList.split(list3[1]);
if (list4.length < 1) { ok = false; break; }
if (list4.length == 2) { ERRCODE = list4[1];} else { ERRCODE = ""; }
list4 = TclList.split(list3[2]);
if (list4.length < 1) { ok = false; break; }
if (!list4[0].startsWith("A:")) { ok = false; break; }
if (list4.length == 2) { ERRTEXT = list4[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F27R | Control Job Command |
Sent by Host Only |
Comment: Defined by E94, used in replacement of S16F5 when Control Jobs are used
Format:
// S16F27R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 27)) {recvS16F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 CTLJOBID CTLJOBCMD {L:2 CPNAME CPVAL}
// variables for data items and parsing
String CTLJOBID; // A:n (always) control job ID, an OBJID
int CTLJOBCMD; // U1:1 (always) control job command
String CPNAME; // A:n (varies) command parameter name
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { CTLJOBID = list1[1];} else { CTLJOBID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CTLJOBCMD = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CPNAME = list2[1];} else { CPNAME = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CPVAL = list2[1];} else { CPVAL = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 28, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F27R
S16F28 | Control Job Command Ack |
Sent by Equipment Only |
// S16F28 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ACKA {L:2 ERRCODE ERRTEXT}
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length != 3) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ERRCODE = list2[1];} else { ERRCODE = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ERRTEXT = list2[1];} else { ERRTEXT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S16F29 | PRSetMtrlOrder |
Sent by Host Only |
// S16F29 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 16, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 16) && (function = 29)) {recvS16F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS16F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect PRMTRLORDER
// variables for data items and parsing
int PRMTRLORDER; // U1:1 (always) ordering method for pending process jobs
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
PRMTRLORDER = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(16, 30, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S16F29
S16F30 | PRSetMtrlOrder Ack |
Sent by Equipment Only |
// S16F30 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(16, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect ACKA
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F1R | Data Report Create Req |
Sent by Host Only |
// S17F1R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 1)) {recvS17F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID RPTID DATASRC {L:n VID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String RPTID; // U4:1 (varies) report ID
String DATASRC; // A:n (always) identifies a data source, use length 0 to mean the default
String VID; // A:n (varies) A variable ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { DATASRC = list1[1];} else { DATASRC = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { VID = list2[1];} else { VID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 2, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F1R
S17F2 | Data Report Create Ack |
Sent by Equipment Only |
// S17F2 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 RPTID ERRCODE
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
String ERRCODE; // U4:1 (varies) error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F3R | Data Report Delete Req |
Sent by Host Only |
Comment: L:0 means delete all reports
Format:
// S17F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 3)) {recvS17F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n RPTID
// variables for data items and parsing
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F3R
S17F4 | Data Report Del Ack |
Sent by Equipment Only |
// S17F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ACKA {L:m {L:3 RPTID ERRCODE ERRTEXT}}
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
String RPTID; // U4:1 (varies) report ID
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RPTID = list3[1];} else { RPTID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F5R | Trace Create Req |
Sent by Host Only |
Comment: we recommend the host always provides the L:8 values
Format:
// S17F5R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 5)) {recvS17F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 DATAID TRID CEED {L:n RPTID} {L:8* TOTSMP REPGSZ EVNTSRC CEIDSTART EVNTSRC2 CEIDSTOP TRAUTOD RPTOC}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String TRID; // A:n (varies) trace request ID
int CEED; // TF:1 (always) collection event or trace enablement, true is enabled
String RPTID; // U4:1 (varies) report ID
String TOTSMP; // U4:1 (varies) total samples to be made, should be an even multiple of REPGSZ
String REPGSZ; // U4:1 (varies) reporting group size, TOTSMP modulo REPGSZ should be 0
String EVNTSRC; // A:n (always) identifies an event source, use length 0 to specify the default
String CEIDSTART; // U4:1 (varies) the CEID of a start event
String EVNTSRC2; // A:n (always) a second event source EVNTSRC
String CEIDSTOP; // U4:1 (varies) the CEID of a stop event
int TRAUTOD; // TF:1 (always) delete upon completion flag
int RPTOC; // TF:1 (always) send only changed data trace report flag
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
CEED = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length == 9) { // 8 optional items found
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { TOTSMP = list2[1];} else { TOTSMP = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { REPGSZ = list2[1];} else { REPGSZ = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { EVNTSRC = list2[1];} else { EVNTSRC = ""; }
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CEIDSTART = list2[1];} else { CEIDSTART = ""; }
list2 = TclList.split(list1[5]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { EVNTSRC2 = list2[1];} else { EVNTSRC2 = ""; }
list2 = TclList.split(list1[6]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CEIDSTOP = list2[1];} else { CEIDSTOP = ""; }
list2 = TclList.split(list1[7]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
TRAUTOD = Integer.parse(list2[1]);
list2 = TclList.split(list1[8]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("TF:1")) { ok = false; break; }
RPTOC = Integer.parse(list2[1]);
}
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F5R
S17F6 | Trace Create Ack |
Sent by Equipment Only |
// S17F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TRID ERRCODE
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
String ERRCODE; // U4:1 (varies) error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F7R | Trace Delete Req |
Sent by Host Only |
Comment: Surprisingly, L:0 is not specified as a means to indicate all, but this feature has to be provided because there is no means to discover the existing traces.
Format:
// S17F7R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 7)) {recvS17F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 8, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F7R
S17F8 | Trace Delete Ack |
Sent by Equipment Only |
// S17F8 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ACKA {L:m {L:3 TRID ERRCODE ERRTEXT}}
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
String TRID; // A:n (varies) trace request ID
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { TRID = list3[1];} else { TRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F9R | Collection Event Link Req |
Sent by Host Only |
// S17F9R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 9)) {recvS17F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 DATAID EVNTSRC CEID {L:n RPTID}
// variables for data items and parsing
String DATAID; // U4:1 (varies) an identifier to correlate related messages
String EVNTSRC; // A:n (always) identifies an event source, use length 0 to specify the default
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATAID = list1[1];} else { DATAID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { RPTID = list2[1];} else { RPTID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 10, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F9R
S17F10 | Collection Event Link Ack |
Sent by Equipment Only |
// S17F10 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 EVNTSRC CEID ERRCODE
// variables for data items and parsing
String EVNTSRC; // A:n (always) identifies an event source, use length 0 to specify the default
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String ERRCODE; // U4:1 (varies) error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F11R | Collection Event Unlink |
Sent by Host Only |
// S17F11R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 11)) {recvS17F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 EVNTSRC CEID RPTID
// variables for data items and parsing
String EVNTSRC; // A:n (always) identifies an event source, use length 0 to specify the default
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F11R
S17F12 | Collection Event Unlink Ack |
Sent by Equipment Only |
// S17F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 EVNTSRC CEID RPTID ERRCODE
// variables for data items and parsing
String EVNTSRC; // A:n (always) identifies an event source, use length 0 to specify the default
String CEID; // U4:1 (varies) collection event identifier, GEM requires type Un
String RPTID; // U4:1 (varies) report ID
String ERRCODE; // U4:1 (varies) error code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EVNTSRC = list1[1];} else { EVNTSRC = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CEID = list1[1];} else { CEID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { RPTID = list1[1];} else { RPTID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ERRCODE = list1[1];} else { ERRCODE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S17F13R | Trace Reset Req |
Sent by Host Only |
// S17F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 17, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 17) && (function = 13)) {recvS17F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS17F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n TRID
// variables for data items and parsing
String TRID; // A:n (varies) trace request ID
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { TRID = list1[1];} else { TRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(17, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S17F13R
S17F14 | Trace Reset Ack |
Sent by Equipment Only |
// S17F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(17, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ACKA {L:m {L:3 TRID ERRCODE ERRTEXT}}
// variables for data items and parsing
int ACKA; // TF:1 (always) request success
String TRID; // A:n (varies) trace request ID
String ERRCODE; // U4:1 (varies) error code
String ERRTEXT; // A:80 (always) description of ERRCODE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
ACKA = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { TRID = list3[1];} else { TRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ERRCODE = list3[1];} else { ERRCODE = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ERRTEXT = list3[1];} else { ERRTEXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F1R | Read Attribute Req |
Sent by Host Only |
// S18F1R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 1)) {recvS18F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TARGETID {L:n ATTRID}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ATTRID = list2[1];} else { ATTRID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 2, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F1R
S18F2 | Read Attribute Data |
Sent by Equipment Only |
Comment: E5 differs from OEM tools
Format:
// S18F2 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 TARGETID SSACK {L:n ATTRDATA} {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ATTRDATA = list2[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F3R | Write Attribute Req |
Sent by Host Only |
// S18F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 3)) {recvS18F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TARGETID {L:n {L:2 ATTRID ATTRDATA}}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String ATTRID; // A:40 (varies) identifies an attribute type, chars 0x20-0x7e but not >, :, ?, *, or ~. Does not begin or end with space.
String ATTRDATA; // A:n (varies) a specific attribute value of any data type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRID = list3[1];} else { ATTRID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ATTRDATA = list3[1];} else { ATTRDATA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F3R
S18F4 | Write Attribute Ack |
Sent by Equipment Only |
Comment: fixed E5 mistake
Format:
// S18F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TARGETID SSACK {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F5R | Read Request |
Sent by Host Only |
// S18F5R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 5)) {recvS18F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 TARGETID DATASEG DATALENGTH
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String DATASEG; // A:n (varies) identifies data requested, E87 requires text
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 6, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F5R
S18F6 | Read Data |
Sent by Equipment Only |
// S18F6 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 TARGETID SSACK DATA {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String DATA; // A:n (varies) unformatted data
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F7R | Write Data Request |
Sent by Host Only |
// S18F7R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 7)) {recvS18F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TARGETID DATASEG DATALENGTH DATA
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String DATASEG; // A:n (varies) identifies data requested, E87 requires text
String DATALENGTH; // U4:1 (varies) total bytes of the message body
String DATA; // A:n (varies) unformatted data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATASEG = list1[1];} else { DATASEG = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATALENGTH = list1[1];} else { DATALENGTH = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { DATA = list1[1];} else { DATA = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 8, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F7R
S18F8 | Write Data Ack |
Sent by Equipment Only |
// S18F8 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TARGETID SSACK {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F9R | Read ID Req |
Sent by Host Only |
// S18F9R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 9)) {recvS18F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TARGETID
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { TARGETID = list0[1];} else { TARGETID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 10, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F9R
S18F10 | Read ID Data |
Sent by Equipment Only |
// S18F10 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:4 TARGETID SSACK MID {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String MID; // A:16 (varies) material ID, E40 restricts to A:n
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F11R | Write ID Req |
Sent by Host Only |
// S18F11R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 11)) {recvS18F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TARGETID MID
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String MID; // A:16 (varies) material ID, E40 restricts to A:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F11R
S18F12 | Write ID Ack |
Sent by Equipment Only |
// S18F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TARGETID SSACK {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F13R | Subsystem Command |
Sent by Host Only |
// S18F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 13)) {recvS18F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 TARGETID SSCMD {L:n CPVAL}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSCMD; // A:n (always) subsystem action command
String CPVAL; // A:n (varies) command parameter value, any scalar type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSCMD = list1[1];} else { SSCMD = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { CPVAL = list2[1];} else { CPVAL = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F13R
S18F14 | Subsystem Command Ack |
Sent by Equipment Only |
// S18F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TARGETID SSACK {L:s STATUS}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String STATUS; // A:n (always) subsystem status data
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S18F15R | Read 2D Code Cond Req |
Sent by Host Only |
// S18F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 18, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 18) && (function = 15)) {recvS18F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS18F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TARGETID
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { TARGETID = list0[1];} else { TARGETID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(18, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S18F15R
S18F16 | Read 2D Code Cond Data |
Sent by Equipment Only |
// S18F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(18, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:5 TARGETID SSACK MID {L:s STATUS} {L:c CONDITION}
// variables for data items and parsing
String TARGETID; // A:n (always) the OBJSPEC for the target object
String SSACK; // A:2 (always) two character codes for success or failure, NO Normal, EE exec. err, CE comm. err, HE h/w err, TE tag err
String MID; // A:16 (varies) material ID, E40 restricts to A:n
String STATUS; // A:n (always) subsystem status data
String CONDITION; // A:n (always) sub-system condition info tag
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETID = list1[1];} else { TARGETID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { SSACK = list1[1];} else { SSACK = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { MID = list1[1];} else { MID = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int s=1; s < list1.length; s++) {
String [] list2;
list2 = TclList.split(list1[s]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUS = list2[1];} else { STATUS = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int c=1; c < list1.length; c++) {
String [] list2;
list2 = TclList.split(list1[c]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { CONDITION = list2[1];} else { CONDITION = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F1R | Request Process Definition Element (PDE) Directory |
Sent by Host and Equipment |
Comment: SEE SEMI E139. If m=0, all PDE's are returned. If n=0, no additional attributes are returned. Selection conditions are ANDed together.
Format:
// S19F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 1)) {recvS19F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 {L:m {L:3 PDEATTRIBUTENAME COMPARISONOPERATOR PDEATTRIBUTEVALUE}} {L:n PDEATTRIBUTE}
// variables for data items and parsing
int PDEATTRIBUTENAME; // U1:1 (always) identifies a PDE attribute type
int COMPARISONOPERATOR; // U1:1 (always) choice of comparison operators. Interpreted as "target <op> <const>" where <op> is this value and <const> is supplied in the expression
String PDEATTRIBUTEVALUE; // A (varies) contains the value of a PDE Attribute, may be type L, A, TF, U1
int PDEATTRIBUTE; // U1:1 (always) a reportable PDE attribute type, not necessarily useable in a filter expression
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
PDEATTRIBUTENAME = Integer.parse(list3[1]);
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COMPARISONOPERATOR = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { PDEATTRIBUTEVALUE = list3[1];} else { PDEATTRIBUTEVALUE = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
PDEATTRIBUTE = Integer.parse(list2[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F1R
S19F2 | PDE Directory Data |
Sent by Host and Equipment |
Comment: the list of PDEs, and their attributes matching the request
Format:
// S19F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 DIRRSPSTAT STATUSTXT {L:m {L:2 UID {L:n {L:2 PDEATTRIBUTE PDEATTRIBUTEVALUE}}}}
// variables for data items and parsing
int DIRRSPSTAT; // U1:1 (always) get dir status response
String STATUSTXT; // A:80 (always) status response description
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int PDEATTRIBUTE; // U1:1 (always) a reportable PDE attribute type, not necessarily useable in a filter expression
String PDEATTRIBUTEVALUE; // A (varies) contains the value of a PDE Attribute, may be type L, A, TF, U1
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
DIRRSPSTAT = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { STATUSTXT = list1[1];} else { STATUSTXT = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok=false; break; }
for(int n=1; n < list3.length; n++) {
String [] list4;
list4 = TclList.split(list3[n]);
if (list4.length != 3) { ok=false; break; }
String [] list5;
list5 = TclList.split(list4[1]);
if (list5.length < 1) { ok = false; break; }
if (!list5[0].equals("U1:1")) { ok = false; break; }
PDEATTRIBUTE = Integer.parse(list5[1]);
list5 = TclList.split(list4[2]);
if (list5.length < 1) { ok = false; break; }
if (list5.length == 2) { PDEATTRIBUTEVALUE = list5[1];} else { PDEATTRIBUTEVALUE = ""; }
}
if (!ok) break;
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F3R | PDE Delete Request |
Sent by Host Only |
Comment: L:0 is not allowed. Surprisingly the command is only defined for the host despite S19F1R being for both.
Format:
// S19F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 19, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 3)) {recvS19F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n UID
// variables for data items and parsing
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S19F3R
S19F4 | PDE Delete Acknowledge |
Sent by Equipment Only |
Comment: Surprisingly L:0 is specified as the reply for L:0 input instead of S9F7.
Format:
// S19F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(19, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:3 UID DELRSPSTAT STATUSTXT}
// variables for data items and parsing
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int DELRSPSTAT; // U1:1 (always) Response code for the PDE deletion request, non-zero means not deleted
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 4) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { UID = list2[1];} else { UID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
DELRSPSTAT = Integer.parse(list2[1]);
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUSTXT = list2[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F5R | PDE Header Data Request |
Sent by Host and Equipment |
Comment: n = 0 is not allowed
Format:
// S19F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 5)) {recvS19F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n UID
// variables for data items and parsing
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F5R
S19F6 | PDE Header Data Reply |
Sent by Host and Equipment |
Comment: A zero length TCID is sent if there are no code 0 PDEs. If L:0 S19F5R input then n=0 reply instead of S9F7!
Format:
// S19F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TCID {L:n {L:3 UID GETRSPSTAT STATUSTXT}}
// variables for data items and parsing
String TCID; // A:36 (always) The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int GETRSPSTAT; // U1:1 (always) Response code for PDE queries, non-zero indicates failure
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
GETRSPSTAT = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F7R | request the transfer of PDEs via Stream 13 |
Sent by Host and Equipment |
Comment: n = 0 is not allowed
Format:
// S19F7R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 7)) {recvS19F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n UID
// variables for data items and parsing
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { UID = list1[1];} else { UID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F7R
S19F8 | PDE Transfer Reply |
Sent by Host and Equipment |
Comment: Each PDE data set with the GETRSPSTAT response code of 0 will be sent in a Stream 13 TransferContainer. A zero length TCID is sent if there are no code 0 PDEs. If L:0 S19F7R input then n=0 reply instead of S9F7!
Format:
// S19F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 TCID {L:n {L:3 UID GETRSPSTAT STATUSTXT}}
// variables for data items and parsing
String TCID; // A:36 (always) The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int GETRSPSTAT; // U1:1 (always) Response code for PDE queries, non-zero indicates failure
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
GETRSPSTAT = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F9R | Request to Send PDE |
Sent by Host and Equipment |
Comment: Request permission to initiate PDE transfer using S19F11R.
Format:
// S19F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 9)) {recvS19F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TCID TRANSFERSIZE
// variables for data items and parsing
String TCID; // A:36 (always) The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
int TRANSFERSIZE; // U8:1 (always) SIze in bytes of the TransferContainer. An 8 byte value but HSMS uses 4 byte message lengths!!!
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U8:1")) { ok = false; break; }
TRANSFERSIZE = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F9R
S19F10 | Initiate PDE transfer Reply |
Sent by Host and Equipment |
// S19F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 TCID RTSRSPSTAT STATUSTXT
// variables for data items and parsing
String TCID; // A:36 (always) The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
int RTSRSPSTAT; // U1:1 (always) PDE transfer request reply code, non-zero means denied
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TCID = list1[1];} else { TCID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RTSRSPSTAT = Integer.parse(list1[1]);
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { STATUSTXT = list1[1];} else { STATUSTXT = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F11R | Send PDE |
Sent by Host and Equipment |
Comment: tells the receiver to initiate a Stream 13 transfer with the DSNAME = TCID
Format:
// S19F11R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 11)) {recvS19F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect TCID
// variables for data items and parsing
String TCID; // A:36 (always) The identity of a transfer container specified as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { TCID = list0[1];} else { TCID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 12, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F11R
S19F12 | Send PDE Acknowledge |
Sent by Host and Equipment |
Comment: Header only. The transfer result status is sent in S19F13.
Format:
// S19F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S19F13R | TransferContainer Report |
Sent by Host and Equipment |
Comment: Acknowledges the receipt of a TransferContainer using S13. Verification of transferred PDEs is rrequired when received by equipment.
Format:
// S19F13R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 13)) {recvS19F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n {L:4 UID SENDRSPSTAT VERIFYRSPSTAT STATUSTXT}
// variables for data items and parsing
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int SENDRSPSTAT; // U1:1 (always) Return codes for the Send PDE request, non-zero means failure
int VERIFYRSPSTAT; // U1:1 (always) PDE verification result, 0 success, 10 none, other error
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 5) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { UID = list2[1];} else { UID = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
SENDRSPSTAT = Integer.parse(list2[1]);
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
VERIFYRSPSTAT = Integer.parse(list2[1]);
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { STATUSTXT = list2[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F13R
S19F14 | TransferContainer Report Ack |
Sent by Host and Equipment |
Comment: header only acknowledges the receipt S19F13R
Format:
// S19F14 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// no data expected
return; // parsed ok
} // end while(ok)
S19F15R | Request PDE Resolution |
Sent by Host Only |
Comment: Request the equipment to resolve PDEs in the target. n can be 0 for no InputMap
Format:
// S19F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 19, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 15)) {recvS19F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 TARGETPDE {L:n {L:2 PDEREF RESOLUTION}}
// variables for data items and parsing
String TARGETPDE; // A:36 (always) the UID of the target PDE, a 36 character string with runs of 8,4,4,4, and 12 characters joined by hyphens.
String PDEREF; // A:36 (always) The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
String RESOLUTION; // A:36 (always) the UID of a PDE
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETPDE = list1[1];} else { TARGETPDE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S19F15R
S19F16 | PDE Resolution Data |
Sent by Equipment Only |
Comment: The output map of the recipe structure. L:m has resolved PDEREF. n can be 0, n >= m
Format:
// S19F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(19, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:m {L:2 PDEREF RESOLUTION}} {L:n {L:3 UID RESPDESTAT STATUSTXT}}
// variables for data items and parsing
String PDEREF; // A:36 (always) The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
String RESOLUTION; // A:36 (always) the UID of a PDE
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int RESPDESTAT; // U1:1 (always) status codes for PDE resolution
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int m=1; m < list1.length; m++) {
String [] list2;
list2 = TclList.split(list1[m]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
RESPDESTAT = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F17R | Verify PDE Request |
Sent by Host Only |
Comment: n can be 0 when there is no InputMap
Format:
// S19F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 19, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 17)) {recvS19F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 TARGETPDE {L:n {L:2 PDEREF RESOLUTION}} VERIFYTYPE VERIFYDEPTH
// variables for data items and parsing
String TARGETPDE; // A:36 (always) the UID of the target PDE, a 36 character string with runs of 8,4,4,4, and 12 characters joined by hyphens.
String PDEREF; // A:36 (always) The UID of a PDE or of a PDE group formatted as a 36 character string with runs of 8, 4, 4, 4, and 12 characters joined by hyphens.
String RESOLUTION; // A:36 (always) the UID of a PDE
int VERIFYTYPE; // U1:1 (always) chooses the type of verification
int VERIFYDEPTH; // U1:1 (always) whether to check only the target, or the target and all referenced PDEs
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { TARGETPDE = list1[1];} else { TARGETPDE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 3) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { PDEREF = list3[1];} else { PDEREF = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RESOLUTION = list3[1];} else { RESOLUTION = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
VERIFYTYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
VERIFYDEPTH = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S19F17R
S19F18 | PDE Verification Result |
Sent by Equipment Only |
// S19F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(19, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 VERIFYSUCCESS {L:n {L:3 UID VERIFYRSPSTAT STATUSTXT}}
// variables for data items and parsing
int VERIFYSUCCESS; // TF:1 (always) True if no errors were found
String UID; // A:36 (always) See SEMI E139. A unique identifier for a PDE consisting of a 36 character string with runs of 8, 4, 4, 4, and 12 characters separated by hyphens
int VERIFYRSPSTAT; // U1:1 (always) PDE verification result, 0 success, 10 none, other error
String STATUSTXT; // A:80 (always) status response description
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("TF:1")) { ok = false; break; }
VERIFYSUCCESS = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { UID = list3[1];} else { UID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
VERIFYRSPSTAT = Integer.parse(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { STATUSTXT = list3[1];} else { STATUSTXT = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S19F19R | S19 Multi-block Inquire |
Sent by Host and Equipment |
Comment: SECS-I request permission to send multi-block S19F1,3,5,6,13,15,17. Not required for HSMS.
Format:
// S19F19R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 19, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 19) && (function = 19)) {recvS19F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS19F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect DATALENGTH
// variables for data items and parsing
String DATALENGTH; // U4:1 (varies) total bytes of the message body
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (list0.length == 2) { DATALENGTH = list0[1];} else { DATALENGTH = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(19, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S19F19R
S19F20 | S19 Multi-block Grant |
Sent by Host and Equipment |
Comment: Usage is not required by the standard. Should not have been included in the standard.
Format:
// S19F20 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(19, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect GRANT
// variables for data items and parsing
int GRANT; // B:1 (always) multiblock grant code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("B:1")) { ok = false; break; }
GRANT = sp.binToInt(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F1R | SetSRO Attributes Request |
Sent by Host Only |
Comment: E170 SRO intitialization, enums are inverted booleans so Hume has renamed them
Format:
// S20F1R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 1)) {recvS20F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 OBJID OBJTYPE AUTOPOST_DISABLE AUTOCLEAR_DISABLE RETAINRECIPE_DISABLE AUTOCLOSE
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int AUTOPOST_DISABLE; // U1:1 (always) Disable automatic posting of recipes to RMS preceeding SRO move to Local state (E171)
int AUTOCLEAR_DISABLE; // U1:1 (always) Disable automatic clear of recipes on SRO transition to Local (E171)
int RETAINRECIPE_DISABLE; // U1:1 (always) Disable automatic retention of recipes on disconnect
int AUTOCLOSE; // U2:1 (always) Interaction timeout for closing operator session, 0 is no limit
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
AUTOPOST_DISABLE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
AUTOCLEAR_DISABLE = Integer.parse(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RETAINRECIPE_DISABLE = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
AUTOCLOSE = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 2, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F1R
S20F2 | SetSRO Attributes Acknowledge |
Sent by Equipment Only |
// S20F2 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SSAACK
// variables for data items and parsing
int SSAACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
SSAACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F3R | GetOperationIDList Request |
Sent by Host Only |
// S20F3R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 3)) {recvS20F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:3 OBJID OBJTYPE OPETYPE
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 4, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F3R
S20F4 | GetOperationIDList Acknowledge |
Sent by Equipment Only |
// S20F4 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n OPEID} GOILACK
// variables for data items and parsing
String OPEID; // A:16 (always) recipe operation identifier
int GOILACK; // U1:1 (always) completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { OPEID = list2[1];} else { OPEID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
GOILACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F5R | OpenConnectionEvent Send |
Sent by Equipment Only |
// S20F5R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 5)) {recvS20F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:7 OBJID OBJTYPE OPETYPE RMSUSERID RMSPWD EQUSERID OPEID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String RMSUSERID; // A:64 (always) SRO userID
String RMSPWD; // A:64 (always) password of SRO user
String EQUSERID; // A:64 (always) Equipment userID for recipe use authentication
String OPEID; // A:16 (always) recipe operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMSUSERID = list1[1];} else { RMSUSERID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { RMSPWD = list1[1];} else { RMSPWD = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { EQUSERID = list1[1];} else { EQUSERID = ""; }
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F5R
S20F6 | OpenConnectionEvent Acknowledge |
Sent by Host Only |
// S20F6 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 OPEID OCEACK
// variables for data items and parsing
String OPEID; // A:16 (always) recipe operation identifier
int OCEACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OCEACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F7R | CloseConnectionEvent Send |
Sent by Equipment Only |
Comment: a request to close a connection
Format:
// S20F7R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 7)) {recvS20F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJID OBJTYPE OPETYPE OPEID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F7R
S20F8 | CloseConnectionEvent Acknowledge |
Sent by Host Only |
// S20F8 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 OPEID CCEACK
// variables for data items and parsing
String OPEID; // A:16 (always) recipe operation identifier
int CCEACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
CCEACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F9R | ClearOperation Request |
Sent by Host Only |
Comment: clear all recipes for the Operation ID
Format:
// S20F9R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 9)) {recvS20F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJID OBJTYPE OPETYPE OPEID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 10, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F9R
S20F10 | ClearOperation Acknowledge |
Sent by Equipment Only |
// S20F10 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect COACK
// variables for data items and parsing
int COACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
COACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F11R | GetRecipeXIDList Request |
Sent by Host Only |
Comment: query recipes for the Operation ID
Format:
// S20F11R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 11)) {recvS20F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJID OBJTYPE OPETYPE OPEID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F11R
S20F12 | GetRecipeXIDList Acknowledge |
Sent by Equipment Only |
// S20F12 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} GRXLACK
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
int GRXLACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
GRXLACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F13R | DeleteRecipe Request |
Sent by Host Only |
Comment: delete specified recipes
Format:
// S20F13R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 13)) {recvS20F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length != 10) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { TIMESTAMP = list2[1];} else { TIMESTAMP = ""; }
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { OPEID = list2[1];} else { OPEID = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list2[1]);
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list2[1]);
list2 = TclList.split(list1[5]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { REVID = list2[1];} else { REVID = ""; }
list2 = TclList.split(list1[6]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { RecID = list2[1];} else { RecID = ""; }
list2 = TclList.split(list1[7]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { VERID = list2[1];} else { VERID = ""; }
list2 = TclList.split(list1[8]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list2[1]);
list2 = TclList.split(list1[9]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { EQID = list2[1];} else { EQID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 14, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F13R
S20F14 | DeleteRecipe Acknowledge |
Sent by Equipment Only |
// S20F14 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect DRRACK
// variables for data items and parsing
int DRRACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
DRRACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F15R | WriteRecipe Request |
Sent by Host Only |
Comment: n is the number of recipes
Format:
// S20F15R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 15)) {recvS20F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
String RCPBODYA; // A:n (varies) user defined recipe body, list allowed
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 11) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
list3 = TclList.split(list2[10]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 16, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F15R
S20F16 | WriteRecipe Acknowledge |
Sent by Equipment Only |
// S20F16 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect WRACK
// variables for data items and parsing
int WRACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
WRACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F17R | ReadRecipe Request |
Sent by Host Only |
Comment: n is the number of recipes
Format:
// S20F17R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 17)) {recvS20F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 18, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F17R
S20F18 | ReadRecipe Acknowledge |
Sent by Equipment Only |
// S20F18 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}} RRACK_S20
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
String RCPBODYA; // A:n (varies) user defined recipe body, list allowed
int RRACK_S20; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 11) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
list3 = TclList.split(list2[10]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
RRACK_S20 = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F19R | QueryRecipeXIDList Event Send |
Sent by Equipment Only |
// S20F19R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 19)) {recvS20F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 OBJID OBJTYPE OPETYPE OPEID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F19R
S20F20 | QueryRecipeXIDList Event Acknowledge |
Sent by Host Only |
// S20F20 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} QRXLEACK
// variables for data items and parsing
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
int QRXLEACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
QRXLEACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F21R | QueryRecipe Event Send |
Sent by Equipment Only |
// S20F21R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 21, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 21)) {recvS20F21(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F21(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 22, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F21R
S20F22 | QueryRecipe Event Acknowledge |
Sent by Host Only |
// S20F22 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 21, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect QREACK
// variables for data items and parsing
int QREACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
QREACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F23R | PostRecipe Event Send |
Sent by Equipment Only |
// S20F23R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 23, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 23)) {recvS20F23(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F23(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
String RCPBODYA; // A:n (varies) user defined recipe body, list allowed
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 11) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
list3 = TclList.split(list2[10]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 24, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F23R
S20F24 | PostRecipe Event Acknowledge |
Sent by Host Only |
// S20F24 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 23, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PREACK
// variables for data items and parsing
int PREACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
PREACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F25R | SetPRC Attributes Request |
Sent by Host Only |
Comment: MAXNUMBERLIST is {L:n MAXNUMBER}
Format:
// S20F25R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 25, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 25)) {recvS20F25(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F25(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE {L:n MAXNUMBER} MAXTIME PRCPREEXECHK
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int MAXNUMBER; // U2:1 (always) subspace maximum
int MAXTIME; // U2:1 (always) maximum minutes for a PEM recipe to be preserved in PRC post use, 0 means NA
int PRCPREEXECHK; // U1:1 (always) Enable Pre-Execution checking
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U2:1")) { ok = false; break; }
MAXNUMBER = Integer.parse(list2[1]);
}
if (!ok) break;
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U2:1")) { ok = false; break; }
MAXTIME = Integer.parse(list1[1]);
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
PRCPREEXECHK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 26, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F25R
S20F26 | SetPRC Attributes Acknowledge |
Sent by Equipment Only |
// S20F26 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 25, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect SPAACK
// variables for data items and parsing
int SPAACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
SPAACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F27R | PreSpecifyRecipe Request |
Sent by Host Only |
// S20F27R Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 20, 27, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 27)) {recvS20F27(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F27(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 OBJID OBJTYPE OPETYPE OPEID PRJOBID {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}}
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String PRJOBID; // A:n (always) process job identifier
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 28, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S20F27R
S20F28 | PreSpecifyRecipe Acknowledge |
Sent by Equipment Only |
// S20F28 Java Parse reply
SecsHost sp=(SecsHost)yourSecsHost;
RcResult rcr = sp.sendSecsMsg(20, 27, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PSRACK
// variables for data items and parsing
int PSRACK; // U1:1 (always) service completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
PSRACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F29R | QueryPJRecipeXIDList Event Send |
Sent by Equipment Only |
// S20F29R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 29, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 29)) {recvS20F29(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F29(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID PRJOBID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String PRJOBID; // A:n (always) process job identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 30, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F29R
S20F30 | QueryPJRecipeXIDList Event Acknowledge |
Sent by Host Only |
// S20F30 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 29, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 {L:n {L:9 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID}} QPRKEACK
// variables for data items and parsing
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
int QPRKEACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 10) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
QPRKEACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F31R | Pre-Exe Check Event Send |
Sent by Equipment Only |
// S20F31R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 31, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 31)) {recvS20F31(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F31(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:6 OBJID OBJTYPE OPETYPE OPEID PRJOBID CHKINFO
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String PRJOBID; // A:n (always) process job identifier
String CHKINFO; // A:n (varies) User defined value, any type
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 7) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { CHKINFO = list1[1];} else { CHKINFO = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 32, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F31R
S20F32 | Pre-Exe Check Event Acknowledge |
Sent by Host Only |
// S20F32 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 31, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 PECRSLT {L:n {L:10 TIMESTAMP OPEID ASSGNID COPYID REVID RecID VERID TYPEID EQID RCPBODYA}} PECEACK
// variables for data items and parsing
int PECRSLT; // U1:1 (always) RMS result
String TIMESTAMP; // A:32 (always) ECV TimeFormat controls format, 0=A:12 YYMMDDHHMMSS, 1=A:16 YYYYMMDDHHMMSScc,2=YYYY-MM-DDTHH:MM:SS.s[s]*{Z|+hh:mm|-hh:mm}
String OPEID; // A:16 (always) recipe operation identifier
int ASSGNID; // U1:1 (always) Assigner of the RecipeXID Base Part
int COPYID; // U1:1 (always) Recipe copy type
String REVID; // A:256 (always) recipe revision information related to SRO
String RecID; // A:n (always) recipe spec or ppid
String VERID; // A:n (always) composite key with RecipeID to identify a unique recipe
int TYPEID; // U1:1 (always) recipe type
String EQID; // A:256 (always) recipe specification of compatible equipment
String RCPBODYA; // A:n (varies) user defined recipe body, list allowed
int PECEACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
PECRSLT = Integer.parse(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 11) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { TIMESTAMP = list3[1];} else { TIMESTAMP = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { OPEID = list3[1];} else { OPEID = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
ASSGNID = Integer.parse(list3[1]);
list3 = TclList.split(list2[4]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
COPYID = Integer.parse(list3[1]);
list3 = TclList.split(list2[5]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { REVID = list3[1];} else { REVID = ""; }
list3 = TclList.split(list2[6]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { RecID = list3[1];} else { RecID = ""; }
list3 = TclList.split(list2[7]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { VERID = list3[1];} else { VERID = ""; }
list3 = TclList.split(list2[8]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("U1:1")) { ok = false; break; }
TYPEID = Integer.parse(list3[1]);
list3 = TclList.split(list2[9]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { EQID = list3[1];} else { EQID = ""; }
list3 = TclList.split(list2[10]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { RCPBODYA = list3[1];} else { RCPBODYA = ""; }
}
if (!ok) break;
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
PECEACK = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S20F33R | PreSpecifyRecipe Event Send |
Sent by Equipment Only |
// S20F33R Java Receive message - add next line to setup
//SecsHost sp=yourSecsHost;
sp.messageTypeAdd( 20, 33, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 20) && (function = 33)) {recvS20F33(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS20F33(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 OBJID OBJTYPE OPETYPE OPEID PRJOBID
// variables for data items and parsing
String OBJID; // A:80 (varies) E39 object identifier 1-80 chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
String OBJTYPE; // A:40 (varies) object class name, chars 0x20-0x7e but not >, ?, *, or ~. Does not begin or end with space.
int OPETYPE; // U1:1 (always) recipe operation type
String OPEID; // A:16 (always) recipe operation identifier
String PRJOBID; // A:n (always) process job identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJID = list1[1];} else { OBJID = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { OBJTYPE = list1[1];} else { OBJTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U1:1")) { ok = false; break; }
OPETYPE = Integer.parse(list1[1]);
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { OPEID = list1[1];} else { OPEID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { PRJOBID = list1[1];} else { PRJOBID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(20, 34, transID, reply);
}
return;
} // end while(ok)
} // end recv_S20F33R
S20F34 | PreSpecifyRecipe Event Acknowledge |
Sent by Host Only |
// S20F34 Java Parse reply
SecsEquip sp=(SecsEquip)yourSecsEquip
RcResult rcr = sp.sendSecsMsg(20, 33, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect PSREACK
// variables for data items and parsing
int PSREACK; // U1:1 (always) event completion code
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].equals("U1:1")) { ok = false; break; }
PSREACK = Integer.parse(list0[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F1R | Item Load Inquire |
Sent by Host and Equipment |
// S21F1R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 1, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 1)) {recvS21F1(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F1(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:4 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 5) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 2, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F1R
S21F2 | Item Load Grant |
Sent by Host and Equipment |
// S21F2 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 1, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ITEMACK ITEMERROR
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F3R | Item Send |
Sent by Host and Equipment |
Comment: Each part except the last one is max size.
Format:
// S21F3R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 3, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 3)) {recvS21F3(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F3(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION {L:n ITEMPART}
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
String ITEMPART; // A:n (varies) component part of an item, may be data type A:n or B:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ITEMPART = list2[1];} else { ITEMPART = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 4, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F3R
S21F4 | Item Send Acknowledge |
Sent by Host and Equipment |
// S21F4 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 3, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ITEMACK ITEMERROR
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F5R | Item Request |
Sent by Host and Equipment |
// S21F5R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 5, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 5)) {recvS21F5(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F5(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 ITEMTYPE ITEMID
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 6, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F5R
S21F6 | Item Data |
Sent by Host and Equipment |
// S21F6 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 5, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:7 ITEMACK ITEMERROR ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION {L:n ITEMPART}
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
String ITEMPART; // A:n (varies) component part of an item, may be data type A:n or B:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (list2.length == 2) { ITEMPART = list2[1];} else { ITEMPART = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F7R | Item Type List Request |
Sent by Host and Equipment |
// S21F7R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 7, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 7)) {recvS21F7(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F7(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect ITEMTYPE
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok = false; break; }
if (!list0[0].startsWith("A:")) { ok = false; break; }
if (list0.length == 2) { ITEMTYPE = list0[1];} else { ITEMTYPE = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 8, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F7R
S21F8 | Item Type List Results |
Sent by Host and Equipment |
// S21F8 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 7, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:7 ITEMACK ITEMERROR ITEMTYPE {L:n {L:3 ITEMID ITEMLENGTH ITEMVERSION}}
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ITEMID = list3[1];} else { ITEMID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (list3.length == 2) { ITEMLENGTH = list3[1];} else { ITEMLENGTH = ""; }
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ITEMVERSION = list3[1];} else { ITEMVERSION = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F9R | Supported Item Type List Request |
Sent by Host and Equipment |
// S21F9R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 9, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 9)) {recvS21F9(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F9(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// no data expected
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 10, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F9R
S21F10 | Supported Item Type List Result |
Sent by Host and Equipment |
// S21F10 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 9, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 ITEMACK ITEMERROR {L:n ITEMTYPE}
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
String ITEMTYPE; // A:n (always) case-sensitve type of an item
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ITEMTYPE = list2[1];} else { ITEMTYPE = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F11 | Item Delete |
Sent by Host Only |
// S21F11 Java Receive message - add next line to setup
//SecsEquip sp=yourSecsEquip;
sp.messageTypeAdd( 21, 11, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 11)) {recvS21F11(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F11(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
SecsEquip sp = (SecsEquip)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 ITEMTYPE {L:n ITEMID}
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ITEMID = list2[1];} else { ITEMID = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 12, transID, reply);
}
return;
} // end while(ok)
// bad data
sp.sendS9(7, header);
} // end recv_S21F11
S21F12 | Item Delete Acknowledge |
Sent by Host and Equipment |
// S21F12 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 11, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:3 ITEMACK ITEMTYPE {L:n {L:3 ITEMID ITEMACK ITEMERROR}}
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 4) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok=false; break; }
for(int n=1; n < list1.length; n++) {
String [] list2;
list2 = TclList.split(list1[n]);
if (list2.length != 4) { ok=false; break; }
String [] list3;
list3 = TclList.split(list2[1]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ITEMID = list3[1];} else { ITEMID = ""; }
list3 = TclList.split(list2[2]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list3[1]);
list3 = TclList.split(list2[3]);
if (list3.length < 1) { ok = false; break; }
if (!list3[0].startsWith("A:")) { ok = false; break; }
if (list3.length == 2) { ITEMERROR = list3[1];} else { ITEMERROR = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F13R | Request Permission To Send Item |
Sent by Host and Equipment |
// S21F13R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 13, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 13)) {recvS21F13(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F13(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:5 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMPARTCOUNT
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
int ITEMPARTCOUNT; // U4:1 (always) total number of item parts as split for transfer
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 6) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
ITEMPARTCOUNT = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 14, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F13R
S21F14 | Grant Permission To Send Item |
Sent by Host and Equipment |
// S21F14 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 13, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ITEMACK ITEMERROR
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F15R | Item Request |
Sent by Host and Equipment |
// S21F15R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 15, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 15)) {recvS21F15(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F15(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:2 ITEMTYPE ITEMID
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 16, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F15R
S21F16 | Item Request Grant |
Sent by Host and Equipment |
// S21F16 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 15, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:7 ITEMACK ITEMERROR ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMPARTCOUNT
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
int ITEMPARTCOUNT; // U4:1 (always) total number of item parts as split for transfer
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 8) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
ITEMPARTCOUNT = Integer.parse(list1[1]);
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F17R | Send Item Part |
Sent by Host and Equipment |
Comment: Each part message is not sent until the reply for the previous part is received.
Format:
// S21F17R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 17, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 17)) {recvS21F17(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F17(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:8 ITEMTYPE ITEMID ITEMLENGTH ITEMVERSION ITEMINDEX ITEMPARTCOUNT ITEMPARTLENGTH ITEMPART
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
String ITEMID; // A:256 (always) item identifier
String ITEMLENGTH; // U4:1 (varies) sum of item part lengths in bytes, not a message length, type U4 or U8
String ITEMVERSION; // A:n (always) version value, empty for unknown, default is time last modified YYYYMMDDhhmmsscc in the equipment timezone
int ITEMINDEX; // U4:1 (always) 1-based index of a component part, 0 means done, 0xFFFFFFFF means abort
int ITEMPARTCOUNT; // U4:1 (always) total number of item parts as split for transfer
int ITEMPARTLENGTH; // U4:1 (always) length of a specific item part presumably in bytes
String ITEMPART; // A:n (varies) component part of an item, may be data type A:n or B:n
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 9) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMID = list1[1];} else { ITEMID = ""; }
list1 = TclList.split(list0[3]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMLENGTH = list1[1];} else { ITEMLENGTH = ""; }
list1 = TclList.split(list0[4]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMVERSION = list1[1];} else { ITEMVERSION = ""; }
list1 = TclList.split(list0[5]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
ITEMINDEX = Integer.parse(list1[1]);
list1 = TclList.split(list0[6]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
ITEMPARTCOUNT = Integer.parse(list1[1]);
list1 = TclList.split(list0[7]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("U4:1")) { ok = false; break; }
ITEMPARTLENGTH = Integer.parse(list1[1]);
list1 = TclList.split(list0[8]);
if (list1.length < 1) { ok = false; break; }
if (list1.length == 2) { ITEMPART = list1[1];} else { ITEMPART = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 18, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F17R
S21F18 | Send Item Part Acknowledge |
Sent by Host and Equipment |
Comment: Non-zero ITEMACK causes retry (32) or abort
Format:
// S21F18 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 17, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:2 ITEMACK ITEMERROR
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length != 3) { ok=false; break; }
String [] list1;
list1 = TclList.split(list0[1]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list1[1]);
list1 = TclList.split(list0[2]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMERROR = list1[1];} else { ITEMERROR = ""; }
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)
S21F19R | Item Type Feature Support |
Sent by Host and Equipment |
Comment: a zero-length list requests for all supported item types, new 6/2022
Format:
// S21F19R Java Receive message - add next line to setup
//sp is a SecsHost or SecsEquip object reference
sp.messageTypeAdd( 21, 19, YourObject );
// class YourClass implements SecsMessageReceiveItf
void secsMessageReceive(SecsConn sc, int stream, int fn, boolean sendReply, int transID, String data, String header) {
if ((stream = 21) && (function = 19)) {recvS21F19(sc, stream, fn, sendReply, transID, data, header); return; }
}
void recvS21F19(SecsConn sc, int stream, int function, boolean sendReply, int transID, String tsnData, String header) {
//SecsEquip sp = (SecsEquip)sc;
//SecsHost sp = (SecsHost)sc;
boolean ok=true;
while (ok) { // break out of loop on error
// expect L:n ITEMTYPE
// variables for data items and parsing
String ITEMTYPE; // A:n (always) case-sensitve type of an item
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length < 1) { ok = false; break; }
if (!list1[0].startsWith("A:")) { ok = false; break; }
if (list1.length == 2) { ITEMTYPE = list1[1];} else { ITEMTYPE = ""; }
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
if (sendReply) {
String reply; // TBD create reply
sp.sendReply(21, 20, transID, reply);
}
return;
} // end while(ok)
} // end recv_S21F19R
S21F20 | Item Type Feature Support Results |
Sent by Host and Equipment |
Comment: On success, ITEMACK is zero and ITEMERROR shall be zero-length
Format:
// S21F20 Java Parse reply
// sp is a SecsEquip or SecsHost object reference
RcResult rcr = sp.sendSecsMsg(21, 19, true, sendData, true);
String tsnData;
boolean ok=true;
while (ok) { // break out of loop on error
if (rcr.rc != 0) {ok=false; break;}
tsnData = rcr.result;
// expect L:n {L:4 ITEMACK ITEMERROR ITEMTYPE ITEMTYPESUPPORT}
// variables for data items and parsing
int ITEMACK; // B:1 (always) item request return code
String ITEMERROR; // A:1024 (always) error description, empty on success
String ITEMTYPE; // A:n (always) case-sensitve type of an item
int ITEMTYPESUPPORT; // U4:1 (always) bitfield to specify which S21Fx messages accepted
try {
String [] list0;
list0 = TclList.split(tsnData);
if (list0.length < 1) { ok=false; break; }
for(int n=1; n < list0.length; n++) {
String [] list1;
list1 = TclList.split(list0[n]);
if (list1.length != 5) { ok=false; break; }
String [] list2;
list2 = TclList.split(list1[1]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("B:1")) { ok = false; break; }
ITEMACK = sp.binToInt(list2[1]);
list2 = TclList.split(list1[2]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ITEMERROR = list2[1];} else { ITEMERROR = ""; }
list2 = TclList.split(list1[3]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].startsWith("A:")) { ok = false; break; }
if (list2.length == 2) { ITEMTYPE = list2[1];} else { ITEMTYPE = ""; }
list2 = TclList.split(list1[4]);
if (list2.length < 1) { ok = false; break; }
if (!list2[0].equals("U4:1")) { ok = false; break; }
ITEMTYPESUPPORT = Integer.parse(list2[1]);
}
if (!ok) break;
} catch (Exception ex) { /* unexpected parsing exception */ }
return; // parsed ok
} // end while(ok)