Permet de créer, envoyer, filtrer et décrypter la trame meteo.

Dependents:   Simulation_carte_maitresse

meteoCAN.cpp

Committer:
Station_Meteo_Laos
Date:
2019-06-14
Revision:
1:0a49398a7bb3
Parent:
0:f442198ae6b0
Child:
2:559043c0120e

File content as of revision 1:0a49398a7bb3:

#include "meteoCAN.h"
#include "mbed.h"

meteoCAN::meteoCAN(PinName rd, PinName td):can1(rd, td){}

// meteoCAN
bool meteoCAN::send(uint16_t canID, float temperature, float humidite, float irradiance, float vitesse_vent, char direction_vent){
    uint16_t temp, humi, irra, vite;
    char trame[50];
        
    temp = uint16_t(temperature*100);
    trame[0] = temp & 255; //temperature octet faible
    trame[1] = temp >> 8;   //temperature octet fort
    
    humi = uint16_t(humidite*10);
    trame[2] = humi & 255; //humidite octet faible
    trame[3] = humi >> 8;   //humidite octet fort
    
    irra = uint16_t(irradiance);
    trame[4] = irra & 255; //irradiance octet faible
    trame[5] = irra >> 8;   //irradiance octet fort
    
    vite = uint16_t(vitesse_vent*100);
    trame[6] = vite & 255; //vitesse_vent octet faible
    trame[7] = vite >> 8;   //vitesse_vent octet fort
    
    trame[3] = (direction_vent<<4 & 0xF0) + (trame[3] & 0x0F);
  
    // send value to CAN bus and monitor return value to check if CAN
    // message was sent successfully. If so display, increment and toggle
    if (can1.write(CANMessage(canID, trame, 8))) {
    }
    else{
      can1.reset();                                           // Reset CANbus if there is a problem
    }
    wait(1.0);                                                  // wait a second  
    
    return true;
}

bool meteoCAN::filtreID(uint16_t IDreceived, uint16_t IDtoFilter){
    if(IDtoFilter == IDreceived) return true;
    else return false;
}