Zephyr OS BLE advertised but cant connect

I use custom board for nrf52840 but i have some problem with the BLE. BLE is advertised but when i want to connect it, it keeps connecting. this is my code. 

I use mbed before for my board and it runs perfectly fine, so i dont think the board is the problem. 

#include <zephyr/kernel.h>
#include <zephyr/drivers/gpio.h>
#include <zephyr/bluetooth/bluetooth.h>
#include <zephyr/bluetooth/conn.h>
#include <zephyr/bluetooth/uuid.h>
#include <zephyr/bluetooth/gatt.h>
#include <zephyr/mgmt/mcumgr/transport/smp_bt.h>

#define SLEEP_TIME_MS 1000

#define LED0_NODE DT_ALIAS(led0)

static const struct gpio_dt_spec led = GPIO_DT_SPEC_GET(LED0_NODE, gpios);

static const struct bt_data ad[] = {
	BT_DATA_BYTES(BT_DATA_FLAGS, (BT_LE_AD_GENERAL | BT_LE_AD_NO_BREDR)),
};
static const struct bt_data sd[] = {
	BT_DATA_BYTES(BT_DATA_NAME_COMPLETE, CONFIG_BT_DEVICE_NAME)};

int main(void)
{
	int ret;

	printk("Board: %s\n", CONFIG_BOARD);
	printk("Build time: " __DATE__ " " __TIME__ "\n");

	if (!gpio_is_ready_dt(&led))
	{
		return -ENODEV;
	}

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

	/* Enable Bluetooth */
	ret = bt_enable(NULL);
	if (ret < 0)
	{
		printk("Bluetooth init failed (err %d)\n", ret);
		return ret;
	}

	/* Start advertising */
	ret = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad),
						  sd, ARRAY_SIZE(sd));
	if (ret < 0)
	{
		printk("Advertising failed to start (err %d)\n", ret);
		return ret;
	}

	while (1)
	{
		ret = gpio_pin_toggle_dt(&led);
		if (ret < 0)
		{
			return -ENODEV;
		}
		k_msleep(SLEEP_TIME_MS);
	}

	return 0;
}

Related