• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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