#include "Comunication.h" #include "spi.h" #include "Tab.h" #include "PWM.h" #include "Eeprom.h" uint8_t Com_dispactch(uint8_t* mes){ switch(mes[0]|MASKMES){ case (WRITETABHEU): Com_WriteTabHeure(mes); return 0; case (WRITETABVAL): Com_WriteTabVal(mes); return 0; case (READVENT): Com_ReadVent(mes); return 0; case (WRITVENT): Com_WriteVent(mes); return 0; case (ERRORCOM): Com_ERROR(mes); return 0; case (WRITEVAL): Com_WriteVal(mes); return 0; case (STOP): Com_STOP(mes); return 0; case (RETABLIR): Com_Retablir(mes); return 0; case (SYNCRTC): Com_SyncRTC(mes); return 0; default: return -1;//erreur } } void Com_WriteTabHeure(uint8_t* mes){ int i = mes[0] & MASKID; Heure h; h.heure=mes[1]; h.minute=mes[2]; if ((mes[0]&MASKTYPE)>>4) tabSortie[i].Demmarage=h; else tabSortie[i].Extinxtion=h; uint16_t add = (mes[0]*2)-2; //On ecrit la valeurs que l'on viens de modifier dans l'eeprom. Adresse dans l'eeprom = mes[0]*2-2 voir Tableau excel address writeData(add,&mes[1],2); } void Com_WriteTabVal(uint8_t* mes){ int i = mes[0] & MASKID; if ((mes[0]&MASKTYPE)>>4) tabSortie[i].PuissanceMax=mes[1]; else tabSortie[i].Pente=mes[1]; uint16_t add = (mes[0]*2)+22;//On ecrit la valeurs que l'on viens de modifier dans l'eeprom. Adresse dans l'eeprom = mes[0]*2+22 voir Tableau excel address writeData(add,&mes[1],1); } void Com_ReadVent(uint8_t* mes){ //TODO (RAMPES LED Amélioration) Rajout plus tard si ventilation sur la rampe } void Com_WriteVent(uint8_t* mes){ //TODO (RAMPES LED Amélioration) Rajout plus tard si ventilation sur la rampe } void Com_ERROR(uint8_t* mes){ //TODO (RAMPES LED Amélioration) Gestionnaire erreur } void Com_WriteVal(uint8_t* mes){ int i = mes[0] & 0x0F; if (mes[1]!=0){//Si on force avec le slider blynk (mes!=0) la valeur de l'allumage est la valeurs envoyer -1. PWMSetDutyCycle(i,mes[1]-1); tabSortie[i].Fonctionement=1; } else{//Si on remet le slider a 0 on reprend le fonctionnement normal imediatement. Heure h; readHeure(&h); PWMSetDutyCycle(i,PWMPourcentage(&h,&tabSortie[i])); tabSortie[i].Fonctionement=0; } PWMStart(i);// On demare la sortie } void Com_STOP(uint8_t* mes){ for (int i = 0; i<10; i++){ PWMSetDutyCycle(i,0); PWMStart(i); tabSortie[i].Fonctionement=1; } } void Com_Retablir(uint8_t* mes){ for (int i = 0; i<10; i++) tabSortie[i].Fonctionement=0; } void Com_SyncRTC(uint8_t* mes){ Date d; d.annee=mes[1]; d.mois=mes[2]; d.jour=mes[3]; d.joursemaine=mes[4]; d.heure=mes[5]; d.minute=mes[6]; d.second=mes[7]; writeDate(&d); }