Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

main.cpp

Committer:
FCH_31
Date:
2018-08-22
Revision:
10:1b37e3b41947
Parent:
8:cd489b7c49a0
Child:
12:e9ec35413787

File content as of revision 10:1b37e3b41947:

/*
 *  MISNet   
 *
 *  Main   TERMINAL VERSION HALF DUPLEX 
 *
 *  Created on: August 17, 2018    Author: Francis CHATAIN
 *
 */
 
#include "mbed.h"
#include "sx1280-hal.h"
#include "stdio.h"
#include <string>

#include "main.h"
#include "Application.h"


using namespace std;

//  INSTANCE of APPLICATION OBJECT 

Application     app                             ;       // Core of application start also 


//******************************************************************************
//     Watch Dog functionnality
//******************************************************************************
uint16_t TimerPayload, TimerGoodhealth, TimerSynchro, TimerListening = 0L ;

LowPowerTicker  wakeUpPayload                   ;       // normal wake up 
void wakeUpPayloadCallback      (void)          ; 

LowPowerTicker  wakeUpGoodhealth                ;       // GoodHealth wake up 
void wakeUpGoodhealthCallback   (void)          ; 

LowPowerTicker  wakeUpSynchro                   ;       // Synchro wake up  (Mode B)
void wakeUpSynchroCallback      (void)          ; 

LowPowerTicker  wakeUpListening                 ;       // Listening wake up (Mode C)
void wakeUpListeningCallback    (void)          ; 

void            setup ()                        ;       // Init Terminal 
void            loop  ()                        ;       // Main Loop 
void            wakeUpIrqTacSwitch ()           ;       // IRQ Tac Switch


// ============================================================================ Main
int main( ) { setup () ; loop () ; }
// ============================================================================


// ============================================================================ Setup
void setup () {

    app.start    ();         // Start Application 
    
    // -------------------------------------------------- Scheduler  by IRQ or watch dog 
    
    app.getScheduling          (TimerPayload, TimerGoodhealth, TimerSynchro, TimerListening) ;   // What mode ? 
    
    wakeUpPayload.attach       (&wakeUpPayloadCallback,     (float)TimerPayload )   ;       // Mode A   +  All Mode   
    wakeUpGoodhealth.attach    (&wakeUpGoodhealthCallback,  (float)TimerGoodhealth) ;       // Mode A   +  All Mode 
    
    if ( TimerSynchro !=0) 
        wakeUpSynchro.attach   (&wakeUpSynchroCallback,     (float)TimerSynchro)    ;       // Mode B
        
    if ( TimerSynchro !=0) 
        wakeUpListening.attach (&wakeUpListeningCallback,(float)TimerListening)     ;       // Mode C    
       
        
     // TODO : Assicier l'IRQ du TAC switch au handler d'exception    wakeUpIrqTacSwitch
     
           
}
//==============================================================================


// ============================================================================= LOOP  
void loop () { 
    while(1) { 
        // deepsleep ();     // perd la conf uart 
        sleep () ; 
    } 
}
// No action : all event by IRQ 
//==============================================================================




// IRQ du tac switch    TODO 
// ============================================================ IRQ TAC SWITCH
void wakeUpIrqTacSwitch (void) {
    printf ("*** MAIN ***  wakeUpIrqTacSwitch   \r\n");  
    app.manageConfiguration         () ;   // IRQ   
}


// ============================================================ WATCH DOG PAYLOAD 
void wakeUpPayloadCallback (void) {
    printf ("*** MAIN ***  wakeUpPayloadCallback   \r\n");  
    app.manageSensors         () ;   // read Sensors   
}

// ============================================================ WATCH DOG GOODHEALTH
void wakeUpGoodhealthCallback (void) {
    printf ("*** MAIN ***  wakeUpGoodhealthCallback  ==========================   \r\n");
    app.manageGoodhealth () ;   // Prepare response  
}

// ============================================================ WATCH DOG SYNCHRO
void wakeUpSynchroCallback (void) {
    printf ("*** MAIN ***  wakeUpSynchroCallback   \r\n");
    app.manageSynchro () ;   // Prepare response  
}

// ============================================================ WATCH DOG LISTENING
void wakeUpListeningCallback (void) {
    printf ("*** MAIN ***  wakeUpListeningCallback   \r\n");
    app.manageListening () ;   // Ecoute radio   
}

//*****************************************************************************