/// <summary>
 ///     Should be called when a can message is recieved 
 ///     by the controller. This method warps the logic 
 ///     required for the can board parsing to occur internally.
 /// </summary>
 /// <param name="message">
 ///     The <see cref="CanMessage"/> received.
 /// </param>
 protected virtual void OnCanMessageRecieved(CanMessage message)
 {
     CanMessageRecieved?.Invoke(this, new CanMessageRecievedEventArgs(message));
 }
 /// <summary>
 ///     Sends a <see cref="CanMessage"/> over the 
 ///     current CAN interface.
 /// </summary>
 /// <param name="message">
 ///     The <see cref="CanMessage"/> to send.
 /// </param>
 public abstract void SendMessage(CanMessage message);