2 * Copyright (c) 2017 Samsung Electronics Co., Ltd.
4 * Contact: Jeonghoon Park <jh1979.park@samsung.com>
6 * Licensed under the Flora License, Version 1.1 (the License);
7 * you may not use this file except in compliance with the License.
8 * You may obtain a copy of the License at
10 * http://floralicense.org/license/
12 * Unless required by applicable law or agreed to in writing, software
13 * distributed under the License is distributed on an AS IS BASIS,
14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
15 * See the License for the specific language governing permissions and
16 * limitations under the License.
20 #include "resource/resource_PCA9685.h"
22 #define SERVO_MOTOR_MAX 16
24 static int servo_motor_index[SERVO_MOTOR_MAX] = {0, };
26 static int resource_servo_motor_init(unsigned int ch)
29 ret = resource_pca9685_init(ch);
31 _E("failed to init PCA9685 with ch[%u]", ch);
34 servo_motor_index[ch] = 1;
39 void resource_close_servo_motor(unsigned int ch)
41 if (servo_motor_index[ch] == 1) {
42 resource_pca9685_fini(ch);
43 servo_motor_index[ch] = 0;
49 void resource_close_servo_motor_all(void)
53 for (i = 1; i < SERVO_MOTOR_MAX; i++)
54 resource_close_servo_motor(i);
59 int resource_set_servo_motor_value(unsigned int motor_id, int value)
66 if (motor_id >= SERVO_MOTOR_MAX)
69 if (servo_motor_index[motor_id] == 0) {
70 ret = resource_servo_motor_init(motor_id);
75 ret = resource_pca9685_set_value_to_channel(motor_id, 0, value);