Comunication.c 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. #include "Comunication.h"
  2. #include "spi.h"
  3. #include "Tab.h"
  4. #include "PWM.h"
  5. uint8_t Com_dispactch(uint8_t* mes){
  6. switch(mes[0]|MASKMES){
  7. case (WRITETABHEU):
  8. Com_WriteTabHeure(mes);
  9. return 0;
  10. case (WRITETABVAL):
  11. Com_WriteTabVal(mes);
  12. return 0;
  13. case (READVENT):
  14. Com_ReadVent(mes);
  15. return 0;
  16. case (WRITVENT):
  17. Com_WriteVent(mes);
  18. return 0;
  19. case (ERRORCOM):
  20. Com_ERROR(mes);
  21. return 0;
  22. case (WRITEVAL):
  23. Com_WriteVal(mes);
  24. return 0;
  25. case (STOP):
  26. Com_STOP(mes);
  27. return 0;
  28. case (RETABLIR):
  29. Com_Retablir(mes);
  30. return 0;
  31. default:
  32. return -1;//erreur
  33. }
  34. }
  35. void Com_WriteTabHeure(uint8_t* mes){
  36. int i = mes[0] & MASKID;
  37. Heure h;
  38. h.heure=mes[1];
  39. h.minute=mes[2];
  40. if ((mes[0]&MASKTYPE)>>4)
  41. tabSortie[i].Demmarage=h;
  42. else
  43. tabSortie[i].Extinxtion=h;
  44. 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
  45. writeData(add,&mes[1],2);
  46. }
  47. void Com_WriteTabVal(uint8_t* mes){
  48. int i = mes[0] & MASKID;
  49. if ((mes[0]&MASKTYPE)>>4)
  50. tabSortie[i].PuissanceMax=mes[1];
  51. else
  52. tabSortie[i].Pente=mes[1];
  53. 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
  54. writeData(add,&mes[1],1);
  55. }
  56. void Com_ReadVent(uint8_t* mes){
  57. //TODO Rajout plus tard si ventilation sur la rampe
  58. }
  59. void Com_WriteVent(uint8_t* mes){
  60. //TODO Rajout plus tard si ventilation sur la rampe
  61. }
  62. void Com_ERROR(uint8_t* mes){
  63. //TODO
  64. }
  65. void Com_WriteVal(uint8_t* mes){
  66. int i = mes[0] & 0x0F;
  67. PWMSetDutyCycle(i,tabSortie[i].Fonctionement-1);
  68. PWMStart(i);
  69. tabSortie[i].Fonctionement=1;
  70. }
  71. void Com_STOP(uint8_t* mes){
  72. for (int i = 0; i<10; i++){
  73. PWMSetDutyCycle(i,0);
  74. PWMStart(i);
  75. tabSortie[i].Fonctionement=1;
  76. }
  77. }
  78. void Com_Retablir(uint8_t* mes){
  79. for (int i = 0; i<10; i++)
  80. tabSortie[i].Fonctionement=0;
  81. }