/******************************************************************************
函数名称：	shm_comm_packet_write
函数版本：	01.01
创建作者：	zhaoyang
创建日期：	2025-08-25
函数说明：	向共享内存写入数据(自动处理A,B,crc).
参数说明：	
addr：共享内存的地址
data：写入数据
len:写入数据长度

返回值：	成功返回写入数据的长度, 失败返回-1
修改记录：	

使用说明：
输入参数data为带有A,B和crc的结构体，len为整个结构体的长度
应用层不需要理会A,B和crc.

*/
#ifndef __BSP_PACKET_H__
#define __BSP_PACKET_H__

#include <stdint.h>


int shm_comm_packet_write(uint32_t addr, uint8_t *data, uint32_t len);

/******************************************************************************
函数名称：	shm_comm_packet_read
函数版本：	01.01
创建作者：	zhaoyang
创建日期：	2025-08-25
函数说明：	读取共享内存的数据(自动处理A,B,crc).
参数说明：	
addr：所以读取共享内存的地址
len：需要读取数据的长度
out_data：输出buf
out_data_size:输出buf的长度

返回值：	
	成功返回读取数据的长度, 
	失败返回 <0

修改记录：	

使用说明：
输入参数out_data为带有A,B和crc的结构体，len为整个结构体的长度
应用层不需要理会A,B和crc.

*/
int shm_comm_packet_read(uint32_t addr, uint32_t len, uint8_t *out_data, uint32_t out_data_size);

/******************************************************************************
函数名称：	shm_comm_packet_read_noABcrc
函数版本：	01.01
创建作者：	zhaoyang
创建日期：	2025-08-25
函数说明：	读取共享内存的数据(结构体不存在A,B,crc).
参数说明：	
addr：所以读取共享内存的地址
len：需要读取数据的长度
out_data：输出buf
out_data_size:输出buf的长度

返回值：	
	成功返回读取数据的长度, 
	失败返回 <0
修改记录：	

使用说明：
 如：Ad7616采样点结构
 本函数只处理不含有A,B和crc的结构体

*/
int shm_comm_packet_read_noABcrc(uint32_t addr, uint32_t len, uint8_t *out_data, uint32_t out_data_size);

void shm_comm_test(void);

#endif
