Usphinx.addnodesdocument)}( rawsourcechildren]( translations LanguagesNode)}(hhh](h pending_xref)}(hhh]docutils.nodesTextChinese (Simplified)}parenthsba attributes}(ids]classes]names]dupnames]backrefs] refdomainstdreftypedoc reftarget)/translations/zh_CN/networking/ieee802154modnameN classnameN refexplicitutagnamehhh ubh)}(hhh]hChinese (Traditional)}hh2sbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/zh_TW/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hItalian}hhFsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/it_IT/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hJapanese}hhZsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ja_JP/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hKorean}hhnsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/ko_KR/networking/ieee802154modnameN classnameN refexplicituh1hhh ubh)}(hhh]hSpanish}hhsbah}(h]h ]h"]h$]h&] refdomainh)reftypeh+ reftarget)/translations/sp_SP/networking/ieee802154modnameN classnameN refexplicituh1hhh ubeh}(h]h ]h"]h$]h&]current_languageEnglishuh1h hh _documenthsourceNlineNubhsection)}(hhh](htitle)}(hIEEE 802.15.4 Developer's Guideh]h!IEEE 802.15.4 Developer’s Guide}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhC/var/lib/git/docbuild/linux/Documentation/networking/ieee802154.rsthKubh)}(hhh](h)}(h Introductionh]h Introduction}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhhhhhKubh paragraph)}(hThe IEEE 802.15.4 working group focuses on standardization of the bottom two layers: Medium Access Control (MAC) and Physical access (PHY). And there are mainly two options available for upper layers:h]hThe IEEE 802.15.4 working group focuses on standardization of the bottom two layers: Medium Access Control (MAC) and Physical access (PHY). And there are mainly two options available for upper layers:}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh bullet_list)}(hhh](h list_item)}(h6ZigBee - proprietary protocol from the ZigBee Allianceh]h)}(hhh]h6ZigBee - proprietary protocol from the ZigBee Alliance}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubh)}(h?6LoWPAN - IPv6 networking over low rate personal area networks h]h)}(h>6LoWPAN - IPv6 networking over low rate personal area networksh]h>6LoWPAN - IPv6 networking over low rate personal area networks}(hhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK hhubah}(h]h ]h"]h$]h&]uh1hhhhhhhhNubeh}(h]h ]h"]h$]h&]bullet-uh1hhhhK hhhhubh)}(hThe goal of the Linux-wpan is to provide a complete implementation of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks.h]hThe goal of the Linux-wpan is to provide a complete implementation of the IEEE 802.15.4 and 6LoWPAN protocols. IEEE 802.15.4 is a stack of protocols for organizing Low-Rate Wireless Personal Area Networks.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(h*The stack is composed of three main parts:h]h*The stack is composed of three main parts:}(hj$hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhhhhubh)}(hhh](h)}(hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/managementh]h)}(hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/managementh]hIEEE 802.15.4 layer; We have chosen to use plain Berkeley socket API, the generic Linux networking stack to transfer IEEE 802.15.4 data messages and a special protocol over netlink for configuration/management}(hj9hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhj5ubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhNubh)}(hBMAC - provides access to shared channel and reliable data deliveryh]h)}(hjOh]hBMAC - provides access to shared channel and reliable data delivery}(hjQhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjMubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhNubh)}(h PHY - represents device drivers h]h)}(hPHY - represents device driversh]hPHY - represents device drivers}(hjhhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjdubah}(h]h ]h"]h$]h&]uh1hhj2hhhhhNubeh}(h]h ]h"]h$]h&]jjuh1hhhhKhhhhubeh}(h] introductionah ]h"] introductionah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h Socket APIh]h Socket API}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKubh literal_block)}(h.int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0);h]h.int sd = socket(PF_IEEE802154, SOCK_DGRAM, 0);}hjsbah}(h]h ]h"]h$]h&] xml:spacepreserveuh1jhhhKhjhhubh)}(hXThe address family, socket addresses etc. are defined in the include/net/af_ieee802154.h header or in the special header in the userspace package (see either https://linux-wpan.org/wpan-tools.html or the git tree at https://github.com/linux-wpan/wpan-tools).h](hThe address family, socket addresses etc. are defined in the include/net/af_ieee802154.h header or in the special header in the userspace package (see either }(hjhhhNhNubh reference)}(h&https://linux-wpan.org/wpan-tools.htmlh]h&https://linux-wpan.org/wpan-tools.html}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh or the git tree at }(hjhhhNhNubj)}(h(https://github.com/linux-wpan/wpan-toolsh]h(https://github.com/linux-wpan/wpan-tools}(hjhhhNhNubah}(h]h ]h"]h$]h&]refurijuh1jhjubh).}(hjhhhNhNubeh}(h]h ]h"]h$]h&]uh1hhhhK!hjhhubeh}(h] socket-apiah ]h"] socket apiah$]h&]uh1hhhhhhhhKubh)}(hhh](h)}(h6LoWPAN Linux implementationh]h6LoWPAN Linux implementation}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK'ubh)}(hXThe IEEE 802.15.4 standard specifies an MTU of 127 bytes, yielding about 80 octets of actual MAC payload once security is turned on, on a wireless link with a link throughput of 250 kbps or less. The 6LoWPAN adaptation format [RFC4944] was specified to carry IPv6 datagrams over such constrained links, taking into account limited bandwidth, memory, or energy resources that are expected in applications such as wireless Sensor Networks. [RFC4944] defines a Mesh Addressing header to support sub-IP forwarding, a Fragmentation header to support the IPv6 minimum MTU requirement [RFC2460], and stateless header compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the relatively large IPv6 and UDP headers down to (in the best case) several bytes.h]hXThe IEEE 802.15.4 standard specifies an MTU of 127 bytes, yielding about 80 octets of actual MAC payload once security is turned on, on a wireless link with a link throughput of 250 kbps or less. The 6LoWPAN adaptation format [RFC4944] was specified to carry IPv6 datagrams over such constrained links, taking into account limited bandwidth, memory, or energy resources that are expected in applications such as wireless Sensor Networks. [RFC4944] defines a Mesh Addressing header to support sub-IP forwarding, a Fragmentation header to support the IPv6 minimum MTU requirement [RFC2460], and stateless header compression for IPv6 datagrams (LOWPAN_HC1 and LOWPAN_HC2) to reduce the relatively large IPv6 and UDP headers down to (in the best case) several bytes.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK)hjhhubh)}(hIn September 2011 the standard update was published - [RFC6282]. It deprecates HC1 and HC2 compression and defines IPHC encoding format which is used in this Linux implementation.h]hIn September 2011 the standard update was published - [RFC6282]. It deprecates HC1 and HC2 compression and defines IPHC encoding format which is used in this Linux implementation.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK4hjhhubh)}(haAll the code related to 6lowpan you may find in files: net/6lowpan/* and net/ieee802154/6lowpan/*h]haAll the code related to 6lowpan you may find in files: net/6lowpan/* and net/ieee802154/6lowpan/*}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK8hjhhubh)}(hTo setup a 6LoWPAN interface you need: 1. Add IEEE802.15.4 interface and set channel and PAN ID; 2. Add 6lowpan interface by command like: # ip link add link wpan0 name lowpan0 type lowpan 3. Bring up 'lowpan0' interfaceh]hTo setup a 6LoWPAN interface you need: 1. Add IEEE802.15.4 interface and set channel and PAN ID; 2. Add 6lowpan interface by command like: # ip link add link wpan0 name lowpan0 type lowpan 3. Bring up ‘lowpan0’ interface}(hj&hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK;hjhhubeh}(h]lowpan-linux-implementationah ]h"]6lowpan linux implementationah$]h&]uh1hhhhhhhhK'ubh)}(hhh](h)}(hDriversh]hDrivers}(hj?hhhNhNubah}(h]h ]h"]h$]h&]uh1hhj<hhhhhKBubh)}(hXLike with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) 'HardMAC'. The MAC layer is implemented in the device itself, the device exports a management (e.g. MLME) and data API. 2) 'SoftMAC' or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparison, automagic ACK handling, address matching, etc.h]hXLike with WiFi, there are several types of devices implementing IEEE 802.15.4. 1) ‘HardMAC’. The MAC layer is implemented in the device itself, the device exports a management (e.g. MLME) and data API. 2) ‘SoftMAC’ or just radio. These types of devices are just radio transceivers possibly with some kinds of acceleration like automatic CRC computation and comparison, automagic ACK handling, address matching, etc.}(hjMhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKDhj<hhubh)}(hUEach type of device requires a different approach to be hooked into the Linux kernel.h]hUEach type of device requires a different approach to be hooked into the Linux kernel.}(hj[hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKKhj<hhubh)}(hhh](h)}(hHardMACh]hHardMAC}(hjlhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjihhhhhKOubh)}(hXJSee the header include/net/ieee802154_netdev.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. On skb reception skb->cb must contain additional info as described in the struct ieee802154_mac_cb. During packet transmission the skb->cb is used to provide additional data to the device's header_ops->create function. Be aware that this data can be overridden later (when socket code submits skb to qdisc), so if you need something from that cb later, you should store info in the skb->data on your own.h]hXLSee the header include/net/ieee802154_netdev.h. You have to implement Linux net_device, with .type = ARPHRD_IEEE802154. Data is exchanged with socket family code via plain sk_buffs. On skb reception skb->cb must contain additional info as described in the struct ieee802154_mac_cb. During packet transmission the skb->cb is used to provide additional data to the device’s header_ops->create function. Be aware that this data can be overridden later (when socket code submits skb to qdisc), so if you need something from that cb later, you should store info in the skb->data on your own.}(hjzhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKQhjihhubh)}(hXTo hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. The fields assoc_req, assoc_resp, disassoc_req, start_req, and scan_req are optional. All other fields are required.h]hXTo hook the MLME interface you have to populate the ml_priv field of your net_device with a pointer to struct ieee802154_mlme_ops instance. The fields assoc_req, assoc_resp, disassoc_req, start_req, and scan_req are optional. All other fields are required.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKZhjihhubeh}(h]hardmacah ]h"]hardmacah$]h&]uh1hhj<hhhhhKOubh)}(hhh](h)}(hSoftMACh]hSoftMAC}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhK`ubh)}(hThe MAC is the middle layer in the IEEE 802.15.4 Linux stack. At the moment, it provides an interface for driver registration and management of slave interfaces.h]hThe MAC is the middle layer in the IEEE 802.15.4 Linux stack. At the moment, it provides an interface for driver registration and management of slave interfaces.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKbhjhhubh)}(hNOTE: Currently the only monitor device type is supported - it's IEEE 802.15.4 stack interface for network sniffers (e.g. WireShark).h]hNOTE: Currently the only monitor device type is supported - it’s IEEE 802.15.4 stack interface for network sniffers (e.g. WireShark).}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKfhjhhubh)}(h(This layer is going to be extended soon.h]h(This layer is going to be extended soon.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKihjhhubh)}(hRSee header include/net/mac802154.h and several drivers in drivers/net/ieee802154/.h]hRSee header include/net/mac802154.h and several drivers in drivers/net/ieee802154/.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKkhjhhubeh}(h]softmacah ]h"]softmacah$]h&]uh1hhj<hhhhhK`ubh)}(hhh](h)}(h Fake driversh]h Fake drivers}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKoubh)}(hIn addition there is a driver available which simulates a real device with SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option provides a possibility to test and debug the stack without usage of real hardware.h]hIn addition there is a driver available which simulates a real device with SoftMAC (fakelb - IEEE 802.15.4 loopback driver) interface. This option provides a possibility to test and debug the stack without usage of real hardware.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKqhjhhubeh}(h] fake-driversah ]h"] fake driversah$]h&]uh1hhj<hhhhhKoubeh}(h]driversah ]h"]driversah$]h&]uh1hhhhhhhhKBubh)}(hhh](h)}(hDevice drivers APIh]hDevice drivers API}(hj!hhhNhNubah}(h]h ]h"]h$]h&]uh1hhjhhhhhKvubh)}(h8The include/net/mac802154.h defines following functions:h]h8The include/net/mac802154.h defines following functions:}(hj/hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKxhjhhubhindex)}(hhh]h}(h]h ]h"]h$]h&]entries](single$ieee802154_alloc_device (C function)c.ieee802154_alloc_devicehNtauh1j=hjhhhNhNubhdesc)}(hhh](hdesc_signature)}(h]struct ieee802154_dev *ieee802154_alloc_device (size_t priv_size, struct ieee802154_ops *ops)h]hdesc_signature_line)}(h\struct ieee802154_dev *ieee802154_alloc_device(size_t priv_size, struct ieee802154_ops *ops)h](hdesc_sig_keyword)}(hstructh]hstruct}(hjahhhNhNubah}(h]h ]kah"]h$]h&]uh1j_hj[hhhhhKzubhdesc_sig_space)}(h h]h }(hjrhhhNhNubah}(h]h ]wah"]h$]h&]uh1jphj[hhhhhKzubh)}(hhh]h desc_sig_name)}(hieee802154_devh]hieee802154_dev}(hjhhhNhNubah}(h]h ]nah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomaincreftype identifier reftargetjmodnameN classnameN c:parent_keysphinx.domains.c LookupKey)}data]j ASTIdentifier)}jieee802154_alloc_devicesbc.ieee802154_alloc_deviceasbuh1hhj[hhhhhKzubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj[hhhhhKzubhdesc_sig_punctuation)}(h*h]h*}(hjhhhNhNubah}(h]h ]pah"]h$]h&]uh1jhj[hhhhhKzubh desc_name)}(hieee802154_alloc_deviceh]j)}(hjh]hieee802154_alloc_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](sig-namedescnameeh"]h$]h&]jjuh1jhj[hhhhhKzubhdesc_parameterlist)}(h.(size_t priv_size, struct ieee802154_ops *ops)h](hdesc_parameter)}(hsize_t priv_sizeh](h)}(hhh]j)}(hsize_th]hsize_t}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jc.ieee802154_alloc_deviceasbuh1hhjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(h priv_sizeh]h priv_size}(hj&hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct ieee802154_ops *opsh](j`)}(hjch]hstruct}(hj?hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj;ubjq)}(h h]h }(hjLhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj;ubh)}(hhh]j)}(hieee802154_opsh]hieee802154_ops}(hj]hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjZubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj_modnameN classnameNjj)}j]jc.ieee802154_alloc_deviceasbuh1hhj;ubjq)}(h h]h }(hj{hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj;ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubj)}(hopsh]hops}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj;ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhj[hhhhhKzubeh}(h]h ]h"]h$]h&]jj add_permalinkuh1jYsphinx_line_type declaratorhjUhhhhhKzubah}(h]jLah ](sig sig-objecteh"]h$]h&] is_multiline _toc_parts) _toc_namehuh1jShhhKzhjPhhubh desc_content)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjPhhhhhKzubeh}(h]h ](jfunctioneh"]h$]h&]domainjobjtypejdesctypejnoindex noindexentrynocontentsentryuh1jNhhhjhNhNubh)}(h.Allocation of IEEE 802.15.4 compatible device.h]h.Allocation of IEEE 802.15.4 compatible device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhK|hjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJ#ieee802154_free_device (C function)c.ieee802154_free_devicehNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h7void ieee802154_free_device(struct ieee802154_dev *dev)h]jZ)}(h7void ieee802154_free_device(struct ieee802154_dev *dev)h](hdesc_sig_keyword_type)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]ktah"]h$]h&]uh1jhjhhhhhK~ubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhK~ubj)}(hieee802154_free_deviceh]j)}(hieee802154_free_deviceh]hieee802154_free_device}(hj'hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj#ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhK~ubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](j`)}(hjch]hstruct}(hjChhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj?ubjq)}(h h]h }(hjPhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj?ubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hjahhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj^ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjcmodnameN classnameNjj)}j]j)}jj)sbc.ieee802154_free_deviceasbuh1hhj?ubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj?ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj?ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj;ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhhhK~ubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhK~ubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jShhhK~hjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhK~ubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jNhhhjhNhNubh)}(hFreeing allocated device.h]hFreeing allocated device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJ'ieee802154_register_device (C function)c.ieee802154_register_devicehNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h:int ieee802154_register_device(struct ieee802154_dev *dev)h]jZ)}(h:int ieee802154_register_device(struct ieee802154_dev *dev)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhKubj)}(hieee802154_register_deviceh]j)}(hieee802154_register_deviceh]hieee802154_register_device}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](j`)}(hjch]hstruct}(hj6hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj2ubjq)}(h h]h }(hjChhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj2ubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hjThhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjQubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjVmodnameN classnameNjj)}j]j)}jjsbc.ieee802154_register_deviceasbuh1hhj2ubjq)}(h h]h }(hjthhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj2ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj.ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jShhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jNhhhjhNhNubh)}(hRegister PHY in the system.h]hRegister PHY in the system.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJ)ieee802154_unregister_device (C function)c.ieee802154_unregister_devicehNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h=void ieee802154_unregister_device(struct ieee802154_dev *dev)h]jZ)}(h=void ieee802154_unregister_device(struct ieee802154_dev *dev)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhKubj)}(hieee802154_unregister_deviceh]j)}(hieee802154_unregister_deviceh]hieee802154_unregister_device}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h(struct ieee802154_dev *dev)h]j)}(hstruct ieee802154_dev *devh](j`)}(hjch]hstruct}(hj)hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj%ubjq)}(h h]h }(hj6hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj%ubh)}(hhh]j)}(hieee802154_devh]hieee802154_dev}(hjGhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjDubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjImodnameN classnameNjj)}j]j)}jjsbc.ieee802154_unregister_deviceasbuh1hhj%ubjq)}(h h]h }(hjghhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj%ubj)}(hjh]h*}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubj)}(hdevh]hdev}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj%ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj!ubah}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jShhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jNhhhjhNhNubh)}(hFreeing registered PHY.h]hFreeing registered PHY.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJ"ieee802154_rx_irqsafe (C function)c.ieee802154_rx_irqsafehNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(hQvoid ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h]jZ)}(hQvoid ieee802154_rx_irqsafe(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h](j)}(hvoidh]hvoid}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhKubj)}(hieee802154_rx_irqsafeh]j)}(hieee802154_rx_irqsafeh]hieee802154_rx_irqsafe}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h7(struct ieee802154_hw *hw, struct sk_buff *skb, u8 lqi)h](j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubjq)}(h h]h }(hj)hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj:hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj7ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj<modnameN classnameNjj)}j]j)}jjsbc.ieee802154_rx_irqsafeasbuh1hhjubjq)}(h h]h }(hjZhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hjh]h*}(hjhhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hhwh]hhw}(hjuhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hstruct sk_buff *skbh](j`)}(hjch]hstruct}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jVc.ieee802154_rx_irqsafeasbuh1hhjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hskbh]hskb}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hu8 lqih](h)}(hhh]j)}(hu8h]hu8}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]jVc.ieee802154_rx_irqsafeasbuh1hhjubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hlqih]hlqi}(hj- hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jShhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj` jj` jjjuh1jNhhhjhNhNubh)}(hTelling 802.15.4 module there is a new received frame in the skb with the RF Link Quality Indicator (LQI) from the hardware device.h]hTelling 802.15.4 module there is a new received frame in the skb with the RF Link Quality Indicator (LQI) from the hardware device.}(hjd hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJ%ieee802154_xmit_complete (C function)c.ieee802154_xmit_completehNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h_void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h]jZ)}(h_void ieee802154_xmit_complete(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h](j)}(hvoidh]hvoid}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj hhhhhKubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj hhhhhKubj)}(hieee802154_xmit_completeh]j)}(hieee802154_xmit_completeh]hieee802154_xmit_complete}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj hhhhhKubj)}(hB(struct ieee802154_hw *hw, struct sk_buff *skb, bool ifs_handling)h](j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jj sbc.ieee802154_xmit_completeasbuh1hhj ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hstruct sk_buff *skbh](j`)}(hjch]hstruct}(hj9 hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj5 ubjq)}(h h]h }(hjF hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj5 ubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hjW hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjT ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjY modnameN classnameNjj)}j]j c.ieee802154_xmit_completeasbuh1hhj5 ubjq)}(h h]h }(hju hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj5 ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5 ubj)}(hskbh]hskb}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj5 ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubj)}(hbool ifs_handlingh](j)}(hboolh]hbool}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj ubj)}(h ifs_handlingh]h ifs_handling}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhj ubeh}(h]h ]h"]h$]h&]jjuh1jhj hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhj hhhhhKubah}(h]j~ ah ](jjeh"]h$]h&]jj)jhuh1jShhhKhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jNhhhjhNhNubh)}(hfTelling 802.15.4 module the frame in the skb is or going to be transmitted through the hardware deviceh]hfTelling 802.15.4 module the frame in the skb is or going to be transmitted through the hardware device}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hmThe device driver must implement the following callbacks in the IEEE 802.15.4 operations structure at least::h]hlThe device driver must implement the following callbacks in the IEEE 802.15.4 operations structure at least:}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj)}(hXfstruct ieee802154_ops { ... int (*start)(struct ieee802154_hw *hw); void (*stop)(struct ieee802154_hw *hw); ... int (*xmit_async)(struct ieee802154_hw *hw, struct sk_buff *skb); int (*ed)(struct ieee802154_hw *hw, u8 *level); int (*set_channel)(struct ieee802154_hw *hw, u8 page, u8 channel); ... };h]hXfstruct ieee802154_ops { ... int (*start)(struct ieee802154_hw *hw); void (*stop)(struct ieee802154_hw *hw); ... int (*xmit_async)(struct ieee802154_hw *hw, struct sk_buff *skb); int (*ed)(struct ieee802154_hw *hw, u8 *level); int (*set_channel)(struct ieee802154_hw *hw, u8 page, u8 channel); ... };}hj sbah}(h]h ]h"]h$]h&]jjuh1jhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJstart (C function)c.starthNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h#int start(struct ieee802154_hw *hw)h]jZ)}(h#int start(struct ieee802154_hw *hw)h](j)}(hinth]hint}(hj? hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj; hhhhhKubjq)}(h h]h }(hjM hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj; hhhhhKubj)}(hstarth]j)}(hstarth]hstart}(hj_ hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj[ ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj; hhhhhKubj)}(h(struct ieee802154_hw *hw)h]j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hj{ hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjw ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjw ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jja sbc.startasbuh1hhjw ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjw ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjw ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjs ubah}(h]h ]h"]h$]h&]jjuh1jhj; hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhj7 hhhhhKubah}(h]j2 ah ](jjeh"]h$]h&]jj)jhuh1jShhhKhj4 hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj4 hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jNhhhjhNhNubh)}(hJHandler that 802.15.4 module calls for the hardware device initialization.h]hJHandler that 802.15.4 module calls for the hardware device initialization.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJstop (C function)c.stophNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h#void stop(struct ieee802154_hw *hw)h]jZ)}(h#void stop(struct ieee802154_hw *hw)h](j)}(hvoidh]hvoid}(hj2 hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj. hhhhhKubjq)}(h h]h }(hj@ hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj. hhhhhKubj)}(hstoph]j)}(hstoph]hstop}(hjR hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjN ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj. hhhhhKubj)}(h(struct ieee802154_hw *hw)h]j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hjn hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjj ubjq)}(h h]h }(hj{ hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjj ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjT sbc.stopasbuh1hhjj ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjj ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjf ubah}(h]h ]h"]h$]h&]jjuh1jhj. hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhj* hhhhhKubah}(h]j% ah ](jjeh"]h$]h&]jj)jhuh1jShhhKhj' hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj' hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj jj jjjuh1jNhhhjhNhNubh)}(hCHandler that 802.15.4 module calls for the hardware device cleanup.h]hCHandler that 802.15.4 module calls for the hardware device cleanup.}(hj hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJxmit_async (C function) c.xmit_asynchNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h=int xmit_async(struct ieee802154_hw *hw, struct sk_buff *skb)h]jZ)}(h=int xmit_async(struct ieee802154_hw *hw, struct sk_buff *skb)h](j)}(hinth]hint}(hj% hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj! hhhhhKubjq)}(h h]h }(hj3 hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj! hhhhhKubj)}(h xmit_asynch]j)}(h xmit_asynch]h xmit_async}(hjE hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjA ubah}(h]h ](jjeh"]h$]h&]jjuh1jhj! hhhhhKubj)}(h/(struct ieee802154_hw *hw, struct sk_buff *skb)h](j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hja hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj] ubjq)}(h h]h }(hjn hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj] ubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj| ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j)}jjG sb c.xmit_asyncasbuh1hhj] ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj] ubj)}(hjh]h*}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj] ubj)}(hhwh]hhw}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj] ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjY ubj)}(hstruct sk_buff *skbh](j`)}(hjch]hstruct}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hj ubjq)}(h h]h }(hj hhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj ubh)}(hhh]j)}(hsk_buffh]hsk_buff}(hj hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj modnameN classnameNjj)}j]j c.xmit_asyncasbuh1hhj ubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj ubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubj)}(hskbh]hskb}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjY ubeh}(h]h ]h"]h$]h&]jjuh1jhj! hhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhj hhhhhKubah}(h]j ah ](jjeh"]h$]h&]jj)jhuh1jShhhKhj hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj]jj]jjjuh1jNhhhjhNhNubh)}(hqHandler that 802.15.4 module calls for each frame in the skb going to be transmitted through the hardware device.h]hqHandler that 802.15.4 module calls for each frame in the skb going to be transmitted through the hardware device.}(hjahhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJed (C function)c.edhNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h+int ed(struct ieee802154_hw *hw, u8 *level)h]jZ)}(h+int ed(struct ieee802154_hw *hw, u8 *level)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhKubj)}(hedh]j)}(hedh]hed}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h%(struct ieee802154_hw *hw, u8 *level)h](j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hjhhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]j)}jjsbc.edasbuh1hhjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hjh]h*}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hhwh]hhw}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h u8 *levelh](h)}(hhh]j)}(hu8h]hu8}(hj9hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj6ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj;modnameN classnameNjj)}j]jc.edasbuh1hhj2ubjq)}(h h]h }(hjWhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphj2ubj)}(hjh]h*}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubj)}(hlevelh]hlevel}(hjrhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj2ubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhKubah}(h]j{ah ](jjeh"]h$]h&]jj)jhuh1jShhhKhj}hhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhj}hhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjjjjjjjuh1jNhhhjhNhNubh)}(hQHandler that 802.15.4 module calls for Energy Detection from the hardware device.h]hQHandler that 802.15.4 module calls for Energy Detection from the hardware device.}(hjhhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubj>)}(hhh]h}(h]h ]h"]h$]h&]entries](jJset_channel (C function) c.set_channelhNtauh1j=hjhhhNhNubjO)}(hhh](jT)}(h>int set_channel(struct ieee802154_hw *hw, u8 page, u8 channel)h]jZ)}(h>int set_channel(struct ieee802154_hw *hw, u8 page, u8 channel)h](j)}(hinth]hint}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjhhhhhKubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjhhhhhKubj)}(h set_channelh]j)}(h set_channelh]h set_channel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ](jjeh"]h$]h&]jjuh1jhjhhhhhKubj)}(h/(struct ieee802154_hw *hw, u8 page, u8 channel)h](j)}(hstruct ieee802154_hw *hwh](j`)}(hjch]hstruct}(hj hhhNhNubah}(h]h ]jlah"]h$]h&]uh1j_hjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubh)}(hhh]j)}(h ieee802154_hwh]h ieee802154_hw}(hj*hhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj'ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetj,modnameN classnameNjj)}j]j)}jjsb c.set_channelasbuh1hhjubjq)}(h h]h }(hjJhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hjh]h*}(hjXhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubj)}(hhwh]hhw}(hjehhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(hu8 pageh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhj~ubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jF c.set_channelasbuh1hhjzubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjzubj)}(hpageh]hpage}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjzubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubj)}(h u8 channelh](h)}(hhh]j)}(hu8h]hu8}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubah}(h]h ]h"]h$]h&] refdomainjreftypej reftargetjmodnameN classnameNjj)}j]jF c.set_channelasbuh1hhjubjq)}(h h]h }(hjhhhNhNubah}(h]h ]j}ah"]h$]h&]uh1jphjubj)}(hchannelh]hchannel}(hjhhhNhNubah}(h]h ]jah"]h$]h&]uh1jhjubeh}(h]h ]h"]h$]h&]noemphjjuh1jhjubeh}(h]h ]h"]h$]h&]jjuh1jhjhhhhhKubeh}(h]h ]h"]h$]h&]jjjuh1jYjjhjhhhhhKubah}(h]jah ](jjeh"]h$]h&]jj)jhuh1jShhhKhjhhubj)}(hhh]h}(h]h ]h"]h$]h&]uh1jhjhhhhhKubeh}(h]h ](jfunctioneh"]h$]h&]jjjj(jj(jjjuh1jNhhhjhNhNubh)}(hCSet radio for listening on specific channel of the hardware device.h]hCSet radio for listening on specific channel of the hardware device.}(hj,hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubh)}(hDMoreover IEEE 802.15.4 device operations structure should be filled.h]hDMoreover IEEE 802.15.4 device operations structure should be filled.}(hj:hhhNhNubah}(h]h ]h"]h$]h&]uh1hhhhKhjhhubeh}(h]device-drivers-apiah ]h"]device drivers apiah$]h&]uh1hhhhhhhhKvubeh}(h]ieee-802-15-4-developer-s-guideah ]h"]ieee 802.15.4 developer's guideah$]h&]uh1hhhhhhhhKubeh}(h]h ]h"]h$]h&]sourcehuh1hcurrent_sourceN current_lineNsettingsdocutils.frontendValues)}(hN generatorN datestampN source_linkN source_urlN toc_backlinksentryfootnote_backlinksK sectnum_xformKstrip_commentsNstrip_elements_with_classesN strip_classesN report_levelK halt_levelKexit_status_levelKdebugNwarning_streamN tracebackinput_encoding utf-8-siginput_encoding_error_handlerstrictoutput_encodingutf-8output_encoding_error_handlerj{error_encodingutf-8error_encoding_error_handlerbackslashreplace language_codeenrecord_dependenciesNconfigN id_prefixhauto_id_prefixid dump_settingsNdump_internalsNdump_transformsNdump_pseudo_xmlNexpose_internalsNstrict_visitorN_disable_configN_sourceh _destinationN _config_files]7/var/lib/git/docbuild/linux/Documentation/docutils.confafile_insertion_enabled raw_enabledKline_length_limitM'pep_referencesN pep_base_urlhttps://peps.python.org/pep_file_url_templatepep-%04drfc_referencesN rfc_base_url&https://datatracker.ietf.org/doc/html/ tab_widthKtrim_footnote_reference_spacesyntax_highlightlong smart_quotessmartquotes_locales]character_level_inline_markupdoctitle_xform docinfo_xformKsectsubtitle_xform image_loadinglinkembed_stylesheetcloak_email_addressessection_self_linkenvNubreporterNindirect_targets]substitution_defs}substitution_names}refnames}refids}nameids}(jUjRjjjjj9j6jjjjjjjjjMjJu nametypes}(jUjjj9jjjjjMuh}(jRhjhjjj6jjj<jjijjjjjJjjLjUjjjjjjjjj~ j j2 j7 j% j* j j j{jjju footnote_refs} citation_refs} autofootnotes]autofootnote_refs]symbol_footnotes]symbol_footnote_refs] footnotes] citations]autofootnote_startKsymbol_footnote_startK id_counter collectionsCounter}Rparse_messages]transform_messages] transformerN include_log] decorationNhhub.