public void SendODAData( ushort aid, byte block2, ushort block3, ushort block4, ODABufferConfig odaBufConfig = ODABufferConfig.TransmitOnce, ODATransmitMode odaTransmitMode = ODATransmitMode.Normal, ushort priority = 0, bool isGroupB = false ) { // ODA block 2 is 5 bits only block2 &= 0x1F; var med = new List <byte>(); med.AddRange(BitConverter.GetBytes(aid)); med.Add( getODAConfiguration(ODAConfigKind.Data, odaBufConfig, odaTransmitMode, priority) ); med.Add(block2); if (!isGroupB) { med.AddRange(BitConverter.GetBytes(block3)); } med.AddRange(BitConverter.GetBytes(block4)); BuildAndSendMessage(MEC.ODA_DATA, med.ToArray()); }
public void SendODAShortMessage( ushort aid, ushort message, ODABufferConfig odaBufConfig = ODABufferConfig.TransmitOnce ) { var med = new List <byte>(); med.AddRange(BitConverter.GetBytes(aid)); med.Add( getODAConfiguration(ODAConfigKind.ShortMessage, odaBufConfig) ); med.AddRange(BitConverter.GetBytes(message)); BuildAndSendMessage(MEC.ODA_DATA, med.ToArray()); }
public void SendODAFreeFormatData( byte appGroupType, byte block2, ushort block3, ushort block4, ODABufferConfig odaBufConfig = ODABufferConfig.TransmitOnce, ODATransmitMode odaTransmitMode = ODATransmitMode.Normal, ushort priority = 0 ) { // ODA block 2 is 5 bits only block2 &= 0x1F; var med = new List <byte>(); med.Add(appGroupType); med.Add( getODAConfiguration(ODAConfigKind.Data, odaBufConfig, odaTransmitMode, priority) ); med.Add(block2); med.AddRange(BitConverter.GetBytes(block3)); med.AddRange(BitConverter.GetBytes(block4)); BuildAndSendMessage(MEC.ODA_FREE_FORMAT, med.ToArray()); }
private byte getODAConfiguration( ODAConfigKind kind, ODABufferConfig odaBufConfig, ODATransmitMode odaTransmitMode = ODATransmitMode.Normal, ushort priority = 0 ) { if (priority > 2) { priority = 2; } int transmitMode = 0b00; switch (odaTransmitMode) { case ODATransmitMode.Normal: default: transmitMode = 0b00; break; case ODATransmitMode.Burst: transmitMode = 0b01; break; case ODATransmitMode.SpinningWheel: transmitMode = 0b10; break; } int bufferConfig = 0b00; switch (odaBufConfig) { case ODABufferConfig.TransmitOnce: default: bufferConfig = 0b00; break; case ODABufferConfig.AddToCyclic: bufferConfig = 0b10; break; case ODABufferConfig.ClearCyclic: bufferConfig = 0b11; break; } byte config = 0x00; // bit 7 is always set to 0 if (kind == ODAConfigKind.ShortMessage) { config |= (0b1 << 6); // bit 6 set to 1 } if (kind == ODAConfigKind.Data) { config |= (byte)((priority & 0b11) << 4); // bits 4 and 5 config |= (byte)((transmitMode & 0b11) << 2); // bits 2 and 3 } config |= (byte)(bufferConfig & 0b11); // bits 0 and 1 return(config); }