The current μC/OS-III is task-centric instead of data oriented. Design and implement a datacentric
programming interface, where users don't need to know how to create and execute
tasks on RTOS (a layer of abstraction). Users only provide metadata (information) of their
data, such as data source, data type (and range), data format, data arrival rate (or device
sampling rate) ... and some functions, such as data pre-processing, post-processing and data
analysis and operations. Your interface/lib will create periodic tasks to process user data.
Define data structures for the meta-data and callbacks, and implement functions to
connect/disconnect input/output data streams (which creates and manages the
execution of tasks to process user data).
By using your data-centric
programming interface solve the below tasks:
Task 1 (highest priority) simulates processing of geo-location data. It generates random
(x,y) coordinates and uses the Euclidean distance and period to calculate velocity as the
Task 2 (medium priority) simulates data processing for a thermometer sensor. It generates
random temperature readings and calculates the average, maximum and minimum
temperatures as outputs.
Task 3 (lowest priority) simulates a traffic monitoring system. Each time a random value
representing vehicle count is generated. Task 3 calculates the accumulated vehicle number
(output) and clears the number for every 20 readings.
a.) Create the three periodic tasks. They generate random sensor readings in memory.
Simulate their execution and measure the average response time of each task. Also record the
arrival times of jobs of the three tasks and check if there is any pattern.