ENSC 351 Assignment 4 Marking Guide Assignment must be done individually or in pairs. Total: [75] Marks [10] Design/Style • Use good style ◦ All modules, files, functions, and variables are named well ◦ All .h files have a comment at the top ◦ All code has excellent indentation (You don’t need to match the course’s style guide, you just need to write beautiful code) • Have a clean modular design: ◦ No externally linked global variables ◦ Functions meant to be used by other modules are externally linked and listed in .h file ◦ Functions not meant to be used by other modules are internally linked ◦ Thread IDs and mutextes are encapsulated inside modules (not available from other modules) ◦ Multiple modules, each with its own .h and .c file. Expected ~5 to ~20 modules (each with a .h/.c file). • Be multi-threaded and threadsafe (no race-cases; use mutexes to protect critical sections) • Use no busy waits (use sleep() or mutexes instead) • Be written in C, or Rust (requires guidance to TAs for compiling and running) • Use a makefile to build your application as described in the assignment. • Possible _40_ point deduction for failing to build per the assignment description. [5] Keyboard input - Able to read in a line of Text - Trim whitespace from end of string - Display # characters and text string to terminal. - Shutdown on pressing enter. [10] Morse Code Generation - Display Morse code representation of the input string [25] LED Flashing by PRU - [20] Flash the LED via the PRU - [5] Able to slow down the flashing by pressing the button. [10] Text output while Flashing - Display to the terminal _ or X as the PRU flashes the LED [15] 8x8 LED Matrix - Display the current dot time and upcoming 7 dot times - Clear display after LED flashing finished. [ 0] Memory Up to a -20 penalty applied for memory errors found with valgrind. - ~3-5 mark deduction per individual memory error - No deduction for memory still reachable at exit. Forward to Dr. Brian if... - Material is suspiciously similar to another submission. - All proven cases of academic dishonesty will be dealt with according to SFU's Academic Honesty policy: http://www.sfu.ca/policies/gazette/student.html