00001 /*************************************************************************** 00002 l1394_avccameraregister.h - description 00003 ------------------- 00004 begin : Wed Oct 25 2000 00005 copyright : (C) 2000-2004 by Michael Repplinger 00006 email : repplinger@cs.uni-sb.de 00007 ***************************************************************************/ 00008 00009 /*************************************************************************** 00010 * * 00011 * This program is free software; you can redistribute it and/or modify * 00012 * it under the terms of the GNU General Public License as published by * 00013 * the Free Software Foundation; either version 2 of the License, or * 00014 * (at your option) any later version. * 00015 * * 00016 ***************************************************************************/ 00017 00018 #ifndef L1394AVCCAMERAREGISTER_H 00019 #define L1394AVCCAMERAREGISTER_H 00020 00021 #include "l1394_cameraregister.h" 00022 #include "l1394_qarray.h" 00023 #include "l1394_resource.h" 00024 #include "l1394_avcregister.h" 00025 00026 00027 namespace L1394{ 00028 00029 /*! \class AvcCameraRegister 00030 * \ingroup L1394_Register 00031 * \brief Class AvcCameraRegister implements the interface of class CameraRegister for AvcCameras. 00032 * 00033 * As described in class CameraRegister, class AvcCameraRegister defines how to execute a 00034 * feature of a Camera based on the AV/C camera subunit Specification (Version 2.1). 00035 * 00036 * For example-code see class Camera and AvcCamera. 00037 * 00038 * Illegal combinations are ignored. 00039 * 00040 *@author Michael Repplinger 00041 */ 00042 class FcpNode; 00043 class AvcCameraRegister : public CameraRegister, public AvcRegister 00044 { 00045 public: 00046 00047 /*! \name CameraRegister constructor 00048 * These functions implement the CameraRegister interface for AvcCameras 00049 */ 00050 //@{ 00051 00052 /*! \fn AvcCameraRegister(const FcpNode* parent_node, const int subunit_value) 00053 * \brief This method creates a CameraRegister object for AvcCameras. 00054 * \param FcpNode* : pointer to the parent node. 00055 * \param subunit_value : The subunit value defines the subunit-type and the subunit-id of the device. 00056 */ 00057 AvcCameraRegister(const FcpNode* parent_node, const int subunit_value); 00058 00059 00060 /*! \fn ~AvcCameraRegister() 00061 * \brief destructor 00062 */ 00063 ~AvcCameraRegister(); 00064 //@} 00065 00066 /*! \name Camera_register Interface 00067 * These functions implement the CameraRegister interface for AvcCameras 00068 */ 00069 //@{ 00070 /*! \fn onePush(const bool one_push = true) const 00071 * \brief This method activates or deactivates one-push mode of a feature 00072 * \param one_push : enables or disables one_push 00073 * \return bool : new status of one-push mode. 00074 */ 00075 virtual bool onePush(const bool one_push = true) const; 00076 00077 00078 /*! \fn automatic(const bool on = true) const 00079 * \brief This method activates or deactivates the auto-mode of a feature. 00080 * \param on : enables or disables automatic mode of a feature. 00081 * \return bool : new status of automatic mode. 00082 */ 00083 virtual bool automatic(const bool on = true) const; 00084 00085 00086 /*! \fn setValue(const int value) const 00087 * \brief This method changes the value of a feature. 00088 * \param value : new value that should be set. 00089 * \return int : the new value of the feature. 00090 */ 00091 virtual int setValue(const int value) const; 00092 00093 00094 /*! \fn setTriggerMode(const int value) const 00095 * \brief This method sets the value of the trigger mode. 00096 * \param value : new value for trigger mode. 00097 * \return int : value after changing the trigger mode. 00098 */ 00099 virtual int setTriggerMode(const int value) const; 00100 00101 00102 /*! \fn setTriggerPolarity(const bool value) const 00103 * \brief This method enables or disables the trigger polarity 00104 * \param value : new value that should be set. 00105 * \return int : the new value of the feature. 00106 */ 00107 virtual bool setTriggerPolarity(const bool value)const; 00108 00109 00110 /*! \fn getValue() const 00111 * \brief This method returns the actual value of a feature. 00112 * \return int : actual value of a feature. 00113 */ 00114 virtual int getValue() const; 00115 00116 00117 /*! \fn getMinValue() const 00118 * \brief This method returns the minimum value of a feature 00119 * \return int : minimum value of a feature 00120 */ 00121 virtual int getMinValue() const; 00122 00123 00124 /*! \fn getMaxValue() const 00125 * \brief This method returns the maximum value of a feature. 00126 * \return int : maximum value of a feature. 00127 */ 00128 virtual int getMaxValue() const; 00129 00130 00131 /*! \fn on(const bool set) const 00132 * \brief This method enable or disable a feature. 00133 * 00134 * After disabling a feature, no write access has affect until enabling 00135 * the feature again.So this method can be used, to lock (unlock) a 00136 * feature to a value. 00137 * \param set : true enable, false disable the feature. 00138 */ 00139 virtual bool on(const bool =true) const {cout << "not impl." << endl; return false;} 00140 00141 00142 /*! \fn hasFeature() const 00143 * \brief This method tests if a feature is supported by the camera. 00144 * \return bool : true if the feature is supported, false if not. 00145 */ 00146 virtual bool hasFeature() const; 00147 00148 00149 /*! \fn hasOnePush() const 00150 * \brief This method check, if one-push mode is supported by the camera 00151 * \return bool : true if a feature supported this mode, false if not. 00152 */ 00153 virtual bool hasOnePush() const; 00154 00155 00156 /*! \fn hasReadout() const 00157 * \brief This method tests for readout mode of a feature. 00158 * \return bool : true if a feature supports this mode, false if not. 00159 */ 00160 virtual bool hasReadout() const; 00161 00162 00163 /*! \fn hasOnOff() const 00164 * \brief This method tests, if on-off mode is support by a feature 00165 * \return bool : true if a feature support this mode, false if not. 00166 */ 00167 virtual bool hasOnOff() const; 00168 00169 00170 /*! \fn hasAuto() const 00171 * \brief This method tests for auto mode of a feature. 00172 * \return bool : true if mode is supported, false if not. 00173 */ 00174 virtual bool hasAuto() const; 00175 00176 00177 /*! \fn hasManual() const 00178 * \brief This method tests for manual mode of a feature. 00179 * \return bool : true if feature has manual support, false if not. 00180 */ 00181 virtual bool hasManual() const; 00182 //@} 00183 /*! \name Some internal functions 00184 * These functions help to implement the interface. 00185 */ 00186 //@{ 00187 void setOffset(int) {} 00188 //@} 00189 private: 00190 00191 AvcCameraRegister(const AvcCameraRegister&); 00192 00193 00194 00195 }; 00196 } //namespace L1394 00197 #endif