<?php

namespace StructType;

use \WsdlToPhp\PackageBase\AbstractStructBase;

/**
 * This class stands for VehicleTachoDiagnostics StructType
 * @subpackage Structs
 */
class VehicleTachoDiagnostics extends AbstractStructBase
{
    /**
     * The TachoStatus
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $TachoStatus;
    /**
     * The TachoButton
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $TachoButton;
    /**
     * The TachoPulses
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $TachoPulses;
    /**
     * The UniversalTachoInterfaceVersion
     * Meta information extracted from the WSDL
     * - maxOccurs: 1
     * - minOccurs: 0
     * @var string
     */
    public $UniversalTachoInterfaceVersion;
    /**
     * Constructor method for VehicleTachoDiagnostics
     * @uses VehicleTachoDiagnostics::setTachoStatus()
     * @uses VehicleTachoDiagnostics::setTachoButton()
     * @uses VehicleTachoDiagnostics::setTachoPulses()
     * @uses VehicleTachoDiagnostics::setUniversalTachoInterfaceVersion()
     * @param string $tachoStatus
     * @param string $tachoButton
     * @param string $tachoPulses
     * @param string $universalTachoInterfaceVersion
     */
    public function __construct($tachoStatus = null, $tachoButton = null, $tachoPulses = null, $universalTachoInterfaceVersion = null)
    {
        $this
            ->setTachoStatus($tachoStatus)
            ->setTachoButton($tachoButton)
            ->setTachoPulses($tachoPulses)
            ->setUniversalTachoInterfaceVersion($universalTachoInterfaceVersion);
    }
    /**
     * Get TachoStatus value
     * @return string|null
     */
    public function getTachoStatus()
    {
        return $this->TachoStatus;
    }
    /**
     * Set TachoStatus value
     * @param string $tachoStatus
     * @return \StructType\VehicleTachoDiagnostics
     */
    public function setTachoStatus($tachoStatus = null)
    {
        // validation for constraint: string
        if (!is_null($tachoStatus) && !is_string($tachoStatus)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($tachoStatus, true), gettype($tachoStatus)), __LINE__);
        }
        $this->TachoStatus = $tachoStatus;
        return $this;
    }
    /**
     * Get TachoButton value
     * @return string|null
     */
    public function getTachoButton()
    {
        return $this->TachoButton;
    }
    /**
     * Set TachoButton value
     * @param string $tachoButton
     * @return \StructType\VehicleTachoDiagnostics
     */
    public function setTachoButton($tachoButton = null)
    {
        // validation for constraint: string
        if (!is_null($tachoButton) && !is_string($tachoButton)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($tachoButton, true), gettype($tachoButton)), __LINE__);
        }
        $this->TachoButton = $tachoButton;
        return $this;
    }
    /**
     * Get TachoPulses value
     * @return string|null
     */
    public function getTachoPulses()
    {
        return $this->TachoPulses;
    }
    /**
     * Set TachoPulses value
     * @param string $tachoPulses
     * @return \StructType\VehicleTachoDiagnostics
     */
    public function setTachoPulses($tachoPulses = null)
    {
        // validation for constraint: string
        if (!is_null($tachoPulses) && !is_string($tachoPulses)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($tachoPulses, true), gettype($tachoPulses)), __LINE__);
        }
        $this->TachoPulses = $tachoPulses;
        return $this;
    }
    /**
     * Get UniversalTachoInterfaceVersion value
     * @return string|null
     */
    public function getUniversalTachoInterfaceVersion()
    {
        return $this->UniversalTachoInterfaceVersion;
    }
    /**
     * Set UniversalTachoInterfaceVersion value
     * @param string $universalTachoInterfaceVersion
     * @return \StructType\VehicleTachoDiagnostics
     */
    public function setUniversalTachoInterfaceVersion($universalTachoInterfaceVersion = null)
    {
        // validation for constraint: string
        if (!is_null($universalTachoInterfaceVersion) && !is_string($universalTachoInterfaceVersion)) {
            throw new \InvalidArgumentException(sprintf('Invalid value %s, please provide a string, %s given', var_export($universalTachoInterfaceVersion, true), gettype($universalTachoInterfaceVersion)), __LINE__);
        }
        $this->UniversalTachoInterfaceVersion = $universalTachoInterfaceVersion;
        return $this;
    }
}
