
#ifndef METER_PROTOCOL__
#define METER_PROTOCOL__
#include "raw_sock.h"
// typedef struct meter_potocol_t
// {
//     unsigned char protocolType;
//     unsigned char dataLen;
//     unsigned char *data;
//     unsigned short csum;
// }meter_potocol;
// #define DLT645 1
/**
 * 初始化
 * ifname 广播网口名成
 * channel_name 通道名称  给这个帧加一个唯一的标识 用区分谁的数据
 * 
*/
RAW_SOCK *protocol_Init(char *ifname,char*channel_name);

/**
 * 带广播分组的初始化，会将参数group和channel_name参数组合成一个通道名称group_channel_name
 * ifname 广播网口名成
 * group 广播组名称
 * channel_name 组内的通道名称
 * 
*/
RAW_SOCK *protocol_Init_with_group(char *ifname, const char *group,const char*channel_name);


/**
 * 发送数据 
 * raw 初始化返回的指针 
 * data发送的数据指针 最大1400字节 
 * len 发送的长度
 * 
 * <0失败
*/
int send_protocol_data(RAW_SOCK *raw,char *data,int len);

/**
 * 读数据 
 * raw 初始化返回的指针 
 * data读取数据的缓存空间
 * len 存读取长度的地址
 * 
 * <0 超时或数据并非本通道的
*/

int read_protocol_data(RAW_SOCK *raw,char *dist_data,int *len);
#endif

