/*****************************************************************************/ /** * Description: System bus protocol head file. * * Date: 2023-05-06 10:12 * Last Edit Time: [2023-05-06 10:13] * * Revisions: Rev 0.0 * History: * [2023-05-06]: Initial version. * * Copyright(c) 2021 Beijing Institute of Technology. * ******************************************************************************/ #ifndef __SYSTEMBUS_H_ #define __SYSTEMBUS_H_ /***************************** Include Files *********************************/ #include "systembus_uart.h" // SystemBus UART driver #include "circ_queue.h" #include #include /************************** Constant Definitions *****************************/ /************************** Data Type Definitions ****************************/ // Definition of SystemBus instance. typedef struct { uintptr_t baseAddr; uint32_t txQueueMax; uint32_t rxQueueMax; } SYSBUS_CONFIG; typedef struct { SYSBUS_CONFIG config; SYSBUS_UART *uartInst; CIRC_QUEUE *txQueue; CIRC_QUEUE *rxQueue; bool isRxDone; bool isTxDone; } SYSBUS; /************************** Function Prototypes ******************************/ int32_t SystemBus_Init(SYSBUS **instPtr, SYSBUS_CONFIG *config); int32_t SystemBus_HandleCmd(SYSBUS *instPtr); int32_t SystemBus_MakeResp(SYSBUS *instPtr); int32_t SystemBus_TxIntrHandler(SYSBUS *instPtr); int32_t SystemBus_RxIntrHandler(SYSBUS *instPtr); bool SystemBus_IsReqPendding(SYSBUS *instPtr); bool SystemBus_IsRsqPendding(SYSBUS *instPtr); bool SystemBus_IsTxBusy(SYSBUS *instPtr); bool SystemBus_IsRxBusy(SYSBUS *instPtr); #endif //__SYSTEMBUS_H_