1 /*
2 *
3 * Copyright 2018 Rockchip Electronics Co., LTD.
4 *
5 * Licensed under the Apache License, Version 2.0 (the "License");
6 * you may not use this file except in compliance with the License.
7 * You may obtain a copy of the License at
8 *
9 * http://www.apache.org/licenses/LICENSE-2.0
10 *
11 * Unless required by applicable law or agreed to in writing, software
12 * distributed under the License is distributed on an "AS IS" BASIS,
13 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14 * See the License for the specific language governing permissions and
15 * limitations under the License.
16 */
17 #include <securec.h>
18 #include <stdio.h>
19 #include <stdlib.h>
20 #include <errno.h>
21 #include <string.h>
22
23 #include "Rockchip_OSAL_Log.h"
24 #include "Rockchip_OSAL_Env.h"
25
26 #ifndef OHOS
27 #include <sys/system_properties.h>
28
Rockchip_OSAL_GetEnvU32(const char * name,OMX_U32 * value,OMX_U32 default_value)29 OMX_ERRORTYPE Rockchip_OSAL_GetEnvU32(const char *name, OMX_U32 *value, OMX_U32 default_value)
30 {
31 OMX_ERRORTYPE ret = OMX_ErrorNone;
32 char prop[PROP_VALUE_MAX + 1];
33 int len = __system_property_get(name, prop);
34 if (len > 0) {
35 char *endptr;
36 int base = (prop[0] == '0' && prop[1] == 'x') ? (16) : (10);
37 errno = 0;
38 *value = strtoul(prop, &endptr, base);
39 if (errno || (prop == endptr)) {
40 errno = 0;
41 *value = default_value;
42 }
43 } else {
44 *value = default_value;
45 }
46
47 return ret;
48 }
49
Rockchip_OSAL_GetEnvStr(const char * name,char * value,OMX_U32 valueSize,char * default_value)50 OMX_ERRORTYPE Rockchip_OSAL_GetEnvStr(const char *name, char *value, OMX_U32 valueSize, char *default_value)
51 {
52 OMX_ERRORTYPE ret = OMX_ErrorNone;
53 if (value != NULL) {
54 int len = __system_property_get(name, value);
55 if (len <= 0 && default_value != NULL) {
56 if (strcpy_s(value, strlen(default_value)+1, default_value) != EOK) {
57 omx_err("strcpy_s error.\n");
58 ret = OMX_ErrorBadParameter;
59 goto EXIT;
60 }
61 }
62 } else {
63 omx_err("get env string failed, value is null");
64 ret = OMX_ErrorBadParameter;
65 goto EXIT;
66 }
67
68 EXIT:
69 return ret;
70 }
71
Rockchip_OSAL_SetEnvU32(const char * name,OMX_U32 value)72 OMX_ERRORTYPE Rockchip_OSAL_SetEnvU32(const char *name, OMX_U32 value)
73 {
74 OMX_ERRORTYPE ret = OMX_ErrorNone;
75 char buf[PROP_VALUE_MAX + 1];
76 if (snprintf_s(buf, sizeof(buf), sizeof(buf) - 1, "%lu", value) < 0) {
77 omx_err("snprintf_s error!");
78 ret = OMX_ErrorBadParameter;
79 goto EXIT;
80 }
81 int len = __system_property_set(name, buf);
82 if (len <= 0) {
83 omx_err("property set failed!");
84 ret = OMX_ErrorBadParameter;
85 goto EXIT;
86 }
87 EXIT:
88 return ret;
89 }
90
Rockchip_OSAL_SetEnvStr(const char * name,char * value)91 OMX_ERRORTYPE Rockchip_OSAL_SetEnvStr(const char *name, char *value)
92 {
93 OMX_ERRORTYPE ret = OMX_ErrorNone;
94 int len = __system_property_set(name, value);
95 if (len <= 0) {
96 omx_err("property set failed!");
97 ret = OMX_ErrorBadParameter;
98 goto EXIT;
99 }
100
101 EXIT:
102 return ret;
103 }
104
105 #else
106
107 #include "parameter.h"
108 #define VDEC_DBG_RECORD_MASK 0xff000000
109 #define VDEC_DBG_RECORD_IN 0x01000000
110 #define VDEC_DBG_RECORD_OUT 0x02000000
111
112 #define VIDEO_DBG_LOG_MASK 0x0000ffff
113 #define VIDEO_DBG_LOG_PTS 0x00000001
114 #define VIDEO_DBG_LOG_FPS 0x00000002
115 #define VIDEO_DBG_LOG_BUFFER 0x00000004
116 #define VIDEO_DBG_LOG_DBG 0x00000008
117 #define VIDEO_DBG_LOG_PORT 0x00000010
118 #define VIDEO_DBG_LOG_BUFFER_POSITION 0x00000020
119
120 #define VDEC_DBG_VPU_MPP_FIRST 0x00000001
121 #define VDEC_DBG_VPU_VPUAPI_FIRST 0x00000002
Rockchip_OSAL_GetEnvU32(const char * name,OMX_U32 * value,OMX_U32 default_value)122 OMX_ERRORTYPE Rockchip_OSAL_GetEnvU32(const char *name, OMX_U32 *value, OMX_U32 default_value)
123 {
124 if ((value == NULL) || (name == NULL)) {
125 return OMX_ErrorUndefined;
126 }
127 omx_info("%s defval: 0x%lx", name, default_value);
128 *value = default_value;
129 char bufDef[10] = {0};
130 if (snprintf(bufDef, sizeof(bufDef), "%d", default_value) <= 0) {
131 omx_err("snprintf error");
132 return OMX_ErrorUndefined;
133 }
134 char bufValue[10] = {0};
135 OMX_ERRORTYPE ret = Rockchip_OSAL_GetEnvStr(name, bufValue, sizeof(bufValue), bufDef);
136 if (ret != OMX_ErrorNone) {
137 return ret;
138 }
139 *value = atoi(bufValue);
140 return OMX_ErrorNone;
141 }
142
Rockchip_OSAL_GetEnvStr(const char * name,char * value,OMX_U32 valueSize,char * default_value)143 OMX_ERRORTYPE Rockchip_OSAL_GetEnvStr(const char *name, char *value, OMX_U32 valueSize, char *default_value)
144 {
145 if ((value == NULL) || (default_value == NULL) || (name == NULL)) {
146 return OMX_ErrorUndefined;
147 }
148 omx_info("%s def: %s", name, default_value);
149 if (GetParameter(name, default_value, value, valueSize) <= 0) {
150 omx_err("GetParameter error");
151 strcpy_s(value, valueSize > strlen(default_value) ? strlen(default_value) : valueSize, default_value);
152 return OMX_ErrorUndefined;
153 }
154 return OMX_ErrorNone;
155 }
156
Rockchip_OSAL_SetEnvU32(const char * name,OMX_U32 value)157 OMX_ERRORTYPE Rockchip_OSAL_SetEnvU32(const char *name, OMX_U32 value)
158 {
159 if (name == NULL) {
160 return OMX_ErrorUndefined;
161 }
162 char buf[10] = {0};
163 if (snprintf(buf, sizeof(buf), "%d", value) <= 0) {
164 omx_err("snprintf error");
165 return OMX_ErrorUndefined;
166 }
167 return Rockchip_OSAL_SetEnvStr(name, buf);
168 }
169
Rockchip_OSAL_SetEnvStr(const char * name,char * value)170 OMX_ERRORTYPE Rockchip_OSAL_SetEnvStr(const char *name, char *value)
171 {
172 if ((name == NULL) || (value == NULL)) {
173 return OMX_ErrorUndefined;
174 }
175 if (SetParameter(name, value) <= 0) {
176 omx_err("SetParameter error");
177 return OMX_ErrorUndefined;
178 }
179 return OMX_ErrorNone;
180 }
181 #endif
182
183