| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104 |
- #include "pipe.h"
- //#include "ch57x_common.h"
- #include "hidreport.h"
- #include "api.h"
- #if DEBUG == Debug_USB
- Pipe_t debug_pipe = {0,0};
- #endif
- Pipe_t sys_pipe;
- Pipe_t coor_pipe;
- Pipe_t uart_cmd_pipe;
- extern UINT8 print_log;
- void pipe_init(Pipe_t *pipe)
- {
- pipe->tail = pipe->header = 0;
- }
- UINT8 pipe_read(Pipe_t *pipe, UINT8 * value, UINT8 len)
- {
- GLOBAL_INT_DISABLE();
- UINT8 cnt = 0;
- do
- {
- if(pipe->tail==pipe->header)
- {
- break;
- }
- value[cnt++] = pipe->buf[pipe->tail];
- pipe->tail = (pipe->tail+1)&OFFSET_MASK;//%BUF_MAX;
- }while(--len);
- GLOBAL_INT_RESTORE();
- return cnt;
- }
- void pipe_write_c(Pipe_t *pipe, UINT8 value)
- {
- GLOBAL_INT_DISABLE();
- pipe->buf[pipe->header] = value;
- pipe->header = (pipe->header+1)&OFFSET_MASK;//%BUF_MAX;
- if(pipe->tail==pipe->header)
- {
- pipe->tail = (pipe->tail+1)&OFFSET_MASK;//%BUF_MAX;
- }
- GLOBAL_INT_RESTORE();
- }
- void pipe_write(Pipe_t *pipe, UINT8* value, UINT8 len)
- {
- UINT8 cnt = 0;
- GLOBAL_INT_DISABLE();
- UINT16 res = pipe->tail <= pipe->header ? pipe->tail + BUF_MAX - pipe->header : pipe->tail - pipe->header;
- if(res < len)
- {
- GLOBAL_INT_RESTORE();
- return;
- }
- while(cnt < len)
- {
- pipe->buf[pipe->header] = value[cnt++];
- pipe->header = (pipe->header+1)&OFFSET_MASK;//%BUF_MAX;
- }
- GLOBAL_INT_RESTORE();
- }
- void pipe_write_t(Pipe_t *pipe, UINT8* value, UINT8 len, COMMAND_TYPE cmd)
- {
- GLOBAL_INT_DISABLE();
- UINT8 cnt = 0;
- UINT16 res = pipe->tail <= pipe->header ? pipe->tail + BUF_MAX - pipe->header : pipe->tail - pipe->header;
- if(res < len+2)
- {
- GLOBAL_INT_RESTORE();
- return;
- }
- pipe_write_c(pipe, len);
- pipe_write_c(pipe, cmd);
- while(cnt < len)
- {
- pipe->buf[pipe->header] = value[cnt++];
- pipe->header = (pipe->header+1)&OFFSET_MASK;//%BUF_MAX;
- }
- GLOBAL_INT_RESTORE();
- }
|