//
//  Copyright © 2002, 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:   StartupCheck.h
//
//  Project:    6046.
//
//  Author(s):  W. Arcus
//
//  Purpose:    Implements the PLC startup pre-launch check object.
//
//  Notes:
//

#include "StdAfx.h"
#include "StartupCheck.h"
#include "RegistryKeys.h"

using namespace N6046RegistryKeys;

//////////////////////////////////////////////////////////////////////
// CStartupCheck implementation.

CStartupCheck::CStartupCheck( void )
{
    if ( ! Does6046KeyExist() )
    {
        SetFactoryDefaultRegistrySettings();
    }
}

CStartupCheck::~CStartupCheck( void )
{
}

void CStartupCheck::SetFactoryDefaultRegistrySettings( void )
{
    // 6046 main settings.

    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszActivateOnStartKey_c,                  0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszSessionIdKey_c,                        0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszRoutingIndexKey_c,                     0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszRoutingEnableKey_c,                    0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszRemoteControlPortKey_c,                6046UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszTimeSyncModeKey_c,                     0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszUserNameKey_c,                         _T( "RESON 6046 User" ) );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpszUserNotesKey_c,                        _T( "RESON 6046 Payload Controller" ) );

    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpsz6046MaxFileSizeRegistryKey_c,          200UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpsz6046LoggingRecordOverlapRegistryKey_c, 100UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpsz6046DataPathRegistryKey_c,             _T( "c:\\DataStore6046\\" ) );

    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpsz6046CheckEnableRegistryKey_c,          0UL );
    SetRegistryKeyValue( lpsz6046RegistryKey_c, lpsz6046CheckPeriodRegistryKey_c,          30000UL );

    // Sundry sensors.

    // EdgeTech FSDW.

    LPCTSTR lpszEdgeTechFSDWKey = _T( ".DEFAULT\\Software\\RESON\\6046\\EdgeTechFSDW" );

    SetRegistryKeyValue( lpszEdgeTechFSDWKey, _T( "Address" ),                              _T( "192.9.0.101" ) );
    SetRegistryKeyValue( lpszEdgeTechFSDWKey, _T( "AutoShutdown" ),                         0UL     );
    SetRegistryKeyValue( lpszEdgeTechFSDWKey, _T( "Command" ),                              1700UL  );
    SetRegistryKeyValue( lpszEdgeTechFSDWKey, _T( "Data" ),                                 1701UL  );

    // EdgeTechFSDW\\SSSLF

    LPCTSTR lpszEdgeTechFSDWSSSLFKey = _T( ".DEFAULT\\Software\\RESON\\6046\\EdgeTechFSDW\\SSSLF" );

    SetRegistryKeyValue( lpszEdgeTechFSDWSSSLFKey,  _T( "(Default)" ),                      _T( "Sidescan Sonar (Low Frequency)" ) );
    SetRegistryKeyValue( lpszEdgeTechFSDWSSSLFKey,  _T( "SubsystemId" ),                    20UL );

    // EdgeTechFSDW\\SSSHF

    LPCTSTR lpszEdgeTechFSDWSSSHFKey = _T( ".DEFAULT\\Software\\RESON\\6046\\EdgeTechFSDW\\SSSHF" );

    SetRegistryKeyValue( lpszEdgeTechFSDWSSSHFKey,  _T( "(Default)" ),                      _T( "Sidescan Sonar (High Frequency)" ) );
    SetRegistryKeyValue( lpszEdgeTechFSDWSSSHFKey,  _T( "SubsystemId" ),                    21UL );

    // EdgeTechFSDW\\SBP

    LPCTSTR lpszEdgeTechFSDWSBPKey = _T( ".DEFAULT\\Software\\RESON\\6046\\EdgeTechFSDW\\SBP" );

    SetRegistryKeyValue( lpszEdgeTechFSDWSBPKey,  _T( "(Default)" ),                        _T( "SubBottom Profiler" ) );
    SetRegistryKeyValue( lpszEdgeTechFSDWSBPKey,  _T( "SubsystemId" ),                      0UL );

    // RESON7kSonar

    LPCTSTR lpszRESON7kSonarKey = _T( ".DEFAULT\\Software\\RESON\\6046\\RESON7kSonar" );

    SetRegistryKeyValue( lpszRESON7kSonarKey,  _T( "AutoShutdown" ),                        0UL );
    SetRegistryKeyValue( lpszRESON7kSonarKey,  _T( "CollectionMode" ),                      0UL );

    // BlueFin

    LPCTSTR lpszBlueFinKey = _T( ".DEFAULT\\Software\\RESON\\6046\\BlueFin" );

    SetRegistryKeyValue( lpszBlueFinKey,  _T( "Address" ),                                  _T( "127.0.0.1" ) );
    SetRegistryKeyValue( lpszBlueFinKey,  _T( "Port" ),                                     _T( "3100" ) );

}

bool CStartupCheck::Does6046KeyExist( void )
{
    CRegKey Key;
        
    Key.Attach( hKey6046_c );

    bool bExists = ( Key.Open( hKey6046_c, lpsz6046RegistryKey_c ) == ERROR_SUCCESS );

    Key.Close();

    return bExists;
}
