//
//  Copyright © 2003, RESON Inc. All Rights Reserved.
//
//  No part of this file may be reproduced or transmitted in any form or by
//  any means, electronic or mechanical, including photocopy, recording, or
//  information storage or retrieval system, without permission in writing
//  from RESON Inc.
//
//  Filename:   7kTrigger.cpp
//
//  Project:    6046
//
//  Author(s):  W. Arcus
//
//  Purpose:    C7kTrigger implementation.
//
//  Notes:      
//

#include "StdAfx.h"
#include "7kTrigger.h"

//////////////////////////////////////////////////////////////////////
// C7kTrigger implementation.

C7kTrigger::C7kTrigger( void )
{
    ManageDllState_m();

    m_bEnabled      = false;

    m_ulTriggerId   = 0UL;
    m_ulPortId      = 0UL;
    m_unTriggerType = static_cast<unsigned short>( triggerTypeTTL );
    m_byDirection   = static_cast<BYTE>          ( triggerDirectionOut );
    m_bySense       = static_cast<BYTE>          ( triggerSensePositive );
    m_ulPulseLength = 0UL;
    m_ulSequenceId  = 0UL;
}

C7kTrigger::~C7kTrigger( void )
{
    ManageDllState_m();

    m_bEnabled      = false;

    m_ulTriggerId   = 0UL;
    m_ulPortId      = 0UL;
    m_unTriggerType = static_cast<unsigned short>( triggerTypeTTL );
    m_byDirection   = static_cast<BYTE>          ( triggerDirectionOut );
    m_bySense       = static_cast<BYTE>          ( triggerSensePositive );
    m_ulPulseLength = 0UL;
    m_ulSequenceId  = 0UL;
}

C7kTrigger::C7kTrigger( const C7kTrigger &rRhs )
{
    ManageDllState_m();

    if ( &rRhs != this )
    {
        m_bEnabled      = rRhs.m_bEnabled;
        m_ulTriggerId   = rRhs.m_ulTriggerId;
        m_ulPortId      = rRhs.m_ulPortId;
        m_unTriggerType = rRhs.m_unTriggerType;
        m_byDirection   = rRhs.m_byDirection;
        m_bySense       = rRhs.m_bySense;
        m_ulPulseLength = rRhs.m_ulPulseLength;
        m_ulSequenceId  = rRhs.m_ulSequenceId;
    }
    else
    {
        ASSERT( false );
    }
}

C7kTrigger & C7kTrigger::operator = ( const C7kTrigger &rRhs )
{
    ManageDllState_m();

    if ( &rRhs != this )
    {
        m_bEnabled      = rRhs.m_bEnabled;
        m_ulTriggerId   = rRhs.m_ulTriggerId;
        m_ulPortId      = rRhs.m_ulPortId;
        m_unTriggerType = rRhs.m_unTriggerType;
        m_byDirection   = rRhs.m_byDirection;
        m_bySense       = rRhs.m_bySense;
        m_ulPulseLength = rRhs.m_ulPulseLength;
        m_ulSequenceId  = rRhs.m_ulSequenceId;
    }
    else
    {
        ASSERT( false );
    }

    return *this;
}

bool C7kTrigger::operator == ( const unsigned long &rulTriggerId ) const
{
    ManageDllState_m();

    return ( m_ulTriggerId == rulTriggerId );
}

bool C7kTrigger::operator < ( const C7kTrigger &rRhs ) const
{
    ManageDllState_m();

    return ( m_ulTriggerId < rRhs.m_ulTriggerId );
}

void C7kTrigger::Configure( const unsigned long     &rulPortId,
                            const ETRIGGERTYPE      &reTriggerType,
                            const ETRIGGERDIRECTION &reDirection,
                            const ETRIGGERSENSE     &reSense,
                            const unsigned long     &rulPulseLength )
{
    ManageDllState_m();

    m_ulPortId      = rulPortId;
    m_unTriggerType = static_cast<unsigned short>( reTriggerType );
    m_byDirection   = static_cast<BYTE>          ( reDirection );
    m_bySense       = static_cast<BYTE>          ( reSense );
    m_ulPulseLength = rulPulseLength;
}

void C7kTrigger::Enable( void )
{
    ManageDllState_m();

    m_bEnabled = true;
}

void C7kTrigger::Disable( void )
{
    ManageDllState_m();

    m_bEnabled = false;
}

bool C7kTrigger::IsEnabled( void ) const
{
    ManageDllState_m();

    return m_bEnabled;
}

unsigned long C7kTrigger::Id( void ) const
{
    ManageDllState_m();

    return m_ulTriggerId;
}

unsigned long C7kTrigger::PortId ( void ) const
{
    ManageDllState_m();

    return m_ulPortId;
}

unsigned short C7kTrigger::TriggerType( void ) const
{
    ManageDllState_m();

    return m_unTriggerType;
}

BYTE C7kTrigger::Direction( void ) const
{
    ManageDllState_m();

    return m_byDirection;
}

BYTE C7kTrigger::Sense( void ) const
{
    ManageDllState_m();

    return m_bySense;
}

unsigned long C7kTrigger::PulseLength( void ) const
{
    ManageDllState_m();

    return m_ulPulseLength;
}

C7kTrigger::operator const TRIGGERINFO * ( void ) const
{
    ManageDllState_m();

    return static_cast<const TRIGGERINFO *>( this );
}

void C7kTrigger::Id( const unsigned long &rulTriggerId )
{
    ManageDllState_m();

    m_ulTriggerId = rulTriggerId;
}

unsigned long C7kTrigger::SequenceId( void ) const
{
    ManageDllState_m();

    return m_ulSequenceId;
}

void C7kTrigger::SequenceId( const unsigned long &rulSequenceId )
{
    ManageDllState_m();

    m_ulSequenceId = rulSequenceId;
}
