VEXLink `linkType` clarification

Hello,

I’m currently trying to wrap my head around how the VEXLink API works internally. I was a little curious around why the API varies so much between VEXCode and PROS. (PROS supports limited configuration only, and no wired connection). I’ve had a read through the documentation, but I couldn’t find much information about this.

  1. What is linkType::raw? This wasn’t really mentioned at all in the documentation for VEXLink, but it’s part of the vexcode public API. The docs describe it as a “type that is defined as a raw unmanaged link”, but the protocol seems to require both a manager and a worker radio. How does this affect robot communications data-rate wise? Is this specific to wired connections or something?
  2. PROS seemingly has no support for wired connections at all. Is it possible to establish wired brain-to-brain communication through smart ports over the generic serial API instead? If anyone knowledgable in this area is willing to tell me, what’s actually happening under the hood with wired vexlink on VEXCode?

Link type raw was just a way for the VEXcode C++ class to wrap the generic serial communication C API used with the smartports. The expectation was that alternative customer created wired link types could be created by subclassing vexlink and using the _read and _write protected member functions.

The wired message_link and serial_link classes use a VEX defined protocol to simplify communication for the end user, but essentially they are only using the existing generic serial communication APIs and handling some of the details of sending data packets back and forth for you.

A different API is used for radio links, that’s what PROS implemented.