47 void __esos_InitCommSystem(
void);
48 uint8_t __esos_u8_GetMSBHexCharFromUint8(uint8_t u8_x);
49 uint8_t __esos_u8_GetLSBHexCharFromUint8(uint8_t u8_x);
54 ESOS_CHILD_TASK( __esos_OutCharBuffer, uint8_t* pu8_out, uint8_t u8_len);
55 ESOS_CHILD_TASK( __esos_getBuffer, uint8_t* pau8_buff, uint8_t u8_size);
58 void __esos_unsafe_PutUint8(uint8_t u8_c);
59 void __esos_unsafe_PutString(
char* psz_in);
60 uint8_t __esos_unsafe_GetUint8(
void);
63 #define ESOS_COMM_SYS_USB 0x80
64 #define ESOS_COMM_SYS_SERIAL 0x00
65 #define ESOS_COMM_SYS_SERIAL_REV (ESOS_COMM_SYS_SERIAL + 0x01)
67 #define ESOS_SERIAL_OUT_EP_SIZE 64
69 #define ESOS_SERIAL_IN_EP_SIZE 64
70 #define DEFAULT_BAUDRATE 57600
75 #define __ESOS_COMM_TXFIFO_PREP() \
76 do{u16_tmp = __st_TxBuffer.u16_Head; \
78 if (u16_tmp == ESOS_SERIAL_IN_EP_SIZE) u16_tmp = 0; \
81 #define __ESOS_COMM_WRITE_TXFIFO( u8_out ) \
82 do{__st_TxBuffer.pau8_Data[u16_tmp] = (u8_out); \
83 __st_TxBuffer.u16_Head = u16_tmp;} while (0)
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 )
238 #define ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_RX_IS_BUSY )
246 #define ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM() __esos_ClearSystemFlag( __ESOS_SYS_COMM_TX_IS_BUSY )
257 #define ESOS_TASK_RELEASE_IN_COMM() ESOS_TASK_SIGNAL_AVAILABLE_IN_COMM()
267 #define ESOS_TASK_RELEASE_OUT_COMM() ESOS_TASK_SIGNAL_AVAILABLE_OUT_COMM()
284 #define ESOS_TASK_WAIT_ON_GET_UINT8( u8_in ) \
285 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, &(u8_in), 1 )
301 #define ESOS_TASK_WAIT_ON_GET_U8BUFFER( pau8_in, u8_size) \
302 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskRx, __esos_getBuffer, (pau8_in), (u8_size) )
317 #define ESOS_TASK_WAIT_ON_GET_UINT16( u16_in ) \
318 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8_t*) &(u16_in), 2 )
333 #define ESOS_TASK_WAIT_ON_GET_UINT32( u32_in ) \
334 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getBuffer, (uint8_t*) &(u32_in), 4 )
356 #define ESOS_TASK_WAIT_ON_GET_STRING( pau8_in ) \
357 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskRx, __esos_getString, (pau8_in) )
367 #define ESOS_TASK_WAIT_ON_SEND_UINT8( u8_out) \
368 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE) &__stChildTaskTx, __esos_OutChar, (u8_out) )
379 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_HEX_STRING( u8_out) \
380 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsHexString, (u8_out) )
392 #define ESOS_TASK_WAIT_ON_SEND_UINT8_AS_DEC_STRING( u8_out) \
393 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint8AsDecString,(u8_out))
403 #define ESOS_TASK_WAIT_ON_SEND_UINT32_AS_HEX_STRING( u32_out) \
404 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutUint32AsHexString, (u32_out) )
414 #define ESOS_TASK_WAIT_ON_SEND_STRING( psz_out) \
415 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutString, (psz_out) )
426 #define ESOS_TASK_WAIT_ON_SEND_U8BUFFER( pau8_out, u8_size) \
427 ESOS_TASK_SPAWN_AND_WAIT( (ESOS_TASK_HANDLE)&__stChildTaskTx, __esos_OutCharBuffer, (pau8_out), (u8_size) )
434 extern volatile uint8_t __esos_comm_tx_buff[ESOS_SERIAL_IN_EP_SIZE];
435 extern volatile uint8_t __esos_comm_rx_buff[ESOS_SERIAL_OUT_EP_SIZE];
436 extern volatile struct stTask __stChildTaskTx, __stChildTaskRx;
460 void __esos_InitCommSystem(
void);
463 void __esos_unsafe_PutUint8(uint8_t u8_c);
464 void __esos_unsafe_PutString(
char* psz_in);
465 uint8_t __esos_unsafe_GetUint8(
void);
468 void __esos_hw_signal_start_tx(
void);
469 void __esos_hw_signal_stop_tx(
void);
470 void __esos_hw_InitCommSystem(
void);
474 #endif // ESOS_COMM_H