⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 rf_usb_mac.h

📁 VC下USB的驱动代码,及其相关操作检测。
💻 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 + -