📄 test_library.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 + -