#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