uint16_t TM_USART_Gets(USART_TypeDef* USARTx, char* buffer, uint16_t bufsize) { uint16_t i = 0; /* Check for any data on USART */ if (TM_USART_BufferEmpty(USARTx) || !TM_USART_FindCharacter(USARTx, '\n')) { return 0; } /* If available buffer size is more than 0 characters */ while (i < (bufsize - 1)) { /* We have available data */ buffer[i] = (char) TM_USART_Getc(USARTx); /* Check for end of string */ if (buffer[i] == '\n') { /* Done */ break; } /* Next index */ i++; } /* Add zero to the end of string */ buffer[++i] = 0; return (i); }
uint16_t TM_USART_Gets(USART_TypeDef* USARTx, char* buffer, uint16_t bufsize) { uint16_t i = 0; /* Get USART structure */ TM_USART_t* u = TM_USART_INT_GetUsart(USARTx); /* Check for any data on USART */ if ( u->Num == 0 || /*!< Buffer empty */ ( !TM_USART_FindCharacter(USARTx, u->StringDelimiter) && /*!< String delimiter not in buffer */ u->Num != u->Size /*!< Buffer is not full */ ) ) { /* Return 0 */ return 0; } /* If available buffer size is more than 0 characters */ while (i < (bufsize - 1)) { /* We have available data */ buffer[i] = (char) TM_USART_Getc(USARTx); /* Check for end of string */ if ((uint8_t) buffer[i] == (uint8_t) u->StringDelimiter) { /* Done */ break; } /* Increase */ i++; } /* Add zero to the end of string */ buffer[++i] = 0; /* Return number of characters in buffer */ return i; }