Compare commits

..

3 Commits

6 changed files with 32 additions and 6 deletions

View File

@ -2,6 +2,8 @@
* Anatole SCHRAMM-HENRY * Anatole SCHRAMM-HENRY
* Tim THUREL * Tim THUREL
* GROUPE 3 * GROUPE 3
*
* UPDATE 10/05/2020 : Ajout du décodage de la température externe
**/ **/
function DecodeByteFirstHalf(data) //Data de type byte function DecodeByteFirstHalf(data) //Data de type byte
@ -63,9 +65,11 @@ function Decoder(bytes, port) {
for (var attrname in date) { decoded[attrname] = date[attrname]; } for (var attrname in date) { decoded[attrname] = date[attrname]; }
decoded.externTemp = DecodeQ10_6(bytes, 7);
for(i = 0; i < sensorNbr*2; i+=2) for(i = 0; i < sensorNbr*2; i+=2)
{ {
decoded["t_"+Number(i/2+1)] = DecodeQ10_6(bytes, 7+i); decoded["t_"+Number(i/2+1)] = DecodeQ10_6(bytes, 9+i);
} }
listToReturn[0] = decoded; listToReturn[0] = decoded;

View File

@ -91,3 +91,15 @@ void onEvent(ev_t ev)
break; break;
} }
} }
void LoRaRadio::disableEUChannel(u1_t channel)
{
LMIC_disableChannel(channel);
}
void LoRaRadio::disableAllEUChannelsBut(u1_t channel)
{
for(int i(0); i < 9; i++)
if(i != channel)
LMIC_disableChannel(i);
}

View File

@ -37,6 +37,8 @@ class LoRaRadio
void send(u1_t port, uint8_t *data, uint8_t length, u1_t confirmed = false); void send(u1_t port, uint8_t *data, uint8_t length, u1_t confirmed = false);
void run(); void run();
void setDownlinkHandler(void (*funcP)(u1_t, u1_t, u1_t*)); void setDownlinkHandler(void (*funcP)(u1_t, u1_t, u1_t*));
void disableEUChannel(u1_t channel);
void disableAllEUChannelsBut(u1_t channel);
//Function pointers used to interact with events //Function pointers used to interact with events
//Parameters : dataLen, dataBeg, dataBuffer //Parameters : dataLen, dataBeg, dataBuffer

View File

@ -19,6 +19,8 @@ setMCUClockError KEYWORD2
send KEYWORD2 send KEYWORD2
run KEYWORD2 run KEYWORD2
setDownlinkHandler KEYWORD2 setDownlinkHandler KEYWORD2
disableEUChannel KEYWORD2
disableAllEUChannelsBut KEYWORD2
####################################### #######################################
# Constants (LITERAL1) # Constants (LITERAL1)

View File

@ -2,7 +2,7 @@
PayloadFormatter::PayloadFormatter(uint8_t numOfRow, uint8_t numOfColumn) : _totalPayloads(0), _currentPayload(0), _numOfRow(numOfRow), _numOfColumn(numOfColumn), _payload(NULL), _length(0) PayloadFormatter::PayloadFormatter(uint8_t numOfRow, uint8_t numOfColumn) : _totalPayloads(0), _currentPayload(0), _numOfRow(numOfRow), _numOfColumn(numOfColumn), _payload(NULL), _length(0)
{ {
_length = numOfRow * numOfColumn * 2 + 7 + 1; _length = (numOfRow * numOfColumn * 2)/* x2 car il faut deux octets pour une température*/ + 7/*pour la date, le numero de trame et le nombre de lignes et de colonnes*/ + 1/*pour le charactère de fin de ligne*/ + 2/*pour la température exterieure*/;
_payload = (uint8_t *) calloc(_length, sizeof(uint8_t)); _payload = (uint8_t *) calloc(_length, sizeof(uint8_t));
} }
@ -25,7 +25,7 @@ boolean PayloadFormatter::endSession()
return ret; return ret;
} }
int16_t PayloadFormatter::buildPayload(uint8_t **buffer, DateTime *dateTime, double *tempArray, uint8_t numOfRow, uint8_t numOfColumn) int16_t PayloadFormatter::buildPayload(uint8_t **buffer, DateTime *dateTime, double externTemp, double *tempArray, uint8_t numOfRow, uint8_t numOfColumn)
{ {
*buffer = _payload; *buffer = _payload;
if(_currentPayload == _totalPayloads || !_totalPayloads) if(_currentPayload == _totalPayloads || !_totalPayloads)
@ -53,8 +53,14 @@ int16_t PayloadFormatter::buildPayload(uint8_t **buffer, DateTime *dateTime, dou
_payload[5] = dateTime->hour(); _payload[5] = dateTime->hour();
_payload[6] = dateTime->minute(); _payload[6] = dateTime->minute();
//Partie temperature //Octets 7 et 8 pour la température extérieure
for(int i(7),j(0); j < (_numOfRow * _numOfColumn); i+=2, j++) //Format Q10.6
int16_t q10_6_extern = round(externTemp * pow(2,6));
_payload[7] = q10_6_extern >> 8;
_payload[8] = q10_6_extern;
//Partie temperature interne
for(int i(9),j(0); j < (_numOfRow * _numOfColumn); i+=2, j++)
{ {
//Format Q10.6 //Format Q10.6
int16_t q10_6 = round(tempArray[j] * pow(2,6)); int16_t q10_6 = round(tempArray[j] * pow(2,6));

View File

@ -9,7 +9,7 @@ class PayloadFormatter
PayloadFormatter(uint8_t numOfRow, uint8_t numOfColumn); PayloadFormatter(uint8_t numOfRow, uint8_t numOfColumn);
~PayloadFormatter(); ~PayloadFormatter();
int16_t buildPayload(uint8_t **buffer, DateTime *dateTime, double *tempArray, uint8_t numOfRow = -1, uint8_t numOfColumn = -1); int16_t buildPayload(uint8_t **buffer, DateTime *dateTime, double externTemp, double *tempArray, uint8_t numOfRow = -1, uint8_t numOfColumn = -1);
void startSession(uint8_t totalPackets); void startSession(uint8_t totalPackets);
boolean endSession(); boolean endSession();