Sergei G
/
JobSchedulerDemo
run once and run periodic example work
Revision 8:8a65353ec8f3, committed 2017-07-14
- Comitter:
- sgnezdov
- Date:
- Fri Jul 14 00:01:13 2017 +0000
- Parent:
- 7:3513a1ae8fb7
- Child:
- 9:27e0a0dd98d1
- Commit message:
- added code to locate jobService.GetJob() bug
Changed in this revision
--- a/JobScheduler.lib Tue Jul 11 23:15:38 2017 +0000 +++ b/JobScheduler.lib Fri Jul 14 00:01:13 2017 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/sgnezdov/code/JobScheduler/#4ead1f4ab741 +https://developer.mbed.org/users/sgnezdov/code/JobScheduler/#df18df016d7e
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed_app.json Fri Jul 14 00:01:13 2017 +0000 @@ -0,0 +1,10 @@ +{ + "config": { + }, + "target_overrides": { + "*": { + "target.features_add": ["COMMON_PAL"], + "mbed-trace.enable": 1 + } + } +} \ No newline at end of file
--- a/source/main.cpp Tue Jul 11 23:15:38 2017 +0000 +++ b/source/main.cpp Fri Jul 14 00:01:13 2017 +0000 @@ -4,23 +4,73 @@ #include "jobService.h" #include "schedules.h" -void jobA() +#include "mbed-trace/mbed_trace.h" +#define TRACE_GROUP "main" + + // These are necessary only if thread safety is needed +static Mutex TracingLock; +static void tracingWait() +{ + TracingLock.lock(); +} +static void tracingRelease() +{ + TracingLock.unlock(); +} + +void jobA(void *context) { printf("Job A\n"); } -void jobB() +void jobB(void *context) { printf("Job B\n"); } void runScheduler() { + /* Setup tracing */ + mbed_trace_mutex_wait_function_set( tracingWait ); // only if thread safety is needed + mbed_trace_mutex_release_function_set( tracingRelease ); // only if thread safety is needed + mbed_trace_init(); // initialize the trace library + JobScheduler::JobService js; JobScheduler::Scheduler scheduler(&js); - js.Register(1, jobA); - js.Register(2, jobB); + JobScheduler::Error err; + err = js.Register(3, NULL, NULL); + if (err) { + printf("Failed to register job type 1.\n"); + exit(1); + } + err = js.Register(1, jobA, NULL); + if (err) { + printf("Failed to register job type 1.\n"); + exit(1); + } + err = js.Register(2, jobB, NULL); + if (err) { + printf("Failed to register job type 2.\n"); + exit(1); + } + + JobScheduler::JobType *jt; + jt = js.GetJob(1); + if (jt == NULL) { + printf("Failed to find job type 1.\n"); + exit(1); + } + jt = js.GetJob(2); + if (jt == NULL) { + printf("Failed to find job type 2.\n"); + exit(1); + } + jt = js.GetJob(3); + if (jt == NULL) { + printf("Failed to find job type 2.\n"); + exit(1); + } scheduler.Start();