Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This Pull Request is just an outline somebody can work with; there is still much that needs to be done here. The basic idea is that so far RIOT, for free-space communication, only uses radio frequency. I thought it would be a good idea to also make it able to use optical frequency (communication via lasers, for instance). Especially for satellites in space, using optical frequency has a lot of nice advantages.
In this PR I have added the basic outline for an optmodem driver under drivers/ to make optical frequency communication possible in RIOT. My initial approach uses Ethernet-over-optical so that we do not need to redefine data link layer framing. However, because this is optical communication, in some cases it could be useful to define custom framing, so in my implementation there is also a raw mode available.
The driver implements the following netdev ops:
send, recv, init, isr, get, set (basic), plus a stub confirm_send.
It also supports the following netopt options:
DEVICE_TYPE, IS_WIRED, ADDR_LEN (+ ADDRESS when in Ethernet mode), MAX_PDU_SIZE, STATE, and INTEGRITY_CHECK (disabled).
This is not a complete implementation — it is just a starting point. Real PHY functionality such as modulation, timing, and FEC/CRC is assumed to be handled by the optical hardware itself. The main work remaining will be for someone who actually has such laser devices to test, refine, and integrate this with the rest of RIOT. My hope is that this code provides a foundation that developers with the right hardware can use to bring optical frequency communication into RIOT.