package uk.co.mmscomputing.device.capi; public class MsgOut extends StructOut implements CapiConstants{ static private final int hdlen =12; // header length static private int msgnumber =1; // 0..1 len capi message public int appid; // 2..3 public int cmd; // 4 public int scmd; // 5 public int msgno; // 6..7 public int lineid; // 8..11 public MsgOut(int len){ super(hdlen+len); } public MsgOut(int len,int appid, int cmd, int scmd, int lineid){ super(hdlen+len); encode(len,appid,cmd,scmd,lineid); } public void encode(int len,int appid, int cmd, int scmd, int lineid){ setIndex(0); writeWord(hdlen+len); // capi message length including length word this.appid=appid; this.cmd=cmd; this.scmd=scmd; this.msgno=(msgnumber++)&0x0000FFFF; this.lineid=lineid; writeWord(appid); writeByte(cmd); writeByte(scmd); writeWord(msgno); writeDWord(lineid); } public String toString(){ String s=getClass().getName()+"\n"; s+="length = "+getIndex()+"\n"; s+="appid = "+appid+"\n"; s+="cmd = 0x"+Integer.toHexString(cmd)+"\n"; s+="scmd = 0x"+Integer.toHexString(scmd)+"\n"; s+="msgno = "+msgno+"\n"; s+="lineid = 0x"+Integer.toHexString(lineid)+"\n"; return s; } }