//
//  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:   7kSonarInterface.cpp
//
//  Project:    6046
//
//  Author(s):  W. Arcus
//
//  Purpose:    
//
//  Notes:      
//

#include "StdAfx.h"
#include "7kSonarInterface.h"

//////////////////////////////////////////////////////////////////////
// C7kSonarInterface base class implementation.

C7kSonarInterface::C7kSonarInterface( void )
{
    m_pfnCallback = NULL;
    m_pvParam     = NULL;
}

C7kSonarInterface::~C7kSonarInterface( void )
{
    m_pfnCallback = NULL;
    m_pvParam     = NULL;
}

bool C7kSonarInterface::RegisterCallback(   PFN_SUBSYSTEMCALLBACK   pfnCallback,
                                            void                   *pvParam )
{
    m_pfnCallback = pfnCallback;
    m_pvParam     = pvParam;

    return ( m_pfnCallback != NULL );
}

bool C7kSonarInterface::DeregisterCallback( void )
{
    m_pfnCallback = NULL;
    m_pvParam     = NULL;

    return true;
}

///////////////////////////////////////////////////////////////////////////////
// Pure virtual public members that must be overridden.

bool C7kSonarInterface::Connect( void )
{
    return true;
}

bool C7kSonarInterface::Disconnect( void )
{
    return true;
}

bool C7kSonarInterface::Write7kRecord(  const BYTE          *pby7kRecord,
                                        const unsigned long &rulBytes )
{
    UNREFERENCED_PARAMETER( pby7kRecord );
    UNREFERENCED_PARAMETER( rulBytes );

    return true;
}

C7kSonarInterface::operator HANDLE ( void ) const
{
    return NULL;
}

bool C7kSonarInterface::HandleDataFromSonar(    BYTE                       *pby7kRecord,
                                                unsigned long              &rulRecordBytes,
                                                const unsigned long        &rulMaxBufferSize,
                                                const bool                 &rbResetEvent )
{
    UNREFERENCED_PARAMETER( pby7kRecord );
    UNREFERENCED_PARAMETER( rulRecordBytes );
    UNREFERENCED_PARAMETER( rulMaxBufferSize );
    UNREFERENCED_PARAMETER( rbResetEvent );

    return true;
}

///////////////////////////////////////////////////////////////////////////////
// Helpers.

bool C7kSonarInterface::Handle7kRecordFromSonar(    const BYTE             *pby7kRecord,
                                                    const unsigned long    &rulBytes,
                                                    const unsigned long    &rulTimeStamp )
{
    // Called to handle inbound sonar data records and invokes the Dispatcher's callback.

    bool bSuccess = false;                                  // Assume failure for now.

    try
    {
        if ( m_pfnCallback != NULL )
        {
            ( m_pfnCallback ) ( m_pvParam, pby7kRecord, rulBytes, rulTimeStamp );
        }

        bSuccess = true;
    }
    catch ( ... )
    {
        bSuccess = false;
    }

    return bSuccess;
}
