# {py:mod}`nearlink_sdr.phy.freq_hopping` ```{py:module} nearlink_sdr.phy.freq_hopping ``` ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`FreqTable ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable :summary: ``` * - {py:obj}`MeasLinkHopper ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`channel_to_freq ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.channel_to_freq :summary: ``` * - {py:obj}`data_link_hop ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.data_link_hop :summary: ``` * - {py:obj}`derive_hop_param2 ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.derive_hop_param2 :summary: ``` * - {py:obj}`freq_to_channel ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.freq_to_channel :summary: ``` * - {py:obj}`generate_hopping_sequence ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.generate_hopping_sequence :summary: ``` * - {py:obj}`hopping_prng ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.hopping_prng :summary: ``` * - {py:obj}`mgmt_frame_hop ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.mgmt_frame_hop :summary: ``` ```` ### Data ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`BAND_2400 ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_2400 :summary: ``` * - {py:obj}`BAND_5100 ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_5100 :summary: ``` * - {py:obj}`BAND_5800 ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_5800 :summary: ``` * - {py:obj}`MEAS_HOP_ASCENDING ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_ASCENDING :summary: ``` * - {py:obj}`MEAS_HOP_DESCENDING ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_DESCENDING :summary: ``` * - {py:obj}`MEAS_HOP_RANDOM ` - ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_RANDOM :summary: ``` ```` ### API ````{py:data} BAND_2400 :canonical: nearlink_sdr.phy.freq_hopping.BAND_2400 :value: > '2400' ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_2400 ``` ```` ````{py:data} BAND_5100 :canonical: nearlink_sdr.phy.freq_hopping.BAND_5100 :value: > '5100' ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_5100 ``` ```` ````{py:data} BAND_5800 :canonical: nearlink_sdr.phy.freq_hopping.BAND_5800 :value: > '5800' ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.BAND_5800 ``` ```` ````{py:data} MEAS_HOP_ASCENDING :canonical: nearlink_sdr.phy.freq_hopping.MEAS_HOP_ASCENDING :value: > 0 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_ASCENDING ``` ```` ````{py:data} MEAS_HOP_DESCENDING :canonical: nearlink_sdr.phy.freq_hopping.MEAS_HOP_DESCENDING :value: > 1 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_DESCENDING ``` ```` ````{py:data} MEAS_HOP_RANDOM :canonical: nearlink_sdr.phy.freq_hopping.MEAS_HOP_RANDOM :value: > 2 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MEAS_HOP_RANDOM ``` ```` `````{py:class} FreqTable :canonical: nearlink_sdr.phy.freq_hopping.FreqTable ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable ``` ````{py:attribute} band :canonical: nearlink_sdr.phy.freq_hopping.FreqTable.band :type: str :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable.band ``` ```` ````{py:attribute} bandwidth_mhz :canonical: nearlink_sdr.phy.freq_hopping.FreqTable.bandwidth_mhz :type: int :value: > 1 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable.bandwidth_mhz ``` ```` ````{py:attribute} blocked_channels :canonical: nearlink_sdr.phy.freq_hopping.FreqTable.blocked_channels :type: set[int] :value: > 'field(...)' ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable.blocked_channels ``` ```` ````{py:method} full_table() -> list[int] :canonical: nearlink_sdr.phy.freq_hopping.FreqTable.full_table ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable.full_table ``` ```` ````{py:method} available_table() -> list[int] :canonical: nearlink_sdr.phy.freq_hopping.FreqTable.available_table ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.FreqTable.available_table ``` ```` ````` `````{py:class} MeasLinkHopper :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper ``` ````{py:attribute} mode :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.mode :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.mode ``` ```` ````{py:attribute} freq_table :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.freq_table :type: nearlink_sdr.phy.freq_hopping.FreqTable :value: > 'field(...)' ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.freq_table ``` ```` ````{py:attribute} hop_param2 :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.hop_param2 :type: int :value: > 0 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.hop_param2 ``` ```` ````{py:attribute} init_channel :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.init_channel :type: int | None :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.init_channel ``` ```` ````{py:method} reset() -> None :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.reset ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.reset ``` ```` ````{py:method} next_channel(slot_counter: int = 0, is_init_phase: bool = False) -> int :canonical: nearlink_sdr.phy.freq_hopping.MeasLinkHopper.next_channel ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.MeasLinkHopper.next_channel ``` ```` ````` ````{py:function} channel_to_freq(channel_num: int, band: str = BAND_2400) -> float :canonical: nearlink_sdr.phy.freq_hopping.channel_to_freq ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.channel_to_freq ``` ```` ````{py:function} data_link_hop(slot_counter: int, hop_param2: int, freq_table: nearlink_sdr.phy.freq_hopping.FreqTable) -> int :canonical: nearlink_sdr.phy.freq_hopping.data_link_hop ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.data_link_hop ``` ```` ````{py:function} derive_hop_param2(identifier: int, bit_width: int = 32) -> int :canonical: nearlink_sdr.phy.freq_hopping.derive_hop_param2 ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.derive_hop_param2 ``` ```` ````{py:function} freq_to_channel(freq_mhz: float, band: str = BAND_2400) -> int :canonical: nearlink_sdr.phy.freq_hopping.freq_to_channel ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.freq_to_channel ``` ```` ````{py:function} generate_hopping_sequence(n_hops: int, hop_param2: int, freq_table: nearlink_sdr.phy.freq_hopping.FreqTable | None = None, link_type: str = 'data', start_slot: int = 0) -> list[int] :canonical: nearlink_sdr.phy.freq_hopping.generate_hopping_sequence ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.generate_hopping_sequence ``` ```` ````{py:function} hopping_prng(hop_param1: int, hop_param2: int) -> int :canonical: nearlink_sdr.phy.freq_hopping.hopping_prng ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.hopping_prng ``` ```` ````{py:function} mgmt_frame_hop(slot_counter: int, hop_param2: int, freq_table: nearlink_sdr.phy.freq_hopping.FreqTable) -> int :canonical: nearlink_sdr.phy.freq_hopping.mgmt_frame_hop ```{autodoc2-docstring} nearlink_sdr.phy.freq_hopping.mgmt_frame_hop ``` ````