#ifndef H_SVC_COM_H
#define H_SVC_COM_H

#include "../bsp/bsp_com.h"
#include "svc_com_core.h"

/*项目型号*/
#define PRJ_NAME ("L-SWMUS01-UN233")
/*硬件主版本*/
#define HW_MAIN_VER (01)
/*硬件子版本*/
#define HW_SUB_VER (01)
/*软件主版本*/
#define SW_MAIN_VER (01)
/*软件子版本*/
#define SW_SUB_VER (01)
/*软件修订版本*/
#define SW_REVISE_VER (00)

/*厂家编号*/
#define FACTORY_NUM 1
/*表类型*/
#define METER_TYPE 3
/*表计口径*/

#define DN15 1

#ifdef DN15
#define METER_CALIBER 15           // 口径
#define PULSE_SMALL_CUT 10         // 小流分界点初始值
#define PULSE_SMALL_ALARM_FLOW 10  // 小流报警阈值
#define LARGE_FLOW_CUT 2875        // 大流分界点
#define PLUSE_LARGE_ALARM_FLOW 100 // 大流报警阈值
#define PLUSE_NEG_CUT 40           // 反流分界点
#define PLUSE_NEG_ALARM_FLOW 10    // 反流报警阈值
#define MAX_USAGE_5MIN 10922
#define MAX_USAGE_30MIN 65535

#elif DN20
#define METER_CALIBER 20

#define LARGE_FLOW_CUT 4800
#define PLUSE_LARGE_ALARM_FLOW 5000 // 4*1.25*1000
#define PLUSE_NEG_ALARM_FLOW 64
#define MAX_USAGE_5MIN 417
#define MAX_USAGE_30MIN 2500
#elif DN25

#define PLUSE_LARGE_ALARM_FLOW 7875 // 4*1.25*1000
#define PLUSE_NEG_ALARM_FLOW 126
#define MAX_USAGE_5MIN 657
#define MAX_USAGE_30MIN 3938 * 2
#endif

/*malloc允许的最大值*/
#define MALLOC_BUFF_MAX_SIZE 1024 // 一定要大于1024，TEA加密算法里需要用到1024字节的buf

/*堆的设置值一定要大于0x0250，保存用量信息的比较数据时会占用大量栈空间，不够的话栈会溢出*/
#define DRY_CELL 0        // 干电池         6v
#define LITHIUM_BATTERY 1 // 锂电池         3.6v
#define DUAL_POWER 3      // 双电源
#define BATT_TYPE LITHIUM_BATTERY

typedef struct
{
    gw_u8 pu8Buf[MALLOC_BUFF_MAX_SIZE];
    gw_u16 u16Len;
} S_Com;

void Svc_Com_Project_Info_Out(void);
void Svc_Com_Delay_Us(gw_u32 u32Cnt);
void Svc_Com_Delay_Ms(gw_u32 u32Cyc, gw_u8 u8MHZ);
gw_u8 *Svc_Com_Get_Buf(void);
void Svc_Com_Info_SysInit(void);
#endif
