📄 rf_usb_mac.h
字号:
#ifndef _RF_USB_MAC_H_
#define _RF_USB_MAC_H_
/*
* rf_mac_hdr (7bytes)
*
* RFD must program all fields to 0
*
* FFD provides part of Relay function. it's relay aware
*
*/
struct rf_mac_hdr
{
/* to limit to a specific group
* use grp==hop, dst!=0
*/
/* grp_hop
* grp_hop in relay route
*/
unsigned char grp_hop;
/*
* group to limit localcast to a subset of relays
* 0 is anycast. Only RFD can use anycast
* 1-254 unicast
* 255 is localcast.
*/
unsigned char grp;
/* destination of frame, 0-254
* 255 is groupcast
* 0 is center
*/
unsigned char dst;
/* source of frame, 0-254
* 255 is forbidden
* 0 is center
*/
unsigned char src;
/* relay - current relay in this group
*
* 0-254
* 255 is reserved
*/
unsigned char relay;
/* index and length
*/
unsigned char idx_len;
/* command
* bit 7-4 define header. 0 is this header
* bit 3-0 define protocol
*/
unsigned char cmd;
};
/* position of frame header
*/
#define RF_MAC_FRM_HEAD 40
//frame control byte
/*
* 0x0 ---- to and from meter
*
*/
#define RF_MAC_FRM_FCB 46
//data length
#define RF_MAC_FRM_DATA_LEN 49
#define RF_MAC_FRM_FEC_LEN (RF_MAC_FRM_DATA_LEN/7)
#define RF_MAC_FRM_FEC_START RF_MAC_FRM_DATA_LEN
#define RF_MAC_FRM_LEN (RF_MAC_FRM_DATA_LEN+RF_MAC_FRM_FEC_LEN)
/* header
*/
#define RF_MAC_HDR(frm) ((struct rf_mac_hdr *)(((unsigned char *)(frm))+RF_MAC_FRM_HEAD))
int RF_USB_MAC_Init(void);
/* protocol version < 0x80 meter report
*/
#define PROTO_REPORT_VER1 0x01
/* protocol version > 0x80 meter config
*/
#define PROTO_CONFIRM_VER1 0x81
/*
* FCB -- refer to CJ/T 188-2004
*
* 0x10 ---- cold water meter
* 0x11 ---- warm water meter
* 0x12 ---- drinkable water meter
* 0x13 ---- recycle water meter
*
* 0x20 ---- thermometer
*
* 0x30 ---- gas meter
*
* -> propritery type <-
*
* 0xF0 ---- router simple
* 0xF1 ---- router multiframe
*
*/
#define MTYPE_COLDWATER 0x10
/*
* rf_cwm_rpt_data (28bytes)
* cold water meter
*/
struct rf_cwm_rpt_data
{
unsigned char id[6];
unsigned short mver;
unsigned short fact_base;
unsigned char run_exp;
unsigned char stored_exp;
unsigned char attack_alarm_times;
unsigned char cpu_reset_times;
unsigned short flash_erase_times;
unsigned short RF_oper_times;
unsigned short accumulated[2];
unsigned char memo[6];
};
/*
* rf_cwm_rpt_hdr (12 bytes)
* cold water meter
*/
struct rf_cwm_rpt_hdr
{
//encryption key 64bit for enhanced strength
unsigned char key[8];
//data
struct rf_cwm_rpt_data data;
//meter type 0
unsigned char meter_type;
//protocol version
unsigned char proto_ver;
//CRC 38 39
unsigned char crc[2];
};
/*
* rf_cwm_cfg_data (28bytes)
* cold water meter
*/
struct rf_cwm_cfg_data
{
unsigned char id[6];
unsigned char cmd[2];
unsigned short flag;
unsigned short fact_base;
unsigned short accumulated[2];
unsigned char memo[6];
unsigned char reserved[6];
};
/*
* rf_cwm_cfg_hdr (12 bytes)
* cold water meter
*/
struct rf_cwm_cfg_hdr
{
//encryption key 64bit for enhanced strength
unsigned char key[8];
//data
struct rf_cwm_cfg_data data;
//meter type 0
unsigned char meter_type;
//protocol version
unsigned char proto_ver;
//CRC 38 39
unsigned char crc[2];
};
void _memcpy(unsigned char * dst, const unsigned char * src, unsigned short len);
int _memcmp(const unsigned char * dst, const unsigned char * src, unsigned short len);
void _device_ID_inc(unsigned char * deviceID);
extern void *memset(void *s, int c, unsigned int n);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -