conflicting types for ...

5100.lock_service.h

#include <zephyr/kernel.h>
#include <zephyr/device.h>
// #include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>


#include "lock_service.h"

#define MOTOR1_NODE	DT_ALIAS(motor1)
#define MOTOR2_NODE	DT_ALIAS(motor2)

static const struct gpio_dt_spec motor1 = GPIO_DT_SPEC_GET(MOTOR1_NODE, gpios);
static const struct gpio_dt_spec motor2 = GPIO_DT_SPEC_GET(MOTOR2_NODE, gpios);

#define MOTOR_OPEN 1
#define MOTOR_CLOSE 0



K_TIMER_DEFINE(lock_close_timer, lock_close, NULL);
K_TIMER_DEFINE(lock_stop_timer, lock_stop, NULL);






int lock_open1(int need_close) {
  gpio_pin_set_dt(&motor1,1);
  gpio_pin_set_dt(&motor2,0);
	k_timer_start(&lock_stop_timer, K_MSEC(200), K_NO_WAIT );
	if (need_close) {
		k_timer_start(&lock_close_timer, K_MSEC(5000), K_NO_WAIT );
	}
	return 0;
}

int lock_open1(void) {
    return lock_open1(1);
}

void lock_close(struct k_timer *dummy) {
	gpio_pin_set_dt(&motor1,0);
	gpio_pin_set_dt(&motor2,1);

	k_timer_start(&lock_stop_timer, K_MSEC(200), K_NO_WAIT );

}

void lock_stop(struct k_timer *dummy) {
	gpio_pin_set_dt(&motor1,0);
  gpio_pin_set_dt(&motor2,0);
}


int lock_service_init() {
  int ret;

	if (!device_is_ready(motor1.port)) {
		return -1;
	}

  if (!device_is_ready(motor2.port)) {
		return -2;
	}

  ret = gpio_pin_configure_dt(&motor1, GPIO_OUTPUT_ACTIVE);
	if (ret < 0) {
		return -3;
	}

  ret = gpio_pin_configure_dt(&motor2, GPIO_OUTPUT_ACTIVE);
	if (ret < 0) {
		return -4;
	}

  gpio_pin_set_dt(&motor1,0);
  gpio_pin_set_dt(&motor2,0);

  return 0;
}

 

I try to overload lock_open1 function, but its dosent work. I have errors:

../src/lock_service.h:9:5: error: conflicting types for 'lock_open1'; have 'int(void)'
9 | int lock_open1(void);
| ^~~~~~~~~~
../src/lock_service.h:8:5: note: previous declaration of 'lock_open1' with type 'int(int)'
8 | int lock_open1(int need_close);
| ^~~~~~~~~~
../src/lock_service.c:39:5: error: conflicting types for 'lock_open1'; have 'int(void)'
39 | int lock_open1(void) {
| ^~~~~~~~~~
../src/lock_service.c:29:5: note: previous definition of 'lock_open1' with type 'int(int)'
29 | int lock_open1(int need_close) {
| ^~~~~~~~~~
../src/lock_service.c: In function 'lock_open1':
../src/lock_service.c:40:12: error: too many arguments to function 'lock_open1'
40 | return lock_open1(1);
| ^~~~~~~~~~
../src/lock_service.c:39:5: note: declared here
39 | int lock_open1(void) {
| ^~~~~~~~~~

Code lock_service.h 

#include <zephyr/kernel.h>
#include <zephyr/device.h>
#include <zephyr/devicetree.h>
#include <zephyr/drivers/gpio.h>



int lock_open1(int need_close);
int lock_open1(void);


int lock_service_init();
void lock_close(struct k_timer *dummy);
void lock_stop(struct k_timer *dummy);
Related