111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
		
			3.2 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
 | 
						|
#ifndef IOT_IPC_H
 | 
						|
#define IOT_IPC_H
 | 
						|
 | 
						|
#include "os_types.h"
 | 
						|
#include "iot_ipc_api.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/* max family number supported */
 | 
						|
#define IOT_IPC_FAMILY_MAX              5
 | 
						|
 | 
						|
/* max client number each family supported */
 | 
						|
#define IOT_IPC_CLIENT_PER_F_MAX        4
 | 
						|
 | 
						|
/* define ipc uart message command */
 | 
						|
#define IOT_IPC_UART_MSG_CMD_FWD        0
 | 
						|
#define IOT_IPC_UART_MSG_CMD_CALLBACK   1
 | 
						|
 | 
						|
/* pack for the structures in the whole file */
 | 
						|
#pragma pack(push)  /* save the pack status */
 | 
						|
#pragma pack(1)     /* 1 byte align */
 | 
						|
 | 
						|
/* define ipc uart message header structure for AMP image */
 | 
						|
typedef struct _iot_ipc_uart_msg_hdr {
 | 
						|
    /* start char, see IOT_IPC_MSG_START_CHAR */
 | 
						|
    uint8_t start_char_1;
 | 
						|
    /* command, see IOT_IPC_UART_MSG_CMD_XXX */
 | 
						|
    uint8_t cmd;
 | 
						|
    /* start char, see IOT_IPC_MSG_START_CHAR */
 | 
						|
    uint8_t start_char_2;
 | 
						|
    /* sequence */
 | 
						|
    uint8_t seq;
 | 
						|
    /* data length */
 | 
						|
    uint16_t len;
 | 
						|
    /* data */
 | 
						|
    uint8_t data[0];
 | 
						|
} iot_ipc_uart_msg_hdr;
 | 
						|
 | 
						|
/* define ipc uart fwd command header structure for AMP image */
 | 
						|
typedef struct _iot_ipc_uart_cmd_fwd_hdr {
 | 
						|
    /* IPC source family ID */
 | 
						|
    uint16_t s_f_id  :4,
 | 
						|
    /* IPC source client ID */
 | 
						|
             s_c_id  :4,
 | 
						|
    /* IPC destination family ID */
 | 
						|
             d_f_id  :4,
 | 
						|
    /* IPC destination client ID */
 | 
						|
             d_c_id  :4;
 | 
						|
    /* header reserve length for restoring pkt */
 | 
						|
    uint16_t hdr_rsvd_len;
 | 
						|
    /* tail reserve length for restoring pkt */
 | 
						|
    uint16_t tail_rsvd_len;
 | 
						|
    /* source packet pointer for fwd data */
 | 
						|
    uint32_t pkt_ptr;
 | 
						|
    /* fwd data */
 | 
						|
    uint8_t data[0];
 | 
						|
} iot_ipc_uart_cmd_fwd_hdr;
 | 
						|
 | 
						|
/* define ipc uart callback command header structure for AMP image */
 | 
						|
typedef struct _iot_ipc_uart_cmd_callback_t {
 | 
						|
    /* source packet pointer */
 | 
						|
    uint32_t pkt_ptr;
 | 
						|
} iot_ipc_uart_cmd_callback_t;
 | 
						|
 | 
						|
/* define ipc uart message tail structure for AMP image */
 | 
						|
typedef struct _iot_ipc_uart_msg_tail {
 | 
						|
    /* cs check from start_char_1 to data */
 | 
						|
    uint8_t cs;
 | 
						|
    /* end char, see IOT_IPC_MSG_END_CHAR */
 | 
						|
    uint8_t end_char;
 | 
						|
} iot_ipc_uart_msg_tail;
 | 
						|
 | 
						|
#pragma pack(pop)   /* restore the pack status */
 | 
						|
 | 
						|
/*
 | 
						|
 * iot_ipc_init() - init ipc module
 | 
						|
 *
 | 
						|
 * return:
 | 
						|
 *  0           --  for success case
 | 
						|
 *  othersie    --  error code
 | 
						|
 */
 | 
						|
uint32_t iot_ipc_init();
 | 
						|
 | 
						|
/*
 | 
						|
 * iot_ipc_deinit() - deinit ipc module
 | 
						|
 */
 | 
						|
void iot_ipc_deinit();
 | 
						|
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif /* IOT_IPC_H */ |