/** * \brief Asynchronous buffer write * * Sets up the driver to write a given buffer over the USART. If registered and * enabled, a callback function will be called. * * \param[in] module Pointer to USART software instance struct * \param[in] tx_data Pointer do data buffer to transmit * \param[in] length Length of the data to transmit * * \returns Status of the operation * \retval STATUS_OK If operation was completed successfully. * \retval STATUS_BUSY If operation was not completed, due to the * USART module being busy * \retval STATUS_ERR_INVALID_ARG If operation was not completed, due to invalid * arguments * \retval STATUS_ERR_DENIED If the transmitter is not enabled */ enum status_code usart_write_buffer_job( struct usart_module *const module, uint8_t *tx_data, uint16_t length) { /* Sanity check arguments */ Assert(module); if (length == 0) { return STATUS_ERR_INVALID_ARG; } /* Check if the USART transmitter is busy */ if (module->remaining_tx_buffer_length > 0) { return STATUS_BUSY; } /* Check that the receiver is enabled */ if (!(module->transmitter_enabled)) { return STATUS_ERR_DENIED; } /* Issue internal asynchronous write */ _usart_write_buffer(module, tx_data, length); return STATUS_OK; }
/** * \brief Asynchronous write a single char * * Sets up the driver to write the data given. If registered and enabled, * a callback function will be called when the transmit is completed. * * \param[in] module Pointer to USART software instance struct * \param[in] tx_data Data to transfer * * \returns Status of the operation. * \retval STATUS_OK If operation was completed * \retval STATUS_BUSY If operation was not completed, due to the * USART module being busy * \retval STATUS_ERR_DENIED If the transmitter is not enabled */ enum status_code usart_write_job( struct usart_module *const module, const uint16_t *tx_data) { /* Sanity check arguments */ Assert(module); Assert(tx_data); /* Check that the transmitter is enabled */ if (!(module->transmitter_enabled)) { return STATUS_ERR_DENIED; } /* Call internal write buffer function with length 1 */ return _usart_write_buffer(module, (uint8_t *)tx_data, 1); }
/** * \brief Asynchronous write a single char * * Sets up the driver to write the data given. If registered and enabled, * a callback function will be called when the transmit is completed. * * \param[in] module Pointer to USART software instance struct * \param[in] tx_data Data to transfer * * \returns Status of the operation * \retval STATUS_OK If operation was completed * \retval STATUS_BUSY If operation was not completed, due to the * USART module being busy * \retval STATUS_ERR_DENIED If the transmitter is not enabled */ enum status_code usart_write_job( struct usart_module *const module, const uint16_t tx_data) { /* Sanity check arguments */ Assert(module); Assert(module->hw); /* Check if the USART transmitter is busy */ if (module->remaining_tx_buffer_length > 0) { return STATUS_BUSY; } /* Check that the transmitter is enabled */ if (!(module->transmitter_enabled)) { return STATUS_ERR_DENIED; } /* Call internal write buffer function with length 1 */ _usart_write_buffer(module, (uint8_t *)&tx_data, 1); return STATUS_OK; }