• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (C) 2022 Beken Corporation
2 //
3 // Licensed under the Apache License, Version 2.0 (the "License");
4 // you may not use this file except in compliance with the License.
5 // You may obtain a copy of the License at
6 //
7 //     http://www.apache.org/licenses/LICENSE-2.0
8 //
9 // Unless required by applicable law or agreed to in writing, software
10 // distributed under the License is distributed on an "AS IS" BASIS,
11 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
12 // See the License for the specific language governing permissions and
13 // limitations under the License.
14 
15 #pragma once
16 
17 #include <common/bk_include.h>
18 #include "media_core.h"
19 
20 #ifdef __cplusplus
21 extern "C" {
22 #endif
23 
24 #define MEDIA_EVT_RETURN(res, val) \
25 	do { \
26 		if (res != NULL) { \
27 			res->ret = val; \
28 			rtos_set_semaphore(&res->sem); \
29 		} \
30 	} while(0)
31 
32 
33 /*
34 *   Message Type:
35 *       CMD <-> EVT     for     CPU0 <-> CPU1
36 *       REQ <-> EVT     for     modules
37 *       IND             for     unicast instruction
38 *    _______________________________________                   _______________________________________
39 *   |                                       |                 |                                       |
40 *   |             Major CPU(CPU0)           |                 |             Minor CPU(CPU1)           |
41 *   |_______________________________________|                 |_______________________________________|
42 *   |                   |                   |     CMD1 ==>    |                   |                   |
43 *   |    Moudle A       |    Moudle B       |     <== EVT1    |    Moudle C       |    Moudle D       |
44 *   |  _____________    |    _____________  |                 |  _____________    |    _____________  |
45 *   | |             |   |   |             | |     CMD2 ==>    | |             |   |   |             | |
46 *   | | EVENT_REQ1  | <-|-> | EVENT_RES1  | |     <== EVT2    | | EVENT_REQ1  | <-|-> | EVENT_RES1  | |
47 *   | | EVENT_REQ2  | <-|-> | EVENT_RES2  | |                 | | EVENT_REQ2  | <-|-> | EVENT_RES2  | |
48 *   | | EVENT_RES1  | <-|-> | EVENT_REQ1  | |     CMD3 ==>    | | EVENT_RES1  | <-|-> | EVENT_REQ1  | |
49 *   | | EVENT_RES2  | <-|-> | EVENT_REQ2  | |     <== EVT3    | | EVENT_RES2  | <-|-> | EVENT_REQ2  | |
50 *   | |_____________|   |   |_____________| |                 | |_____________|   |   |_____________| |
51 *   |___________________|___________________|                 |___________________|___________________|
52 *
53 */
54 
55 
56 typedef enum
57 {
58 	COM_EVENT = 1,
59 	CAM_EVENT,
60 	AUD_EVENT,
61 	LCD_EVENT,
62 	STORAGE_EVENT,
63 	TRS_EVENT,
64 	EXIT_EVENT,
65 	QUEUE_EVENT,
66 	MAILBOX_CMD,
67 	MAILBOX_EVT,
68 } media_mask_t;
69 
70 typedef enum
71 {
72 	EVENT_COM_DEFAULT_IND = (COM_EVENT << MEDIA_EVT_BIT),
73 	EVENT_COM_FRAME_WIFI_FREE_IND,
74 	EVENT_COM_FRAME_DECODER_FREE_IND,
75 	EVENT_COM_FRAME_CAPTURE_FREE_IND,
76 	EVENT_COM_FRAME_REQUEST_IND,
77 
78 
79 	EVENT_AUD_ADC_OPEN = (AUD_EVENT << MEDIA_EVT_BIT),
80 	EVENT_AUD_DAC_OPEN,
81 
82 	EVENT_CAM_DVP_JPEG_OPEN_IND = (CAM_EVENT << MEDIA_EVT_BIT),
83 	EVENT_CAM_DVP_YUV_OPEN_IND,
84 	EVENT_CAM_DVP_CLOSE_IND,
85 	EVENT_CAM_UVC_OPEN_IND,
86 	EVENT_CAM_UVC_CLOSE_IND,
87 
88 	EVENT_LCD_OPEN_IND = (LCD_EVENT << MEDIA_EVT_BIT),
89 	EVENT_LCD_DVP_REG_CAM_INIT_RES,
90 	EVENT_LCD_FRAME_COMPLETE_IND,
91 	EVENT_LCD_RESIZE_IND,
92 	EVENT_LCD_CLOSE_IND,
93 	EVENT_LCD_SET_BACKLIGHT_IND,
94 	EVENT_LCD_ROTATE_ENABLE_IND,
95 	EVENT_LCD_FRAME_LOCAL_ROTATE_IND,
96 	EVENT_LCD_DUMP_DECODER_IND,
97 	EVENT_LCD_DUMP_JPEG_IND,
98 	EVENT_LCD_DUMP_DISPLAY_IND,
99 	EVENT_LCD_STEP_MODE_IND,
100 	EVENT_LCD_STEP_TRIGGER_IND,
101 
102 	EVENT_STORAGE_OPEN_IND = (STORAGE_EVENT << MEDIA_EVT_BIT),
103 	EVENT_STORAGE_CAPTURE_IND,
104 
105 	EVENT_TRANSFER_OPEN_IND = (TRS_EVENT << MEDIA_EVT_BIT),
106 	EVENT_TRANSFER_CLOSE_IND,
107 	EVENT_TRANSFER_PAUSE_IND,
108 
109 	EVENT_LCD_DEFAULT_CMD = (MAILBOX_CMD << MEDIA_EVT_BIT),
110 	EVENT_LCD_ROTATE_RIGHT_CMD,
111 
112 	EVENT_LCD_DEFAULT_EVT = (MAILBOX_EVT << MEDIA_EVT_BIT),
113 	EVENT_LCD_ROTATE_RIGHT_COMP_EVT,
114 } media_event_t;
115 
116 
117 typedef enum
118 {
119 	EVENT_APP_DVP_OPEN,
120 	EVENT_APP_EXIT,
121 } media_app_event_t;
122 
123 
124 typedef struct
125 {
126 	uint32_t event;
127 	uint32_t param;
128 } media_msg_t;
129 
130 
131 typedef struct
132 {
133 	beken_semaphore_t sem;
134 	uint32_t param;
135 	int ret;
136 } param_pak_t;
137 
138 
139 bk_err_t media_send_msg(media_msg_t *msg);
140 bk_err_t media_app_send_msg(media_msg_t *msg);
141 
142 
143 #ifdef __cplusplus
144 }
145 #endif
146