private void ReadAllFromQueue() { LinError readResult; do { ReceivedMessage msg; readResult = PLinApi.Read(_clientHandle, out msg); var(processorResult, processorMessage) = MessageProcessor.Process(readResult, msg); switch (processorResult) { case MessageProcessorResult.EmptyQueue: break; case MessageProcessorResult.Error: case MessageProcessorResult.Info: OnError?.Invoke(this, processorMessage); break; case MessageProcessorResult.Regular: OnData?.Invoke(this, msg.Data); break; default: throw new NotImplementedException(); } } while (readResult == LinError.Ok); }
private void SetClientFilter() { var result = PLinApi.RegisterFrameId(linClientHandle, linHardwareHandle, 0x01, 0x3D); if (result != LinError.Ok) { throw new ConnectionError($"Error while setting client filter: {result.ToString().ToSentence()}"); } }
private void Initialize(BaudRate baudRate, HardwareMode hardwareMode) { var result = PLinApi.InitializeHardware(linClientHandle, linHardwareHandle, hardwareMode, (ushort)baudRate); if (result != LinError.Ok) { throw new ConnectionError($"Error while initializing hardware: {result.ToString().ToSentence()}"); } }
private void Connect() { var result = PLinApi.ConnectClient(linClientHandle, linHardwareHandle); if (result != LinError.Ok) { throw new ConnectionError($"Error while connecting a client: {result.ToString().ToSentence()}"); } }
private void Register() { var result = PLinApi.RegisterClient("Master", 0, out linClientHandle); if (result != LinError.Ok) { throw new ConnectionError($"Error while registering a client: {result.ToString().ToSentence()}"); } }
private void Disconnect() { var result = PLinApi.RemoveClient(linClientHandle); if (result != LinError.Ok) { throw new ConnectionError($"Error while removing a client: {result.ToString()}"); } }
protected void KeepAlive() { var result = PLinApi.StartKeepAlive(linClientHandle, linHardwareHandle, 0x00, 1000); if (result != LinError.Ok) { throw new ConnectionError($"Error while starting a keep alive session: {result.ToString().ToSentence()}"); } }
public void Send(Message message) { PLinApi.CalculateChecksum(ref message); PLinApi.GetPID(ref message.FrameId); var result = PLinApi.Write(_clientHandle, _hardwareHandle, ref message); if (result != LinError.Ok) { throw new CommunicationError($"Error while sending a message: {result.ToString().ToSentence()}"); } }
protected void DetermineHardware() { var hardwareHandles = new HardwareHandle[5]; ushort hardwareHandlesCount; var result = PLinApi.GetAvailableHardware(hardwareHandles, (ushort)(hardwareHandles.Length * sizeof(HardwareHandle)), out hardwareHandlesCount); if (result != LinError.Ok) { throw new ConnectionError($"Error while getting available hardware: {result.ToString().ToSentence()}"); } linHardwareHandle = hardwareHandles.First(); }
public void GetPIDFor(ref byte frameId) => PLinApi.GetPID(ref frameId);