konbaasiang

stm8_esp01_msg.h

Nov 22nd, 2020
184
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.29 KB | None | 0 0
  1. #pragma once
  2.  
  3. #ifdef __cplusplus
  4. extern "C" {
  5. #endif
  6.  
  7. // callbacks
  8. void onmessage();
  9. void onpin(uint8_t pinvalue);
  10.  
  11. // function
  12. void handle_receive(uint8_t value);
  13.  
  14. void reset_sync_state();
  15.  
  16. #ifdef __cplusplus
  17. }
  18. #endif
  19.  
  20.  
  21. enum messagetype
  22. {
  23.     message_nop,
  24.     message_needs_reset,
  25.     message_relax_watchdog,
  26.     message_set_config,     //stm8_expander_config follows stm8_expander_message
  27. //  message_tx_ir,
  28. };
  29.  
  30.  
  31.  
  32. #define PIN_MSG 0x75    //a single header byte follows a pin update message
  33.  
  34. #define HDR0 0x73   //four header bytes follow stm8_expander_message
  35. #define HDR1 0xAF
  36. #define HDR2 0xBC
  37. #define HDR3 0x5E
  38.  
  39. #define STM8_BAUDRATE 460800
  40.  
  41. struct stm8_expander_message
  42. {
  43.     uint8_t message;
  44.  
  45.     uint8_t data1;
  46.     uint8_t data2;
  47.     uint8_t data3;
  48. };
  49.  
  50.  
  51.  
  52.  
  53.  
  54.  
  55.  
  56. enum pinmode
  57. {
  58.     pinmode_off,
  59.     pinmode_input0,
  60.     pinmode_input1,
  61.     pinmode_input2,
  62.     pinmode_input3,
  63.     pinmode_input4,
  64.     pinmode_output0,
  65.     pinmode_output1,
  66.     pinmode_output2,
  67.     pinmode_output3,
  68.     pinmode_output4,
  69. };
  70.  
  71. /*
  72. #define SIG0 0x70
  73. #define SIG1 0x35
  74. #define SIG2 0x84
  75. #define SIG3 0xB2
  76. #define SIG4 0x65
  77. #define SIG5 0x12
  78. #define SIG6 0xA5
  79. #define SIG7 0xF3
  80. */
  81.  
  82. struct stm8_expander_config
  83. {
  84. //  uint8_t signature[8];
  85.    
  86.     uint8_t gpio0_mode;
  87.     uint8_t gpio2_mode;
  88.  
  89. };
  90.  
  91.  
  92.  
  93. extern struct stm8_expander_message msg;
  94. extern struct stm8_expander_config cfg;
  95. //extern uint8_t stm8_temp_buffer[512];
  96.  
  97.  
  98.  
  99. /*
  100.  
  101. struct stm8_expander_config cfg;
  102.  
  103.  
  104.  
  105. void receive_config()
  106. {
  107.     uint32_t startTime=millis();
  108.  
  109.     int init_fill=0;
  110.     int sync_state=0;
  111.     int cfg_idx=0;
  112.  
  113.     uint8_t sig_compare[]={SIG0,SIG1,SIG2,SIG3,SIG4,SIG5,SIG6,SIG7};
  114.  
  115.     uint8_t * dest=(uint8_t *) &cfg;
  116.  
  117.     while(millis()-startTime<2500 && cfg_idx<sizeof(cfg))
  118.     {
  119.         if(!Serial_available()) continue;
  120.         uint8_t value=Serial_read();
  121.  
  122.         switch(sync_state)
  123.         {
  124.         case 0:
  125.             cfg_idx=0;
  126.             if(value==0xAA) init_fill++;
  127.             if(init_fill>=30 && value==SIG0)
  128.             {
  129.                 dest[cfg_idx]=value;
  130.                 cfg_idx++;
  131.                 sync_state++;
  132.             }
  133.             break;
  134.         case 1:
  135.             if(cfg_idx<8)
  136.             {
  137.                 if(value==sig_compare[cfg_idx])
  138.                 {
  139.                     dest[cfg_idx]=value;
  140.                     cfg_idx++;
  141.                 }
  142.                 else
  143.                 {
  144.                     sync_state=0;
  145.                 }
  146.             }
  147.             else if(cfg_idx<sizeof(cfg))
  148.             {
  149.                 dest[cfg_idx]=value;
  150.                 cfg_idx++;
  151.             }
  152.             break;
  153.         }   //switch
  154.     } //while
  155.  
  156. }
  157.  
  158.  
  159.  
  160. */
Advertisement
Add Comment
Please, Sign In to add comment