Listing 1: Watchdog_Manager public member function prototype static void Initialize (Milliseconds period, Ping_HW_Watchdog_Function service_HW_watchdog, Save_Reset_Code_Function save_reset_code, Time_Function current_time, Delay_Function delay); // Called at system init, // before Watchdog_Manager::Run. static void Terminate (Unsigned_32 reset_code); // Called by asynchronous reset events. // Will inhibit service of the watchdog // thereby inducing a reset. static void Run (void); // Function that executes every Period // msecs checking the registration list // of synchronous tasks. Will induce a // reset if any of the tasks fail to // report an iteration within itıs // ³registered² period or if a // Terminate is requested. // NOTE: Intended to be called from a // thread or task, sole purpose is to // service the watchdog, i.e. // no ³return² from this function! Listing 2: Watchdog_Entry public member function prototypes. void Register (Unsigned_32 reset_code, Milliseconds period); //used by synchronous tasks to register //their timeout periods, once registered //a task must report within the period //to prevent an induced reset. void Ping (void); //used to indicate completion of a syn //chronous task iteration, MUST be //called every period after //registration.