## Source Code

### Directory Structure

The CHIP src directory is structured as follows:

| File / Folder | Contents                                           |
| ------------- | -------------------------------------------------- |
| app           | Application Layer -- Zigbee Cluster Library (ZCL)  |
| ble           | BLE Layer -- Bluetooth Transport Protocol (BTP)    |
| controller    | Controller API                                     |
| crypto        | Cryptography libraries                             |
| darwin        | Darwin Framework (iOS and macOS)                   |
| include       | Public headers                                     |
| inet          | Network Layer -- TCP and UDP endpoints             |
| lib           | Core and Support libraries                         |
| lwip          | Lightweight IP adaptation (to third_party library) |
| platform      | Device Layer -- platform portability adaptations   |
| qrcodetool    | QR code tool                                       |
| setup_payload | QR code setup data encode / decode library         |
| system        | System Layer -- common APIs for mem, work, etc.    |
| test_driver   | Framework for on-device testing                    |

#### Darwin

##### Near Field Communication Tag Reading

NFC Tag Reading is disabled by default because a paid Apple developer account is
requird to have it enabled. If you want to enable it and you have a paid Apple
developer account, go to the CHIPTool iOS target and turn on Near Field
Communication Tag Reading under the Capabilities tab.
