research application on sending data to headend

Dependencies:   DataStore JobScheduler NetworkServices W5500Interface nanopb protocol

See "main.cpp" documentation on "API Documentation" tab for details about application.

source/main.cpp

Committer:
sgnezdov
Date:
2017-07-13
Revision:
1:eebe442fc126
Parent:
0:2c57ed6943f7
Child:
2:661c545d718e

File content as of revision 1:eebe442fc126:

#include "mbed.h"

#include "mbed-trace/mbed_trace.h"
#define TRACE_GROUP  "main"

#include "scheduler.h"
#include "schedules.h"
#include "jobService.h"
#include "jobTestPrint.h"

 // These are necessary only if thread safety is needed
static Mutex TracingLock;
static void tracingWait()
{
    TracingLock.lock();
}
static void tracingRelease()
{
    TracingLock.unlock();
}

int main()
{
    printf("\n==Borsch==\n");
    
    /* 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
    
    tr_info("**Started**");    //-> "[INFO][main]: this is an info msg"    
    
    JobScheduler::JobService js;   
    JobScheduler::Scheduler scheduler(&js);
   
    JobTestPrint jtp;
    js.Register(1, JobTestPrint::RunAdapter, &jtp);

    scheduler.Start();
    
    // inject test case
    time_t nowSecs = time(NULL);
    JobScheduler::Response<JobScheduler::JobID> res =
        scheduler.JobAdd(1, new JobScheduler::RunOnceSchedule(nowSecs + 2), NULL);
    
    // block forever unless there is a job that calls scheduler.Stop()
    scheduler.WaitToStop();   
    
    // indicate clean app termination
    tr_info("**Finished**");    //-> "[INFO][main]: this is an info msg"    
    exit(0);
}