1 /*
2  * Copyright (C) 2015-2020 Alibaba Group Holding Limited
3  */
4 #ifndef __HAL_MCU2CP_H__
5 #define __HAL_MCU2CP_H__
6 
7 #ifdef __cplusplus
8 extern "C" {
9 #endif
10 
11 #include "stdbool.h"
12 
13 enum HAL_MCU2CP_ID_T {
14     HAL_MCU2CP_ID_0,
15     HAL_MCU2CP_ID_1,
16 
17     HAL_MCU2CP_ID_QTY
18 };
19 
20 enum HAL_MCU2CP_MSG_TYPE_T {
21     HAL_MCU2CP_MSG_TYPE_0,
22     HAL_MCU2CP_MSG_TYPE_1,
23 
24     HAL_MCU2CP_MSG_TYPE_QTY
25 };
26 
27 typedef unsigned int (*HAL_MCU2CP_RX_IRQ_HANDLER)(const unsigned char *data, unsigned int len);
28 typedef void (*HAL_MCU2CP_TX_IRQ_HANDLER)(const unsigned char *data, unsigned int len);
29 
30 int hal_mcu2cp_open_mcu(enum HAL_MCU2CP_ID_T id, enum HAL_MCU2CP_MSG_TYPE_T type,
31                         HAL_MCU2CP_RX_IRQ_HANDLER rxhandler, HAL_MCU2CP_TX_IRQ_HANDLER txhandler, bool rx_flowctrl);
32 int hal_mcu2cp_open_cp (enum HAL_MCU2CP_ID_T id, enum HAL_MCU2CP_MSG_TYPE_T type,
33                         HAL_MCU2CP_RX_IRQ_HANDLER rxhandler, HAL_MCU2CP_TX_IRQ_HANDLER txhandler, bool rx_flowctrl);
34 
35 int hal_mcu2cp_close_mcu(enum HAL_MCU2CP_ID_T id,enum HAL_MCU2CP_MSG_TYPE_T type);
36 int hal_mcu2cp_close_cp (enum HAL_MCU2CP_ID_T id,enum HAL_MCU2CP_MSG_TYPE_T type);
37 
38 int hal_mcu2cp_start_recv_mcu(enum HAL_MCU2CP_ID_T id);
39 int hal_mcu2cp_start_recv_cp (enum HAL_MCU2CP_ID_T id);
40 
41 int hal_mcu2cp_stop_recv_mcu(enum HAL_MCU2CP_ID_T id);
42 int hal_mcu2cp_stop_recv_cp (enum HAL_MCU2CP_ID_T id);
43 
44 int hal_mcu2cp_send_mcu(enum HAL_MCU2CP_ID_T id, enum HAL_MCU2CP_MSG_TYPE_T type,
45                     const unsigned char *data, unsigned int len);
46 int hal_mcu2cp_send_cp (enum HAL_MCU2CP_ID_T id, enum HAL_MCU2CP_MSG_TYPE_T type,
47                     const unsigned char *data, unsigned int len);
48 
49 void hal_mcu2cp_rx_done_mcu(enum HAL_MCU2CP_ID_T id);
50 void hal_mcu2cp_rx_done_cp (enum HAL_MCU2CP_ID_T id);
51 
52 int hal_mcu2cp_opened_mcu(enum HAL_MCU2CP_ID_T id);
53 int hal_mcu2cp_opened_cp(enum HAL_MCU2CP_ID_T id);
54 
55 int hal_mcu2cp_local_irq_pending_mcu(enum HAL_MCU2CP_ID_T id);
56 int hal_mcu2cp_local_irq_pending_cp(enum HAL_MCU2CP_ID_T id);
57 
58 #ifdef __cplusplus
59 }
60 #endif
61 
62 #endif
63 
64