konbaasiang

stm8_esp01_msg.c

Nov 22nd, 2020 (edited)
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.05 KB | None | 0 0
  1. #include "arduino.h"
  2. #include "stm8_esp01_msg.h"
  3.  
  4. uint8_t sync_state=0;
  5. uint8_t buf_idx=0;
  6.  
  7.  
  8. //uint8_t stm8_temp_buffer[512];
  9.  
  10. struct stm8_expander_message msg;
  11. struct stm8_expander_config cfg;
  12.  
  13. void reset_sync_state()
  14. {
  15.     sync_state=0;
  16.     buf_idx=0;
  17. }
  18.  
  19. void handle_receive(uint8_t value)
  20. {
  21.  
  22.     switch(sync_state)
  23.     {
  24.     case 0:
  25.         if(value==HDR0)
  26.         {
  27.             sync_state++;
  28.         }
  29.         else if(value==PIN_MSG)
  30.         {
  31.             sync_state=100;
  32.         }
  33.         else
  34.         {
  35.             sync_state=0;
  36.         }
  37.         break;
  38.     case 1:
  39.         if(value==HDR1) sync_state++; else sync_state=0;
  40.         break;
  41.     case 2:
  42.         if(value==HDR2) sync_state++; else sync_state=0;
  43.         break;
  44.     case 3:
  45.         if(value==HDR3)
  46.         {
  47.             sync_state++;
  48.             buf_idx=0;
  49.         }
  50.         else
  51.         {
  52.             sync_state=0;
  53.         }
  54.         break;
  55.     case 4:
  56.         {
  57.             bool bConsumed=false;
  58.             if(buf_idx<sizeof(struct stm8_expander_message))
  59.             {
  60.                 ((uint8_t *) &msg)[buf_idx]=value;
  61.                 bConsumed=true;
  62.                 buf_idx++;
  63.             }
  64.  
  65.  
  66.             if(buf_idx>=sizeof(struct stm8_expander_message))
  67.             {
  68.                 switch(msg.message)
  69.                 {
  70.                 default:
  71.                     onmessage();
  72.                     sync_state=0;
  73.                     break;
  74.                 case message_set_config:
  75.  
  76.                     if(bConsumed) break;
  77.  
  78.                     if(buf_idx<sizeof(struct stm8_expander_message)+sizeof(struct stm8_expander_config))
  79.                     {
  80.                         ((uint8_t *) &cfg)[buf_idx-sizeof(struct stm8_expander_message)]=value;
  81.                         buf_idx++;
  82.                     }
  83.  
  84.                     if(buf_idx>=sizeof(struct stm8_expander_message)+sizeof(struct stm8_expander_config))
  85.                     {
  86.                         onmessage();
  87.                         sync_state=0;
  88.                     }
  89.                     break;
  90.  
  91. /*              case message_tx_ir:
  92.                     if(bConsumed) break;
  93.  
  94.                    
  95.                     if(buf_idx<sizeof(struct stm8_expander_message)+(msg.data2 << 8 | msg.data3))
  96.                     {
  97.                         ((uint8_t *) &stm8_temp_buffer)[buf_idx-sizeof(struct stm8_expander_message)]=value;
  98.                         buf_idx++;
  99.                     }
  100.  
  101.                     if(buf_idx>=sizeof(struct stm8_expander_message)+(msg.data2 << 8 | msg.data3))
  102.                     {
  103.                         onmessage();
  104.                         sync_state=0;
  105.                     }
  106.                     break;*/
  107.                        
  108.  
  109.                 }
  110.  
  111.             }
  112.         }
  113.        
  114.  
  115.  
  116.         break;
  117.     case 100:   //receive pins
  118.         {
  119.             onpin(value);
  120.             sync_state=0;
  121.         }
  122.         break;
  123.     }
  124.  
  125. }
Add Comment
Please, Sign In to add comment