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

📄 test_library.m

📁 MatLab图像传感器网络仿真平台WiSNAP
💻 M
字号:
%function test_library(arguments);
%Chipcon CC2420DB wireless mote library test.
%   TEST_LIBRARY(ARGUMENTS);
%
%   Input Parameters:
%   ================
%
%      arguments ---------> Command line arguments (text):
%                           -d enable debug mode
%
%   Output Parameters:
%   =================
%
%      NONE.
%
%   See also N/A.

% Stephan Hengstler
% Stanford Wireless Sensor Networks Lab
% February 08, 2005
%
% Last modified: 02-19-2005

clear, clc

%********************* Chipcon CC2420DB Wireless Mote Library Test ************************

% parse input arguments
if (exist('arguments') == 1)
   switch arguments(1:2)
   	case '-d'
   		debug 	= 1;
   end
end

%--- Section: Global Variables ------------------------------------------------------------

global		handle;							% device handle
global 		PORT;								% communications port
global		reg;								% register structure
global		PhyInfo;							% PHY information structure
global		RxMacPckt;						% receive MAC packet structure
global		TxMacPckt;						% transmit MAC packet structure

%--- Section: IEEE 802.15.4 Parameters ----------------------------------------------------

PhyInfo.Channel		= 26;					% PHY Layer: ISM channel.
PhyInfo.Address		= hex2dec('0000');% PHY Layer: Node address.
PhyInfo.PanId			= hex2dec('2420');% PHY Layer: Personal Area Network (PAN) ID.

TxMacPckt.destPanId	= hex2dec('2420');% MAC Layer: Destination PAN ID.
TxMacPckt.destAddr	= hex2dec('0815');% MAC Layer: Destination node address.
TxMacPckt.length		= 10;					% MAC Layer: Payload length in bytes.
TxMacPckt.pPayload	= [0:9];				% MAC Layer: Payload.
TxMacPckt.ackRequest	= 1;					% MAC Layer: Acknowledge request.

%--- Section: System Parameters -----------------------------------------------------------

PORT						= 'COM1';

AT_REG_UBRR0L			= hex2dec('29');	% ATmega128 Register: USART0 baud rate register low.
AT_REG_UBRR1L			= hex2dec('99');	% ATmega128 Register: USART1 baud rate register low.

CC_REG_RSSI				= hex2dec('13');	% CC2420 Register: RSSI and CCA status and control.
CC_REG_SYNCWORD		= hex2dec('14');	% CC2420 Register: Synchronization word control.
CC_REG_MANFIDL			= hex2dec('1E');	% CC2420 Register: Manufacturer ID, low 16 bits.
CC_REG_MANFIDH			= hex2dec('1F');	% CC2420 Register: Manufacturer ID, high 16 bits.

%--- Section: Library Function Test -------------------------------------------------------

% open communications session
status		= cc2420db_library('open');

% atmega128 read register test
reg.address	= AT_REG_UBRR1L;
status		= cc2420db_library('read_at_register');
if (reg.value == hex2dec('08'))
   disp('Command read_at_register.: PASS')
else
   disp('Command read_at_register.: FAIL')
end

% atmega128 write register test
reg.address	= AT_REG_UBRR0L;
reg.value	= randint(1,1,[0 2^8-1]);
dummy			= reg.value;
status		= cc2420db_library('write_at_register');
status		= cc2420db_library('read_at_register');
if (reg.value == dummy)
   disp('Command write_at_register: PASS')
else
   disp('Command write_at_register: FAIL')
end

% cc2420 read register test
reg.address	= CC_REG_MANFIDL;
status		= cc2420db_library('read_cc_register');
if (reg.value == hex2dec('233D'))
   disp('Command read_cc_register.: PASS')
else
   disp('Command read_cc_register.: FAIL')
end

% cc2420 write register test
reg.address	= CC_REG_SYNCWORD;
reg.value	= randint(1,1,[0 2^16-1]);
dummy			= reg.value;
status		= cc2420db_library('write_cc_register');
status		= cc2420db_library('read_cc_register');
if (reg.value == dummy)
   disp('Command write_cc_register: PASS')
else
   disp('Command write_cc_register: FAIL')
end

% initialize wireless mote
status		= cc2420db_library('init');

% initialize figure
figure(1), clf
release		= version;
if (hex2dec(release(1)) > 5)
   set(gcf,'currentcharacter',' ')
end

% initialize packet counter
packet      = 1;

% repeat until break
while(1)
   
   % remotely read cc2420 register
   TxMacPckt.pPayload	= sprintf('c%02x\n',CC_REG_RSSI);
   TxMacPckt.length	= length(TxMacPckt.pPayload);
	tx_error(packet)	= cc2420db_library('send');

	% wait for received packet
   timeout		= 0;
   while ((cc2420db_library('recv') < 0) & (timeout < 5))
      
      % increment timeout counter
		timeout		= timeout + 1;
      
   end
   
   % display received packet
   if (isstruct(RxMacPckt))
      response		= char(RxMacPckt.pPayload)
   end
   
   % save received signal strength indicator
   if (isstruct(RxMacPckt))
      rssi(packet)	= RxMacPckt.rssi;
   else
      rssi(packet)	= -128;
   end

   % display received signal strength indicator
   plot([0:packet-1],rssi,'bx-',[0:packet-1],tx_error,'r.-')
   grid on
   title(['\bfReceived Signal Strength Indicator'])
   xlabel('\bfPacket Number')
   ylabel('\bfReceived Signal Strength Indicator RSSI')
   
   % increment packet counter
   packet		= packet + 1;

   % allow display to update
   pause(1e-3)
   
   % check user input
   key         = double(get(gcf,'currentcharacter'));

   % exit loop?
   if (~isempty(key) & (key == 27))
      break
   end

end

% close figure
close(gcf)

% close communications session
status		= cc2420db_library('close');

⌨️ 快捷键说明

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