Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: DataStore JobScheduler NetworkServices W5500Interface nanopb protocol
Diff: source/jobSchedulesUpload.cpp
- Revision:
- 14:65d69aed6540
- Parent:
- 13:0fdbc14c33e7
- Child:
- 15:f83485cc5a2c
--- a/source/jobSchedulesUpload.cpp Thu Aug 03 00:07:50 2017 +0000 +++ b/source/jobSchedulesUpload.cpp Thu Aug 03 18:15:49 2017 +0000 @@ -17,7 +17,9 @@ // return true; //} -bool fillScheduleData(protocol_Job_ScheduleData_t& pbSchedData, JobScheduler::ISchedule* schedule) { +bool fillScheduleData(protocol_Job_ScheduleData_t& pbSchedData, JobScheduler::Appointment& apt) { + JobScheduler::Job* job = apt.GetJob(); + JobScheduler::ISchedule* schedule = job->GetSchedule(); int schedType = schedule->ScheduleType(); switch (schedType) { case 1: { @@ -26,12 +28,16 @@ JobScheduler::RunOnceSchedule* s = static_cast<JobScheduler::RunOnceSchedule*>(schedule); protocol_RunOnceSchedule pbSched; pbSched.AtUnixSec = (uint32_t)s->AtTime(); - - tr_debug("sizeof(pbSchedData.bytes): %d, AtUnixSec: %d", sizeof(pbSchedData.bytes), pbSched.AtUnixSec); + // Time should've been pushed to Appointment structure in all cases. + if (pbSched.AtUnixSec != 0) { + tr_warn("Run once has not be assigned to appointment yet. AtUnixSec: %d", pbSched.AtUnixSec); + } else { + pbSched.AtUnixSec = (uint32_t)apt.GetTime(); + } pb_ostream_t stream = pb_ostream_from_buffer(pbSchedData.bytes, sizeof(pbSchedData.bytes)); pb_encode(&stream, protocol_RunOnceSchedule_fields, &pbSched); pbSchedData.size = stream.bytes_written; - tr_debug("bytes written: %d", stream.bytes_written); + //tr_debug("sizeof(pbSchedData.bytes): %d, AtUnixSec: %d, bytes written: %d", sizeof(pbSchedData.bytes), pbSched.AtUnixSec, stream.bytes_written); return true; } case 2: { @@ -55,26 +61,27 @@ strcpy(pbJobs.sn, this->_conf.SerialNumber()); { - LinkedList<JobScheduler::Job> jobs; - this->_scheduler.JobList(jobs); - node<JobScheduler::Job>* jn = jobs.pop(1); + LinkedList<JobScheduler::Appointment> apts; + this->_scheduler.AppointmentList(apts); + node<JobScheduler::Appointment>* aptn = apts.pop(1); int idx = 0; - while (jn != NULL) { - JobScheduler::Job* job = jn->data; + while (aptn != NULL) { + JobScheduler::Appointment* apt = aptn->data; + JobScheduler::Job* job = apt->GetJob(); tr_debug("adding job ID: %d, type: %d\n", job->GetID(), job->GetTypeID()); pbJobs.items[idx].ID = job->GetID(); pbJobs.items[idx].TypeID = job->GetTypeID(); pbJobs.items[idx].ScheduleTypeID = static_cast<protocol_ScheduleType>(job->GetSchedule()->ScheduleType()); // pbJobs.items[idx].ScheduleData = - if (!fillScheduleData(pbJobs.items[idx].ScheduleData, job->GetSchedule())) { + if (!fillScheduleData(pbJobs.items[idx].ScheduleData, *apt)) { tr_error("job error: failed to fill schedule"); return; } tr_debug("schedule data size: %d", pbJobs.items[idx].ScheduleData.size); // pbJobs.items[idx].Data = - jobs.remove(1); - jn = jobs.pop(1); + apts.remove(1); + aptn = apts.pop(1); idx++; } }