blob: 01367a84579d8913f05f4cbd3ad49aa0be545bde [file] [log] [blame]
/*
* Copyright 2017 NXP
* All rights reserved.
*
*
* SPDX-License-Identifier: BSD-3-Clause
*
*/
#ifndef _FSL_IO_H
#define _FSL_IO_H
#include "fsl_common.h"
/*******************************************************************************
* Definitions
******************************************************************************/
/*! @brief define a notify callback for IO
* @param size , transfer data size.
* @param rx, indicate a rx transfer is success.
* @param tx, indicate a tx transfer is success.
*/
typedef void (*notify)(size_t *size, bool rx, bool tx);
/*! @brief State structure storing io. */
typedef struct io_State
{
void *ioBase; /*!< Base of the IP register. */
uint8_t ioType; /*!< device type */
#ifdef DEBUG_CONSOLE_TRANSFER_NON_BLOCKING
notify callBack; /*!< define the callback function for buffer */
#endif
} io_state_t;
/*******************************************************************************
* Prototypes
******************************************************************************/
#if defined(__cplusplus)
extern "C" {
#endif /* __cplusplus */
/*!
* @brief io init function.
*
* Call this function to init IO.
*
* @param io configuration pointer
* @param baudRate baud rate
* @param clkSrcFreq clock freq
* @param ringbuffer used to receive character
*/
void IO_Init(io_state_t *io, uint32_t baudRate, uint32_t clkSrcFreq, uint8_t *ringBuffer);
/*!
* @brief Deinit IO.
*
* Call this function to Deinit IO.
*
* @return deinit status
*/
status_t IO_Deinit(void);
/*!
* @brief io transfer function.
*
* Call this function to transfer log.
* Print log:
* @code
* IO_Transfer(ch, size, true);
* @endcode
* Scanf log:
* @code
* IO_Transfer(ch, size, false);
* @endcode
*
* @param ch transfer buffer pointer
* @param size transfer size
* @param tx indicate the transfer is TX or RX
*/
status_t IO_Transfer(uint8_t *ch, size_t size, bool tx);
/*!
* @brief io wait idle.
*
* Call this function to wait the io idle
*
* @return Indicates whether wait idle was successful or not.
*/
status_t IO_WaitIdle(void);
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* _FSL_IO_H */