• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 /*
2 *
3 * SPDX-License-Identifier: GPL-2.0
4 *
5 * Copyright (C) 2011-2018 ARM or its affiliates
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2.
10 * This program is distributed in the hope that it will be useful, but
11 * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
12 * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
13 * for more details.
14 * You should have received a copy of the GNU General Public License along
15 * with this program; if not, write to the Free Software Foundation, Inc.,
16 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
17 *
18 */
19 
20 #include "acamera_fw.h"
21 #include "sbuf_fsm.h"
22 
23 #ifdef LOG_MODULE
24 #undef LOG_MODULE
25 #define LOG_MODULE LOG_MODULE_SBUF
26 #endif
27 
sbuf_fsm_clear(sbuf_fsm_t * p_fsm)28 void sbuf_fsm_clear( sbuf_fsm_t *p_fsm )
29 {
30     p_fsm->opened = 0;
31     p_fsm->mode = 0;
32 }
33 
sbuf_fsm_init(void * fsm,fsm_init_param_t * init_param)34 void sbuf_fsm_init( void *fsm, fsm_init_param_t *init_param )
35 {
36     sbuf_fsm_t *p_fsm = (sbuf_fsm_t *)fsm;
37     p_fsm->cmn.p_fsm_mgr = init_param->p_fsm_mgr;
38     p_fsm->cmn.isp_base = init_param->isp_base;
39     p_fsm->p_fsm_mgr = init_param->p_fsm_mgr;
40 
41     sbuf_fsm_clear( p_fsm );
42 
43     sbuf_fsm_initialize( p_fsm );
44 }
45 
46 
sbuf_fsm_set_param(void * fsm,uint32_t param_id,void * input,uint32_t input_size)47 int sbuf_fsm_set_param( void *fsm, uint32_t param_id, void *input, uint32_t input_size )
48 {
49     int rc = 0;
50 
51     sbuf_fsm_t *p_fsm = (sbuf_fsm_t *)fsm;
52     switch ( param_id ) {
53     case FSM_PARAM_SET_SBUF_CALIBRATION_UPDATE: {
54         sbuf_update_calibration_data( p_fsm );
55         break;
56     }
57     default:
58         rc = -1;
59         break;
60     }
61 
62     return rc;
63 }
64 
sbuf_fsm_process_event(sbuf_fsm_t * p_fsm,event_id_t event_id)65 uint8_t sbuf_fsm_process_event( sbuf_fsm_t *p_fsm, event_id_t event_id )
66 {
67     uint8_t b_event_processed = 0;
68     switch ( event_id ) {
69     default:
70         break;
71 
72     case event_id_ae_stats_ready:
73         sbuf_update_ae_idx( p_fsm );
74         b_event_processed = 1;
75         break;
76 
77     case event_id_gamma_stats_ready:
78         sbuf_update_gamma_idx( p_fsm );
79         b_event_processed = 1;
80         break;
81 
82     case event_id_awb_stats_ready:
83         sbuf_update_awb_idx( p_fsm );
84         b_event_processed = 1;
85         break;
86 
87     case event_id_af_stats_ready:
88         sbuf_update_af_idx( p_fsm );
89         b_event_processed = 1;
90         break;
91     }
92 
93     return b_event_processed;
94 }
95