job scheduler works with run once and run periodic schedules. Stop logic is not fully thought through.

Dependencies:   LinkedList

Dependents:   JobSchedulerDemo Borsch

Revision:
17:3b565ccd291b
Parent:
16:f61b62b119dd
Child:
18:8be206ad1eb4
--- a/scheduler.cpp	Thu Aug 03 00:00:13 2017 +0000
+++ b/scheduler.cpp	Thu Aug 03 18:15:21 2017 +0000
@@ -31,8 +31,8 @@
     };
     
     struct JobListReq: Action {
-        LinkedList<Job>& _jobsToFill;
-        JobListReq(LinkedList<Job>& jobs) : Action(JobListAT), _jobsToFill(jobs) {}
+        LinkedList<Appointment>& _jobsToFill;
+        JobListReq(LinkedList<Appointment>& jobs) : Action(JobListAT), _jobsToFill(jobs) {}
     };
                
     Scheduler::Scheduler(JobService *jobService) 
@@ -114,8 +114,8 @@
         tr_error("JobRemove is not implemented");
     }
     
-    void Scheduler::JobList(LinkedList<Job>& jobs) {
-        JobListReq req(jobs);
+    void Scheduler::AppointmentList(LinkedList<Appointment>& apts) {
+        JobListReq req(apts);
         _updates.put(&req);
         osEvent evt = req.resQueue.get();
         if (evt.status != osEventMessage) {
@@ -189,9 +189,9 @@
                 int loc = 1;
                 node<Appointment>* n = _timeline.pop(loc);
                 while (n != NULL) {
-                    Job* job = n->data->GetJob();
-                    tr_debug("[process] adding job ID %d to list", job->GetID());
-                    req->_jobsToFill.append(job);
+                    Appointment* apt = n->data;
+                    tr_debug("[process] adding appointment with job ID %d to list", apt->GetJob()->GetID());
+                    req->_jobsToFill.append(apt);
                     ++loc;
                     n = _timeline.pop(loc);
                 }