50 void __esos_InitCommSystem(
void);
60 void __esos_unsafe_PutUint8(
uint8_t u8_c);
61 void __esos_unsafe_PutString(
char* psz_in);
62 uint8_t __esos_unsafe_GetUint8(
void);
65 #define ESOS_COMM_SYS_USB 0x80
66 #define ESOS_COMM_SYS_SERIAL 0x00
67 #define ESOS_COMM_SYS_SERIAL_REV (ESOS_COMM_SYS_SERIAL + 0x01)
69 #define ESOS_SERIAL_OUT_EP_SIZE 64
71 #define ESOS_SERIAL_IN_EP_SIZE 64
76 #define __ESOS_COMM_TXFIFO_PREP() \
77 u16_tmp = __st_TxBuffer.u16_Head; \
79 if (u16_tmp == ESOS_SERIAL_IN_EP_SIZE) u16_tmp = 0
81 #define __ESOS_COMM_WRITE_TXFIFO( u8_out ) \
82 __st_TxBuffer.pau8_Data[u16_tmp] = (u8_out); \
83 __st_TxBuffer.u16_Head = u16_tmp
112 #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))
124 #define IS_ESOS_COMM_GOT_EXACTLY_DATA_BYTES(x) (GET_ESOS_COMM_IN_DATA_LEN() == x)
136 #define IS_ESOS_COMM_GOT_AT_LEAST_DATA_BYTES(x) (GET_ESOS_COMM_IN_DATA_LEN() >= x)
147 #define FLUSH_ESOS_COMM_IN_DATA() (__st_RxBuffer.u16_Head = __st_RxBuffer.u16_Tail)
158 #define IS_ESOS_COMM_GOT_IN_DATA() (__st_RxBuffer.u16_Head != __st_RxBuffer.u16_Tail)
178 #define PEEK_ESOS_COMM_IN_DATA(x) ( __st_RxBuffer.pau8_Data[((__st_RxBuffer.u16_Tail+1+x)% ESOS_SERIAL_OUT_EP_SIZE)] )
196 #define PEEK_ESOS_COMM_IN_LATEST_DATA() ( __st_RxBuffer.pau8_Data[__st_RxBuffer.u16_Head] )
207 #define IS_ESOS_COMM_READY_OUT_DATA() (__st_TxBuffer.u16_Head != __st_TxBuffer.u16_Tail)
216 #define ESOS_TASK_WAIT_ON_AVAILABLE_IN_COMM() \
217 ESOS_TASK_WAIT_WHILE( __esos_IsSystemFlagSet( __ESOS_SYS_COMM_RX_IS_BUSY ) ); \
218 __esos_SetSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY )
227 #define ESOS_TASK_WAIT_ON_AVAILABLE_OUT_COMM() \
228 ESOS_TASK_WAIT_WHILE( __esos_IsSystemFlagSet( __ESOS_SYS_COMM_TX_IS_BUSY ) ); \
229 __esos_SetSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY )
240 #define ESOS_TASK_SIGNAL_BUSY_IN_COMM() __esos_SetSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY )
252 #define ESOS_TASK_SIGNAL_BUSY_OUT_COMM() __esos_SetSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY )
262 #define ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY )
270 #define ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY )
281 #define ESOS_TASK_RELEASE_IN_COMM() ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM()
291 #define ESOS_TASK_RELEASE_OUT_COMM() ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM()
308 #define ESOS_TASK_WAIT_ON_GET_UINT8( u8_in ) \
309 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, &(u8_in), 1 )
325 #define ESOS_TASK_WAIT_ON_GET_U8BUFFER( pau8_in, u8_size) \
326 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskRx, __esos_getBuffer, (pau8_in), (u8_size) )
341 #define ESOS_TASK_WAIT_ON_GET_UINT16( u16_in ) \
342 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8*) &(u16_in), 2 )
357 #define ESOS_TASK_WAIT_ON_GET_UINT32( u32_in ) \
358 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8*) &(u32_in), 4 )
380 #define ESOS_TASK_WAIT_ON_GET_STRING( pau8_in ) \
381 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getString, (pau8_in) )
391 #define ESOS_TASK_WAIT_ON_SEND_UINT8( u8_out) \
392 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskTx, __esos_OutChar, (u8_out) )
403 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_HEX_STRING( u8_out) \
404 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsHexString, (u8_out) )
416 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_DEC_STRING( u8_out) \
417 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsDecString,(u8_out))
427 #define ESOS_TASK_WAIT_ON_SEND_UINT32_AS_HEX_STRING( u32_out) \
428 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint32AsHexString, (u32_out) )
438 #define ESOS_TASK_WAIT_ON_SEND_STRING( psz_out) \
439 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutString, (psz_out) )
450 #define ESOS_TASK_WAIT_ON_SEND_U8BUFFER( pau8_out, u8_size) \
451 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutCharBuffer, (pau8_out), (u8_size) )
462 typedef struct _ESOS_COMM_BUFF_DSC {
470 extern volatile uint8_t __esos_comm_tx_buff[ESOS_SERIAL_IN_EP_SIZE];
471 extern volatile uint8_t __esos_comm_rx_buff[ESOS_SERIAL_OUT_EP_SIZE];
473 extern volatile struct stTask __stChildTaskTx, __stChildTaskRx;
497 void __esos_InitCommSystem(
void);
500 void __esos_unsafe_PutUint8(
uint8_t u8_c);
501 void __esos_unsafe_PutString(
char* psz_in);
502 uint8_t __esos_unsafe_GetUint8(
void);
505 void __esos_hw_signal_start_tx(
void);
506 void __esos_hw_signal_stop_tx(
void);
507 void __esos_hw_InitCommSystem(
void);
511 #endif // ESOS_COMM_H