1 /*
2  * Copyright (c) 2019-2022 Rockchip Eletronics Co., Ltd.
3  *
4  * Licensed under the Apache License, Version 2.0 (the "License");
5  * you may not use this file except in compliance with the License.
6  * You may obtain a copy of the License at
7  *
8  *      http://www.apache.org/licenses/LICENSE-2.0
9  *
10  * Unless required by applicable law or agreed to in writing, software
11  * distributed under the License is distributed on an "AS IS" BASIS,
12  * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13  * See the License for the specific language governing permissions and
14  * limitations under the License.
15  */
16 #ifndef _RK_AIQ_CAMGROUP_AGIC_HANDLE_INT_H_
17 #define _RK_AIQ_CAMGROUP_AGIC_HANDLE_INT_H_
18 
19 #include "RkAiqCamGroupHandleInt.h"
20 #include "agic/rk_aiq_uapi_agic_int.h"
21 
22 namespace RkCam {
23 
24 #if (RRKAIQ_HAVE_GIC_V1 || RKAIQ_HAVE_GIC_V2)
25 class RkAiqCamGroupAgicHandleInt : public RkAiqCamgroupHandle {
26  public:
RkAiqCamGroupAgicHandleInt(RkAiqAlgoDesComm * des,RkAiqCamGroupManager * camGroupMg)27     explicit RkAiqCamGroupAgicHandleInt(RkAiqAlgoDesComm* des, RkAiqCamGroupManager* camGroupMg)
28         : RkAiqCamgroupHandle(des, camGroupMg) {
29         updateAttV1 = false;
30         updateAttV2 = false;
31         memset(&mCurAttV1, 0, sizeof(rkaiq_gic_v1_api_attr_t));
32         memset(&mNewAttV1, 0, sizeof(rkaiq_gic_v1_api_attr_t));
33         memset(&mCurAttV2, 0, sizeof(rkaiq_gic_v2_api_attr_t));
34         memset(&mNewAttV2, 0, sizeof(rkaiq_gic_v2_api_attr_t));
35     };
~RkAiqCamGroupAgicHandleInt()36     virtual ~RkAiqCamGroupAgicHandleInt() { RkAiqCamgroupHandle::deInit(); };
37     virtual XCamReturn updateConfig(bool needSync);
38     XCamReturn setAttribV1(const rkaiq_gic_v1_api_attr_t* att);
39     XCamReturn getAttribV1(rkaiq_gic_v1_api_attr_t* att);
40     XCamReturn setAttribV2(const rkaiq_gic_v2_api_attr_t* att);
41     XCamReturn getAttribV2(rkaiq_gic_v2_api_attr_t* att);
42 
43  protected:
44  private:
45     mutable std::atomic<bool> updateAttV1;
46     mutable std::atomic<bool> updateAttV2;
47     rkaiq_gic_v1_api_attr_t mCurAttV1;
48     rkaiq_gic_v1_api_attr_t mNewAttV1;
49     rkaiq_gic_v2_api_attr_t mCurAttV2;
50     rkaiq_gic_v2_api_attr_t mNewAttV2;
51 };
52 #endif
53 
54 }  // namespace RkCam
55 
56 #endif  // _RK_AIQ_CAMGROUP_AGIC_HANDLE_INT_H_
57