For this assignment we will be expanding on our RPi Morse Code trigger that was developed during Assignment 3 - Morse Code Blinky. In Assignment 3, we used a fixed string as the message for our driver. In this assignment we will be adding the ability for the user to change the message dynamically at runtime.
The equipment required for this assignment is the same as was required for Assignment 3, so use that if you need a reference.
For this assignment, we will be expanding our morse trigger implementation to support dynamic userprovided messages. Your final trigger implementation must do the following:
- Be selectable/deselectable via the SysFS interface as done in Assignment 3.
- Register a new entry in SysFS that allows the user to change the speed of the transmissions. This entry should be added/removed when your trigger is selected/deselected.
- Create a character device in /dev that takes characters written to the device and “transmits” them by blinking the LED in the correct pattern.
- Add a mechanism that allows the user to switch between “one-off” mode and “repeat” mode. The exact implementation is up to you, but one-off mode should transmit characters written to the /dev device only one time. Repeat mode should take the input string and continuously transmit the message until a new message is written or cleared. Again, how you implement this is up to you; possible solutions might include additional SysFS entries, or the ability to handle special “escaped” command sequences in the character device itself.
- It is not safe to assume that there will be an upper limit on the message sizes provided by the user. Your code should be robust enough to handle large messages without causing a buffer overflow.
- You will likely need to buffer the input data at least once. This is probably a good place to use one (or more) kfifos.
- Don’t assume that users will only type in one case (lower/upper). The result of the user inputting: “SoS”, “sOs”, “sos”, “SOS”, etc. should all be the same.
You are also required to do the following write-up including:
- The design you used to implement the Morse code trigger driver
- Your version control log.
- A work log, detailing what you did when. Ideally, this is the same as the above.
- Answer the following questions in sufficient detail:
- What do you think the main point of this assignment is?
- How did your team approach the problem? Design decisions, algorithm, etc.
- How did you ensure your solution was correct? Testing details, for instance.
- What did you learn?
- How should the TA evaluate your work? Provide detailed steps to prove correctness.
Make sure your submission is a tarball labelled CS444_project4_#.tar.bz2 and includes the following:
- A linux patch file containing your solution. The patch should be based on the v4.14.y tag.
- The write-up in LaTeX format.
- A makefile for the LaTeX file.