Comunication.c 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. #include "Comunication.h"
  2. #include "Tab.h"
  3. #include "PWM.h"
  4. #include "usart.h"
  5. #include <Heure.h>
  6. #include "rtc.h"
  7. extern Sortie tabSortie[10];
  8. extern uint8_t gl_Stop;
  9. extern uint8_t gl_Essai;
  10. extern uint8_t erreur;
  11. void parse(uint8_t* mes){
  12. switch(mes[0] & MASKMES){
  13. case WRITETABHEU:
  14. Com_WriteTabHeure(mes);
  15. break;
  16. case READTABHEU:
  17. Com_ReadTabHeure(mes);
  18. break;
  19. case WRITETABVAL:
  20. Com_WriteTabVal(mes);
  21. break;
  22. case READTABVAL:
  23. Com_ReadTabVal(mes);
  24. break;
  25. case READVENT:
  26. Com_ReadVent(mes);
  27. break;
  28. case WRITVENT:
  29. Com_WriteVent(mes);
  30. break;
  31. case WRITEVALESS:
  32. Com_WriteValEsai(mes);
  33. break;
  34. case STOP:
  35. Com_STOP(mes);
  36. break;
  37. case ESSAI:
  38. Com_ESSAI(mes);
  39. break;
  40. case SYNCRTC:
  41. Com_SyncRTC(mes);
  42. break;
  43. case STATUS:
  44. Com_Status();
  45. break;
  46. default:
  47. HAL_NVIC_SystemReset();
  48. break;
  49. }
  50. }
  51. void Com_WriteTabHeure(uint8_t* mes){
  52. if(mes[1]>>7){
  53. tabSortie[mes[1]&0x0F].Extinxtion=mes[2]*60+mes[3];
  54. writeEeprom((mes[1]&0x0F)*5, &mes[2], 2);
  55. }
  56. else{
  57. tabSortie[mes[1]&0x0F].Demmarage=mes[2]*60+mes[3];
  58. writeEeprom((mes[1]&0x0F)*5+2, &mes[2], 2);
  59. }
  60. uint8_t mesRet[8];
  61. mesRet[0] = WRITETABHEU;
  62. mesRet[1]=55;
  63. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  64. }
  65. void Com_ReadTabVal(uint8_t* mes){
  66. //TODO a faire
  67. }
  68. void Com_WriteTabVal(uint8_t* mes){
  69. HAL_StatusTypeDef res;
  70. if(mes[1]>>7){
  71. tabSortie[mes[1]&0x0F].Pente=mes[2];
  72. writeEeprom((mes[1]&0x0F)*5+4, &mes[2], 1);
  73. }
  74. else{
  75. tabSortie[mes[1]&0x0F].PuissanceMax=mes[2];
  76. writeEeprom((mes[1]&0x0F)*5+3, &mes[2], 1);
  77. }
  78. uint8_t mesRet[8];
  79. mesRet[0] = WRITETABVAL;
  80. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  81. }
  82. void Com_ReadTabHeure(uint8_t* mes){
  83. //TODO a faire
  84. }
  85. void Com_ReadVent(uint8_t* mes){
  86. //TODO a faire
  87. }
  88. void Com_WriteVent(uint8_t* mes){
  89. //TODO a faire
  90. }
  91. void Com_WriteValEsai(uint8_t* mes){
  92. tabSortie[mes[1]&0x0F].PuissanceEssai=mes[2];
  93. uint8_t mesRet[8];
  94. mesRet[0] = WRITEVALESS;
  95. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  96. if (gl_Essai)
  97. Essai();
  98. }
  99. void Com_STOP(uint8_t* mes){
  100. if(mes[1]==1){
  101. gl_Stop=1;
  102. Stop();
  103. }
  104. else{
  105. gl_Stop=0;
  106. uint16_t Hmin = ReadHeureMin();
  107. GerePWM(Hmin);
  108. }
  109. uint8_t mesRet[8];
  110. mesRet[0] = STOP ;
  111. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  112. }
  113. void Com_ESSAI(uint8_t* mes){
  114. if(mes[1]==1){
  115. gl_Essai=1;
  116. Essai();
  117. }
  118. else{
  119. gl_Essai=0;
  120. uint16_t Hmin = ReadHeureMin();
  121. GerePWM(Hmin);
  122. }
  123. uint8_t mesRet[8];
  124. mesRet[0] = ESSAI;
  125. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  126. }
  127. void Com_SyncRTC(uint8_t* mes){
  128. RTC_TimeTypeDef sTime;
  129. RTC_DateTypeDef sDate;
  130. sDate.Year=mes[1];
  131. sDate.Month=mes[2];
  132. sDate.Date=mes[3];
  133. sDate.WeekDay=mes[4];
  134. sTime.Hours=mes[5];
  135. sTime.Minutes=mes[6];
  136. sTime.Seconds=mes[7];
  137. sTime.DayLightSaving = RTC_DAYLIGHTSAVING_NONE;
  138. sTime.StoreOperation = RTC_STOREOPERATION_RESET;
  139. if (HAL_RTC_SetTime(&hrtc, &sTime, RTC_FORMAT_BIN) != HAL_OK)
  140. Error_Handler; //TODO
  141. if (HAL_RTC_SetDate(&hrtc, &sDate, RTC_FORMAT_BIN) != HAL_OK)
  142. Error_Handler;//TODO
  143. uint8_t mesRet[8];
  144. mesRet[0] = SYNCRTC;
  145. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  146. }
  147. void Com_Status(){
  148. uint8_t mesRet[8];
  149. mesRet[0] = STATUS;
  150. mesRet[1] = erreur;
  151. HAL_UART_Transmit(&huart6, mesRet, 8, 500);
  152. erreur = 0;
  153. }