In this lecture, we will explain what to actually program. We show this by looking at the code a bit and telling more detailed instructions about what to program. Let's go back to where's your list to do and the edge detection algorithm. Open the provided code in canny.c from the coursework page. The given c code detects the edges on an input image in the bitmap format. More details about the algorithm is available in another lecture in this course and its wiki page. So open canny.c, and there we get to the function, canny edge detection. This function calls the actual mechanism to detect the edges. It takes the argument in bitmap data where you must properly read the input file and forward the bitmap to its function. Inside function, we can see the arguments as the bitmap, it's information header, and some control variables to the function. The control variables determines the thresholds for detecting an edge, and the default values are 20, 80, and 1.0. You can experiment with these values to get an accurate image. If we scroll down in this function, we get into return value of the function. This is actually the filtered image frame from the data type pixel_t pointer, and this frame is what you need to transmit to the encryption function. Using the provided code, you need to create all the FreeRTOS tasks. You decide that is necessary for making the system modular enough. Demonstrate that the edge detection works by outputting the featured frame to a file and convert this file back into a bitmap image. Demonstrate that this algorithm is fast enough to provide a 25-frames-per-second performance. Using the provided encryption code, you need to create all the FreeRTOS tasks. You decide it is necessary for making the system modular enough. Demonstrate that the algorithm works by encrypting and decrypting some data. Create a proper communication channel between the edge detection task and the encryption task. Demonstrate that this algorithm is fast enough to provide a real time encryption of 25 frames per second as well. And finally, you need to implement the web connectivity. First, you need a TCP server on a separate platform. For example, you can use your laptop as a separate server, or you can use another machine you have available. Now, use your favorite language to implement the TCP server on selected machine. The server can be made very simple, but it should have the capability to read the TCP connection and install the incoming frame data. To stream the data, you need a TCP client in FreeRTOS. This TCP client should receive the encrypted frame from the encryption task and stream it using the TCP connection. Then you stream the encrypted data from your FreeRTOS system to your TCP server, and you decrypt the incoming data to verify that the frame is correctly transmitted. The function FreeRTOS_socket is available in FreeRTOS API. This is the mechanism you need to transmit the data using a TCP connection. Accordingly, you must set up the IP address of the targeted server as well as target port and some other configuration parameters. To get this all right, please check the FreeRTOS API for creating it for socket. So to set up the streaming, you must configure the FreeRTOS to use network sockets by studying FreeRTOS API as mentioned. Implement the TCP client in FreeRTOS. Implement the TCP server on the PC in any way you want. Stream the data frame from FreeRTOS to the PC. And finally, verify that transmitted frames are correct. For more details about the tools and frameworks, please check out the documentation and the provided API. Also when trouble hits you, Google and CourseForum are usually your friend. Would you like a proper challenge? Good. So let's get started.