22
dwell boundary, thereby, removing the synthesizer
channel information download from the Am79C930 de-
vice to the radio from the critical 240
μ
sec time allotted
for channel hops.
Preset_channel() will be a null routine for the DS PHY
since this routine is not called by the DS section of
the code.
Change_Channel ()
This routine is called to move the preset channel from
the preset register in the radio hardware’s synthesizer
into the synthesizer’s working register, also inside of the
radio hardware, thereby causing the synthesizer to be-
gin the relock operation which will result in the retuning
of the radio to a new channel. This routine also copies
the next_channel_information variable into the
current_channel_information variable. This copy oper-
ation is required because scanning operations (and oth-
er possible operations) will cause non-hop channel
changes. And, in order to return to the correct channel
at
the
end
of
a
current_channel_information must be available to the
scan procedure.
scan
operation,
the
Typically, this routine should cause the assertion of a
SYNTH_LOAD signal that executes a transfer from a
holding register to a working register in the synthesizer.
The intent of having separate Preset_channel() and
Change_Channel() calls is to allow the fastest possible
channel change operation. The Change_channel() call
should NOT perform the transfer of the synthesizer pro-
gramming information from the MAC to the PHY, unless
the PHY does NOT support a preload of the next chan-
nel programming information.
In the case of a radio that does not support the mainte-
nance
of
next
channel
Change_Channel() call will perform the move of the next
channel information from the next_channel_information
variable (in SRAM) to the synthesizer hardware in the
radio. This will be followed by the assertion of whatever
signalling is required to enable the synthesizer to re-sync
according to the new channel programming information.
information,
the
Change_Channel() will be a null routine for the DS
PHY since this routine is not called by the DS section
of the code.
Force_Channel (uint8 Channel)
This routine is called to change the frequency of the
transceiver to the channel specified in the passed
parameter. The current_channel_information variable
in SRAM is modified.
Force_channel() will typically be used for scanning
operations and for channel changes that are the result
of AP association changes. For the scanning applica-
tion, the main program flow is one where
Force_channel() is called in order to force a channel
change for the scan. Additional channel changes may
be performed during the scan. When the scan operation
has been completed, the MAC Management code of the
Am79C930 firmware will perform a re-sync operation
with the saved state information, thereby solving the
problem of a scan covering multiple hop intervals and
also allowing the current_channel_information to be
modified (since this information is stored at the MAC
management level).
The range of the Channel parameter will depend on the
PHY type being used. Geographic restrictions will also
force the use to subsets of the channel range.
FH = 2 - 95
DS = 1 - 12
IR = n/a
Force_Channel() will be a null routine for the IR PHY
since it has only one defined channel.
Set_Power (uint8 Power_Lvl)
This routine is called to change the output power the
transceiver uses when transmitting to the level specified
in the passed parameter.
The range of the Power_Lvl parameter will depend on
the PHY type being used.
FH = 1 - 4
DS = 1 - n
IR = n/a
Set_Power() will be a null routine for the IR PHY since
it has only one defined output power.
Some radios determine transmit power level by signalling
at the pin level. Therefore, the power level as determined
by the PHY MGMT procedure and communicated with
the Set_Power() call needs to be stored in a variable (e.g.,
TX_Power) such that each time Enable_TX() is called,
the Enable_TX() routine can reference the stored
TX_Power level variable and create the appropriate sig-
nalling for the radio power ramp function.
For a radio that maintains a local copy of the power level
setting (for example, inside of a radio control register),
the Set_Power() API will, in addition to modifying the
FW copy of the global power level variable, execute a
write to the radio’s register.
The API will attempt to get the best fit for the power level
that is communicated without exceeding the requested
power level.
uint8 Get_PHY_Type()
This routine is used to get the type of PHY attached to
the API. The type is hard coded into the API function.
The two supported types are FREQUENCY_HOPPING
and DIRECT_SEQUENCE.