/* * Copyright (c) 2022 Samsung Electronics Co., Ltd. * * Licensed under the Apache License, Version 2.0 (the License); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ #include #include #include #include #include #include #include "hal-backend-common.h" #include "hal-backend-device-common-file.h" #define SHARED_H_BUF_MAX 255 int hal_backend_device_common_read_buf(char *file, char *buf, int len) { int fd, r; if (!file || !buf || len < 0) return -EINVAL; fd = open(file, O_RDONLY); if (fd == -1) return -errno; r = read(fd, buf, len); if ((r >= 0) && (r < len)) buf[r] = '\0'; else { buf[0] = '\0'; r = -EIO; } close(fd); return r; } int hal_backend_device_common_write_buf(char *file, char *buf) { int fd, r; if (!file || !buf) return -EINVAL; fd = open(file, O_WRONLY); if (fd == -1) return -errno; r = write(fd, buf, strlen(buf)); if (r < 0) r = -EIO; close(fd); return 0; } int hal_backend_device_common_get_int(char *fname, int *val) { char buf[SHARED_H_BUF_MAX]; int r; if (!fname || !val) return -EINVAL; r = hal_backend_device_common_read_buf(fname, buf, sizeof(buf)); if (r > 0) { *val = atoi(buf); } else { *val = -1; r = -EIO; } return r; } int hal_backend_device_common_get_str(char *fname, char *str, int len) { int r; if (!fname || !str || len < 0) return -EINVAL; r = hal_backend_device_common_read_buf(fname, str, len); if (r < 0) return r; return 0; } int hal_backend_device_common_set_int(char *fname, int val) { char buf[SHARED_H_BUF_MAX]; int r; if (!fname) return -EINVAL; snprintf(buf, sizeof(buf), "%d", val); r = hal_backend_device_common_write_buf(fname, buf); if (r < 0) return r; return 0; } int hal_backend_device_common_set_str(char *fname, char *val) { int r; if (!fname || !val) return -EINVAL; r = hal_backend_device_common_write_buf(fname, val); if (r < 0) return r; return 0; }