cc2420db_library.lst

来自「MatLab图像传感器网络仿真平台WiSNAP」· LST 代码 · 共 1,465 行 · 第 1/5 页

LST
1,465
字号
   1               		.file	"cc2420db_library.c"
   2               		.arch atmega128
   3               	__SREG__ = 0x3f
   4               	__SP_H__ = 0x3e
   5               	__SP_L__ = 0x3d
   6               	__tmp_reg__ = 0
   7               	__zero_reg__ = 1
   8               		.global __do_copy_data
   9               		.global __do_clear_bss
  12               		.text
  13               	.Ltext0:
  97               	.global	basicRfReceivePacket
  99               	basicRfReceivePacket:
   1:cc2420db_library.c **** /*******************************************************************************
   2:cc2420db_library.c ****  * Chipcon CC2420DB Library.                                                   *
   3:cc2420db_library.c ****  *                                                                             *
   4:cc2420db_library.c ****  * Functions:                                                                  *
   5:cc2420db_library.c ****  * ==========                                                                  *
   6:cc2420db_library.c ****  *                                                                             *
   7:cc2420db_library.c ****  * o Read ATmega128 Register                                                   *
   8:cc2420db_library.c ****  *   Command..: 'axx<CR/LF>'                                                   *
   9:cc2420db_library.c ****  *   Response.: ':AXXYY<CR><LF>'                                               *
  10:cc2420db_library.c ****  *                                                                             *
  11:cc2420db_library.c ****  * o Write ATmega128 Register                                                  *
  12:cc2420db_library.c ****  *   Command..: 'bxxyy<CR/LF>'                                                 *
  13:cc2420db_library.c ****  *   Response.: ':BXXYY<CR><LF>'                                               *
  14:cc2420db_library.c ****  *                                                                             *
  15:cc2420db_library.c ****  * o Read CC2420 Register                                                      *
  16:cc2420db_library.c ****  *   Command..: 'cxx<CR/LF>'                                                   *
  17:cc2420db_library.c ****  *   Response.: ':CXXYY<CR><LF>'                                               *
  18:cc2420db_library.c ****  *                                                                             *
  19:cc2420db_library.c ****  * o Write CC2420 Register                                                     *
  20:cc2420db_library.c ****  *   Command..: 'dxxyy<CR/LF>'                                                 *
  21:cc2420db_library.c ****  *   Response.: ':DXXYY<CR><LF>'                                               *
  22:cc2420db_library.c ****  *                                                                             *
  23:cc2420db_library.c ****  * o Initialize CC2420 Transceiver                                             *
  24:cc2420db_library.c ****  *   Command..: 'iccppppaaaa<CR/LF>'                                           *
  25:cc2420db_library.c ****  *   Response.: ':ICCPPPPAAAA<CR><LF>'                                         *
  26:cc2420db_library.c ****  *                                                                             *
  27:cc2420db_library.c ****  * o Receive CC2420 Packet                                                     *
  28:cc2420db_library.c ****  *   Command..: 'r<CR/LF>'                                                     *
  29:cc2420db_library.c ****  *   Response.: ':R<CR><LF>' if no packet received.                            *
  30:cc2420db_library.c ****  *              ':RSSAAAAPPPPLLD...KKRR<CR><LF>' if packet received.           *
  31:cc2420db_library.c ****  *                                                                             *
  32:cc2420db_library.c ****  * o Send CC2420 Packet                                                        *
  33:cc2420db_library.c ****  *   Command..: 'sppppaaaalld...kk<CR/LF>'                                     *
  34:cc2420db_library.c ****  *   Response.: ':SEE<CR><LF>'                                                 *
  35:cc2420db_library.c ****  *                                                                             *
  36:cc2420db_library.c ****  * o Toggle Location LED                                                       *
  37:cc2420db_library.c ****  *   Command..: 't<CR/LF>'                                                     *
  38:cc2420db_library.c ****  *   Response.: ':T<CR><LF>'                                                   *
  39:cc2420db_library.c ****  *                                                                             *
  40:cc2420db_library.c ****  * o Unknown and Invalid Commands                                              *
  41:cc2420db_library.c ****  *   Response.: ':?<CR><LF>'                                                   *
  42:cc2420db_library.c ****  *                                                                             *
  43:cc2420db_library.c ****  * Arguments:                                                                  *
  44:cc2420db_library.c ****  * ==========                                                                  *
  45:cc2420db_library.c ****  *                                                                             *
  46:cc2420db_library.c ****  * 'A...'       Transceiver/packet source/destination address (hexadecimal).   *
  47:cc2420db_library.c ****  * 'C...'       Transceiver ISM channel number (hexdecimal).                   *
  48:cc2420db_library.c ****  * 'D...'       Packet payload (hexadecimal).                                  *
  49:cc2420db_library.c ****  * 'E...'       Success status (hexadecimal: 0 = error, 1 = success).          *
  50:cc2420db_library.c ****  * 'K...'       Packet acknowledge request (hexadecimal).                      *
  51:cc2420db_library.c ****  * 'L...'       Packet payload length in bytes (hexadecimal).                  *
  52:cc2420db_library.c ****  * 'P...'       Transceiver/packet source/destination PAN ID (hexadecimal).    *
  53:cc2420db_library.c ****  * 'R...'       Packet received signal strength indicator (hexadecimal).       *
  54:cc2420db_library.c ****  * 'S...'       Packet sequence number (hexadecimal).                          *
  55:cc2420db_library.c ****  * 'X...'       Register address (hexadecimal).                                *
  56:cc2420db_library.c ****  * 'Y...'       Register value (hexadecimal).                                  *
  57:cc2420db_library.c ****  *                                                                             *
  58:cc2420db_library.c ****  * Hardware Setup:                                                             *
  59:cc2420db_library.c ****  * ===============                                                             *
  60:cc2420db_library.c ****  *                                                                             *
  61:cc2420db_library.c ****  *                                                                             *
  62:cc2420db_library.c ****  * Compiler: AVR-GCC                                                           *
  63:cc2420db_library.c ****  * Platform: Chipcon CC2420DB                                                  *
  64:cc2420db_library.c ****  * Revision: 02-21-2005                                                        *
  65:cc2420db_library.c ****  *                                                                             *
  66:cc2420db_library.c ****  * (C) 2005 Stephan Hengstler, Stanford Wireless Sensor Networks Lab           *
  67:cc2420db_library.c ****  *******************************************************************************/
  68:cc2420db_library.c **** 
  69:cc2420db_library.c **** #include <include.h>
  70:cc2420db_library.c **** #include <ctype.h>
  71:cc2420db_library.c **** #include <stdio.h>
  72:cc2420db_library.c **** 
  73:cc2420db_library.c **** /*******************************************************************************
  74:cc2420db_library.c ****  * Global Variables                                                            *
  75:cc2420db_library.c ****  *******************************************************************************/
  76:cc2420db_library.c **** 
  77:cc2420db_library.c **** /* basic rf transmission and reception structures */
  78:cc2420db_library.c **** BASIC_RF_RX_INFO	rfRxInfo;
  79:cc2420db_library.c **** BASIC_RF_TX_INFO	rfTxInfo;
  80:cc2420db_library.c **** BYTE					pTxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
  81:cc2420db_library.c **** BYTE					pRxBuffer[BASIC_RF_MAX_PAYLOAD_SIZE];
  82:cc2420db_library.c **** 
  83:cc2420db_library.c **** /* library-specific packet transmission and reception structures */
  84:cc2420db_library.c **** BOOL 					sig_packet_rx;
  85:cc2420db_library.c **** 
  86:cc2420db_library.c **** /*******************************************************************************
  87:cc2420db_library.c ****  * Function: BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI)    *
  88:cc2420db_library.c ****  *                                                                             *
  89:cc2420db_library.c ****  * DESCRIPTION:                                                                *
  90:cc2420db_library.c ****  *    This function is a part of the basic RF library, but must be declared by *
  91:cc2420db_library.c ****  *    the application. Once the application has turned on the receiver, using  *
  92:cc2420db_library.c ****  *    basicRfReceiveOn(), all incoming packets will be received by the FIFOP   *
  93:cc2420db_library.c ****  *    interrupt service routine. When finished, the ISR will call the          *
  94:cc2420db_library.c ****  *    basicRfReceivePacket() function. Please note that this function must     *
  95:cc2420db_library.c ****  *    return quickly, since the next received packet will overwrite the active *
  96:cc2420db_library.c ****  *    BASIC_RF_RX_INFO structure (pointed to by pRRI).                         *
  97:cc2420db_library.c ****  *                                                                             *
  98:cc2420db_library.c ****  * ARGUMENTS:                                                                  *
  99:cc2420db_library.c ****  *	   BASIC_RF_RX_INFO *pRRI                                                   *
 100:cc2420db_library.c ****  *       The reception structure, which contains all relevant info about the   *
 101:cc2420db_library.c ****  *       received packet.                                                      *
 102:cc2420db_library.c ****  *                                                                             *
 103:cc2420db_library.c ****  * RETURN VALUE:                                                               *
 104:cc2420db_library.c ****  *    BASIC_RF_RX_INFO*                                                        *
 105:cc2420db_library.c ****  *       The pointer to the next BASIC_RF_RX_INFO structure to be used by the  *
 106:cc2420db_library.c ****  *       FIFOP ISR. If there is only one buffer, then return pRRI.             *
 107:cc2420db_library.c ****  *******************************************************************************/
 108:cc2420db_library.c **** BASIC_RF_RX_INFO* basicRfReceivePacket(BASIC_RF_RX_INFO *pRRI)
 109:cc2420db_library.c **** {
 101               	.LM1:
 102               	/* prologue: frame size=0 */
 103 0000 0F93      		push r16
 104 0002 1F93      		push r17
 105               	/* prologue end (size=2) */
 106 0004 8C01      		movw r16,r24
 110:cc2420db_library.c **** 
 111:cc2420db_library.c **** 	/* blink the red led */
 112:cc2420db_library.c **** 	SET_RLED();
 108               	.LM2:
 109 0006 1B9A      		sbi 35-0x20,3
 113:cc2420db_library.c **** 	halWait(10000);
 111               	.LM3:
 112 0008 80E1      		ldi r24,lo8(10000)
 113 000a 97E2      		ldi r25,hi8(10000)
 114 000c 0E94 0000 		call halWait
 114:cc2420db_library.c **** 	CLR_RLED();
 116               	.LM4:
 117 0010 1B98      		cbi 35-0x20,3
 115:cc2420db_library.c **** 
 116:cc2420db_library.c **** 	/*	signal packet reception */
 117:cc2420db_library.c **** 	sig_packet_rx = TRUE;
 119               	.LM5:
 120 0012 81E0      		ldi r24,lo8(1)
 121 0014 8093 0000 		sts sig_packet_rx,r24
 118:cc2420db_library.c **** 
 119:cc2420db_library.c **** 	/* continue using the (one and only) reception structure */
 120:cc2420db_library.c **** 	return pRRI;
 121:cc2420db_library.c **** }
 123               	.LM6:
 124 0018 C801      		movw r24,r16
 125               	/* epilogue: frame size=0 */
 126 001a 1F91      		pop r17
 127 001c 0F91      		pop r16
 128 001e 0895      		ret
 129               	/* epilogue end (size=3) */
 130               	/* function basicRfReceivePacket size 16 (11) */
 132               	.Lscope0:
 136               	.global	RfSendPacket
 138               	RfSendPacket:
 122:cc2420db_library.c **** 
 123:cc2420db_library.c **** /*******************************************************************************
 124:cc2420db_library.c ****  * Function: RF Send Packet.                                                   *
 125:cc2420db_library.c ****  *******************************************************************************/
 126:cc2420db_library.c **** int RfSendPacket(BASIC_RF_TX_INFO *rfTxInfo)
 127:cc2420db_library.c **** {
 140               	.LM7:
 141               	/* prologue: frame size=0 */
 142 0020 CF93      		push r28
 143 0022 DF93      		push r29
 144               	/* prologue end (size=2) */
 128:cc2420db_library.c **** 	int				status;
 129:cc2420db_library.c **** 
 130:cc2420db_library.c **** 	status = basicRfSendPacket(rfTxInfo);
 146               	.LM8:
 147 0024 0E94 0000 		call basicRfSendPacket
 148 0028 C82F      		mov r28,r24
 149 002a DD27      		clr r29
 131:cc2420db_library.c **** 	if (status)
 151               	.LM9:
 152 002c 2097      		sbiw r28,0
 153 002e 39F0      		breq .L3
 132:cc2420db_library.c **** 	{
 133:cc2420db_library.c **** 
 134:cc2420db_library.c **** 		/* blink the yellow led */
 135:cc2420db_library.c **** 		SET_YLED();
 155               	.LM10:
 156 0030 1C9A      		sbi 35-0x20,4
 136:cc2420db_library.c **** 		halWait(10000);
 158               	.LM11:
 159 0032 80E1      		ldi r24,lo8(10000)
 160 0034 97E2      		ldi r25,hi8(10000)
 161 0036 0E94 0000 		call halWait
 137:cc2420db_library.c **** 		CLR_YLED();
 163               	.LM12:
 164 003a 1C98      		cbi 35-0x20,4
 165 003c 06C0      		rjmp .L4
 166               	.L3:
 138:cc2420db_library.c **** 
 139:cc2420db_library.c **** 	}
 140:cc2420db_library.c **** 	else
 141:cc2420db_library.c **** 	{
 142:cc2420db_library.c **** 
 143:cc2420db_library.c **** 		/* blink the orange led */
 144:cc2420db_library.c **** 		SET_OLED();
 168               	.LM13:
 169 003e C49A      		sbi 56-0x20,4
 145:cc2420db_library.c **** 		halWait(10000);
 171               	.LM14:
 172 0040 80E1      		ldi r24,lo8(10000)
 173 0042 97E2      		ldi r25,hi8(10000)
 174 0044 0E94 0000 		call halWait
 146:cc2420db_library.c **** 		CLR_OLED();
 176               	.LM15:
 177 0048 C498      		cbi 56-0x20,4
 178               	.L4:
 147:cc2420db_library.c **** 
 148:cc2420db_library.c **** 	}
 149:cc2420db_library.c **** 
 150:cc2420db_library.c **** 	/* return status */
 151:cc2420db_library.c **** 	return status;
 152:cc2420db_library.c **** }
 180               	.LM16:
 181 004a CE01      		movw r24,r28
 182               	/* epilogue: frame size=0 */
 183 004c DF91      		pop r29
 184 004e CF91      		pop r28
 185 0050 0895      		ret
 186               	/* epilogue end (size=3) */
 187               	/* function RfSendPacket size 25 (20) */
 190               	.Lscope1:
 192               		.data
 193               	.LC0:
 194 0000 2532 5800 		.string	"%2X"
 195               	.LC1:
 196 0004 3A25 6325 		.string	":%c%02X%02X\r\n"
 196      3032 5825 
 196      3032 580D 
 196      0A00 
 197               		.text
 201               	.global	read_at_register
 203               	read_at_register:
 153:cc2420db_library.c **** 
 154:cc2420db_library.c **** /*******************************************************************************
 155:cc2420db_library.c ****  * Function: Read ATmega128 register.                                          *
 156:cc2420db_library.c ****  *******************************************************************************/
 157:cc2420db_library.c **** int read_at_register(char *command, char *response)
 158:cc2420db_library.c **** {
 205               	.LM17:
 206               	/* prologue: frame size=2 */
 207 0052 EF92      		push r14
 208 0054 FF92      		push r15
 209 0056 0F93      		push r16
 210 0058 1F93      		push r17
 211 005a CF93      		push r28
 212 005c DF93      		push r29
 213 005e CDB7      		in r28,__SP_L__
 214 0060 DEB7      		in r29,__SP_H__
 215 0062 2297      		sbiw r28,2
 216 0064 0FB6      		in __tmp_reg__,__SREG__
 217 0066 F894      		cli
 218 0068 DEBF      		out __SP_H__,r29
 219 006a 0FBE      		out __SREG__,__tmp_reg__
 220 006c CDBF      		out __SP_L__,r28
 221               	/* prologue end (size=14) */
 222 006e 8C01      		movw r16,r24
 223 0070 7B01      		movw r14,r22
 159:cc2420db_library.c **** 	int				status;
 160:cc2420db_library.c **** 	unsigned int 	address = 0, value = 0;
 225               	.LM18:
 226 0072 1982      		std Y+1,__zero_reg__
 227 0074 1A82      		std Y+2,__zero_reg__
 161:cc2420db_library.c **** 	
 162:cc2420db_library.c **** 	/* parse command argument(s) */
 163:cc2420db_library.c **** 	status = sscanf(&command[1], "%2X", &address);
 229               	.LM19:
 230 0076 CE01      		movw r24,r28
 231 0078 0196      		adiw r24,1
 232 007a 9F93      		push r25
 233 007c 8F93      		push r24
 234 007e 80E0      		ldi r24,lo8(.LC0)
 235 0080 90E0      		ldi r25,hi8(.LC0)
 236 0082 9F93      		push r25
 237 0084 8F93      		push r24
 238 0086 0F5F      		subi r16,lo8(-(1))
 239 0088 1F4F      		sbci r17,hi8(-(1))
 240 008a 1F93      		push r17
 241 008c 0F93      		push r16
 242 008e 0E94 0000 		call sscanf
 164:cc2420db_library.c **** 
 165:cc2420db_library.c **** 	/* execute command */

⌨️ 快捷键说明

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