Version FC

Dependencies:   DmTftLibrary eeprom SX1280Lib filesystem mbed

Fork of MSNV2-Terminal_V1-5 by Francis CHATAIN

Committer:
FCH_31
Date:
Mon Oct 22 09:37:50 2018 +0000
Revision:
41:5a436163dddf
Parent:
33:6ae45cba7958
avec radio;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
patrick_duc 20:b0281e8a375a 1 /*
patrick_duc 20:b0281e8a375a 2 * MISNet
patrick_duc 20:b0281e8a375a 3 *
patrick_duc 20:b0281e8a375a 4 * DataBase: Contient les données du terminal
patrick_duc 20:b0281e8a375a 5 *
patrick_duc 20:b0281e8a375a 6 * Created on: August 17, 2018 Author: Francis CHATAIN
patrick_duc 20:b0281e8a375a 7 *
patrick_duc 20:b0281e8a375a 8 */
patrick_duc 20:b0281e8a375a 9
patrick_duc 20:b0281e8a375a 10 #ifndef __DATABASE_HPP__
patrick_duc 20:b0281e8a375a 11 #define __DATABASE_HPP__
patrick_duc 20:b0281e8a375a 12
patrick_duc 20:b0281e8a375a 13 #include "Context.h"
patrick_duc 20:b0281e8a375a 14
patrick_duc 20:b0281e8a375a 15 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 16 #include "mbed.h"
patrick_duc 20:b0281e8a375a 17 #include "sx1280-hal.h"
patrick_duc 20:b0281e8a375a 18 #include <string>
patrick_duc 20:b0281e8a375a 19 #include <list>
patrick_duc 20:b0281e8a375a 20 #endif
patrick_duc 20:b0281e8a375a 21
patrick_duc 20:b0281e8a375a 22 #include "main.h"
patrick_duc 20:b0281e8a375a 23 #include "Service.hpp"
patrick_duc 20:b0281e8a375a 24 #include "Component.hpp"
patrick_duc 20:b0281e8a375a 25 #include "CandidateComponent.hpp"
patrick_duc 20:b0281e8a375a 26 #include "Payload.hpp"
patrick_duc 20:b0281e8a375a 27
patrick_duc 20:b0281e8a375a 28
patrick_duc 20:b0281e8a375a 29 // ======================================= Define
patrick_duc 20:b0281e8a375a 30
patrick_duc 20:b0281e8a375a 31 #define MODE_STO 0x0000 // P2P Smart Tool
patrick_duc 20:b0281e8a375a 32 #define MODE_GEN 0x4000 // P2P Generic
patrick_duc 20:b0281e8a375a 33 #define MODE_IOT 0x8000 // STAR IoT mode
patrick_duc 20:b0281e8a375a 34 #define MODE_BCA 0xC000 // STAR Broacast mode
patrick_duc 20:b0281e8a375a 35
patrick_duc 20:b0281e8a375a 36
patrick_duc 20:b0281e8a375a 37 namespace misnet {
patrick_duc 20:b0281e8a375a 38 class DataBase;
patrick_duc 20:b0281e8a375a 39 }
patrick_duc 20:b0281e8a375a 40
patrick_duc 20:b0281e8a375a 41 // ======================================= Class content
patrick_duc 20:b0281e8a375a 42 class misnet::DataBase
patrick_duc 20:b0281e8a375a 43 {
patrick_duc 33:6ae45cba7958 44 enum TERMINAL_TYPE {
patrick_duc 33:6ae45cba7958 45 SMART_TOOL = 0, // Smart Tool
patrick_duc 33:6ae45cba7958 46 GENERIC = 1, // Generic tool
patrick_duc 33:6ae45cba7958 47 NORMAL_IOT = 2, // Normal IOT (the terminal is attached to a gateway)
patrick_duc 33:6ae45cba7958 48 BROADCAST_IOT = 3 // Broadcast IOT (the terminal is not attached to a gateway)
patrick_duc 33:6ae45cba7958 49 };
patrick_duc 20:b0281e8a375a 50
FCH_31 41:5a436163dddf 51
patrick_duc 20:b0281e8a375a 52 public:
patrick_duc 20:b0281e8a375a 53 DataBase ();
patrick_duc 20:b0281e8a375a 54 ~DataBase ();
patrick_duc 20:b0281e8a375a 55
FCH_31 41:5a436163dddf 56
patrick_duc 20:b0281e8a375a 57 void init () ;
patrick_duc 20:b0281e8a375a 58
patrick_duc 33:6ae45cba7958 59 TERMINAL_TYPE getTerminalType() {
FCH_31 41:5a436163dddf 60 //return this->_terminal_type; // FC to compile
patrick_duc 33:6ae45cba7958 61 }
patrick_duc 33:6ae45cba7958 62
patrick_duc 20:b0281e8a375a 63 short getNbService (Service::DEVICE_TYPE cdt); // return the number of declared channels for the payload
patrick_duc 20:b0281e8a375a 64 Service::DEVICE_TYPE getServiceType (short NumService) ; // Get Service type
patrick_duc 20:b0281e8a375a 65
patrick_duc 20:b0281e8a375a 66
patrick_duc 20:b0281e8a375a 67 void SetSensorState (short channel_rank, Service::STATE sensorState) ; // Set Sensor State (Disable/Enable)
patrick_duc 20:b0281e8a375a 68 Service::STATE GetSensorState (short channel_rank) ; // Get Sensor State (Disable/Enable) know if the device shall requested
patrick_duc 20:b0281e8a375a 69
patrick_duc 20:b0281e8a375a 70 void SetSensorValue (uint8_t value) ; // Set Sensor Value + compute value before storage
patrick_duc 20:b0281e8a375a 71 uint8_t GetSensorMessage (short channel_rank) ; // Get Sensor Message (False si no change no threahold, response formated)
patrick_duc 20:b0281e8a375a 72
patrick_duc 20:b0281e8a375a 73
patrick_duc 20:b0281e8a375a 74 short getNbActuator () ;
patrick_duc 20:b0281e8a375a 75 void SetActuatorState () ;
patrick_duc 20:b0281e8a375a 76 Service::STATE GetActuatorState (short actuator_rank) ;
patrick_duc 20:b0281e8a375a 77
patrick_duc 20:b0281e8a375a 78
patrick_duc 20:b0281e8a375a 79 // =============================================================== Radio Parameter (getter/setter)
patrick_duc 20:b0281e8a375a 80
patrick_duc 20:b0281e8a375a 81
patrick_duc 20:b0281e8a375a 82 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 83 void getRadioParameter ( uint32_t &rfFrequency,
patrick_duc 20:b0281e8a375a 84 RadioLoRaBandwidths_t &loraBw,
patrick_duc 20:b0281e8a375a 85 RadioLoRaSpreadingFactors_t &loraSf ,
patrick_duc 20:b0281e8a375a 86 int8_t &txOutputPower,
patrick_duc 20:b0281e8a375a 87 uint8_t &bufferSizeMax,
patrick_duc 20:b0281e8a375a 88 int16_t &terminal_heartbeat_period,
patrick_duc 20:b0281e8a375a 89 int16_t &payload_heartbeat_period);
patrick_duc 20:b0281e8a375a 90
patrick_duc 20:b0281e8a375a 91 void setRadioParameter ( uint32_t rfFrequency,
patrick_duc 20:b0281e8a375a 92 RadioLoRaBandwidths_t loraBw,
patrick_duc 20:b0281e8a375a 93 RadioLoRaSpreadingFactors_t loraSf ,
patrick_duc 20:b0281e8a375a 94 int8_t txOutputPower,
patrick_duc 20:b0281e8a375a 95 uint8_t ufferSizeMax,
patrick_duc 20:b0281e8a375a 96 int16_t terminal_heartbeat_period,
patrick_duc 20:b0281e8a375a 97 int16_t payload_heartbeat_period);
patrick_duc 20:b0281e8a375a 98 #endif
patrick_duc 20:b0281e8a375a 99
patrick_duc 20:b0281e8a375a 100 void setPayload(Payload* payload) {
patrick_duc 20:b0281e8a375a 101 this->_payload = payload;
patrick_duc 20:b0281e8a375a 102 }
patrick_duc 20:b0281e8a375a 103
patrick_duc 20:b0281e8a375a 104 Payload* getPayload() {
patrick_duc 20:b0281e8a375a 105 return this->_payload;
patrick_duc 20:b0281e8a375a 106 }
patrick_duc 20:b0281e8a375a 107
patrick_duc 20:b0281e8a375a 108 std::list<CandidateComponent*> * getCandidateSensorsList();
patrick_duc 20:b0281e8a375a 109
patrick_duc 20:b0281e8a375a 110
patrick_duc 20:b0281e8a375a 111 // Private variables /methods
patrick_duc 20:b0281e8a375a 112 private:
patrick_duc 20:b0281e8a375a 113 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 114 uint32_t _rf_frequency ; // HzNominal frequency
patrick_duc 20:b0281e8a375a 115 RadioLoRaBandwidths_t _lora_bw ; /* 200; 400; 800; 1600 */
patrick_duc 20:b0281e8a375a 116 RadioLoRaSpreadingFactors_t _lora_sf ; /* SF5; SF6=; SF7; SF8 ; SF9; SF10; SF11 ; SF12 */
patrick_duc 20:b0281e8a375a 117 int8_t _tx_output_power ; /* Output power in dBm [-18..+13] dBm */
patrick_duc 20:b0281e8a375a 118 uint8_t _buffer_size_max ; /* Payload size max */
patrick_duc 20:b0281e8a375a 119 #endif
patrick_duc 20:b0281e8a375a 120 uint16_t _terminal_heartbeat_period; // Terminal heartbeat period
patrick_duc 20:b0281e8a375a 121 uint16_t _payload_heartbeat_period; // Sensors' scan period
patrick_duc 20:b0281e8a375a 122 misnet::Payload* _payload ; // Payload definition
patrick_duc 20:b0281e8a375a 123
patrick_duc 20:b0281e8a375a 124
patrick_duc 20:b0281e8a375a 125 // Protected variable /method
patrick_duc 20:b0281e8a375a 126 protected:
patrick_duc 20:b0281e8a375a 127
patrick_duc 20:b0281e8a375a 128 } ;
patrick_duc 20:b0281e8a375a 129
patrick_duc 20:b0281e8a375a 130 #endif // __DATABASE_HPP__