File: resource.h

package info (click to toggle)
openhpi 3.8.0-2.3
  • links: PTS
  • area: main
  • in suites: sid, trixie
  • size: 31,888 kB
  • sloc: ansic: 225,326; cpp: 63,687; java: 16,472; cs: 15,161; python: 11,884; sh: 11,508; makefile: 4,945; perl: 1,529; xml: 36; asm: 13
file content (146 lines) | stat: -rw-r--r-- 4,685 bytes parent folder | download | duplicates (4)
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
/*      -*- c++ -*-
 *
 * (C) Copyright Pigeon Point Systems. 2011
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTRESOURCELITY or FITNESS FOR A PARTICULAR PURPOSE.  This
 * file and program are licensed under a BSD style license.  See
 * the Copying file included with the OpenHPI distribution for
 * full licensing terms.
 *
 * Author(s):
 *        Anton Pak <anton.pak@pigeonpoint.com>
 */

#ifndef RESOURCE_H_FB2B5DD5_4E7D_49F5_9397_C2FEC21B4010
#define RESOURCE_H_FB2B5DD5_4E7D_49F5_9397_C2FEC21B4010

#include <map>

#include <SaHpi.h>

#include "instruments.h"
#include "object.h"
#include "timers.h"


namespace TA {


/**************************************************************
 * class cResource
 *************************************************************/
class cHandler;
class cLog;

class cResource : public cObject, public cInstruments, private cTimerCallback
{
public:

    explicit cResource( cHandler& handler,
                        const SaHpiEntityPathT& ep );
    virtual ~cResource();

public:

    const SaHpiRptEntryT& GetRptEntry() const;
    SaHpiResourceIdT GetResourceId() const;
    const SaHpiEntityPathT& GetEntityPath() const;
    bool IsFailed() const;
    void UpdateCaps( SaHpiCapabilitiesT caps );

    cLog * GetLog() const;

public:  // HPI interface

    SaErrorT SetTag( const SaHpiTextBufferT& tag );
    SaErrorT SetSeverity( SaHpiSeverityT sev );
    SaErrorT CancelHsPolicy( const SaHpiTimeoutT& timeout );
    SaErrorT GetAutoExtractTimeout( SaHpiTimeoutT& timeout ) const;
    SaErrorT SetAutoExtractTimeout( const SaHpiTimeoutT& timeout );
    SaErrorT GetHsState( SaHpiHsStateT& state ) const;
    SaErrorT SetHsState( SaHpiHsStateT state );
    SaErrorT RequestHsAction( SaHpiHsActionT action );
    SaErrorT GetHsIndicatorState( SaHpiHsIndicatorStateT& state ) const;
    SaErrorT SetHsIndicatorState( const SaHpiHsIndicatorStateT& state );
    SaErrorT GetPowerState( SaHpiPowerStateT& state );
    SaErrorT SetPowerState( const SaHpiPowerStateT& state );
    SaErrorT ControlParm( SaHpiParmActionT action );
    SaErrorT GetLoadId( SaHpiLoadIdT& load_id ) const;
    SaErrorT SetLoadId( const SaHpiLoadIdT& load_id );
    SaErrorT GetResetState( SaHpiResetActionT& action ) const;
    SaErrorT SetResetState( const SaHpiResetActionT& action );

public: // Event generation

    void PostEvent( SaHpiEventTypeT type,
                    const SaHpiEventUnionT& data,
                    SaHpiSeverityT severity,
                    const InstrumentList& updates  = InstrumentList(),
                    const InstrumentList& removals = InstrumentList() ) const;

private:

    cResource( const cResource& );
    cResource& operator =( const cResource& );

private: // Event Generation

    void PostResourceEvent( SaHpiResourceEventTypeT type ) const;
    void PostHsEvent( SaHpiHsStateT current, SaHpiHsStateT prev ) const;

private: // cObject virtual functions

    virtual void BeforeVisibilityChange();
    virtual void AfterVisibilityChange();
    virtual void GetNewNames( cObject::NewNames& names ) const;
    virtual bool CreateChild( const std::string& name );
    virtual bool RemoveChild( const std::string& name );
    virtual void GetChildren( cObject::Children& children ) const;
    virtual void GetVars( cVars& vars );
    virtual void BeforeVarSet( const std::string& var_name );
    virtual void AfterVarSet( const std::string& var_name );

private: // cTimerCallback virtual functions

    void CreateLog();
    void RemoveLog();
    virtual void TimerEvent();

private:

    void GetTimeouts( SaHpiTimeoutT& ai_timeout,
                      SaHpiTimeoutT& ae_timeout ) const;
    void CommitChanges();

private: // data

    cHandler&              m_handler;
    cLog *                 m_log;
    SaHpiRptEntryT         m_rpte;
    SaHpiBoolT             m_failed;
    SaHpiBoolT             m_new_failed;
    SaHpiTimeoutT          m_ae_timeout;
    SaHpiHsStateT          m_prev_hs_state;
    SaHpiHsStateT          m_hs_state;
    SaHpiHsStateT          m_new_hs_state;
    SaHpiHsIndicatorStateT m_hs_ind_state;
    SaHpiLoadIdT           m_load_id;
    SaHpiResetActionT      m_rst_state;
    SaHpiPowerStateT       m_pwr_state;

    // If Power State is set to POWER_CYCLE then for PwrCycleDuration times
    // saHpiResourcePowerStateGet() call will report ON (or OFF)
    // and after that it will report OFF (or ON).
    static const int       PwrCycleDuration = 3;

    int                    m_pwr_cycle_cnt;
};


}; // namespace TA


#endif // RESOURCE_H_FB2B5DD5_4E7D_49F5_9397_C2FEC21B4010