in netmf/NetMFLite/Client.cs [626:679]
int WriteTransferFrame(uint handle, uint deliveryId, bool settled, ByteBuffer buffer, int maxFrameSize)
{
// payload should have bytes reserved for frame header and transfer
int frameSize = Math.Min(buffer.Length + TransferFramePrefixSize, maxFrameSize);
int payloadSize = frameSize - TransferFramePrefixSize;
int offset = buffer.Offset - TransferFramePrefixSize;
int pos = offset;
// frame size
buffer.Buffer[pos++] = (byte)(frameSize >> 24);
buffer.Buffer[pos++] = (byte)(frameSize >> 16);
buffer.Buffer[pos++] = (byte)(frameSize >> 8);
buffer.Buffer[pos++] = (byte)frameSize;
// DOF, type and channel
buffer.Buffer[pos++] = 0x02;
buffer.Buffer[pos++] = 0x00;
buffer.Buffer[pos++] = 0x00;
buffer.Buffer[pos++] = 0x00;
// transfer(list8-size,count)
buffer.Buffer[pos++] = 0x00;
buffer.Buffer[pos++] = 0x53;
buffer.Buffer[pos++] = 0x14;
buffer.Buffer[pos++] = 0xc0;
buffer.Buffer[pos++] = 0x10;
buffer.Buffer[pos++] = 0x06;
buffer.Buffer[pos++] = 0x52; // handle
buffer.Buffer[pos++] = (byte)handle;
buffer.Buffer[pos++] = 0x70; // delivery id: uint
buffer.Buffer[pos++] = (byte)(deliveryId >> 24);
buffer.Buffer[pos++] = (byte)(deliveryId >> 16);
buffer.Buffer[pos++] = (byte)(deliveryId >> 8);
buffer.Buffer[pos++] = (byte)deliveryId;
buffer.Buffer[pos++] = 0xa0; // delivery tag: bin8
buffer.Buffer[pos++] = 0x04;
buffer.Buffer[pos++] = (byte)(deliveryId >> 24);
buffer.Buffer[pos++] = (byte)(deliveryId >> 16);
buffer.Buffer[pos++] = (byte)(deliveryId >> 8);
buffer.Buffer[pos++] = (byte)deliveryId;
buffer.Buffer[pos++] = 0x43; // message-format
buffer.Buffer[pos++] = settled ? (byte)0x41 : (byte)0x42; // settled
buffer.Buffer[pos++] = buffer.Length > payloadSize ? (byte)0x41 : (byte)0x42; // more
this.transport.Write(buffer.Buffer, offset, frameSize);
this.sendActive = true;
buffer.Complete(payloadSize);
return payloadSize;
}