Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "arduino.h"
- #include "stm8_esp01_msg.h"
- uint8_t sync_state=0;
- uint8_t buf_idx=0;
- //uint8_t stm8_temp_buffer[512];
- struct stm8_expander_message msg;
- struct stm8_expander_config cfg;
- void reset_sync_state()
- {
- sync_state=0;
- buf_idx=0;
- }
- void handle_receive(uint8_t value)
- {
- switch(sync_state)
- {
- case 0:
- if(value==HDR0)
- {
- sync_state++;
- }
- else if(value==PIN_MSG)
- {
- sync_state=100;
- }
- else
- {
- sync_state=0;
- }
- break;
- case 1:
- if(value==HDR1) sync_state++; else sync_state=0;
- break;
- case 2:
- if(value==HDR2) sync_state++; else sync_state=0;
- break;
- case 3:
- if(value==HDR3)
- {
- sync_state++;
- buf_idx=0;
- }
- else
- {
- sync_state=0;
- }
- break;
- case 4:
- {
- bool bConsumed=false;
- if(buf_idx<sizeof(struct stm8_expander_message))
- {
- ((uint8_t *) &msg)[buf_idx]=value;
- bConsumed=true;
- buf_idx++;
- }
- if(buf_idx>=sizeof(struct stm8_expander_message))
- {
- switch(msg.message)
- {
- default:
- onmessage();
- sync_state=0;
- break;
- case message_set_config:
- if(bConsumed) break;
- if(buf_idx<sizeof(struct stm8_expander_message)+sizeof(struct stm8_expander_config))
- {
- ((uint8_t *) &cfg)[buf_idx-sizeof(struct stm8_expander_message)]=value;
- buf_idx++;
- }
- if(buf_idx>=sizeof(struct stm8_expander_message)+sizeof(struct stm8_expander_config))
- {
- onmessage();
- sync_state=0;
- }
- break;
- /* case message_tx_ir:
- if(bConsumed) break;
- if(buf_idx<sizeof(struct stm8_expander_message)+(msg.data2 << 8 | msg.data3))
- {
- ((uint8_t *) &stm8_temp_buffer)[buf_idx-sizeof(struct stm8_expander_message)]=value;
- buf_idx++;
- }
- if(buf_idx>=sizeof(struct stm8_expander_message)+(msg.data2 << 8 | msg.data3))
- {
- onmessage();
- sync_state=0;
- }
- break;*/
- }
- }
- }
- break;
- case 100: //receive pins
- {
- onpin(value);
- sync_state=0;
- }
- break;
- }
- }
Add Comment
Please, Sign In to add comment