public int Encode(byte[] buffer, ConnectionSettings settings) { buffer[0] = 0x68; var length = 4; switch (apciType) { case ApciType.I_FORMAT: buffer[2] = (byte)(sendSeqNum << 1); buffer[3] = (byte)(sendSeqNum >> 7); buffer[4] = (byte)(receiveSeqNum << 1); buffer[5] = (byte)(receiveSeqNum >> 7); length += aSdu.Encode(buffer, 6, settings); break; case ApciType.STARTDT_ACT: buffer[2] = 0x07; buffer[3] = 0x00; buffer[4] = 0x00; buffer[5] = 0x00; break; case ApciType.STARTDT_CON: buffer[2] = 0x0b; buffer[3] = 0x00; buffer[4] = 0x00; buffer[5] = 0x00; break; case ApciType.S_FORMAT: buffer[2] = 0x01; buffer[3] = 0x00; buffer[4] = (byte)(receiveSeqNum << 1); buffer[5] = (byte)(receiveSeqNum >> 7); break; } buffer[1] = (byte)length; return(length + 2); }
public int Encode(byte[] buffer, ConnectionSettings settings) { buffer[0] = 0x68; var length = 4; if (apciType == ApciType.FORMAT) { buffer[2] = (byte)(sendSeqNum << 1); buffer[3] = (byte)(sendSeqNum >> 7); buffer[4] = (byte)(receiveSeqNum << 1); buffer[5] = (byte)(receiveSeqNum >> 7); length += aSdu.Encode(buffer, 6, settings); } else if (apciType == ApciType.STARTDT_ACT) { buffer[2] = 0x07; buffer[3] = 0x00; buffer[4] = 0x00; buffer[5] = 0x00; } else if (apciType == ApciType.STARTDT_CON) { buffer[2] = 0x0b; buffer[3] = 0x00; buffer[4] = 0x00; buffer[5] = 0x00; } else if (apciType == ApciType.S_FORMAT) { buffer[2] = 0x01; buffer[3] = 0x00; buffer[4] = (byte)(receiveSeqNum << 1); buffer[5] = (byte)(receiveSeqNum >> 7); } buffer[1] = (byte)length; return(length + 2); }