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:
20:b0281e8a375a
avec radio;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
patrick_duc 20:b0281e8a375a 1 /*
patrick_duc 20:b0281e8a375a 2 #include <MessageFactory_.h>
patrick_duc 20:b0281e8a375a 3 #include <MessageFactory.h>
patrick_duc 20:b0281e8a375a 4 * MISNet
patrick_duc 20:b0281e8a375a 5 *
patrick_duc 20:b0281e8a375a 6 * Frame: Fabriquer les messages destinées à être emis
patrick_duc 20:b0281e8a375a 7 *
patrick_duc 20:b0281e8a375a 8 * Created on: August 17, 2018 Author: Francis CHATAIN
patrick_duc 20:b0281e8a375a 9 *
patrick_duc 20:b0281e8a375a 10 */
patrick_duc 20:b0281e8a375a 11
patrick_duc 20:b0281e8a375a 12 #include "Context.h"
patrick_duc 20:b0281e8a375a 13
patrick_duc 20:b0281e8a375a 14 // ===================================== Includes
patrick_duc 20:b0281e8a375a 15 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 16 #include "mbed.h"
patrick_duc 20:b0281e8a375a 17 #include "main.h"
patrick_duc 20:b0281e8a375a 18 #endif
patrick_duc 20:b0281e8a375a 19
patrick_duc 20:b0281e8a375a 20 #include "MessageFactory.hpp"
patrick_duc 20:b0281e8a375a 21
patrick_duc 20:b0281e8a375a 22 // ===================================== Method of class
patrick_duc 20:b0281e8a375a 23
patrick_duc 20:b0281e8a375a 24
patrick_duc 20:b0281e8a375a 25 using namespace misnet;
patrick_duc 20:b0281e8a375a 26
patrick_duc 20:b0281e8a375a 27
patrick_duc 20:b0281e8a375a 28 MessageFactory::MessageFactory () { } // constructeur
patrick_duc 20:b0281e8a375a 29 MessageFactory::~MessageFactory() { } // delete xxx;
patrick_duc 20:b0281e8a375a 30
patrick_duc 20:b0281e8a375a 31
patrick_duc 20:b0281e8a375a 32 void MessageFactory::buildSensors () {
patrick_duc 20:b0281e8a375a 33 #ifndef TEST_ENVIRONMENT
patrick_duc 20:b0281e8a375a 34 uint16_t clearPart = 0x0000 ; // 2 Bytes
patrick_duc 20:b0281e8a375a 35 uint16_t serviceDFT = 0x00000000 ; // 2 bits left used
patrick_duc 20:b0281e8a375a 36 uint16_t servicePMI = 0x00000000 ; // 12 bits right used
patrick_duc 20:b0281e8a375a 37 uint16_t serviceRCA = 0x00000000 ; // 12 bits right used
patrick_duc 20:b0281e8a375a 38 uint32_t servicePart = 0x00000000 ; // 4 Bytes
patrick_duc 20:b0281e8a375a 39 uint32_t serviceMIC = 0x00000000 ; // 4 Bytes
patrick_duc 20:b0281e8a375a 40 uint32_t dataMIC = 0x00000000 ; // 4 Bytes
patrick_duc 20:b0281e8a375a 41 uint8_t *pointer ;
patrick_duc 20:b0281e8a375a 42 uint16_t dataID = 0x00000000 ; // 12 bits right used
patrick_duc 20:b0281e8a375a 43
patrick_duc 20:b0281e8a375a 44
patrick_duc 20:b0281e8a375a 45 char frameMISNET [BUFFER_SIZE_MAX] ; // Message
patrick_duc 20:b0281e8a375a 46 memset ( &frameMISNET , 0x00, BUFFER_SIZE_MAX );
patrick_duc 20:b0281e8a375a 47
patrick_duc 20:b0281e8a375a 48 // Read DataBase to get information (here simulated)
patrick_duc 20:b0281e8a375a 49
patrick_duc 20:b0281e8a375a 50 // Formate Clear Part
patrick_duc 20:b0281e8a375a 51 clearPart = MODE_ADDR_IOT | ( ID_TERMINAL << 6 ) | ID_GATEWAY ;
patrick_duc 20:b0281e8a375a 52 printf( "*** MESS *** CLEAR PART= %8X \r\n ", clearPart);
patrick_duc 20:b0281e8a375a 53
patrick_duc 20:b0281e8a375a 54 // CLEAR PART + Indianess correction
patrick_duc 20:b0281e8a375a 55 pointer = (uint8_t*) &clearPart ; for (int i = 0, j=1 ; i<2 ; i++, j--) frameMISNET[j] = pointer[i] ;
patrick_duc 20:b0281e8a375a 56
patrick_duc 20:b0281e8a375a 57 // Formate Service Part
patrick_duc 20:b0281e8a375a 58 serviceDFT = MODE_DFT_IOT ; // Mode IOT 0x40000000
patrick_duc 20:b0281e8a375a 59 servicePMI = 0x0100 & 0x3FF0 ; // 10 bits Payload N°16 simulated
patrick_duc 20:b0281e8a375a 60 serviceRCA = 0xBEEF & 0x0FFF ; // 3 Bytes (simulated)
patrick_duc 20:b0281e8a375a 61 serviceMIC = 0xCAFEBEEF & 0xFFFFFFFF ; // 4 Bytes (simulated)
patrick_duc 20:b0281e8a375a 62
patrick_duc 20:b0281e8a375a 63 servicePart = (uint32_t)( (serviceDFT & 0xC0) << 24) |
patrick_duc 20:b0281e8a375a 64 (uint32_t)( (servicePMI & 0x3FF0) << 16) |
patrick_duc 20:b0281e8a375a 65 (uint32_t)( (serviceRCA & 0x0FFF) << 8 ) ;
patrick_duc 20:b0281e8a375a 66
patrick_duc 20:b0281e8a375a 67
patrick_duc 20:b0281e8a375a 68 // SERVICE + Indianess correction
patrick_duc 20:b0281e8a375a 69 pointer = (uint8_t*) &servicePart ;
patrick_duc 20:b0281e8a375a 70 for (int i=0, j=2 ; i<3 ; i++, j--) frameMISNET[2+i] = pointer[j] ;
patrick_duc 20:b0281e8a375a 71 pointer = (uint8_t*) &serviceMIC ;
patrick_duc 20:b0281e8a375a 72 for (int i=0, j=3 ; i<4 ; i++, j--) frameMISNET[5+i] = pointer[j] ;
patrick_duc 20:b0281e8a375a 73
patrick_duc 20:b0281e8a375a 74
patrick_duc 20:b0281e8a375a 75 // Format data part
patrick_duc 20:b0281e8a375a 76 dataID = 0x1440 ; // Service N°1 Value = 68
patrick_duc 20:b0281e8a375a 77 dataMIC = 0xBEEFCAFE & 0xFFFFFFFF ; // 4 Bytes (simulated)
patrick_duc 20:b0281e8a375a 78
patrick_duc 20:b0281e8a375a 79 frameMISNET[9+1] = pointer[1] ;
patrick_duc 20:b0281e8a375a 80 frameMISNET[9+2] = pointer[0] ;
patrick_duc 20:b0281e8a375a 81
patrick_duc 20:b0281e8a375a 82 pointer = (uint8_t*) &dataMIC ;
patrick_duc 20:b0281e8a375a 83 for (int i=0, j=3 ; i<4 ; i++, j--) frameMISNET[11+i] = pointer[j] ;
patrick_duc 20:b0281e8a375a 84
patrick_duc 20:b0281e8a375a 85 printf( "*** MESS *** Message= "); for (int i = 0 ; i<15 ; i++) printf ("%02X,", frameMISNET[i] ) ; printf( "\n") ;
patrick_duc 20:b0281e8a375a 86
patrick_duc 20:b0281e8a375a 87 // Store message
patrick_duc 20:b0281e8a375a 88 #endif
patrick_duc 20:b0281e8a375a 89 }
patrick_duc 20:b0281e8a375a 90
patrick_duc 20:b0281e8a375a 91 void MessageFactory::buildGoodhealth () {} //TODO
patrick_duc 20:b0281e8a375a 92 void MessageFactory::buildSynchro () {} //TODO
patrick_duc 20:b0281e8a375a 93 void MessageFactory::buildConfiguration () {} //TODO