Advertisement
Guest User

Untitled

a guest
Feb 19th, 2020
85
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.92 KB | None | 0 0
  1. void get_frame(void)
  2. {
  3. if (Busy_Rx != Empty_Rx) {
  4. static char c;
  5. c = getchar_BuffRx();
  6. switch (actual_frame_stage) {
  7. case FRAME_WAIT_FOR_START:
  8. if (c == START_FRAME) {
  9. actual_frame_stage = FRAME_MESSAGE;
  10. }
  11. break;
  12. case FRAME_MESSAGE:
  13. if (c == END_FRAME) {
  14. analyze_frame(receivedFrameBuffer);
  15. clearReceivedFrameBuffer();
  16. actual_frame_stage = FRAME_WAIT_FOR_START;
  17. } else if (c == ESCAPE) {
  18. actual_frame_stage = FRAME_ESCAPE;
  19. }
  20. else if ( c == START_FRAME)
  21. {
  22. clearReceivedFrameBuffer();
  23. actual_frame_stage = FRAME_MESSAGE;
  24. break;
  25.  
  26. }
  27. else {
  28. receivedFrameBuffer[receivedFrameBufferIDX] = c;
  29. if(receivedFrameBufferIDX>=256)
  30. {
  31. clearReceivedFrameBuffer();
  32. actual_frame_stage = FRAME_WAIT_FOR_START;
  33. break;
  34. }
  35. else
  36. {
  37. receivedFrameBufferIDX++;
  38. }
  39. }
  40. break;
  41. case FRAME_ESCAPE:
  42. if (c == ESCAPE_START) {
  43. receivedFrameBuffer[receivedFrameBufferIDX] = START_FRAME;
  44. if(receivedFrameBufferIDX>=256)
  45. {
  46. clearReceivedFrameBuffer();
  47. actual_frame_stage = FRAME_WAIT_FOR_START;
  48. break;
  49. }
  50. else
  51. {
  52. receivedFrameBufferIDX++;
  53. }
  54. } else if (c == ESCAPE_END) {
  55. receivedFrameBuffer[receivedFrameBufferIDX] = END_FRAME;
  56. if(receivedFrameBufferIDX>=256)
  57. {
  58. clearReceivedFrameBuffer();
  59. actual_frame_stage = FRAME_WAIT_FOR_START;
  60. break;
  61. }
  62. else
  63. {
  64. receivedFrameBufferIDX++;
  65. }
  66. } else if (c == ESCAPE_ESCAPE) {
  67. receivedFrameBuffer[receivedFrameBufferIDX] = ESCAPE;
  68. if(receivedFrameBufferIDX>=256)
  69. {
  70. clearReceivedFrameBuffer();
  71. actual_frame_stage = FRAME_WAIT_FOR_START;
  72. break;
  73. }
  74. else
  75. {
  76. receivedFrameBufferIDX++;
  77. }
  78. }
  79.  
  80. else {
  81. clearReceivedFrameBuffer();
  82. actual_frame_stage = FRAME_WAIT_FOR_START;
  83. break;
  84. }
  85.  
  86.  
  87. actual_frame_stage = FRAME_MESSAGE;
  88. break;
  89. }
  90. }
  91. if ((HAL_GetTick() - lastReceivedCharFrame) > 40) {
  92. clearReceivedFrameBuffer();
  93. }
  94. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement