/******************************************************************************
版权所有：	
文件名称：	can_app.h
文件版本：	01.01
创建作者:	   sunxi
创建日期：	2013-02-28
功能说明：	can传输应用层
其它说明：
修改记录：
*/
#ifndef _CAN_APP_H
#define _CAN_APP_H
/*------------------------------- 头文件 --------------------------------------
*/


/*------------------------------- 宏定义 --------------------------------------
*/
// 帧类型，带优先级，数字越小，优先级越高
// 分为4大类，每类64个
// !!!!!!!!!!!!!同一大类的帧不能在不能的中断级别中发送，切记!!!!!!!!!!!!!!!
// 开入开出类
#define CAN_FRAME_TYPE_DO_ON			0x01 // 开出，			发送:5ms中断
#define CAN_FRAME_TYPE_DO_OFF			0x02 // 开出，			发送:5ms中断
#define CAN_FRAME_TYPE_DI_INIT			0x21 // 遥信板前32个遥信	接收:can中断
#define CAN_FRAME_TYPE_DI_ON			0x22 // 遥信板前32个遥信	接收:can中断
#define CAN_FRAME_TYPE_DI_OFF			0x23 // 遥信板前32个遥信	接收:can中断
#define CAN_FRAME_TYPE_DI_INIT1			0x24 // 遥信板后32个遥信	接收:can中断
#define CAN_FRAME_TYPE_DI_ON1			0x25 // 遥信板后32个遥信	接收:can中断
#define CAN_FRAME_TYPE_DI_OFF1			0x26 // 遥信板后32个遥信	接收:can中断

// 对时类
#define CAN_FRAME_TYPE_TIMING			0x40 // 对时/召子板信息，发送:5ms中断

// 控制类
#define CAN_FRAME_TYPE_SB_INFO			0x81 // 子板应答信息，					接收:can中断
#define CAN_FRAME_TYPE_ARGUMENT_DO		0x82 // 开出参数设置，	发送:主循环中发送
#define CAN_FRAME_TYPE_ARGUMENT_DI		0x83 // 遥信参数设置，	发送:主循环中发送
#define CAN_FRAME_TYPE_ARGUMENT_LED		0x84 // LED参数设置，	发送:主循环中发送
#define CAN_FRAME_TYPE_ARGUMENT_DO_2	0x85 // 拓展开出参数设置，	发送:主循环中发送

// 其它类
#define CAN_FRAME_TYPE_PROGRAM_UPDATE 	0xc0 // 子板程序更新，	发送:主循环中；	接收:主循环中
#define CAN_FRAME_TYPE_PROGRAM_READ 	0xc1 // 子板程序读取，	发送:主循环中；	接收:主循环中
#define CAN_FRAME_TYPE_LED				0xc2 // 告警LED灯，		发送:主循环中
#define CAN_FRAME_TYPE_RESET			0xc3 // 复位所有子板,	发送:主循环
#define CAN_FRAME_TYPE_SB_MONITOR		0xc4 // 子板监视信息，	发送:主循环；	接收:主循环
#define CAN_FRAME_TYPE_TEST             0xc5 // 测试帧			发送:主循环；	接收:主循环

/*线损，针对主机来说的功能码*/
#define CAN_FRAME_TYPE_LL_YX			0XC6	//查询遥信   		发送:主循环中；	接收:主循环中
#define CAN_FRAME_TYPE_LL_YC			0XC7	//查询遥测
#define CAN_FRAME_TYPE_LL_DD			0XC8	//查询电度
#define CAN_FRAME_TYPE_LL_CALIB1		0XC9	//校准1
#define CAN_FRAME_TYPE_LL_CALIB2		0XCA	//校准2

#define CAN_FRAME_TYPE_DISCOVER         0xCB 	// 子板查找
#define CAN_FRAME_TYPE_GIVE_CAN_SLOT    0xCC 	// 给与CAN子板卡槽号


#define CAN_FRAME_TYPE_LL_FIXD			0X27	//定时冻结
#define CAN_FRAME_TYPE_LL_RAND			0X28	//瞬时冻结
#define CAN_FRAME_TYPE_LL_FRZD			0X29	//日冻结
#define CAN_FRAME_TYPE_LL_SHARPD		0X2A	//整点冻结
#define CAN_FRAME_TYPE_LL_MONTHD		0X2B	//考核日冻结

#define CAN_FRAME_TYPE_LL_SET			0X85	//设置参数

#define CAN_FRAME_TYPE_LL_SET_TIME		CAN_FRAME_TYPE_TIMING	//对时

#define CAN_FRAME_TYPE_LL_SOE			0X03	//遥信突发上送

/*------------------------------ 类型结构 -------------------------------------
*/

/*------------------------------ 函数声明 -------------------------------------
*/
int can_app_init(void);
int can_app_exit(void);

u8 can_app_checksum(u8 *buf,u8 len);
int can_app_timing(void);
int can_app_reset(int is_watchdog);
int can_app_sb_monitor(void);

int can_app_test_printf(void);

int can_task(void);
#endif //_CAN_APP_H

/*------------------------------ 文件结束 -------------------------------------
*/



