50 void __esos_InitCommSystem(
void);
61 void __esos_unsafe_PutUint8(
uint8_t u8_c);
62 void __esos_unsafe_PutString(
char* psz_in);
63 uint8_t __esos_unsafe_GetUint8(
void);
66 #define ESOS_COMM_SYS_USB 0x80 67 #define ESOS_COMM_SYS_SERIAL 0x00 68 #define ESOS_COMM_SYS_SERIAL_REV (ESOS_COMM_SYS_SERIAL + 0x01) 70 #define ESOS_SERIAL_OUT_EP_SIZE 64 72 #define ESOS_SERIAL_IN_EP_SIZE 64 77 #define __ESOS_COMM_TXFIFO_PREP() \ 78 u16_tmp = __st_TxBuffer.u16_Head; \ 80 if (u16_tmp == ESOS_SERIAL_IN_EP_SIZE) u16_tmp = 0 82 #define __ESOS_COMM_WRITE_TXFIFO( u8_out ) \ 83 __st_TxBuffer.pau8_Data[u16_tmp] = (u8_out); \ 84 __st_TxBuffer.u16_Head = u16_tmp 113 #define GET_ESOS_COMM_IN_DATA_LEN() ((__st_RxBuffer.u16_Head>=__st_RxBuffer.u16_Tail)?(__st_RxBuffer.u16_Head-__st_RxBuffer.u16_Tail):(__st_RxBuffer.u16_Length-__st_RxBuffer.u16_Tail+__st_RxBuffer.u16_Head)) 125 #define IS_ESOS_COMM_GOT_EXACTLY_DATA_BYTES(x) (GET_ESOS_COMM_IN_DATA_LEN() == x) 137 #define IS_ESOS_COMM_GOT_AT_LEAST_DATA_BYTES(x) (GET_ESOS_COMM_IN_DATA_LEN() >= x) 148 #define FLUSH_ESOS_COMM_IN_DATA() (__st_RxBuffer.u16_Head = __st_RxBuffer.u16_Tail) 159 #define IS_ESOS_COMM_GOT_IN_DATA() (__st_RxBuffer.u16_Head != __st_RxBuffer.u16_Tail) 179 #define PEEK_ESOS_COMM_IN_DATA(x) ( __st_RxBuffer.pau8_Data[((__st_RxBuffer.u16_Tail+1+x)% ESOS_SERIAL_OUT_EP_SIZE)] ) 197 #define PEEK_ESOS_COMM_IN_LATEST_DATA() ( __st_RxBuffer.pau8_Data[__st_RxBuffer.u16_Head] ) 208 #define IS_ESOS_COMM_READY_OUT_DATA() (__st_TxBuffer.u16_Head != __st_TxBuffer.u16_Tail) 217 #define ESOS_TASK_WAIT_ON_AVAILABLE_IN_COMM() \ 218 ESOS_TASK_WAIT_WHILE( __esos_IsSystemFlagSet( __ESOS_SYS_COMM_RX_IS_BUSY ) ); \ 219 __esos_SetSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY ) 228 #define ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM() \ 229 ESOS_TASK_WAIT_WHILE( __esos_IsSystemFlagSet( __ESOS_SYS_COMM_TX_IS_BUSY ) ); \ 230 __esos_SetSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY ) 241 #define ESOS_TASK_SIGNAL_BUSY_IN_COMM() __esos_SetSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY ) 253 #define ESOS_TASK_SIGNAL_BUSY_OUT_COMM() __esos_SetSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY ) 263 #define ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY ) 271 #define ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY ) 282 #define ESOS_TASK_RELEASE_IN_COMM() ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM() 292 #define ESOS_TASK_RELEASE_OUT_COMM() ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM() 309 #define ESOS_TASK_WAIT_ON_GET_UINT8( u8_in ) \ 310 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, &(u8_in), 1 ) 326 #define ESOS_TASK_WAIT_ON_GET_U8BUFFER( pau8_in, u8_size) \ 327 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskRx, __esos_getBuffer, (pau8_in), (u8_size) ) 342 #define ESOS_TASK_WAIT_ON_GET_UINT16( u16_in ) \ 343 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8_t*) &(u16_in), 2 ) 358 #define ESOS_TASK_WAIT_ON_GET_UINT32( u32_in ) \ 359 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8_t*) &(u32_in), 4 ) 381 #define ESOS_TASK_WAIT_ON_GET_STRING( pau8_in ) \ 382 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getString, (pau8_in) ) 392 #define ESOS_TASK_WAIT_ON_SEND_UINT8( u8_out) \ 393 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskTx, __esos_OutChar, (u8_out) ) 404 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_HEX_STRING( u8_out) \ 405 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsHexString, (u8_out) ) 417 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_DEC_STRING( u8_out) \ 418 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsDecString,(u8_out)) 428 #define ESOS_TASK_WAIT_ON_SEND_UINT32_AS_HEX_STRING( u32_out) \ 429 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint32AsHexString, (u32_out) ) 439 #define ESOS_TASK_WAIT_ON_SEND_STRING( psz_out) \ 440 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutString, (psz_out) ) 451 #define ESOS_TASK_WAIT_ON_SEND_U8BUFFER( pau8_out, u8_size) \ 452 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutCharBuffer, (pau8_out), (u8_size) ) 463 typedef struct _ESOS_COMM_BUFF_DSC {
471 extern volatile uint8_t __esos_comm_tx_buff[ESOS_SERIAL_IN_EP_SIZE];
472 extern volatile uint8_t __esos_comm_rx_buff[ESOS_SERIAL_OUT_EP_SIZE];
474 extern volatile struct stTask __stChildTaskTx, __stChildTaskRx;
498 void __esos_InitCommSystem(
void);
501 void __esos_unsafe_PutUint8(
uint8_t u8_c);
502 void __esos_unsafe_PutString(
char* psz_in);
503 uint8_t __esos_unsafe_GetUint8(
void);
506 void __esos_hw_signal_start_tx(
void);
507 void __esos_hw_signal_stop_tx(
void);
508 void __esos_hw_InitCommSystem(
void);
512 #endif // ESOS_COMM_H uint8_t esos_GetCommSystemMaxInDataLen(void)
#define ESOS_CHILD_TASK(taskname,...)
uint8_t esos_GetCommSystemVersion(void)
uint8_t esos_GetCommSystemMaxOutDataLen(void)
unsigned char uint8_t
An abbreviation for an 8-bit unsigned integer.