1 point - the communication protocol is non trivial - it has more then one character and ends with \r\n characters
1 point - the Nucleo stores the incoming communication in the buffer and process the buffer
1 point - the communication protocol is capable to control LED
1 point - the communication protocol is capable to read state of the button
1 point - the PC program initializes the serial communication interface
1 point - the PC program is capable to get one command line parameter which is the path to the USB interface
1 point - there is no memory leak in the program - e.g. all the malloc has their free
1 point - the PC program is capable to send messages to Nucleo
1 point - the PC program is receiving the data into the buffer which is subsequently processed
1 point - the PC program is capable to send a custom command to the Nucleo and in case the Nucleo will not recognise the commnad it will reply with “Wrong command” answer and this reply will be displayed by PC application.