Add Serial_IsSendReady() and Serial_IsSendComplete() serial driver API functions.
This commit is contained in:
		
							parent
							
								
									0c00c2aaa3
								
							
						
					
					
						commit
						3d818fbb86
					
				
					 3 changed files with 57 additions and 2 deletions
				
			
		|  | @ -210,14 +210,39 @@ | |||
| 				return ((UCSR1A & (1 << RXC1)) ? true : false); | ||||
| 			} | ||||
| 
 | ||||
| 			/** Indicates whether there is hardware buffer space for a new transmit on the USART. This
 | ||||
| 			 *  function can be used to determine if a call to \ref Serial_SendByte() will block in advance. | ||||
| 			 * | ||||
| 			 *  \return Boolean \c true if a character can be queued for transmission immediately, \c false otherwise. | ||||
| 			 */ | ||||
| 			static inline bool Serial_IsSendReady(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; | ||||
| 			static inline bool Serial_IsSendReady(void) | ||||
| 			{ | ||||
| 				return ((UCSR1A & (1 << UDRE1)) ? true : false); | ||||
| 			} | ||||
| 
 | ||||
| 			/** Indicates whether the hardware USART transmit buffer is completely empty, indicating all
 | ||||
| 			 *  pending transmissions have completed. | ||||
| 			 * | ||||
| 			 *  \return Boolean \c true if no characters are buffered for transmission, \c false otherwise. | ||||
| 			 */ | ||||
| 			static inline bool Serial_IsSendComplete(void) ATTR_WARN_UNUSED_RESULT ATTR_ALWAYS_INLINE; | ||||
| 			static inline bool Serial_IsSendComplete(void) | ||||
| 			{ | ||||
| 				return ((UCSR1A & (1 << TXC1)) ? true : false); | ||||
| 			} | ||||
| 
 | ||||
| 			/** Transmits a given byte through the USART.
 | ||||
| 			 * | ||||
| 			 *  \note If no buffer space is available in the hardware USART, this function will block. To check if | ||||
| 			 *        space is available before calling this function, see \ref Serial_IsSendReady(). | ||||
| 			 * | ||||
| 			 *  \param[in] DataByte  Byte to transmit through the USART. | ||||
| 			 */ | ||||
| 			static inline void Serial_SendByte(const char DataByte) ATTR_ALWAYS_INLINE; | ||||
| 			static inline void Serial_SendByte(const char DataByte) | ||||
| 			{ | ||||
| 				while (!(UCSR1A & (1 << UDRE1))); | ||||
| 				while (!(Serial_IsSendReady())); | ||||
| 				UDR1 = DataByte; | ||||
| 			} | ||||
| 
 | ||||
|  |  | |||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue
	
	 Dean Camera
						Dean Camera