39 volatile uint8_t __esos_comm_tx_buff[ESOS_SERIAL_IN_EP_SIZE];
40 volatile uint8_t __esos_comm_rx_buff[ESOS_SERIAL_OUT_EP_SIZE];
44 volatile struct stTask __stChildTaskTx, __stChildTaskRx;
49 void __esos_InitCommSystem(
void) {
51 __pst_CB_Rx = &__st_CB_Rx;
52 __pst_CB_Tx = &__st_CB_Tx;
53 __esos_CB_Init( __pst_CB_Tx, __esos_comm_tx_buff, ESOS_SERIAL_IN_EP_SIZE);
54 __esos_CB_Init( __pst_CB_Rx, __esos_comm_rx_buff, ESOS_SERIAL_OUT_EP_SIZE);
56 __esos_hw_InitCommSystem();
60 uint8_t __esos_u8_GetMSBHexCharFromUint8(uint8_t u8_x) {
63 u8_c = (u8_x>>4)& 0xf;
64 if (u8_c > 9)
return(
'A'+u8_c-10);
65 else return(
'0'+u8_c);
68 uint8_t __esos_u8_GetLSBHexCharFromUint8(uint8_t u8_x) {
72 if (u8_c > 9)
return(
'A'+u8_c-10);
73 else return(
'0'+u8_c);
78 static uint8_t u8_localChar;
84 ESOS_TASK_WAIT_WHILE_CB_IS_FULL( __pst_CB_Tx );
89 __esos_hw_signal_start_tx();
96 static uint8_t au8_String[5];
101 au8_String[2] = __esos_u8_GetMSBHexCharFromUint8(u8_x);
102 au8_String[3] = __esos_u8_GetLSBHexCharFromUint8(u8_x);
105 ESOS_TASK_WAIT_UNTIL_CB_HAS_AVAILABLE_AT_LEAST( __pst_CB_Tx, 4);
106 __esos_CB_WriteUINT8Buffer( __pst_CB_Tx, &au8_String[0], 4 );
109 __esos_hw_signal_start_tx();
116 static uint8_t au8_String[5];
118 static uint8_t u8_digit;
124 au8_String[u8_digit++] =
'0' + u8_x / 100;
126 au8_String[u8_digit++] =
'0' + (u8_x % 100) / 10;
127 au8_String[u8_digit++] =
'0' + (u8_x % 10);
128 au8_String[u8_digit] = 0;
130 while (u8_c < u8_digit) {
132 ESOS_TASK_WAIT_WHILE_CB_IS_FULL( __pst_CB_Tx );
138 __esos_hw_signal_start_tx();
143 static uint8_t au8_String[11];
149 u8_c = (u32_x >> 24);
150 au8_String[2] = __esos_u8_GetMSBHexCharFromUint8(u8_c);
151 au8_String[3] = __esos_u8_GetLSBHexCharFromUint8(u8_c);
152 u8_c = (u32_x >> 16);
153 au8_String[4] = __esos_u8_GetMSBHexCharFromUint8(u8_c);
154 au8_String[5] = __esos_u8_GetLSBHexCharFromUint8(u8_c);
156 au8_String[6] = __esos_u8_GetMSBHexCharFromUint8(u8_c);
157 au8_String[7] = __esos_u8_GetLSBHexCharFromUint8(u8_c);
159 au8_String[8] = __esos_u8_GetMSBHexCharFromUint8(u8_c);
160 au8_String[9] = __esos_u8_GetLSBHexCharFromUint8(u8_c);
164 ESOS_TASK_WAIT_UNTIL_CB_HAS_AVAILABLE_AT_LEAST( __pst_CB_Tx, 10);
165 __esos_CB_WriteUINT8Buffer( __pst_CB_Tx, &au8_String[0], 10 );
168 __esos_hw_signal_start_tx();
173 ESOS_CHILD_TASK( __esos_OutCharBuffer, uint8_t* pu8_out, uint8_t u8_len) {
175 ESOS_TASK_WAIT_UNTIL_CB_HAS_AVAILABLE_AT_LEAST( __pst_CB_Tx, u8_len);
176 __esos_CB_WriteUINT8Buffer( __pst_CB_Tx, pu8_out, u8_len );
179 __esos_hw_signal_start_tx();
185 static char* psz_local;
189 while ( *psz_local ) {
191 ESOS_TASK_WAIT_WHILE_CB_IS_FULL( __pst_CB_Tx );
194 __esos_hw_signal_start_tx();
204 ESOS_CHILD_TASK( __esos_getBuffer, uint8_t* pau8_buff, uint8_t u8_size) {
206 static uint8_t* pau8_LocalPtr;
207 static uint8_t u8_LocalSize;
210 u8_LocalSize = u8_size;
211 pau8_LocalPtr = pau8_buff;
213 for (u8_i=0; u8_i<u8_LocalSize; u8_i++) {
216 pau8_LocalPtr[u8_i] = __esos_CB_ReadUINT8( __pst_CB_Rx );
236 for (u8_i=0; u8_i<(ESOS_SERIAL_OUT_EP_SIZE-1); u8_i++) {
239 pau8_buff[u8_i] = __esos_CB_ReadUINT8( __pst_CB_Rx );
240 if ((pau8_buff[u8_i] ==
'\n') || (pau8_buff[u8_i] ==
'\r') || (pau8_buff[u8_i] == 0))
break;
255 void __esos_unsafe_PutUint8(uint8_t u8_c) {
257 while (__ESOS_CB_IS_FULL( __pst_CB_Tx ));
262 __esos_hw_signal_start_tx();
266 void __esos_unsafe_PutString(
char* psz_in) {
269 while (__ESOS_CB_IS_FULL( __pst_CB_Tx ));
274 __esos_hw_signal_start_tx();
279 uint8_t __esos_unsafe_GetUint8(
void) {
281 while (__ESOS_CB_IS_EMPTY( __pst_CB_Rx ));
282 return __esos_CB_ReadUINT8( __pst_CB_Rx );