fix PCA9685 maximum channel number
authorJeonghoon Park <jh1979.park@samsung.com>
Mon, 18 Dec 2017 01:12:02 +0000 (10:12 +0900)
committerJeonghoon Park <jh1979.park@samsung.com>
Mon, 18 Dec 2017 01:12:02 +0000 (10:12 +0900)
inc/resource/resource_PCA9685.h
src/resource/resource_PCA9685.c
src/resource/resource_servo_motor.c

index a72154c..aa45477 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __RESOURCE_PCA9685_H__
 #define __RESOURCE_PCA9685_H__
 
-#define PCA9685_CH_MAX 16
+#define PCA9685_CH_MAX 15
 
 int resource_pca9685_init(unsigned int ch);
 int resource_pca9685_fini(unsigned int ch);
index a4c1e55..7481b1b 100644 (file)
@@ -55,7 +55,7 @@ typedef enum {
 
 static peripheral_i2c_h g_i2c_h = NULL;
 static unsigned int ref_count = 0;
-static pca9685_ch_state_e ch_state[PCA9685_CH_MAX] = {PCA9685_CH_STATE_NONE, };
+static pca9685_ch_state_e ch_state[PCA9685_CH_MAX + 1] = {PCA9685_CH_STATE_NONE, };
 
 int resource_pca9685_set_frequency(unsigned int freq_hz)
 {
@@ -149,7 +149,7 @@ int resource_pca9685_init(unsigned int ch)
        uint8_t mode1 = 0;
        int ret = PERIPHERAL_ERROR_NONE;
 
-       if (ch == 0 || ch >= PCA9685_CH_MAX) {
+       if (ch == 0 || ch > PCA9685_CH_MAX) {
                _E("channel[%u] is out of range", ch);
                return -1;
        }
index a1a2b69..512cc5b 100644 (file)
@@ -21,7 +21,7 @@
 
 #define SERVO_MOTOR_MAX PCA9685_CH_MAX
 
-static int servo_motor_index[SERVO_MOTOR_MAX] = {0, };
+static int servo_motor_index[SERVO_MOTOR_MAX + 1] = {0, };
 
 static int resource_servo_motor_init(unsigned int ch)
 {
@@ -50,7 +50,7 @@ void resource_close_servo_motor_all(void)
 {
        unsigned int i;
 
-       for (i = 1; i < SERVO_MOTOR_MAX; i++)
+       for (i = 1; i <= SERVO_MOTOR_MAX; i++)
                resource_close_servo_motor(i);
 
        return;
@@ -63,7 +63,7 @@ int resource_set_servo_motor_value(unsigned int motor_id, int value)
        if (motor_id == 0)
                return -1;
 
-       if (motor_id >= SERVO_MOTOR_MAX)
+       if (motor_id > SERVO_MOTOR_MAX)
                return -1;
 
        if (servo_motor_index[motor_id] == 0) {