Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
lo
Date:
Tue Aug 28 14:47:32 2018 +0000
Revision:
15:9c1c4368670f
Parent:
12:e9ec35413787
Child:
20:b0281e8a375a
changes in main

Who changed what in which revision?

UserRevisionLine numberNew contents of line
FCH_31 8:cd489b7c49a0 1 /*
FCH_31 8:cd489b7c49a0 2 * MISNet
FCH_31 8:cd489b7c49a0 3 *
FCH_31 8:cd489b7c49a0 4 * Main TERMINAL VERSION HALF DUPLEX
FCH_31 8:cd489b7c49a0 5 *
FCH_31 8:cd489b7c49a0 6 * Created on: August 17, 2018 Author: Francis CHATAIN
FCH_31 8:cd489b7c49a0 7 *
FCH_31 8:cd489b7c49a0 8 */
FCH_31 8:cd489b7c49a0 9
GregCr 1:22e02d1cfbca 10 #include "mbed.h"
GregCr 1:22e02d1cfbca 11 #include "sx1280-hal.h"
FCH_31 3:3adb454ba1d2 12 #include "stdio.h"
FCH_31 8:cd489b7c49a0 13 #include <string>
GregCr 1:22e02d1cfbca 14
FCH_31 8:cd489b7c49a0 15 #include "main.h"
FCH_31 8:cd489b7c49a0 16 #include "Application.h"
FCH_31 7:1d890cab51bd 17
FCH_31 7:1d890cab51bd 18
FCH_31 8:cd489b7c49a0 19 using namespace std;
GregCr 1:22e02d1cfbca 20
FCH_31 8:cd489b7c49a0 21 // INSTANCE of APPLICATION OBJECT
GregCr 1:22e02d1cfbca 22
FCH_31 8:cd489b7c49a0 23 Application app ; // Core of application start also
FCH_31 2:57f098de07c7 24
FCH_31 2:57f098de07c7 25
FCH_31 8:cd489b7c49a0 26 //******************************************************************************
lo 15:9c1c4368670f 27 // Timers
FCH_31 8:cd489b7c49a0 28 //******************************************************************************
FCH_31 8:cd489b7c49a0 29 uint16_t TimerPayload, TimerGoodhealth, TimerSynchro, TimerListening = 0L ;
lo 15:9c1c4368670f 30 volatile uint32_t listenFlag=0, syncFlag=0, goodHealthFlag=0, payloadFlag=0, irqFlag=0;
lo 15:9c1c4368670f 31
FCH_31 8:cd489b7c49a0 32 LowPowerTicker wakeUpPayload ; // normal wake up
FCH_31 8:cd489b7c49a0 33 void wakeUpPayloadCallback (void) ;
FCH_31 7:1d890cab51bd 34
FCH_31 8:cd489b7c49a0 35 LowPowerTicker wakeUpGoodhealth ; // GoodHealth wake up
FCH_31 8:cd489b7c49a0 36 void wakeUpGoodhealthCallback (void) ;
FCH_31 7:1d890cab51bd 37
FCH_31 8:cd489b7c49a0 38 LowPowerTicker wakeUpSynchro ; // Synchro wake up (Mode B)
FCH_31 8:cd489b7c49a0 39 void wakeUpSynchroCallback (void) ;
FCH_31 7:1d890cab51bd 40
FCH_31 8:cd489b7c49a0 41 LowPowerTicker wakeUpListening ; // Listening wake up (Mode C)
FCH_31 8:cd489b7c49a0 42 void wakeUpListeningCallback (void) ;
FCH_31 7:1d890cab51bd 43
FCH_31 8:cd489b7c49a0 44 void setup () ; // Init Terminal
FCH_31 8:cd489b7c49a0 45 void loop () ; // Main Loop
FCH_31 10:1b37e3b41947 46 void wakeUpIrqTacSwitch () ; // IRQ Tac Switch
FCH_31 7:1d890cab51bd 47
FCH_31 7:1d890cab51bd 48
FCH_31 8:cd489b7c49a0 49 // ============================================================================ Main
FCH_31 8:cd489b7c49a0 50 int main( ) { setup () ; loop () ; }
FCH_31 8:cd489b7c49a0 51 // ============================================================================
FCH_31 7:1d890cab51bd 52
FCH_31 7:1d890cab51bd 53
FCH_31 8:cd489b7c49a0 54 // ============================================================================ Setup
FCH_31 2:57f098de07c7 55 void setup () {
GregCr 1:22e02d1cfbca 56
FCH_31 8:cd489b7c49a0 57 app.start (); // Start Application
FCH_31 8:cd489b7c49a0 58
FCH_31 8:cd489b7c49a0 59 // -------------------------------------------------- Scheduler by IRQ or watch dog
FCH_31 8:cd489b7c49a0 60
FCH_31 8:cd489b7c49a0 61 app.getScheduling (TimerPayload, TimerGoodhealth, TimerSynchro, TimerListening) ; // What mode ?
FCH_31 8:cd489b7c49a0 62
FCH_31 10:1b37e3b41947 63 wakeUpPayload.attach (&wakeUpPayloadCallback, (float)TimerPayload ) ; // Mode A + All Mode
FCH_31 10:1b37e3b41947 64 wakeUpGoodhealth.attach (&wakeUpGoodhealthCallback, (float)TimerGoodhealth) ; // Mode A + All Mode
FCH_31 8:cd489b7c49a0 65
FCH_31 8:cd489b7c49a0 66 if ( TimerSynchro !=0)
FCH_31 10:1b37e3b41947 67 wakeUpSynchro.attach (&wakeUpSynchroCallback, (float)TimerSynchro) ; // Mode B
FCH_31 8:cd489b7c49a0 68
FCH_31 8:cd489b7c49a0 69 if ( TimerSynchro !=0)
FCH_31 10:1b37e3b41947 70 wakeUpListening.attach (&wakeUpListeningCallback,(float)TimerListening) ; // Mode C
FCH_31 10:1b37e3b41947 71
FCH_31 10:1b37e3b41947 72
FCH_31 10:1b37e3b41947 73 // TODO : Assicier l'IRQ du TAC switch au handler d'exception wakeUpIrqTacSwitch
FCH_31 10:1b37e3b41947 74
FCH_31 10:1b37e3b41947 75
FCH_31 8:cd489b7c49a0 76 }
FCH_31 8:cd489b7c49a0 77 //==============================================================================
FCH_31 4:41a92fbf702a 78
FCH_31 7:1d890cab51bd 79
FCH_31 8:cd489b7c49a0 80 // ============================================================================= LOOP
FCH_31 8:cd489b7c49a0 81 void loop () {
FCH_31 8:cd489b7c49a0 82 while(1) {
lo 15:9c1c4368670f 83 if(listenFlag){ // Listen radio
lo 15:9c1c4368670f 84 listenFlag=0;
lo 15:9c1c4368670f 85 app.manageListening();
lo 15:9c1c4368670f 86 printf ("*** MAIN *** wakeUpListeningCallback \r\n");
lo 15:9c1c4368670f 87 }
lo 15:9c1c4368670f 88 if(syncFlag){ // Prepare response
lo 15:9c1c4368670f 89 syncFlag=0;
lo 15:9c1c4368670f 90 app.manageSynchro();
lo 15:9c1c4368670f 91 printf ("*** MAIN *** wakeUpSynchroCallback \r\n");
lo 15:9c1c4368670f 92 }
lo 15:9c1c4368670f 93 if(goodHealthFlag){ // Prepare response
lo 15:9c1c4368670f 94 goodHealthFlag=0;
lo 15:9c1c4368670f 95 app.manageGoodhealth();
lo 15:9c1c4368670f 96 printf ("*** MAIN *** wakeUpGoodhealthCallback r\n");
lo 15:9c1c4368670f 97 }
lo 15:9c1c4368670f 98 if(payloadFlag){ // read Sensors
lo 15:9c1c4368670f 99 payloadFlag=0;
lo 15:9c1c4368670f 100 app.manageSensors();
lo 15:9c1c4368670f 101 printf ("*** MAIN *** wakeUpPayloadCallback \r\n");
lo 15:9c1c4368670f 102 }
lo 15:9c1c4368670f 103 if(irqFlag){ // handle IRQ actions
lo 15:9c1c4368670f 104 irqFlag=0;
lo 15:9c1c4368670f 105 app.manageConfiguration();
lo 15:9c1c4368670f 106 printf ("*** MAIN *** wakeUpIrqTacSwitch \r\n");
lo 15:9c1c4368670f 107 }
lo 15:9c1c4368670f 108 // deepsleep (); // breaks UART
FCH_31 12:e9ec35413787 109 //sleep () ;
FCH_31 12:e9ec35413787 110 wait(1);
FCH_31 8:cd489b7c49a0 111 }
FCH_31 4:41a92fbf702a 112 }
FCH_31 8:cd489b7c49a0 113 // No action : all event by IRQ
FCH_31 8:cd489b7c49a0 114 //==============================================================================
FCH_31 7:1d890cab51bd 115
FCH_31 7:1d890cab51bd 116
FCH_31 2:57f098de07c7 117
FCH_31 10:1b37e3b41947 118
FCH_31 10:1b37e3b41947 119 // IRQ du tac switch TODO
FCH_31 10:1b37e3b41947 120 // ============================================================ IRQ TAC SWITCH
FCH_31 10:1b37e3b41947 121 void wakeUpIrqTacSwitch (void) {
lo 15:9c1c4368670f 122 //printf ("*** MAIN *** wakeUpIrqTacSwitch \r\n");
lo 15:9c1c4368670f 123 //app.manageConfiguration () ; // IRQ
lo 15:9c1c4368670f 124 irqFlag=1;
FCH_31 10:1b37e3b41947 125 }
FCH_31 10:1b37e3b41947 126
FCH_31 10:1b37e3b41947 127
FCH_31 8:cd489b7c49a0 128 // ============================================================ WATCH DOG PAYLOAD
FCH_31 8:cd489b7c49a0 129 void wakeUpPayloadCallback (void) {
lo 15:9c1c4368670f 130 //printf ("*** MAIN *** wakeUpPayloadCallback \r\n");
lo 15:9c1c4368670f 131 //app.manageSensors () ; // read Sensors
lo 15:9c1c4368670f 132 payloadFlag=1;
FCH_31 7:1d890cab51bd 133 }
FCH_31 10:1b37e3b41947 134
FCH_31 8:cd489b7c49a0 135 // ============================================================ WATCH DOG GOODHEALTH
FCH_31 8:cd489b7c49a0 136 void wakeUpGoodhealthCallback (void) {
lo 15:9c1c4368670f 137 //printf ("*** MAIN *** wakeUpGoodhealthCallback ========================== \r\n");
lo 15:9c1c4368670f 138 //app.manageGoodhealth () ; // Prepare response
lo 15:9c1c4368670f 139 goodHealthFlag=1;
FCH_31 7:1d890cab51bd 140 }
FCH_31 10:1b37e3b41947 141
FCH_31 8:cd489b7c49a0 142 // ============================================================ WATCH DOG SYNCHRO
FCH_31 8:cd489b7c49a0 143 void wakeUpSynchroCallback (void) {
lo 15:9c1c4368670f 144 //printf ("*** MAIN *** wakeUpSynchroCallback \r\n");
lo 15:9c1c4368670f 145 //app.manageSynchro () ; // Prepare response
lo 15:9c1c4368670f 146 syncFlag=1;
FCH_31 8:cd489b7c49a0 147 }
FCH_31 10:1b37e3b41947 148
FCH_31 8:cd489b7c49a0 149 // ============================================================ WATCH DOG LISTENING
FCH_31 8:cd489b7c49a0 150 void wakeUpListeningCallback (void) {
lo 15:9c1c4368670f 151 //printf ("*** MAIN *** wakeUpListeningCallback \r\n");
lo 15:9c1c4368670f 152 //app.manageListening () ; // Ecoute radio
lo 15:9c1c4368670f 153 listenFlag=1;
FCH_31 8:cd489b7c49a0 154 }
FCH_31 10:1b37e3b41947 155
FCH_31 8:cd489b7c49a0 156 //*****************************************************************************
FCH_31 7:1d890cab51bd 157
FCH_31 8:cd489b7c49a0 158
FCH_31 4:41a92fbf702a 159
FCH_31 4:41a92fbf702a 160
FCH_31 4:41a92fbf702a 161