Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
patrick_duc
Date:
Tue Sep 04 13:34:36 2018 +0000
Revision:
21:8524d815c587
Parent:
20:b0281e8a375a
Child:
41:5a436163dddf
Ajout de la fonctionnalit? de d?termination si la valeur acquise sur un capteur doit ?tre envoy?e ? la gateway.; Ajout d'une classe Value qui encapsule les valeurs g?n?riques (pr?c?demment GENERIC_VALUE).

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