Comunication.c 2.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110
  1. #include "Comunication.h"
  2. #include "Tab.h"
  3. #include "PWM.h"
  4. #include "usart.h"
  5. #include <Heure.h>
  6. void Sync(){
  7. uint8_t mes = 0xF0;
  8. HAL_UART_Transmit(&huart6,&mes,1,1000);
  9. }
  10. uint8_t parse(uint8_t* mes){
  11. switch(mes[0] & MASKMES){
  12. case (WRITETABHEU):
  13. Com_WriteTabHeure(mes);
  14. return 0;
  15. case (WRITETABVAL):
  16. Com_WriteTabVal(mes);
  17. return 0;
  18. case (READVENT):
  19. Com_ReadVent(mes);
  20. return 0;
  21. case (WRITVENT):
  22. Com_WriteVent(mes);
  23. return 0;
  24. /* case (ERRORCOM):
  25. Com_ERROR(mes);
  26. return 0;*/
  27. case (WRITEVALESS):
  28. Com_WriteValEsai(mes);
  29. return 0;
  30. case (STOP):
  31. Com_STOP(mes);
  32. return 0;
  33. case (ESSAI):
  34. Com_ESSAI(mes);
  35. return 0;
  36. case (SYNCRTC):
  37. Com_SyncRTC(mes);
  38. return 0;
  39. default:
  40. return -1;//erreur
  41. }
  42. }
  43. void ReadMes(FIFO_COM *f,uint8_t* mes){
  44. uint8_t first = readFirst(f) & MASKMES;
  45. if (first == STOP|first == ESSAI|first == READVENT|first == WRITVENT)
  46. readFifo(f,mes,1);
  47. else if(first == WRITETABVAL|first == WRITEVALESS)
  48. readFifo(f,mes,2);
  49. else if(first == WRITETABHEU)
  50. readFifo(f,mes,3);
  51. else if (first == SYNCRTC)
  52. readFifo(f,mes,8);
  53. else
  54. while(1); // todo Erreur Synchro entre dans la fifo
  55. }
  56. void Com_WriteTabHeure(uint8_t* mes){
  57. uint8_t id = mes[0]&MASKID;
  58. uint16_t h = mes[1]*60 + mes[2];
  59. if ((mes[0]&MASKTYPE)>>3)
  60. tabSortie[id].Extinxtion = h;
  61. else
  62. tabSortie[id].Demmarage = h;
  63. }
  64. void Com_WriteTabVal(uint8_t* mes){
  65. uint8_t id = mes[0]&MASKID;
  66. if ((mes[0] & MASKTYPE )>>3)
  67. tabSortie[id].Pente=mes[1];
  68. else
  69. tabSortie[id].PuissanceMax=mes[1];
  70. }
  71. void Com_ReadVent(uint8_t* mes){
  72. }
  73. void Com_WriteVent(uint8_t* mes){
  74. }
  75. void Com_WriteValEsai(uint8_t* mes){
  76. uint8_t id = mes[0]&MASKID;
  77. tabSortie[id].PuissanceEssai = mes[1];
  78. }
  79. void Com_STOP(uint8_t* mes){
  80. gl_Stop = mes[0]&MASKON;
  81. }
  82. void Com_ESSAI(uint8_t* mes){
  83. gl_Essai = mes[0]&MASKON;
  84. }
  85. void Com_SyncRTC(uint8_t* mes){
  86. Date date;
  87. date.annee=mes[1];
  88. date.mois=mes[2];
  89. date.jour=mes[3];
  90. date.joursemaine=mes[4];
  91. date.heure=mes[5];
  92. date.minute=mes[6];
  93. date.second=mes[7];
  94. writeDate(&date);
  95. }