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

📄 lrwpan_common_types.h

📁 该演示程序实现温度的采集与显示功能
💻 H
字号:
/*
 * "Copyright (c) 2006 Robert B. Reese ("AUTHOR")"
 * All rights reserved.
 * (R. Reese, reese@ece.msstate.edu, Mississippi State University)
 *
 * Permission to use, copy, modify, and distribute this software and its
 * documentation for any purpose, without fee, and without written agreement is
 * hereby granted, provided that the above copyright notice, the following
 * two paragraphs and the author appear in all copies of this software.
 *
 * IN NO EVENT SHALL THE "AUTHOR" BE LIABLE TO ANY PARTY FOR
 * DIRECT, INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES ARISING OUT
 * OF THE USE OF THIS SOFTWARE AND ITS DOCUMENTATION, EVEN IF THE "AUTHOR"
 * HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 * THE "AUTHOR" SPECIFICALLY DISCLAIMS ANY WARRANTIES,
 * INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY
 * AND FITNESS FOR A PARTICULAR PURPOSE.  THE SOFTWARE PROVIDED HEREUNDER IS
 * ON AN "AS IS" BASIS, AND THE "AUTHOR" HAS NO OBLIGATION TO
 * PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS, OR MODIFICATIONS."
 *
 * Please maintain this header in its entirety when copying/modifying
 * these files.
 *
 * Files in this software distribution may have different usage
 * permissions, see the header in each file. Some files have NO permission
 * headers since parts of the original sources in these files
 * came from vendor  sources with no usage restrictions.
 *
 */

/*
  V0.1 Initial Release   10/July/2006  RBR

*/


#ifndef LRWPAN_COMMON_TYPES_H
#define LRWPAN_COMMON_TYPES_H

//types common across stack or multiple stack layers

//common macros
#define BITSET(var,bitno) ((var) |= (1 << (bitno)))
#define BITCLR(var,bitno) ((var) &= ~(1 << (bitno)))
#define BITTST(var,bitno) (var & (1 << (bitno)))



typedef enum _LRWPAN_SVC_ENUM {
  LRWPAN_SVC_NONE,
  LRWPAN_SVC_PHY_INIT_RADIO,
  LRWPAN_SVC_PHY_TX_DATA,
  LRWPAN_SVC_MAC_GENERIC_TX,
  LRWPAN_SVC_MAC_RETRANSMIT,
  LRWPAN_SVC_MAC_ASSOC_REQ,
  LRWPAN_SVC_MAC_BEACON_REQ,
  LRWPAN_SVC_MAC_ORPHAN_NOTIFY,
  LRWPAN_SVC_MAC_ERROR,
  LRWPAN_SVC_NWK_GENERIC_TX,
  LRWPAN_SVC_NWK_FORM_NETWORK,
  LRWPAN_SVC_NWK_JOIN_NETWORK,
  LRWPAN_SVC_APS_GENERIC_TX,
  LRWPAN_SVC_APS_NWK_PASSTHRU,
  LRWPAN_SVC_APS_SEND_END_DEVICE_ANNOUNCE,
  LRWPAN_SVC_APS_PING_PARENT
} LRWPAN_SVC_ENUM;



typedef enum _LRWPAN_STATUSENUM {
  LRWPAN_STATUS_SUCCESS,
  LRWPAN_STATUS_PHY_FAILED,
  LRWPAN_STATUS_PHY_INPROGRESS,  //still working for splitphase operations
  LRWPAN_STATUS_PHY_RADIO_INIT_FAILED,
  LRWPAN_STATUS_PHY_TX_START_FAILED,
  LRWPAN_STATUS_PHY_TX_FINISH_FAILED,
  LRWPAN_STATUS_PHY_CHANNEL_BUSY,
  LRWPAN_STATUS_MAC_FAILED,
  LRWPAN_STATUS_MAC_NOT_ASSOCIATED,
  LRWPAN_STATUS_MAC_INPROGRESS,  //still working for splitphase operations
  LRWPAN_STATUS_MAC_MAX_RETRIES_EXCEEDED,  //exceeded max retries
  LRWPAN_STATUS_MAC_TX_FAILED,    //MAC Tx Failed, retry count exceeded
  LRWPAN_STATUS_MAC_ASSOCIATION_TIMEOUT,  //association request timedout
  LRWPAN_STATUS_MAC_ORPHAN_TIMEOUT,       //ophan notify timedout
  LRWPAN_STATUS_NWK_INPROGRESS,
  LRWPAN_STATUS_NWK_JOIN_TIMEOUT,
  LRWPAN_STATUS_NWK_PACKET_UNROUTABLE,
  LRWPAN_STATUS_NWK_RADIUS_EXCEEDED,
  LRWPAN_STATUS_APS_INPROGRESS,
  LRWPAN_STATUS_APS_MAX_RETRIES_EXCEEDED,
  LRWPAN_STATUS_INDIRECT_BUFFER_FULL,
  LRWPAN_STATUS_HEAPFULL
}LRWPAN_STATUS_ENUM;

typedef union _UINT32_UNION {
  BYTE bytes[4];
  UINT32 val;
}UINT32_UNION;

typedef union _UINT16_UNION {
  BYTE bytes[2];
  UINT16 val;
}UINT16_UNION;

typedef UINT16 SADDR;
//typedef UINT16 PANID;

//these bytes ALWAYS stored in little-endian order
typedef struct _LADDR {
  BYTE bytes[8];
}LADDR;

//only used to store IEEE Long Address or PAN short address
typedef union _LADDR_UNION {
  LADDR laddr;
  SADDR saddr;
}LADDR_UNION;


typedef enum _PHY_FREQ_ENUM {
  PHY_FREQ_2405M,
  PHY_FREQ_915M,
  PHY_FREQ_868M
}PHY_FREQ_ENUM;

//used for radio initialization
typedef union _RADIO_FLAGS {
	BYTE val;
	struct _RADIO_FLAGS_bits {
      unsigned listen_mode:1;       //if true, then put radio in listen mode, which
                                //is non-auto ack, no address decoding
       unsigned pan_coordinator:1;   //set the pan coordinator bit
	}bits;
 }RADIO_FLAGS;

typedef struct _MACPKT {
	BYTE data[100];
	BYTE rssi;
	BYTE CRC;
}MACPKT;


#ifdef LRWPAN_COMPILER_BIG_ENDIAN
#define UINT32_LOWORD_LSB 3
#define UINT32_LOWORD_MSB 2
#define UINT32_HIWORD_LSB 1
#define UINT32_HIWORD_MSB 0
#define UINT16_LSB 1
#define UINT16_MSB 0
#else
#define UINT32_LOWORD_LSB 0
#define UINT32_LOWORD_MSB 1
#define UINT32_HIWORD_LSB 2
#define UINT32_HIWORD_MSB 3
#define UINT16_LSB 0
#define UINT16_MSB 1
#endif


#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -