Comunication.c 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114
  1. #include "Comunication.h"
  2. #include "spi.h"
  3. #include "Tab.h"
  4. #include "PWM.h"
  5. #include "Eeprom.h"
  6. uint8_t Com_dispactch(uint8_t* mes){
  7. switch(mes[0]|MASKMES){
  8. case (WRITETABHEU):
  9. Com_WriteTabHeure(mes);
  10. return 0;
  11. case (WRITETABVAL):
  12. Com_WriteTabVal(mes);
  13. return 0;
  14. case (READVENT):
  15. Com_ReadVent(mes);
  16. return 0;
  17. case (WRITVENT):
  18. Com_WriteVent(mes);
  19. return 0;
  20. case (ERRORCOM):
  21. Com_ERROR(mes);
  22. return 0;
  23. case (WRITEVAL):
  24. Com_WriteVal(mes);
  25. return 0;
  26. case (STOP):
  27. Com_STOP(mes);
  28. return 0;
  29. case (RETABLIR):
  30. Com_Retablir(mes);
  31. return 0;
  32. case (SYNCRTC):
  33. Com_SyncRTC(mes);
  34. return 0;
  35. default:
  36. return -1;//erreur
  37. }
  38. }
  39. void Com_WriteTabHeure(uint8_t* mes){
  40. int i = mes[0] & MASKID;
  41. Heure h;
  42. h.heure=mes[1];
  43. h.minute=mes[2];
  44. if ((mes[0]&MASKTYPE)>>4)
  45. tabSortie[i].Demmarage=h;
  46. else
  47. tabSortie[i].Extinxtion=h;
  48. 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
  49. writeData(add,&mes[1],2);
  50. }
  51. void Com_WriteTabVal(uint8_t* mes){
  52. int i = mes[0] & MASKID;
  53. if ((mes[0]&MASKTYPE)>>4)
  54. tabSortie[i].PuissanceMax=mes[1];
  55. else
  56. tabSortie[i].Pente=mes[1];
  57. 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
  58. writeData(add,&mes[1],1);
  59. }
  60. void Com_ReadVent(uint8_t* mes){
  61. //TODO (RAMPES LED Amélioration) Rajout plus tard si ventilation sur la rampe
  62. }
  63. void Com_WriteVent(uint8_t* mes){
  64. //TODO (RAMPES LED Amélioration) Rajout plus tard si ventilation sur la rampe
  65. }
  66. void Com_ERROR(uint8_t* mes){
  67. //TODO (RAMPES LED Amélioration) Gestionnaire erreur
  68. }
  69. void Com_WriteVal(uint8_t* mes){
  70. int i = mes[0] & 0x0F;
  71. if (mes[1]!=0){//Si on force avec le slider blynk (mes!=0) la valeur de l'allumage est la valeurs envoyer -1.
  72. PWMSetDutyCycle(i,mes[1]-1);
  73. tabSortie[i].Fonctionement=1;
  74. }
  75. else{//Si on remet le slider a 0 on reprend le fonctionnement normal imediatement.
  76. Heure h;
  77. readHeure(&h);
  78. PWMSetDutyCycle(i,PWMPourcentage(&h,&tabSortie[i]));
  79. tabSortie[i].Fonctionement=0;
  80. }
  81. PWMStart(i);// On demare la sortie
  82. }
  83. void Com_STOP(uint8_t* mes){
  84. for (int i = 0; i<10; i++){
  85. PWMSetDutyCycle(i,0);
  86. PWMStart(i);
  87. tabSortie[i].Fonctionement=1;
  88. }
  89. }
  90. void Com_Retablir(uint8_t* mes){
  91. for (int i = 0; i<10; i++)
  92. tabSortie[i].Fonctionement=0;
  93. }
  94. void Com_SyncRTC(uint8_t* mes){
  95. Date d;
  96. d.annee=mes[1];
  97. d.mois=mes[2];
  98. d.jour=mes[3];
  99. d.joursemaine=mes[4];
  100. d.heure=mes[5];
  101. d.minute=mes[6];
  102. d.second=mes[7];
  103. writeDate(&d);
  104. }