| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- #ifndef LUAT_CMUX_H
- #define LUAT_CMUX_H
- #include "luat_base.h"
- #include "luat_dbg.h"
- typedef struct luat_cmux
- {
- uint8_t state;
- uint8_t main_state;
- uint8_t shell_state;
- uint8_t log_state;
- uint8_t dbg_state;
- uint8_t download_state;
- }luat_cmux_t;
- #define LUAT_CMUX_CH_MAIN 0
- #define LUAT_CMUX_CH_SHELL 1
- #define LUAT_CMUX_CH_LOG 2
- #define LUAT_CMUX_CH_DBG 3
- #define LUAT_CMUX_CH_DOWNLOAD 4
- #define CMUX_HEAD_FLAG_BASIC (unsigned char)0xF9
- #define CMUX_HEAD_FLAG_ADV (unsigned char)0x7E
- #define CMUX_CONTROL_PF 16
- #define CMUX_ADDRESS_CR 2
- #define CMUX_ADDRESS_EA 1
- #define CMUX_FRAME_SABM 47
- #define CMUX_FRAME_UA 99
- #define CMUX_FRAME_DM 15
- #define CMUX_FRAME_DISC 67
- #define CMUX_FRAME_UIH 239
- #define CMUX_FRAME_UI 3
- #define CMUX_DHCL_MASK 63 /* DLCI number is port number, 63 is the mask of DLCI; C/R bit is 1 when we send data */
- #define CMUX_DATA_MASK 127 /* when data length is out of 127( 0111 1111 ), we must use two bytes to describe data length in the cmux frame */
- #define CMUX_HIGH_DATA_MASK 32640 /* 32640 ( 0111 1111 1000 0000 ), the mask of high data bits */
- #define CMUX_ADDRESS(buff) (buff[1])
- #define CMUX_ADDRESS_DLC(buff) (buff[1]>>2)
- #define CMUX_CONTROL(buff) (buff[2])
- #define CMUX_CONTROL_ISSABM(buff) (buff[2]==(CMUX_FRAME_SABM | CMUX_CONTROL_PF))
- #define CMUX_CONTROL_ISUA(buff) (buff[2]==(CMUX_FRAME_UA & ~CMUX_CONTROL_PF))
- #define CMUX_CONTROL_ISDM(buff) (buff[2]==(CMUX_FRAME_DM & ~CMUX_CONTROL_PF))
- #define CMUX_CONTROL_ISDISC(buff) (buff[2]==(CMUX_FRAME_DISC | CMUX_CONTROL_PF))
- #define CMUX_CONTROL_ISUIH(buff) (buff[2]==(CMUX_FRAME_UIH & ~CMUX_CONTROL_PF))
- #define CMUX_CONTROL_ISUI(buff) (buff[2]==(CMUX_FRAME_UI & ~CMUX_CONTROL_PF))
- #define CMUX_BUFFER_SIZE 1024
- extern uint8_t echo_enable;
- extern uint8_t cmux_state;
- extern uint8_t cmux_main_state;
- extern uint8_t cmux_shell_state;
- extern uint8_t cmux_log_state;
- extern uint8_t cmux_dbg_state;
- extern uint8_t cmux_download_state;
- void luat_cmux_write(int port, uint8_t control,char* buff, size_t len);
- void luat_cmux_read(unsigned char* buff,size_t len);
- #endif
|