# HAP v0.7.0 - Table of Contents

> An implementation of the HomeKit Accessory Protocol

## Modules

- [HAP](HAP.md): HAP is an implementation of the [HomeKit Accessory Protocol](https://developer.apple.com/homekit/) specification.
It allows for the creation of Elixir powered HomeKit accessories which can be controlled from a user's
iOS device in a similar manner to commercially available HomeKit accessories such as light bulbs, window
coverings and other smart home accessories.
- [HAP.Accessory](HAP.Accessory.md): Represents a single accessory object, containing a number of services

- [HAP.AccessoryServer](HAP.AccessoryServer.md): Represents a top-level HAP instance configuration

- [HAP.Characteristics.ActiveIdentifier](HAP.Characteristics.ActiveIdentifier.md): Definition of the `public.hap.characteristic.active-identifier` characteristic
- [HAP.Characteristics.ClosedCaptions](HAP.Characteristics.ClosedCaptions.md): Definition of the `public.hap.characteristic.closed-captions` characteristic
- [HAP.Characteristics.ConfiguredName](HAP.Characteristics.ConfiguredName.md): Definition of the `public.hap.characteristic.configured-name` characteristic
- [HAP.Characteristics.CurrentMediaState](HAP.Characteristics.CurrentMediaState.md): Definition of the `public.hap.characteristic.current-media-state` characteristic
- [HAP.Characteristics.CurrentVisibilityState](HAP.Characteristics.CurrentVisibilityState.md): Definition of the `public.hap.characteristic.current-visibility-state` characteristic
- [HAP.Characteristics.DisplayOrder](HAP.Characteristics.DisplayOrder.md): Definition of the `public.hap.characteristic.display-order` characteristic
- [HAP.Characteristics.Identifier](HAP.Characteristics.Identifier.md): Definition of the `public.hap.characteristic.identifier` characteristic
- [HAP.Characteristics.InputDeviceType](HAP.Characteristics.InputDeviceType.md): Definition of the `public.hap.characteristic.input-device-type` characteristic
- [HAP.Characteristics.InputSourceType](HAP.Characteristics.InputSourceType.md): Definition of the `public.hap.characteristic.input-source-type` characteristic
- [HAP.Characteristics.IsConfigured](HAP.Characteristics.IsConfigured.md): Definition of the `public.hap.characteristic.is-configured` characteristic
- [HAP.Characteristics.PictureMode](HAP.Characteristics.PictureMode.md): Definition of the `public.hap.characteristic.picture-mode` characteristic
- [HAP.Characteristics.PowerModeSelection](HAP.Characteristics.PowerModeSelection.md): Definition of the `public.hap.characteristic.power-mode-selection` characteristic
- [HAP.Characteristics.RemoteKey](HAP.Characteristics.RemoteKey.md): Definition of the `public.hap.characteristic.remote-key` characteristic
- [HAP.Characteristics.SleepDiscoveryMode](HAP.Characteristics.SleepDiscoveryMode.md): Definition of the `public.hap.characteristic.sleep-discovery-mode` characteristic
- [HAP.Characteristics.TargetHeatingCoolingState](HAP.Characteristics.TargetHeatingCoolingState.md): Definition of the `public.hap.characteristic.heating-cooling.state.target` characteristic
- [HAP.Characteristics.TargetMediaState](HAP.Characteristics.TargetMediaState.md): Definition of the `public.hap.characteristic.target-media-state` characteristic
- [HAP.Characteristics.TargetVisibilityState](HAP.Characteristics.TargetVisibilityState.md): Definition of the `public.hap.characteristic.target-visibility-state` characteristic
- [HAP.Characteristics.VolumeControlType](HAP.Characteristics.VolumeControlType.md): Definition of the `public.hap.characteristic.volume-control-type` characteristic
- [HAP.Characteristics.VolumeSelector](HAP.Characteristics.VolumeSelector.md): Definition of the `public.hap.characteristic.volume-selector` characteristic
- [HAP.Services.InputSource](HAP.Services.InputSource.md): Struct representing an instance of the `public.hap.service.input-source` service
- [HAP.Services.Television](HAP.Services.Television.md): Struct representing an instance of the `public.hap.service.television` service
- [HAP.Services.TelevisionSpeaker](HAP.Services.TelevisionSpeaker.md): Struct representing an instance of the `public.hap.service.television-speaker` service

- Behaviours
  - [HAP.Display](HAP.Display.md): A behaviour which encapsulates all user-facing display concerns for an accessory.  Applications which use HAP may
provide their own implementation of this behaviour as a field in a `HAP.AccessoryServer`. If no such
implementation is provided HAP uses a default console based implementation

  - [HAP.ValueStore](HAP.ValueStore.md): Defines the behaviour required of a module that wishes to act as the backing data store
for a given HomeKit characteristic

- Services
  - [HAP.Service](HAP.Service.md): Represents a single service, containing a number of characteristics

  - [HAP.ServiceSource](HAP.ServiceSource.md): A protocol which allows for arbitrary service definitions to compile themselves into `HAP.Service` structs
for use within HAP. This protocol allows HAP to expose pre-defined services such as `HAP.Services.Lightbulb`
with fields reflecting the domain of the service, while allowing HAP to work internally with a service tree 
close to that defined in the HomeKit specification

  - [HAP.Services.AccessoryInformation](HAP.Services.AccessoryInformation.md): Struct representing an instance of the `public.hap.service.accessory-information` service

  - [HAP.Services.AirPurifier](HAP.Services.AirPurifier.md): Struct representing an instance of the `public.hap.service.air-purifier` service

  - [HAP.Services.AirQualitySensor](HAP.Services.AirQualitySensor.md): Struct representing an instance of the `public.hap.service.sensor.air-quality` service

  - [HAP.Services.CarbonDioxideSensor](HAP.Services.CarbonDioxideSensor.md): Struct representing an instance of the `public.hap.service.sensor.carbon-dioxide` service

  - [HAP.Services.CarbonMonoxideSensor](HAP.Services.CarbonMonoxideSensor.md): Struct representing an instance of the `public.hap.service.sensor.carbon-monoxide` service

  - [HAP.Services.ContactSensor](HAP.Services.ContactSensor.md): Struct representing an instance of the `public.hap.service.sensor.contact` service

  - [HAP.Services.Door](HAP.Services.Door.md): Struct representing an instance of the `public.hap.service.door` service

  - [HAP.Services.DoorBell](HAP.Services.DoorBell.md): Struct representing an instance of the `public.hap.service.doorbell` service

  - [HAP.Services.FanV2](HAP.Services.FanV2.md): Struct representing an instance of the `public.hap.service.fanv2` service

  - [HAP.Services.Faucet](HAP.Services.Faucet.md): Struct representing an instance of the `public.hap.service.faucet` service

  - [HAP.Services.GarageDoor](HAP.Services.GarageDoor.md): Struct representing an instance of 'public.hap.service.garage_door.opener' service

  - [HAP.Services.HeaterCooler](HAP.Services.HeaterCooler.md): Struct representing an instance of the `public.hap.service.heater-cooler` service

  - [HAP.Services.HumiditySensor](HAP.Services.HumiditySensor.md): Struct representing an instance of the `public.hap.service.sensor.humidity` service

  - [HAP.Services.LeakSensor](HAP.Services.LeakSensor.md): Struct representing an instance of the `public.hap.service.sensor.leak` service

  - [HAP.Services.LightBulb](HAP.Services.LightBulb.md): Struct representing an instance of the `public.hap.service.lightbulb` service

  - [HAP.Services.LightSensor](HAP.Services.LightSensor.md): Struct representing an instance of the `public.hap.service.sensor.light` service

  - [HAP.Services.Microphone](HAP.Services.Microphone.md): Struct representing an instance of the `public.hap.service.microphone` service

  - [HAP.Services.MotionSensor](HAP.Services.MotionSensor.md): Struct representing an instance of the `public.hap.service.sensor.motion` service

  - [HAP.Services.OccupancySensor](HAP.Services.OccupancySensor.md): Struct representing an instance of the `public.hap.service.sensor.occupancy` service

  - [HAP.Services.Outlet](HAP.Services.Outlet.md): Struct representing an instance of the `public.hap.service.outlet` service

  - [HAP.Services.ProtocolInformation](HAP.Services.ProtocolInformation.md): Struct representing an instance of the `public.hap.service.protocol.information.service` service

  - [HAP.Services.ServiceLabel](HAP.Services.ServiceLabel.md): Struct representing an instance of the `public.hap.service.service-label` service

  - [HAP.Services.Slat](HAP.Services.Slat.md): Struct representing an instance of the `public.hap.service.vertical-slat` service

  - [HAP.Services.SmokeSensor](HAP.Services.SmokeSensor.md): Struct representing an instance of the `public.hap.service.sensor.smoke` service

  - [HAP.Services.Speaker](HAP.Services.Speaker.md): Struct representing an instance of the `public.hap.service.speaker` service

  - [HAP.Services.StatelessProgrammableSwitch](HAP.Services.StatelessProgrammableSwitch.md): Struct representing an instance of the `public.hap.service.stateless-programmable-switch` service
  - [HAP.Services.Switch](HAP.Services.Switch.md): Struct representing an instance of the `public.hap.service.switch` service

  - [HAP.Services.TemperatureSensor](HAP.Services.TemperatureSensor.md): Struct representing an instance of the `public.hap.service.sensor.temperature` service

  - [HAP.Services.Thermostat](HAP.Services.Thermostat.md): Struct representing an instance of the `public.hap.service.thermostat` service

  - [HAP.Services.Window](HAP.Services.Window.md): Struct representing an instance of the `public.hap.service.window` service

  - [HAP.Services.WindowCovering](HAP.Services.WindowCovering.md): Struct representing an instance of the `public.hap.service.window-covering` service

- Characteristics
  - [HAP.Characteristic](HAP.Characteristic.md): Functions to aid in the manipulation of characteristics tuples

  - [HAP.CharacteristicDefinition](HAP.CharacteristicDefinition.md): A behaviour which encapsulates the functinos required to define a characteristic. 
At runtime, characteristics are modeled via the `HAP.Characteristic` struct which
contains the runtime values for the characteristic itself, as well as metadata about
the characteristic. A `HAP.CharacteristicDefinition` is used to provide the template
values for these fields. HAP contains definitions for many common HomeKit characteristics
already, and users may define other characteristics by providing an implementation of
this behaviour as the first value in the characteristic definition tuple in a service.

  - [HAP.Characteristics.Active](HAP.Characteristics.Active.md): Definition of the `public.hap.characteristic.active` characteristic

  - [HAP.Characteristics.AirQuality](HAP.Characteristics.AirQuality.md): Definition of the `public.hap.characteristic.air-quality` characteristic
  - [HAP.Characteristics.Brightness](HAP.Characteristics.Brightness.md): Definition of the `public.hap.characteristic.brightness` characteristic

  - [HAP.Characteristics.CarbonDioxideDetected](HAP.Characteristics.CarbonDioxideDetected.md): Definition of the `public.hap.characteristic.carbon-dioxide.detected` characteristic
  - [HAP.Characteristics.CarbonDioxideLevel](HAP.Characteristics.CarbonDioxideLevel.md): Definition of the `public.hap.characteristic.carbon-dioxide.level` characteristic

  - [HAP.Characteristics.CarbonDioxidePeakLevel](HAP.Characteristics.CarbonDioxidePeakLevel.md): Definition of the `public.hap.characteristic.carbon-dioxide.peak-level` characteristic

  - [HAP.Characteristics.CarbonMonoxideDetected](HAP.Characteristics.CarbonMonoxideDetected.md): Definition of the `public.hap.characteristic.carbon-monoxide.detected` characteristic
  - [HAP.Characteristics.CarbonMonoxideLevel](HAP.Characteristics.CarbonMonoxideLevel.md): Definition of the `public.hap.characteristic.carbon-monoxide.level` characteristic

  - [HAP.Characteristics.CarbonMonoxidePeakLevel](HAP.Characteristics.CarbonMonoxidePeakLevel.md): Definition of the `public.hap.characteristic.carbon-monoxide.peak-level` characteristic

  - [HAP.Characteristics.ColorTemperature](HAP.Characteristics.ColorTemperature.md): Definition of the `public.hap.characteristic.color-temperature` characteristic
  - [HAP.Characteristics.ContactSensorState](HAP.Characteristics.ContactSensorState.md): Definition of the `public.hap.characteristic.contact-state` characteristic
  - [HAP.Characteristics.CoolingThresholdTemperature](HAP.Characteristics.CoolingThresholdTemperature.md): Definition of the `public.hap.characteristic.temperature.cooling-threshold` characteristic

  - [HAP.Characteristics.CurrentAirPurifierState](HAP.Characteristics.CurrentAirPurifierState.md): Definition of the `public.hap.characteristic.air-purifier.state.current` characteristic
  - [HAP.Characteristics.CurrentAmbientLightLevel](HAP.Characteristics.CurrentAmbientLightLevel.md): Definition of the `public.hap.characteristic.light-level.current` characteristic

  - [HAP.Characteristics.CurrentDoorState](HAP.Characteristics.CurrentDoorState.md): Definition of the `public.hap.characteristic.door-state.current` characteristic
  - [HAP.Characteristics.CurrentFanState](HAP.Characteristics.CurrentFanState.md): Definition of the `public.hap.characteristic.fan.state.current` characteristic
  - [HAP.Characteristics.CurrentHeaterCoolerState](HAP.Characteristics.CurrentHeaterCoolerState.md): Definition of the `public.hap.characteristic.heater-cooler.state.current` characteristic
  - [HAP.Characteristics.CurrentHeatingCoolingState](HAP.Characteristics.CurrentHeatingCoolingState.md): Definition of the `public.hap.characteristic.heating-cooling.state.current` characteristic
  - [HAP.Characteristics.CurrentHorizontalTiltAngle](HAP.Characteristics.CurrentHorizontalTiltAngle.md): Definition of the `public.hap.characteristic.horizontal-tilt.current` characteristic

  - [HAP.Characteristics.CurrentPosition](HAP.Characteristics.CurrentPosition.md): Definition of the `public.hap.characteristic.position.current` characteristic

  - [HAP.Characteristics.CurrentRelativeHumidity](HAP.Characteristics.CurrentRelativeHumidity.md): Definition of the `public.hap.characteristic.relative-humidity.current` characteristic

  - [HAP.Characteristics.CurrentSlatState](HAP.Characteristics.CurrentSlatState.md): Definition of the `public.hap.characteristic.slat.state.current` characteristic
  - [HAP.Characteristics.CurrentTemperature](HAP.Characteristics.CurrentTemperature.md): Definition of the `public.hap.characteristic.temperature.current` characteristic

  - [HAP.Characteristics.CurrentTiltAngle](HAP.Characteristics.CurrentTiltAngle.md): Definition of the `public.hap.characteristic.tilt.current` characteristic

  - [HAP.Characteristics.CurrentVerticalTiltAngle](HAP.Characteristics.CurrentVerticalTiltAngle.md): Definition of the `public.hap.characteristic.vertical-tilt.current` characteristic

  - [HAP.Characteristics.FirmwareRevision](HAP.Characteristics.FirmwareRevision.md): Definition of the `public.hap.characteristic.firmware.revision` characteristic

  - [HAP.Characteristics.HeatingThresholdTemperature](HAP.Characteristics.HeatingThresholdTemperature.md): Definition of the `public.hap.characteristic.temperature.heating-threshold` characteristic

  - [HAP.Characteristics.HoldPosition](HAP.Characteristics.HoldPosition.md): Definition of the `public.hap.characteristic.position.hold` characteristic

  - [HAP.Characteristics.Hue](HAP.Characteristics.Hue.md): Definition of the `public.hap.characteristic.hue` characteristic

  - [HAP.Characteristics.Identify](HAP.Characteristics.Identify.md): Definition of the `public.hap.characteristic.identify` characteristic

  - [HAP.Characteristics.InputEvent](HAP.Characteristics.InputEvent.md): Definition of the `public.hap.characteristic.input-event` characteristic
  - [HAP.Characteristics.LeakDetected](HAP.Characteristics.LeakDetected.md): Definition of the `public.hap.characteristic.leak-detected` characteristic
  - [HAP.Characteristics.LockCurrentState](HAP.Characteristics.LockCurrentState.md): Definition of the `public.hap.characteristic.lock-mechanism.current-state` characteristic
  - [HAP.Characteristics.LockPhysicalControls](HAP.Characteristics.LockPhysicalControls.md): Definition of the `public.hap.characteristic.lock-physical-controls` characteristic
  - [HAP.Characteristics.LockTargetState](HAP.Characteristics.LockTargetState.md): Definition of the `public.hap.characteristic.lock-mechanism.target-state` characteristic
  - [HAP.Characteristics.Manufacturer](HAP.Characteristics.Manufacturer.md): Definition of the `public.hap.characteristic.manufacturer` characteristic

  - [HAP.Characteristics.Model](HAP.Characteristics.Model.md): Definition of the `public.hap.characteristic.model` characteristic

  - [HAP.Characteristics.MotionDetected](HAP.Characteristics.MotionDetected.md): Definition of the `public.hap.characteristic.motion-detected` characteristic

  - [HAP.Characteristics.Mute](HAP.Characteristics.Mute.md): Definition of the `public.hap.characteristic.mute` characteristic
# Valid Values
#
# 0 ”Mute is Off / Audio is On”
# 1 ”Mute is On / There is no Audio”
  - [HAP.Characteristics.Name](HAP.Characteristics.Name.md): Definition of the `public.hap.characteristic.name` characteristic

  - [HAP.Characteristics.NitrogenDioxideDensity](HAP.Characteristics.NitrogenDioxideDensity.md): Definition of the `public.hap.characteristic.density.no2` characteristic

  - [HAP.Characteristics.ObstructionDetected](HAP.Characteristics.ObstructionDetected.md): Definition of the `public.hap.characteristic.obstruction-detected` characteristic

  - [HAP.Characteristics.OccupancyDetected](HAP.Characteristics.OccupancyDetected.md): Definition of the `public.hap.characteristic.occupancy-detected` characteristic
  - [HAP.Characteristics.On](HAP.Characteristics.On.md): Definition of the `public.hap.characteristic.on` characteristic

  - [HAP.Characteristics.OutletInUse](HAP.Characteristics.OutletInUse.md): Definition of the `public.hap.characteristic.outlet-in-use` characteristic

  - [HAP.Characteristics.OzoneDensity](HAP.Characteristics.OzoneDensity.md): Definition of the `public.hap.characteristic.density.ozone` characteristic

  - [HAP.Characteristics.PM10Density](HAP.Characteristics.PM10Density.md): Definition of the `public.hap.characteristic.density.pm10` characteristic

  - [HAP.Characteristics.PM25Density](HAP.Characteristics.PM25Density.md): Definition of the `public.hap.characteristic.density.pm2_5` characteristic

  - [HAP.Characteristics.PositionState](HAP.Characteristics.PositionState.md): Definition of the `public.hap.characteristic.position.state` characteristic
  - [HAP.Characteristics.RotationDirection](HAP.Characteristics.RotationDirection.md): Definition of the `public.hap.characteristic.rotation.direction` characteristic
  - [HAP.Characteristics.RotationSpeed](HAP.Characteristics.RotationSpeed.md): Definition of the `public.hap.characteristic.rotation.speed` characteristic

  - [HAP.Characteristics.Saturation](HAP.Characteristics.Saturation.md): Definition of the `public.hap.characteristic.saturation` characteristic

  - [HAP.Characteristics.SerialNumber](HAP.Characteristics.SerialNumber.md): Definition of the `public.hap.characteristic.serial-number` characteristic

  - [HAP.Characteristics.ServiceLabelIndex](HAP.Characteristics.ServiceLabelIndex.md): Definition of the `public.hap.characteristic.service-label-index` characteristic
  - [HAP.Characteristics.ServiceLabelNamespace](HAP.Characteristics.ServiceLabelNamespace.md): Definition of the `public.hap.characteristic.service-label-namespace` characteristic
  - [HAP.Characteristics.SlatType](HAP.Characteristics.SlatType.md): Definition of the `public.hap.characteristic.type.slat` characteristic
  - [HAP.Characteristics.SmokeDetected](HAP.Characteristics.SmokeDetected.md): Definition of the `public.hap.characteristic.smoke-detected` characteristic
  - [HAP.Characteristics.StatusActive](HAP.Characteristics.StatusActive.md): Definition of the `public.hap.characteristic.status-active` characteristic

  - [HAP.Characteristics.StatusFault](HAP.Characteristics.StatusFault.md): Definition of the `public.hap.characteristic.status-fault` characteristic
  - [HAP.Characteristics.StatusLowBattery](HAP.Characteristics.StatusLowBattery.md): Definition of the `public.hap.characteristic.status-lo-batt` characteristic
  - [HAP.Characteristics.StatusTampered](HAP.Characteristics.StatusTampered.md): Definition of the `public.hap.characteristic.status-tampered` characteristic
  - [HAP.Characteristics.SulphurDioxideDensity](HAP.Characteristics.SulphurDioxideDensity.md): Definition of the `public.hap.characteristic.density.so2` characteristic

  - [HAP.Characteristics.SwingMode](HAP.Characteristics.SwingMode.md): Definition of the `public.hap.characteristic.swing-mode` characteristic
  - [HAP.Characteristics.TargetAirPurifierState](HAP.Characteristics.TargetAirPurifierState.md): Definition of the `public.hap.characteristic.air-purifier.state.target` characteristic
  - [HAP.Characteristics.TargetDoorState](HAP.Characteristics.TargetDoorState.md): Definition of the `public.hap.characteristic.door-state.target` characteristic
  - [HAP.Characteristics.TargetFanState](HAP.Characteristics.TargetFanState.md): Definition of the `public.hap.characteristic.fan.state.target` characteristic
  - [HAP.Characteristics.TargetHeaterCoolerState](HAP.Characteristics.TargetHeaterCoolerState.md): Definition of the `public.hap.characteristic.heater-cooler.state.target` characteristic
  - [HAP.Characteristics.TargetHorizontalTiltAngle](HAP.Characteristics.TargetHorizontalTiltAngle.md): Definition of the `public.hap.characteristic.horizontal-tilt.target` characteristic

  - [HAP.Characteristics.TargetPosition](HAP.Characteristics.TargetPosition.md): Definition of the `public.hap.characteristic.position.target` characteristic

  - [HAP.Characteristics.TargetRelativeHumidity](HAP.Characteristics.TargetRelativeHumidity.md): Definition of the `public.hap.characteristic.relative.humidity.target` characteristic

  - [HAP.Characteristics.TargetTemperature](HAP.Characteristics.TargetTemperature.md): Definition of the `public.hap.characteristic.temperature.target` characteristic

  - [HAP.Characteristics.TargetTiltAngle](HAP.Characteristics.TargetTiltAngle.md): Definition of the `public.hap.characteristic.tilt.target` characteristic

  - [HAP.Characteristics.TargetVerticalTiltAngle](HAP.Characteristics.TargetVerticalTiltAngle.md): Definition of the `public.hap.characteristic.vertical-tilt.target` characteristic

  - [HAP.Characteristics.TemperatureDisplayUnits](HAP.Characteristics.TemperatureDisplayUnits.md): Definition of the `public.hap.characteristic.temperature.units` characteristic
  - [HAP.Characteristics.VOCDensity](HAP.Characteristics.VOCDensity.md): Definition of the `public.hap.characteristic.density.voc` characteristic

  - [HAP.Characteristics.Version](HAP.Characteristics.Version.md): Definition of the `public.hap.characteristic.version` characteristic

  - [HAP.Characteristics.Volume](HAP.Characteristics.Volume.md): Definition of the `public.hap.characteristic.volume` characteristic

  - [HAP.Characteristics.WaterLevel](HAP.Characteristics.WaterLevel.md): Definition of the `public.hap.characteristic.water-level` characteristic

