<!DOCTYPE module SYSTEM "./module.dtd">

<module name="digital_cam">
  <doc>
    <description>Digital camera control (trigger using GPIO)</description>
    <define name="DC_SHOOT_ON_BUTTON_RELEASE" description="if defined, call dc_send_shot_postion on button release instead of on push"/>
    <define name="DC_SHUTTER_GPIO" value="GPIOC,GPIO12" description="mandatory, gpio to control shutter"/>
    <define name="DC_ZOOM_IN_GPIO" value="GPIOC,GPIO2" description="optional, gpio to activate zoom in"/>
    <define name="DC_ZOOM_OUT_GPIO" value="GPIOC,GPIO5" description="optional, gpio to activate zoom out"/>
    <define name="DC_POWER_GPIO" value="GPIOB,GPIO1" description="optional, gpio to turn power on"/>
    <define name="DC_POWER_OFF_GPIO" value="GPIOC,GPIO1" description="optional, gpio to turn power off"/>
    <define name="DC_PUSH" value="gpio_set|gpio_clear" description="specifies whether to set or clear gpio to push the shutter (default: gpio_set)"/>
    <define name="DC_RELEASE" value="gpio_clear|gpio_set" description="specifies whether to set or clear gpio to release the shutter (default: gpio_clear)"/>

    <define name="DC_AUTOSHOOT_QUARTERSEC_PERIOD" value="6" description="quarter_second"/>
    <define name="DC_AUTOSHOOT_DISTANCE_INTERVAL" value="50" description="distance interval for DC_AUTOSHOOT_DISTANCE in meters"/>
    <define name="DC_AUTOSHOOT_SURVEY_INTERVAL" value="50" description="distance interval for DC_AUTOSHOOT_SURVEY in meters"/>
    <define name="DC_SHOT_SYNC_SEND" value="TRUE|FALSE" description="send DC_SHOT message when photo was taken (default: TRUE)"/>
  </doc>
  <settings>
    <dl_settings name="control">
      <dl_settings name="dc">

        <dl_setting max="255" min="0" step="1" module="digital_cam/dc" var="0" handler="send_command" shortname="Shutter">
          <strip_button name="Photo" icon="digital-camera.png" value="32" group="maindc"/>
          <strip_button name="Power" icon="off.png" value="111" group="maindc"/>
          <strip_button name="ZoomIn" icon="zoom.png" value="116" group="dczoom"/>
          <strip_button name="ZoomOut" icon="zoom.png" value="119" group="dczoom"/>
        </dl_setting>

        <dl_setting max="3" min="0" step="1" var="dc_autoshoot" values="STOP|PERIODIC|DISTANCE|EXT_TRIG">
          <strip_button name="Start Autoshoot" icon="on.png" value="1" group="dcauto"/>
          <strip_button name="Stop Autoshoot" icon="off.png" value="0" group="dcauto"/>
        </dl_setting>

        <dl_setting max="255" min="1" step="1" var="dc_autoshoot_quartersec_period" shortname="Periodic" param="DC_AUTOSHOOT_QUARTERSEC_PERIOD" unit="quarter-sec"/>
        <dl_setting max="255" min="0" step="1" var="dc_distance_interval" shortname="dist" param="DC_AUTOSHOOT_DISTANCE_INTERVAL" unit="meter"/>

        <dl_setting max="250" min="0" step="5" module="digital_cam/dc" var="dc_survey_interval" handler="Survey" shortname="Survey-Interval"/>
        <dl_setting max="90" min="5" step="5" module="digital_cam/dc" var="dc_circle_interval" handler="Circle" shortname="Circle-Interval"/>
        <dl_setting max="1" min="0" step="1" var="dc_cam_tracing" shortname="Cam-Tracing"/>
      </dl_settings>
    </dl_settings>
  </settings>

  <conflicts>digital_cam_i2c,digital_cam_servo,digital_cam_uart</conflicts>

  <header>
    <file name="gpio_cam_ctrl.h"/>
    <file name="dc.h"/>
  </header>

  <init fun="gpio_cam_ctrl_init()"/>

  <periodic fun="gpio_cam_ctrl_periodic()" freq="4" autorun="TRUE"/>

  <makefile target="ap|sim|nps">
    <define name="DIGITAL_CAM" />
    <file name="gpio_cam_ctrl.c"/>
    <file name="dc.c"/>
  </makefile>

</module>
