/**
@mainpage
@anchor defender
@brief AWS IoT Device Defender library.

> AWS IoT Device Defender is a fully managed service that helps you secure your fleet of IoT devices. AWS IoT Device Defender continuously audits your IoT configurations to make sure that they aren’t deviating from security best practices. A configuration is a set of technical controls you set to help keep information secure when devices are communicating with each other and the cloud. AWS IoT Device Defender makes it easy to maintain and enforce IoT configurations, such as ensuring device identity, authenticating and authorizing devices, and encrypting device data. AWS IoT Device Defender continuously audits the IoT configurations on your devices against a set of predefined security best practices. AWS IoT Device Defender sends an alert if there are any gaps in your IoT configuration that might create a security risk, such as identity certificates being shared across multiple devices or a device with a revoked identity certificate trying to connect to AWS IoT Core.

<span style="float:right;margin-right:4em"> &mdash; <i>Description of Device Defender from [AWS IoT documentation](https://aws.amazon.com/iot-device-defender/)</i></span><br>

This library provides an API for interacting with Device Defender.

@dependencies{defender,Defender library}
@dot "Device Defender direct dependencies"
digraph defender_dependencies
{
    node[shape=box, fontname=Helvetica, fontsize=10, style=filled];
    edge[fontname=Helvetica, fontsize=10];

    defender[label="Device Defender", fillcolor="#cc00ccff"];

    subgraph
    {
        mqtt[label="MQTT", fillcolor="#cc00ccff", URL="@ref mqtt"];
    }
    subgraph
    {
        node[fillcolor="#aed8a9ff"];
        rank = same;
        logging[label="Logging", URL="@ref logging"];
        static_memory[label="Static memory", URL="@ref static_memory"];
        linear_containers[label="List/Queue", URL="@ref linear_containers"];
        taskpool[label="Taskpool", URL="@ref taskpool"];
    }
    subgraph
    {
        node[fillcolor="#e89025ff"];
        rank = same;
        platform_threads[label="Thread", URL="@ref platform_threads"];
        platform_clock[label="Clock", URL="@ref platform_clock"];
        platform_metrics[label="Metrics", URL="@ref platform_metrics"];
    }

    defender -> mqtt;
    defender -> linear_containers;
    defender -> logging[label=" if logging enabled", style="dashed"];
    defender -> static_memory[label=" if static memory only", style="dashed"];
    defender -> taskpool;
    defender -> platform_threads;
    defender -> platform_clock;
    defender -> platform_metrics;
}
@enddot
*/
