NAME
Uniden::BCL75XLT - module to program Uniden BCL75XLT radio scanner over USB connection
SYNOPSIS
use Uniden::BCL75XLT;
use Data::Dumper;
my $radio = Uniden::BCL75XLT->new('/dev/ttyUSB0') || die "Cannot open radio: $!\n";
# get channels info in bank N1
my $channelsInfo = $radio->getBankChannelsInfo(1);
print Dumper($channelsInfo);
undef($radio);
DESCRIPTION
Module implements all command described in UNIDEN BC75XLT Operation Specification (http://info.uniden.com/UnidenMan4/BC75XLT).
Methods
PACKAGE->new(DEVICE_STR, OPTS_HASH)
Creates new Uniden::BLC75XLT object. Where DEVICE_STR
is port name and OPTS_HASH
is a hash with following keys:
baudrate - integer, port speed, default - 57600
databits - integer, number of data bits in each character, default - 8
parity - string, method of detecting errors in transmission, default - "none"
stopbits - integer, stop bits, default - 1
handshake - string, handshake method, default - "none"
read_cost_time - integer, const time for read (milliseconds), default - 1
timeout - integer, reading port timeout in milliseconds, default - 999
echo - boolean, if true all data sent to and received from port will be sent to STDERR
fatal - boolean, if set to true all errors are supposed as fatal and
die
will be called on them, otherwise error message invokes print to STDERR andundef
will be returned after error
More accurate meaning and possible values of keys baudrate, databits, parity, stopbits, handshake and read_cost_time you can read in Device::SerialPort documentation.
Example:
my $radio = Uniden::BC75XLT->new('/dev/ttyUSB0', echo => 1) || die "Cannot open: $!\n";
OBJ->command(CMD_STR, ARGS_ARRAYREF)
Method send command CMD_STR
to radio scanner with arguments ARGS_ARRAYREF
. Arguments array may be undefined.
Normally you do not need to use this method 'cause other methods are frontends to this method and cover all described in operation manual commands.
Return values
Method returns hashref with following keys:
status - string, OK - if command executed successfuly and ERROR if something was wrong
desc - string, if status has value ERROR this key contains description of error occured
data - arrayref of strings, if status has value OK this key contains data returned by radio. Arrayref always defined even no data supposed to be returned.
getModelName
Method returns model name.
getFirmwareVersion
Method returns firmware version.
getVolume
Method returns volume level (0-15)
setVolume(VOL_INT)
Method set volume level value (VOL_INT). Reasonable values 0-15.
getSql
Method returns Sql value (0-15)
setSql(SQL_INT)
Method set Sql value (SQL_INT). Reasonable values 0-15.
setProgramMode
The scanner goes to Program Mode (PGM). The scanner displays "PC" and Key lock and PGM icons.
Some command (almost all) must be executed in PGM of scanner. If you use methods of this package you do not need enter to PGM manually. Each method "knows" how to communicate with scanner and if it needs PGM, it will enter to PRG before send command and exit after. So if you want to send sequence of commands you may start PRM manually and exit it after sequence is complite. It may save you some seconds.
quitProgramMode
The scanner exits from Program Mode. Then the scanner goes to Scan Hold Mode.
You need to call this method only if you call setProgramMode
before.
getBandPlan
Returns band plan code - 0:USA, 1:Canada.
getBandPlanName
Returns band plan name - USA/CANADA.
setBandPlan(BANDPLAN)
Set band plane. BANDPLAN
can be integer - code or string - name.
Example:
$radio->setBandPlan('CANADA');
$radio->setBandPlan(1);
getKeyLockState
Returns key lock state code - 0:OFF, 1:ON.
getKeyLockStateName
Returns key lock state name - OFF/ON.
setKeyLockState(STATE)
Set key lock state. STATE
can be integer - code or string - name.
Example:
$radio->setKeyLockState('OFF');
$radio->setKeyLockState(0);
getPriorityMode
Returns priority mode code - 0:OFF, 1:ON, 2:PLUS ON, 3:DND.
getPriorityModeName
Returns priority mode name - OFF/ON/PLUS ON/DND.
setPriorityMode(MODE)
Set priority mode. MODE
can be integer - code or string - name.
Example:
$radio->setPriorityMode('DND');
$radio->setPriorityMode(3);
getScanChannelGroup
Get current status of the channel starage bank select.
Returns ARRAYREF of 10 elements. Each element contains ON/OFF string. Every array element describes group with the same index in radio. But index of radio scanner groups starts with 1. So element with index 0 means state of group with index 1.
setScanChannelGroup(GROUP_DATA)
Set current status of the channel starage bank select.
If GROUP_DATA
is HASHREF then keys mean to be index of radion scanner group and values are states of group. States can be strings - ON/OFF or integer 1:OFF/0:ON.
If GROUP_DATA
is ARRAYREF then every element is state of group with index equals index of element plus 1. States can be strings - ON/OFF or integer 1:OFF/0:ON.
If GROUP_DATA
is a string it will be passed as argument to command ASIS.
Example:
# Set group 1,2,3,7,8,9 to ON state in Scan mode
# all three lines are equivalents
$radio->setScanChannelGroup([ 'ON', 'ON', 'ON', 'OFF', 'OFF', 'OFF', 'ON', 'ON', 'ON', 'OFF' ]);
$radio->setScanChannelGroup({ 1 => 'ON', 2 => 'ON', 3 => 'ON', 7 => 'ON', 8 => 'ON', 9 => 'ON' });
$radio->setScanChannelGroup('0001110001');
setValidScanChannels(CHANNELS_ARRAYREF)
Set valid radio scanner groups in Scan mode. CHANNELS_ARRAYREF
is ARRAYREF of radio scanner group indexes.
Example:
# Set group 1,2,3,7,8,9 to ON state in Scan mode
$radio->setValidScanChannels([1,2,3,7,8,9 ]);
getChannelInfo(N_INT)
Get saved channel information, С<N_INT> is number of channel, integer between 1..300.
Returns HASHREF with keys:
state - status of channel: SET or UNSET.
index - number of channel
freq - saved freqency in human readable form, e.g. 128.0000
freq_code - saved frequency as returned by radio scanner, e.g. '01280000'
delay - is delay turned on - ON/OFF
delay_code - is delay turned on code - 0:OFF/1:ON
lockout - lockout - UNLOCKED/LOCKOUT
lockout_code - lockout code - 0:UNLOCKED/1:LOCKOUT
priority - priority - ON/OFF
priority_code - priority code - 0:OFF/1:ON
Return example:
{
'priority' => 'ON',
'delay_code' => '1',
'delay' => 'ON',
'freq_code' => '00271350',
'lockout' => 'UNLOCKED',
'state' => 'SET',
'index' => '61',
'lockout_code' => '0',
'freq' => '27.1350',
'priority_code' => '1'
};
getChannelsInfo(OPTS_HASH)
Retrieve information about stored channels.
OPTS_HASH
has keys:
start - number of first channel
stop - number of last channels
state - status of channels to show. Possible values ON, OFF, 1, 0. If not set all channels will be selected.
Returns ARRAYREF each element is HASHREF with information about channel described in method getChannelInfo
.
getBankChannelsInfo(N_INT)
Gets information about channel in a bank. N_INT
is number of channels bank, 1..10.
Returns ARRAYREF each element is HASHREF with information about channel described in method getChannelInfo
.
setChannelInfo(IDX_INT, DATA_HASHREF)
Store frequency in to channel. IDX_INT
- integer, number of channel (1..300).
DATA_HASHREF
is HASHREF, information about stored frequency with keys:
freq - frequency
delay - delay ON/OFF.
priority - priotity - ON/OFF.
lockout - lockout - UNLOCKED/LOCKOUT.
Example:
$radio->setChannelInfo(61, { freq => '27.135' }); # set channel
$radio->setChannelInfo(61, { freq => '' }); # unset channel
eraseChannel(IDX_INT)
Erase information stored in channel. IDX_INT
= integer, number of channel.
getSearchCloseCallSettings
Get Search Close Call Settings.
Returns HASHREF with keys:
direction - search direction: DOWN/UP.
direction_code search direction code: 1:DOWN/0:UP.
delay - delay: ON/OFF.
delay_code - delay code: 1:ON/0:OFF.
setSearchCloseCallSettings(OPTS_HASHREF)
Set Search Close Call Settings.
OPTS_HASHREF
is HASHREF with keys:
direction - search direction: 0, 1 or 'UP', 'DOWN'.
delay - delay: 0, 1 or 'OFF', 'ON'
getGlobalLockoutFreqs
Get list of global lockout frequencies. List returned as an ARRAYREF.
lockGlobalFrequency(FREQ)
Locks out frequency. FREQ
is frequency value as string of float or integer.
unlockGlobalFrequency(FREQ)
Unlocks a lockout frequency. FREQ
is frequency value as string of float or integer.
getCloseCallSettings
Get close call settings.
Retuns HASHREF with keys:
mode - current CC mode: OFF/PRIORITY/DND
mode_code - current CC mode code: 0:OFF/1:PRIORITY/2:DND
alert_beep - beep alarm when CC is found: ON/OFF
alert_beep_code - beep alarm when CC is found code: 1:ON/0:OFF
alert_light - alarm with light when CC is found: ON/OFF
alert_light_code - alarm with light when CC is found code: 1:ON/0:OFF
bands - state of preset bands in Close Call RF mode. There are 4 bands: VHF_LOW, AIR, VHF_HIGH and UHF. They are keys in bands HASHREF, possible values: ON/OFF.
setCloseCallSettings(OPTS_HASHREF)
Set close call settings.
OPTS_HASHREF is HASHREF with keys:
mode - Close Call RF mode - 0,1,3 or OFF, PRIORITY, DND
alert_beep - alert with beep settings: 0, 1 or OFF, ON
alert_light - alert with light settings: 0, 1 or OFF, ON
bands - list of available bands in Close Call RF mode. ARRAYREF each element is band name to be set in ON state.
All keys are optional. By default mode is set in DND, all alerts are OFF, all bands are ON.
getServiceSearchSettings(BAND)
Returns information about Service Search settings. BAND_INT
is number or name of one of 10 Service frequences ranges.
Ranges: 1:WX -Weather, 2:POLICE - Police, 3:FIRE - Fire/Emergency, 4:MARINE - Marine, 5:RACE - Racing, 6:AIR - Civil Air, 7:HAM - HAM Radio, 8:RAIL - Railroad, 9:CB - CB Radio, 10:OTHER - FRS/GMRS/MRUS.
Return value is HASHREF with keys:
index - index of freq range (1..10)
band - name for freq range
delay - delay: ON/OFF.
delay_code - delay code: 1:ON/0:OFF.
direction - direction of search: UP/DOWN.
direction_code - direction of search code: 0:UP/1:DOWN.
setServiceSearchSettings(BAND, DLY, DIR)
Set Service search freq range settings. BAND
index or name of search range. DLY
- delay code or name - 1:ON/0:OFF. DIR
- direction of search - 0:UP/1:DOWN.
getCustomSearchGroup
Returns state of custom seach frequencies groups and Custom Search settings. Return value is HAHREF with keys:
group - ARRAYREF of 10 elements. Each element contains ON/OFF string. Every array element describes group with the same index in radio. But index of radio scanner groups starts with 1. So element with index 0 means state of group with index 1.
delay - delay: ON/OFF.
delay_code - delay code: 1:ON/0:OFF.
direction - direction of search: UP/DOWN.
direction_code - direction of search code: 0:UP/1:DOWN.
setCustomSearchGroup(GROUPS, DLY, DIR)
Set state of frequences groups in Custom Search mode.
GROUPS
- HASHREF or ARRAYREF - describes states of freq group. If you use ARRAYREF you should set 10 elements array every element must contain string ON or OFF. In HASHREF representation keys are index of groups, values are state. If group state was not set in HASH its state would be set to OFF.
DLY
- delay code or name - 1:ON/0:OFF.
DIR
- direction of search - 0:UP/1:DOWN.
getCustomSearchRange(RANGE_INT)
Radio scanner has 10 Custom Search frequency ranges. This method retrive left and right bound of range.
RANGE_INT
- integer, index of range.
Return value are ARRAYREF of 2 elements. First is left bound, second right.
getAllCustomSearchRanges
Returns all ten ranges bounds as ARRAYREF every element contains two elements ARRAYREF where first element is left bound and second right.
setCustomSearchRange(RANGE_INT, LEFT, RIGHT)
Set bounds of frequency range.
RANGE_INT - index of range. 1..10
LEFT - frequency value - left bound of range
RIGHT - frequency value - right bound of range
Example:
$radio->setCustomSearchRange(3, '144.0000', '147.9950');
$radio->setCustomSearchRange(3, 144, 147.995);
clearMemory
Clear all radio memory.
SEE ALSO
1 POD Error
The following errors were encountered while parsing the POD:
- Around line 256:
Non-ASCII character seen before =encoding in 'С<N_INT>'. Assuming CP1252