public int Send(byte[] buffer, int offset, int data_length, BacnetAddress address, bool wait_for_transmission, int timeout)
{
int hdr_offset = 0;
for (int i = 0; i < 6; i++)
buffer[hdr_offset++] = address.adr[i];
// write the source mac address bytes
for (int i = 0; i < 6; i++)
buffer[hdr_offset++] = _deviceMac[i];
// the next 2 bytes are used for the packet length
buffer[hdr_offset++] = (byte)(((data_length + 3) & 0xFF00) >> 8);
buffer[hdr_offset++] = (byte)((data_length + 3) & 0xFF);
// DSAP and SSAP
buffer[hdr_offset++] = 0x82;
buffer[hdr_offset++] = 0x82;
// LLC control field
buffer[hdr_offset] = 0x03;
lock (_device)
{
_device.SendPacket(buffer, data_length + HeaderLength);
}
return data_length + HeaderLength;
}