File: CamRegMirror.cpp

package info (click to toggle)
libapogee3 3.2%2B20221221183454-2
  • links: PTS, VCS
  • area: main
  • in suites: trixie
  • size: 9,284 kB
  • sloc: cpp: 26,737; sh: 8; makefile: 3
file content (64 lines) | stat: -rw-r--r-- 1,448 bytes parent folder | download | duplicates (3)
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
/*! 
* 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) 2010 Apogee Instruments, Inc. 
* \class CamRegMirror 
* \brief This class mirrors the registers in the camera.  This allows us to "read" register that were once write only. 
* 
*/ 

#include "CamRegMirror.h" 

#include "apgHelper.h" 
#include <string>
#include <sstream>

//////////////////////////// 
// CTOR
CamRegMirror::CamRegMirror()
{
}

//////////////////////////// 
// DTOR 
CamRegMirror::~CamRegMirror() 
{ 

} 

//////////////////////////// 
// READ
uint16_t CamRegMirror::Read( const uint16_t reg )
{
    std::map<uint16_t, uint16_t>::iterator iter = m_RegMirror.find(reg);

    if( iter == m_RegMirror.end() )
    {
        std::stringstream ss;
        ss << reg;
        std::string errStr = "Could not find register " + ss.str() + " in the mirror of the camera registers";
        apgHelper::throwRuntimeException( __FILE__, errStr, 
            __LINE__, Apg::ErrorType_InvalidUsage );
    }

    //found a value before we reached the end
    return (*iter).second;
    
}
   
//////////////////////////// 
// WRITE
void CamRegMirror::Write(const uint16_t reg, const uint16_t val)
{
    m_RegMirror[reg] = val;
}


//////////////////////////// 
// CLEAR 
void CamRegMirror::Clear()
{
    m_RegMirror.clear();
}