1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103
|
/*!
* This Source Code Form is subject to the terms of the Mozilla Public
* License, v. 2.0. If a copy of the MPL was not distributed with this file,
* You can obtain one at http://mozilla.org/MPL/2.0/.
*
* Copyright(c) 2012 Apogee Imaging Systems, Inc.
* \class AscentBasedIo
* \brief io class for ascent, alta f and other ascent based cameras
*
*/
#include "AscentBasedIo.h"
#include "AscentBasedUsbIo.h"
#include "apgHelper.h"
#include "ApgLogger.h"
#include <sstream>
////////////////////////////
// CTOR
AscentBasedIo::AscentBasedIo(CamModel::InterfaceType type,
const std::string & deviceAddr ) :
CameraIo( type ),
m_fileName( __BASE_FILE__ )
{
//log that we are trying to connect
std::string msg = "Try to connection to device " + deviceAddr;
ApgLogger::Instance().Write(ApgLogger::LEVEL_RELEASE,"info",
apgHelper::mkMsg ( m_fileName, msg, __LINE__) );
//create the camera interface
switch( m_type )
{
case CamModel::USB:
m_Interface = std::shared_ptr<ICamIo>( new AscentBasedUsbIo( deviceAddr ) );
break;
default:
{
std::string errStr("Undefined camera interface type");
apgHelper::throwRuntimeException( m_fileName, errStr,
__LINE__, Apg::ErrorType_InvalidUsage );
}
break;
}
}
////////////////////////////
// DTOR
AscentBasedIo::~AscentBasedIo()
{
}
////////////////////////////
// PROGRAM
void AscentBasedIo::Program(const std::string & FilenameFpga,
const std::string & FilenameFx2,
const std::string & FilenameDescriptor,
bool Print2StdOut)
{
std::dynamic_pointer_cast<AscentBasedUsbIo>(m_Interface)->Program(
FilenameFpga, FilenameFx2, FilenameDescriptor,Print2StdOut );
}
////////////////////////////
// WRITE STR DATA BASE
void AscentBasedIo::WriteStrDatabase( const CamInfo::StrDb & info )
{
std::dynamic_pointer_cast<AscentBasedUsbIo>(
m_Interface)->WriteStrDatabase(
CamInfo::MkStrVectFromStrDb( info ) );
}
////////////////////////////
// READ STR DATA BASE
CamInfo::StrDb AscentBasedIo::ReadStrDatabase()
{
std::vector<std::string> result = std::dynamic_pointer_cast<AscentBasedUsbIo>(
m_Interface)->ReadStrDatabase();
return( CamInfo::MkStrDbFromStrVect( result ) );
}
////////////////////////////
// GET ID
uint16_t AscentBasedIo::GetId()
{
CamInfo::StrDb db = ReadStrDatabase();
if( 0 != db.Id.compare("Not Set") )
{
uint16_t id = 0;
std::stringstream ss( db.Id );
ss >> id;
return id;
}
const uint16_t rawId = GetIdFromReg();
return( rawId & CamModel::GEN2_CAMERA_ID_MASK );
}
|