# {py:mod}`nearlink_sdr.phy.control_info` ```{py:module} nearlink_sdr.phy.control_info ``` ```{autodoc2-docstring} nearlink_sdr.phy.control_info :allowtitles: ``` ## Module Contents ### Classes ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`ControlInfoA1 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1 :summary: ``` * - {py:obj}`ControlInfoA2 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2 :summary: ``` * - {py:obj}`ControlInfoA3 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3 :summary: ``` * - {py:obj}`ControlInfoA4 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4 :summary: ``` * - {py:obj}`ControlInfoA5 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5 :summary: ``` * - {py:obj}`ControlInfoA6 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6 :summary: ``` * - {py:obj}`ControlInfoA7 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7 :summary: ``` * - {py:obj}`ControlInfoB1 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1 :summary: ``` * - {py:obj}`ControlInfoB2 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2 :summary: ``` * - {py:obj}`ControlInfoB3 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3 :summary: ``` * - {py:obj}`ControlInfoB4 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4 :summary: ``` * - {py:obj}`ControlInfoB5 ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5 :summary: ``` * - {py:obj}`ControlInfoType ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType :summary: ``` ```` ### Functions ````{list-table} :class: autosummary longtable :align: left * - {py:obj}`polar_decode_control ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.polar_decode_control :summary: ``` * - {py:obj}`polar_encode_control ` - ```{autodoc2-docstring} nearlink_sdr.phy.control_info.polar_encode_control :summary: ``` ```` ### API `````{py:class} ControlInfoA1 :canonical: nearlink_sdr.phy.control_info.ControlInfoA1 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1 ``` ````{py:attribute} broadcast_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.broadcast_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.broadcast_type ``` ```` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.packet_type ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA1] :canonical: nearlink_sdr.phy.control_info.ControlInfoA1.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA1.unpack ``` ```` ````` `````{py:class} ControlInfoA2 :canonical: nearlink_sdr.phy.control_info.ControlInfoA2 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2 ``` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.packet_type ``` ```` ````{py:attribute} empty_packet :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.empty_packet :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.empty_packet ``` ```` ````{py:attribute} tx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.tx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.tx_sn ``` ```` ````{py:attribute} rx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.rx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.rx_sn ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.flow_ctrl ``` ```` ````{py:attribute} sys_mgmt_rx :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.sys_mgmt_rx :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.sys_mgmt_rx ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA2] :canonical: nearlink_sdr.phy.control_info.ControlInfoA2.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA2.unpack ``` ```` ````` `````{py:class} ControlInfoA3 :canonical: nearlink_sdr.phy.control_info.ControlInfoA3 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3 ``` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.packet_type ``` ```` ````{py:attribute} empty_packet :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.empty_packet :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.empty_packet ``` ```` ````{py:attribute} tx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.tx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.tx_sn ``` ```` ````{py:attribute} rx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.rx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.rx_sn ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.flow_ctrl ``` ```` ````{py:attribute} async_sched :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.async_sched :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.async_sched ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA3] :canonical: nearlink_sdr.phy.control_info.ControlInfoA3.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA3.unpack ``` ```` ````` `````{py:class} ControlInfoA4 :canonical: nearlink_sdr.phy.control_info.ControlInfoA4 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4 ``` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.packet_type ``` ```` ````{py:attribute} empty_packet :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.empty_packet :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.empty_packet ``` ```` ````{py:attribute} tx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.tx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.tx_sn ``` ```` ````{py:attribute} rx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.rx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.rx_sn ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.flow_ctrl ``` ```` ````{py:attribute} async_sched :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.async_sched :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.async_sched ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA4] :canonical: nearlink_sdr.phy.control_info.ControlInfoA4.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA4.unpack ``` ```` ````` `````{py:class} ControlInfoA5 :canonical: nearlink_sdr.phy.control_info.ControlInfoA5 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5 ``` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.packet_type ``` ```` ````{py:attribute} empty_packet :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.empty_packet :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.empty_packet ``` ```` ````{py:attribute} tx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.tx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.tx_sn ``` ```` ````{py:attribute} rx_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.rx_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.rx_sn ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.flow_ctrl ``` ```` ````{py:attribute} async_sched :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.async_sched :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.async_sched ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA5] :canonical: nearlink_sdr.phy.control_info.ControlInfoA5.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA5.unpack ``` ```` ````` `````{py:class} ControlInfoA6 :canonical: nearlink_sdr.phy.control_info.ControlInfoA6 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6 ``` ````{py:attribute} packet_type :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.packet_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.packet_type ``` ```` ````{py:attribute} packet_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.packet_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.packet_sn ``` ```` ````{py:attribute} packet_group :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.packet_group :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.packet_group ``` ```` ````{py:attribute} end_indicator :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.end_indicator :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.end_indicator ``` ```` ````{py:attribute} sys_mgmt_rx :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.sys_mgmt_rx :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.sys_mgmt_rx ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA6] :canonical: nearlink_sdr.phy.control_info.ControlInfoA6.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA6.unpack ``` ```` ````` `````{py:class} ControlInfoA7 :canonical: nearlink_sdr.phy.control_info.ControlInfoA7 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7 ``` ````{py:attribute} packet_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.packet_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.packet_sn ``` ```` ````{py:attribute} packet_group :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.packet_group :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.packet_group ``` ```` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.reserved ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.data_length ``` ```` ````{py:method} pack(sync_seed: int, lqi: int | None = None) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], sync_seed: int, has_lqi: bool = False) -> tuple[int | None, nearlink_sdr.phy.control_info.ControlInfoA7] :canonical: nearlink_sdr.phy.control_info.ControlInfoA7.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoA7.unpack ``` ```` ````` `````{py:class} ControlInfoB1 :canonical: nearlink_sdr.phy.control_info.ControlInfoB1 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1 ``` ````{py:attribute} frame_format :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.frame_format :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.frame_format ``` ```` ````{py:attribute} harq_feedback :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.harq_feedback :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.harq_feedback ``` ```` ````{py:attribute} packet_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.packet_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.packet_sn ``` ```` ````{py:attribute} mcs :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.mcs :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.mcs ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.data_length ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.flow_ctrl ``` ```` ````{py:attribute} upper_link :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.upper_link :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.upper_link ``` ```` ````{py:method} pack(llid: int) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], llid: int) -> nearlink_sdr.phy.control_info.ControlInfoB1 :canonical: nearlink_sdr.phy.control_info.ControlInfoB1.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB1.unpack ``` ```` ````` `````{py:class} ControlInfoB2 :canonical: nearlink_sdr.phy.control_info.ControlInfoB2 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2 ``` ````{py:attribute} harq_feedback :canonical: nearlink_sdr.phy.control_info.ControlInfoB2.harq_feedback :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2.harq_feedback ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoB2.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2.flow_ctrl ``` ```` ````{py:attribute} upper_link :canonical: nearlink_sdr.phy.control_info.ControlInfoB2.upper_link :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2.upper_link ``` ```` ````{py:method} pack(llid: int) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoB2.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], llid: int) -> nearlink_sdr.phy.control_info.ControlInfoB2 :canonical: nearlink_sdr.phy.control_info.ControlInfoB2.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB2.unpack ``` ```` ````` `````{py:class} ControlInfoB3 :canonical: nearlink_sdr.phy.control_info.ControlInfoB3 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3 ``` ````{py:attribute} packet_group :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.packet_group :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.packet_group ``` ```` ````{py:attribute} packet_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.packet_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.packet_sn ``` ```` ````{py:attribute} mcs :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.mcs :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.mcs ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.data_length ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.flow_ctrl ``` ```` ````{py:attribute} max_sn_indicator :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.max_sn_indicator :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.max_sn_indicator ``` ```` ````{py:method} pack(llid: int) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], llid: int) -> nearlink_sdr.phy.control_info.ControlInfoB3 :canonical: nearlink_sdr.phy.control_info.ControlInfoB3.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB3.unpack ``` ```` ````` `````{py:class} ControlInfoB4 :canonical: nearlink_sdr.phy.control_info.ControlInfoB4 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4 ``` ````{py:attribute} broadcast_group_id :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.broadcast_group_id :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.broadcast_group_id ``` ```` ````{py:attribute} data_update :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.data_update :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.data_update ``` ```` ````{py:attribute} packet_sn :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.packet_sn :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.packet_sn ``` ```` ````{py:attribute} mcs :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.mcs :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.mcs ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.data_length ``` ```` ````{py:attribute} flow_ctrl :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.flow_ctrl :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.flow_ctrl ``` ```` ````{py:attribute} max_sn_indicator :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.max_sn_indicator :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.max_sn_indicator ``` ```` ````{py:method} pack(llid: int) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], llid: int) -> nearlink_sdr.phy.control_info.ControlInfoB4 :canonical: nearlink_sdr.phy.control_info.ControlInfoB4.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB4.unpack ``` ```` ````` `````{py:class} ControlInfoB5 :canonical: nearlink_sdr.phy.control_info.ControlInfoB5 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5 ``` ````{py:attribute} reserved :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.reserved :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.reserved ``` ```` ````{py:attribute} msg_type :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.msg_type :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.msg_type ``` ```` ````{py:attribute} accessible :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.accessible :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.accessible ``` ```` ````{py:attribute} queryable :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.queryable :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.queryable ``` ```` ````{py:attribute} directed_content :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.directed_content :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.directed_content ``` ```` ````{py:attribute} undirected_content :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.undirected_content :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.undirected_content ``` ```` ````{py:attribute} data_update :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.data_update :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.data_update ``` ```` ````{py:attribute} mcs :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.mcs :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.mcs ``` ```` ````{py:attribute} data_length :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.data_length :type: int :value: > None ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.data_length ``` ```` ````{py:method} pack(llid: int) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.pack ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.pack ``` ```` ````{py:method} unpack(bits: numpy.typing.NDArray[numpy.int_], llid: int) -> nearlink_sdr.phy.control_info.ControlInfoB5 :canonical: nearlink_sdr.phy.control_info.ControlInfoB5.unpack :classmethod: ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoB5.unpack ``` ```` ````` `````{py:class} ControlInfoType() :canonical: nearlink_sdr.phy.control_info.ControlInfoType Bases: {py:obj}`enum.IntEnum` ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType ``` ```{rubric} Initialization ``` ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.__init__ ``` ````{py:attribute} A1 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A1 :value: > 1 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A1 ``` ```` ````{py:attribute} A2 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A2 :value: > 2 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A2 ``` ```` ````{py:attribute} A3 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A3 :value: > 3 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A3 ``` ```` ````{py:attribute} A4 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A4 :value: > 4 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A4 ``` ```` ````{py:attribute} A5 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A5 :value: > 5 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A5 ``` ```` ````{py:attribute} A6 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A6 :value: > 6 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A6 ``` ```` ````{py:attribute} A7 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.A7 :value: > 7 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.A7 ``` ```` ````{py:attribute} B1 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.B1 :value: > 17 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.B1 ``` ```` ````{py:attribute} B2 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.B2 :value: > 18 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.B2 ``` ```` ````{py:attribute} B3 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.B3 :value: > 19 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.B3 ``` ```` ````{py:attribute} B4 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.B4 :value: > 20 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.B4 ``` ```` ````{py:attribute} B5 :canonical: nearlink_sdr.phy.control_info.ControlInfoType.B5 :value: > 21 ```{autodoc2-docstring} nearlink_sdr.phy.control_info.ControlInfoType.B5 ``` ```` ````` ````{py:function} polar_decode_control(coded_bits: numpy.typing.NDArray[numpy.int_], k_info: int, n_coded: int = 64) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.polar_decode_control ```{autodoc2-docstring} nearlink_sdr.phy.control_info.polar_decode_control ``` ```` ````{py:function} polar_encode_control(raw_bits: numpy.typing.NDArray[numpy.int_], n_coded: int = 64) -> numpy.typing.NDArray[numpy.int_] :canonical: nearlink_sdr.phy.control_info.polar_encode_control ```{autodoc2-docstring} nearlink_sdr.phy.control_info.polar_encode_control ``` ````