249 lines
5.3 KiB
C++
249 lines
5.3 KiB
C++
|
|
|
|
#include "Date_heure.h"
|
|
#include <Arduino.h>
|
|
|
|
//tableau de char pour la gestion des jour par mois
|
|
int jParM[12]={31,28,31,30,31,30,31,31,30,31,30,31};
|
|
|
|
|
|
/*_____________________________________________fonction validation minute____________________________*/
|
|
int VAL_MINUTE(int MINUTE)
|
|
{
|
|
if (MINUTE>59){
|
|
MINUTE=0;
|
|
};
|
|
if (MINUTE<0){
|
|
MINUTE=59;
|
|
};
|
|
return MINUTE;
|
|
}
|
|
/*_____________________________________________fonction validation heure____________________________*/
|
|
int VAL_HEURE(int HEURE)
|
|
{
|
|
if (HEURE>23){
|
|
HEURE=0;
|
|
};
|
|
if (HEURE<0){
|
|
HEURE=23;
|
|
};
|
|
return HEURE;
|
|
}
|
|
/*_____________________________________________fonction validation mois____________________________*/
|
|
int VAL_MOIS(int MOIS)
|
|
{
|
|
if (MOIS>12){
|
|
MOIS=1;
|
|
};
|
|
if (MOIS<1){
|
|
MOIS=12;
|
|
};
|
|
return MOIS;
|
|
}
|
|
/*_____________________________________________fonction validation annee____________________________*/
|
|
int VAL_ANNEE(int ANNEE)
|
|
{
|
|
if (ANNEE>2100){
|
|
ANNEE=2012;
|
|
};
|
|
if (ANNEE<1){
|
|
ANNEE=2012;
|
|
};
|
|
return ANNEE;
|
|
}
|
|
/*_____________________________________________fonction validation jour____________________________*/
|
|
|
|
int VAL_JOUR(int JOUR, int MOIS, int ANNEE)
|
|
{
|
|
if (MOIS==1||MOIS==3||MOIS==5||MOIS==7||MOIS==8||MOIS==10||MOIS==12){
|
|
if (JOUR<1){
|
|
JOUR=31;
|
|
};
|
|
if (JOUR>31){
|
|
JOUR=1;
|
|
};
|
|
};
|
|
//////////////////////////////////////////////////////////////////////////////
|
|
if (MOIS==4||MOIS==6||MOIS==9||MOIS==11){
|
|
if (JOUR<1){
|
|
JOUR=30;
|
|
};
|
|
if (JOUR>30){
|
|
JOUR=1;
|
|
};
|
|
};
|
|
///////////////////////////////////////////////////////////////////////////
|
|
if (MOIS==2&&bisex(ANNEE)==true){
|
|
if (JOUR<1){
|
|
JOUR=29;
|
|
};
|
|
if (JOUR>29){
|
|
JOUR=1;
|
|
};
|
|
};
|
|
////////////////////////////////////////////////////////////////////////////
|
|
if (MOIS==2&&bisex(ANNEE)==false){
|
|
if (JOUR<1){
|
|
JOUR=28;
|
|
};
|
|
if (JOUR>28){
|
|
JOUR=1;
|
|
};
|
|
};
|
|
|
|
return JOUR;
|
|
}
|
|
bool bisex(int annee){
|
|
//ce qui suit permet de determiner si l'annéee et bisextile renvoi vrai ou faux
|
|
int r1;
|
|
if(annee%400==0){
|
|
r1=1;
|
|
}
|
|
else{
|
|
r1=0;
|
|
};
|
|
int r2;
|
|
if(annee%100==0){
|
|
r2=1;
|
|
}
|
|
else{
|
|
r2=0;
|
|
};
|
|
int r3;
|
|
if(annee%4==0){
|
|
r3=1;
|
|
}
|
|
else{
|
|
r3=0;
|
|
};
|
|
int reponse;
|
|
if(r1-r2+r3==1){
|
|
reponse=true;
|
|
}
|
|
else{
|
|
reponse=false;
|
|
};
|
|
|
|
return reponse;
|
|
}
|
|
|
|
|
|
|
|
|
|
/*_____________________________________________fonction evenement____________________________*/
|
|
|
|
boolean Evenement(Date*date_1,Date*date){
|
|
boolean reponse=false;
|
|
|
|
if( (date->a-date_1->a)==0 && (date->m-date_1->m)==0 &&(date->j-date_1->j)>=0){
|
|
reponse=true;//Serial.println(" 1 Vrai");
|
|
}else if((date->a-date_1->a)==0 && (date->m-date_1->m)>=0){
|
|
reponse=true;//Serial.println(" 2 Vrai");
|
|
}
|
|
else if((date->a-date_1->a)>0){
|
|
reponse=true;//Serial.println(" 3 Vrai");
|
|
}else{//Serial.println(" faux");
|
|
}
|
|
|
|
return reponse;
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
/*_____________________________________________fonction evenement____________________________*/
|
|
|
|
boolean Evenement(int j_1,int m_1,int a_1,int j,int m,int a){
|
|
boolean reponse=false;
|
|
|
|
if( (a-a_1)==0 && (m-m_1)==0 &&(j-j_1)>=0){
|
|
reponse=true;//Serial.println(" 1 Vrai");
|
|
}else if((a-a_1)==0 && (m-m_1)>=0){
|
|
reponse=true;//Serial.println(" 2 Vrai");
|
|
}
|
|
else if((a-a_1)>0){
|
|
reponse=true;//Serial.println(" 3 Vrai");
|
|
}else{//Serial.println(" faux");
|
|
}
|
|
|
|
return reponse;
|
|
}
|
|
|
|
/*_____________________________________________fonction evenement____________________________*/
|
|
|
|
boolean Evenement(int j_1,int m_1,int a_1,Date*date){
|
|
boolean reponse=false;
|
|
|
|
|
|
if( (date->a-a_1)==0 && (date->m-m_1)==0 &&(date->j-j_1)>=0){
|
|
reponse=true;//Serial.println(" 1 Vrai");
|
|
}else if((date->a-a_1)==0 && (date->m-m_1)>=0){
|
|
reponse=true;//Serial.println(" 2 Vrai");
|
|
}
|
|
else if((date->a-a_1)>0){
|
|
reponse=true;//Serial.println(" 3 Vrai");
|
|
}else{//Serial.println(" faux");
|
|
}
|
|
|
|
return reponse;
|
|
}
|
|
|
|
/*_____________________________________________fonction evenement____________________________*/
|
|
boolean Momment(int heure, int minute, int seconde ,Heure*Hrtc){
|
|
boolean reponse=false;
|
|
|
|
if( (Hrtc->h-heure)==0 && (Hrtc->m-minute)==0 &&(Hrtc->s-seconde)>=0){
|
|
reponse=true;
|
|
}
|
|
if( (Hrtc->h-heure)==0 && (Hrtc->m-minute)>=0){
|
|
reponse=true;
|
|
}
|
|
if((Hrtc->h-heure)>0){
|
|
reponse=true;
|
|
}
|
|
#ifdef DEBUG_SERIAL
|
|
if (reponse==true){
|
|
Serial.println(F("Momment OK"));
|
|
}
|
|
else{
|
|
Serial.println(F(" Momment pas OK"));
|
|
};
|
|
#endif
|
|
return reponse;
|
|
}
|
|
|
|
|
|
/*_____________________________________________fonction evenement____________________________*/
|
|
boolean Momment(Heure*heure_T,Heure*heure){
|
|
boolean reponse=false;
|
|
|
|
if( (heure->h-heure_T->h)==0 && (heure->m-heure_T->m)==0 &&(heure->s-heure_T->s)>=0){
|
|
reponse=true;
|
|
}
|
|
if( (heure->h-heure_T->h)==0 && (heure->m-heure_T->m)>=0){
|
|
reponse=true;
|
|
}
|
|
if((heure->h-heure_T->h)>0){
|
|
reponse=true;
|
|
}
|
|
#ifdef DEBUG_SERIAL
|
|
if (reponse==true){
|
|
Serial.println(F("Momment OK"));
|
|
}
|
|
else{
|
|
Serial.println(F(" Momment pas OK"));
|
|
};
|
|
#endif
|
|
return reponse;
|
|
}
|
|
/*_____________________________________________fonction convertion de long heur en heur minute seconde____________________________*/
|
|
void convertHeur(long *h,int *heure, int *minute,int *seconde){
|
|
|
|
*heure=(*h/3600);//heure entiere
|
|
*minute=(*h/60)-((*heure)*60);// les minute entiere
|
|
*seconde=*h-((*minute)*60)-(((*heure)*60)); //les seconde entiere
|
|
|
|
return;
|
|
}
|