Hi Nick,

Below is a summary of the parts I have finished and attempted.

Y = Parts finished
P = Partially working but not finished
N = Not finished

________________________________________________________________________________
Task    Marks   Status
----    -----   ----------------------------------------------------------------
1.      (10)    Y - Complete

2.      ( 4)    Y - Complete

3.      ( 4)    N - Not attempted (time constraint)

4.      ( 4)    Y - Complete

5.      ( 0)    Y - Exception is the LCD driver 

6.      ( 4)    Y - No spinning, deadlocks or other nasties

7.      (10)    P - Partial attempted (time constraint). I have written the 
                    following functions to be used with PuTTY but could not 
                    implment string scaning from terminal. Working Functions are
                    
                    READ ALL
                    DELETE ALL
                    READ N - from 1 to 120, if you read record 0 it will return 
                             latest sample
                    DELETE n
                    SETDATE dd mm yyyy
                    SETTIME hh mm ss
                    SETT t
                    STATE x
                    
                    In the main.cpp, at the bottom of the main function there is
                    a comented block of code titled "DEMO CODE". If you uncoment
                    and recompile than the functions SETT t, STATE x, READ ALL, 
                    DELETE n and DELETE ALL will be demonstrated. The other 
                    functions are demonstrated as part of normal routine. 

8.      ( 0)    Y - All serial communication to PuTTY is in separate threads to 
                    the sampling

9.      (10)    P - Attempted, Code present and working in a separate project. 
                    However there is an issue I could not diagnose. I suspect it
                    is with MBED TCP server resetting
                    
10.     (10)    Y - Care taken to eliminate deadlocks/starvation. Special care 
                    taken with Mutexes. WDT present and linked to sampling 
                    interval.

11.     (10)    P - Attempted, Code present and encapsulated into class, however
                    an issue with initialising the LCD display prevents it from 
                    working.

12.     ( 4)    Y - The code is buildt on idea that every major module that 
                    interacts with another (e.g. sampling data then storing 
                    data) is object based and encapsulated in class if 
                    necessary. They pass data to each other if necessary. 
                    ROS operates on simillar principl to what I have achieved 
                    with my code.

13.     (10)    Y - I tried to make it neat and clear to understand. If there is
                    something I have not explained well I will try to elaborate
                    in the demo if you wish.

14.     (10)    N - Not attempted (time constraint)

15.     (10)    Y - Works and is not hot swapable. In the very rare event of a 
                    IRQ queue overflow the WDT should reset system
________________________________________________________________________________

As you can see I have not been able to finish all the tasks I have attempted due
to lack of time as a result of a chain of events which i would like to tell
you in person. 
However I have tried to take care to write the code in a structured manner with 
sence of competency. I have completed the above tasks in about 4 days of time 
that i have had.

________________________________________________________________________________
================================================================================
DEMO:

If you wish to run the demo simply upload the code (The ELEC351 library i wrote
is included or can be found at:
"https://os.mbed.com/users/Luka_Danilovic/code/ELEC351_LIBRARY/").

Insert SD card 
Reset the board untill white LED is fully on
Date and time will automaticly be set to 10.10.18 @ 10:00:00 (Deadline time)
Sampling will default to 15 sec interval
You can uncoment "DEMO CODE" to see functions in action

The IP address of the webpage is 10.0.0.10 (like in the example)
However, please note that I was having issues with connection being reset (I 
suspect after handshake or simillar) so I cannot guarantee this will work.

Samples are saved to the SD card along with date and time they were recorded at.
Hold blue USER_BUTTON untill green LED flashes to unmount the SD card.
N.B SD card is not hot swapable
________________________________________________________________________________
================================================================================