<?xml version="1.0" encoding="UTF-8" ?>
<?xml-stylesheet type="text/xsl" href="https://devzone.nordicsemi.com/cfs-file/__key/system/syndication/rss.xsl" media="screen"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/89400/examples-of-simple-peripheral-central-ble-transmission-nrf52-series</link><description>I am very familiar with PICs and some atmega stuff, just graduated university ee and the project I am working on requires transmitting very small amounts of data continuously via ble protocol. Actually transmitting real time gyroscope data. Nrf modules</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Wed, 21 Feb 2024 13:32:02 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/89400/examples-of-simple-peripheral-central-ble-transmission-nrf52-series" /><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/470038?ContentTypeID=1</link><pubDate>Wed, 21 Feb 2024 13:32:02 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:7d16d4a7-812e-459b-9aff-8e63a73f6a8f</guid><dc:creator>Dev_Guy</dc:creator><description>&lt;p&gt;Hi, I am having the exact same issue now. Do you remember what the&amp;nbsp;hard fault&amp;nbsp;was caused by?&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/377012?ContentTypeID=1</link><pubDate>Thu, 14 Jul 2022 14:15:51 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c6a41cdc-8746-42c8-b6cb-e9627908b5d6</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;yes it can be closed&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/376913?ContentTypeID=1</link><pubDate>Thu, 14 Jul 2022 09:29:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:13428616-1f98-4b9a-9937-12ed5f0ec0a3</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;I am glad to hear that you figured out the issue!&amp;nbsp;&lt;br /&gt;&lt;br /&gt;If you found any information that might help other developers with the same issue, please feel free to share the answer in this case. Else I would like to know if I can close this ticket? You may always open a new one in case you need an answer to a new question&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/376853?ContentTypeID=1</link><pubDate>Wed, 13 Jul 2022 21:14:01 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:2517da48-7abb-488a-a1a7-5836ec8dcbdf</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;thanks for the help i seem to have figured out the issue.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/376011?ContentTypeID=1</link><pubDate>Thu, 07 Jul 2022 12:29:07 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6c4c2f1f-900a-44b9-82fb-fcc385be25e9</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&amp;nbsp;&lt;br /&gt;&lt;br /&gt;I will see if I can look into this error before the weekend, but I can not guarantee it as a we&amp;#39;re running with a reduced staff in July due to the primary summer vacation period in Norway.&lt;br /&gt;&lt;br /&gt;In the mean while: How far did you go in the hands on exercise? And did you use the same SDK version that the hands on uses?&amp;nbsp;&lt;/p&gt;
[quote user="loganmeyer3"]after much experimenting I seem to be getting this error from the second example[/quote]
&lt;p&gt;Also for errors like this you can do some investigating with arm-none-eabi-addr2line:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check if you have arm-none-eabi-addr2line set up by running &amp;quot;&lt;em&gt;where arm-none-eabi-addr2line&amp;quot;&amp;nbsp;&lt;/em&gt;in a cmd window.
&lt;ol&gt;
&lt;li&gt;This should return something like &amp;quot;&lt;em&gt;C:\Program Files (x86)\GNU Tools ARM Embedded\4.9 2015q3\bin\arm-none-eabi-addr2line.exe&amp;quot;&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;&lt;/em&gt;If it does not return this, then there might be some issues with the gnuarmemb path configuration&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;li&gt;Next step is to investigate what is in the R15/pc and R14/lr addresses
&lt;ol&gt;
&lt;li&gt;&lt;em&gt;arm-none-eabi-addr2line -e &amp;lt;path to _build\zephyr\zephyr.elf&amp;gt; &amp;lt;0x000211a8&amp;gt; for r15/pc&lt;/em&gt;&lt;/li&gt;
&lt;li&gt;&lt;em&gt;arm-none-eabi-addr2line -e &amp;lt;path to _build\zephyr\zephyr.elf&amp;gt; &amp;lt;0x00018b3d&amp;gt; for r14/lr&lt;/em&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;span&gt;2. Should give you what function call that causes the kernel panic deep down in the stack.&amp;nbsp;&lt;/span&gt;&lt;span&gt;Remember to replace &amp;quot;&amp;lt;path to _build\zephyr\zephyr.elf&amp;gt;&amp;quot; with your actual path&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Kind regards,&lt;br /&gt;Andreas&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/375893?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 23:13:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:d6bfad34-39cd-4c34-a32e-75312f8c6198</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;attached main and header below here is my prj.conf&lt;/p&gt;
&lt;p&gt;&lt;img style="max-height:240px;max-width:320px;" src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1657149203832v1.png" alt=" " /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/375892?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 23:12:26 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:ae4efed4-c42e-40ff-9205-f30258b16845</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;#include &amp;quot;remote.h&amp;quot;

#define BT_UUID_MY_SERVICE      BT_UUID_DECLARE_128(MY_SERVICE_UUID)
#define BT_UUID_MY_SERVICE_RX   BT_UUID_DECLARE_128(RX_CHARACTERISTIC_UUID)
#define BT_UUID_MY_SERVICE_TX   BT_UUID_DECLARE_128(TX_CHARACTERISTIC_UUID)

#define MAX_TRANSMIT_SIZE 240//TODO figure this out

uint8_t data_rx[MAX_TRANSMIT_SIZE];
uint8_t data_tx[MAX_TRANSMIT_SIZE];

int my_service_init(void)
{
    int err = 0;

    memset(&amp;amp;data_rx, 0, MAX_TRANSMIT_SIZE);
    memset(&amp;amp;data_tx, 0, MAX_TRANSMIT_SIZE);

    return err;
}

/* This function is called whenever the RX Characteristic has been written to by a Client */
static ssize_t on_receive(struct bt_conn *conn,
			  const struct bt_gatt_attr *attr,
			  const void *buf,
			  uint16_t len,
			  uint16_t offset,
			  uint8_t flags)
{
    const uint8_t * buffer = buf;
    
	printk(&amp;quot;Received data, handle %d, conn %p, data: 0x&amp;quot;, attr-&amp;gt;handle, conn);
    for(uint8_t i = 0; i &amp;lt; len; i++){
        printk(&amp;quot;%02X&amp;quot;, buffer[i]);
    }
    printk(&amp;quot;\n&amp;quot;);

	return len;
}

/* This function is called whenever a Notification has been sent by the TX Characteristic */
static void on_sent(struct bt_conn *conn, void *user_data)
{
	ARG_UNUSED(user_data);

    const bt_addr_le_t * addr = bt_conn_get_dst(conn);
        
	printk(&amp;quot;Data sent to Address 0x %02X %02X %02X %02X %02X %02X \n&amp;quot;, addr-&amp;gt;a.val[0]
                                                                    , addr-&amp;gt;a.val[1]
                                                                    , addr-&amp;gt;a.val[2]
                                                                    , addr-&amp;gt;a.val[3]
                                                                    , addr-&amp;gt;a.val[4]
                                                                    , addr-&amp;gt;a.val[5]);
}

/* This function is called whenever the CCCD register has been changed by the client*/
void on_cccd_changed(const struct bt_gatt_attr *attr, uint16_t value)
{
    ARG_UNUSED(attr);
    switch(value)
    {
        case BT_GATT_CCC_NOTIFY: 
            // Start sending stuff!
            break;

        case BT_GATT_CCC_INDICATE: 
            // Start sending stuff via indications
            break;

        case 0: 
            // Stop sending stuff
            break;
        
        default: 
            printk(&amp;quot;Error, CCCD has been set to an invalid value&amp;quot;);     
    }
}
                        

/* LED Button Service Declaration and Registration */
BT_GATT_SERVICE_DEFINE(my_service,
BT_GATT_PRIMARY_SERVICE(BT_UUID_MY_SERVICE),
BT_GATT_CHARACTERISTIC(BT_UUID_MY_SERVICE_RX,
			       BT_GATT_CHRC_WRITE | BT_GATT_CHRC_WRITE_WITHOUT_RESP,
			       BT_GATT_PERM_READ | BT_GATT_PERM_WRITE, 
                   NULL, on_receive, NULL),
BT_GATT_CHARACTERISTIC(BT_UUID_MY_SERVICE_TX,
			       BT_GATT_CHRC_NOTIFY,
			       BT_GATT_PERM_READ,
                   NULL, NULL, NULL),
BT_GATT_CCC(on_cccd_changed,
        BT_GATT_PERM_READ | BT_GATT_PERM_WRITE),
);

/* This function sends a notification to a Client with the provided data,
given that the Client Characteristic Control Descripter has been set to Notify (0x1).
It also calls the on_sent() callback if successful*/
void my_service_send(struct bt_conn *conn, const uint8_t *data, uint16_t len)
{
    /* 
    The attribute for the TX characteristic is used with bt_gatt_is_subscribed 
    to check whether notification has been enabled by the peer or not.
    Attribute table: 0 = Service, 1 = Primary service, 2 = RX, 3 = TX, 4 = CCC.
    */
    const struct bt_gatt_attr *attr = &amp;amp;my_service.attrs[3]; 

    struct bt_gatt_notify_params params = 
    {
        .uuid   = BT_UUID_MY_SERVICE_TX,
        .attr   = attr,
        .data   = data,
        .len    = len,
        .func   = on_sent
    };

    // Check whether notifications are enabled or not
    if(bt_gatt_is_subscribed(conn, attr, BT_GATT_CCC_NOTIFY)) 
    {
        // Send the notification
	    if(bt_gatt_notify_cb(conn, &amp;amp;params))
        {
            printk(&amp;quot;Error, unable to send notification\n&amp;quot;);
        }
    }
    else
    {
        printk(&amp;quot;Warning, notification not enabled on the selected attribute\n&amp;quot;);
    }
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/375891?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 23:11:35 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:47510789-79b8-4c8f-a7a0-e5b361427f4e</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;///main file
/*
 * Copyright (c) 2012-2014 Wind River Systems, Inc.
 *
 * SPDX-License-Identifier: Apache-2.0
 */

#include &amp;lt;zephyr.h&amp;gt;
#include &amp;lt;logging/log.h&amp;gt;
#include &amp;lt;dk_buttons_and_leds.h&amp;gt;
#include &amp;quot;remote.h&amp;quot;


#define DEVICE_NAME             CONFIG_BT_DEVICE_NAME
#define DEVICE_NAME_LEN         (sizeof(DEVICE_NAME) - 1)

static K_SEM_DEFINE(ble_init_ok, 0, 1);

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

static const struct bt_data sd[] = 
{
	BT_DATA_BYTES(BT_DATA_UUID128_ALL, MY_SERVICE_UUID),
};

struct bt_conn *my_connection;

static void connected(struct bt_conn *conn, uint8_t err)
{
	struct bt_conn_info info; 
	char addr[BT_ADDR_LE_STR_LEN];

	my_connection = conn;

	if (err) 
	{
		printk(&amp;quot;Connection failed (err %u)\n&amp;quot;, err);
		return;
	}
	else if(bt_conn_get_info(conn, &amp;amp;info))
	{
		printk(&amp;quot;Could not parse connection info\n&amp;quot;);
	}
	else
	{
		bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
		
		printk(&amp;quot;Connection established!		\n\
		Connected to: %s					\n\
		Role: %u							\n\
		Connection interval: %u				\n\
		Slave latency: %u					\n\
		Connection supervisory timeout: %u	\n&amp;quot;
		, addr, info.role, info.le.interval, info.le.latency, info.le.timeout);
	}
}

static void disconnected(struct bt_conn *conn, uint8_t reason)
{
	printk(&amp;quot;Disconnected (reason %u)\n&amp;quot;, reason);
}

static bool le_param_req(struct bt_conn *conn, struct bt_le_conn_param *param)
{
	//If acceptable params, return true, otherwise return false.
	return true; 
}

static void le_param_updated(struct bt_conn *conn, uint16_t interval, uint16_t latency, uint16_t timeout)
{
	struct bt_conn_info info; 
	char addr[BT_ADDR_LE_STR_LEN];
	
	if(bt_conn_get_info(conn, &amp;amp;info))
	{
		printk(&amp;quot;Could not parse connection info\n&amp;quot;);
	}
	else
	{
		bt_addr_le_to_str(bt_conn_get_dst(conn), addr, sizeof(addr));
		
		printk(&amp;quot;Connection parameters updated!	\n\
		Connected to: %s						\n\
		New Connection Interval: %u				\n\
		New Slave Latency: %u					\n\
		New Connection Supervisory Timeout: %u	\n&amp;quot;
		, addr, info.le.interval, info.le.latency, info.le.timeout);
	}
}

static struct bt_conn_cb conn_callbacks = 
{
	.connected				= connected,
	.disconnected   		= disconnected,
	.le_param_req			= le_param_req,
	.le_param_updated		= le_param_updated
};

static void bt_ready(int err)
{
	if (err) 
	{
		printk(&amp;quot;BLE init failed with error code %d\n&amp;quot;, err);
		return;
	}

	//Configure connection callbacks
	bt_conn_cb_register(&amp;amp;conn_callbacks);

	//Initalize services
	err = my_service_init();

	if (err) 
	{
		printk(&amp;quot;Failed to init LBS (err:%d)\n&amp;quot;, err);
		return;
	}

	//Start advertising
	err = bt_le_adv_start(BT_LE_ADV_CONN, ad, ARRAY_SIZE(ad),
			      sd, ARRAY_SIZE(sd));
	if (err) 
	{
		printk(&amp;quot;Advertising failed to start (err %d)\n&amp;quot;, err);
		return;
	}

	printk(&amp;quot;Advertising successfully started\n&amp;quot;);

	k_sem_give(&amp;amp;ble_init_ok);
}


static void error(void)
{
	while (true) {
		printk(&amp;quot;Error!\n&amp;quot;);
		/* Spin for ever */
		k_sleep(K_MSEC(1000)); //1000ms
	}
}

void main(void)
{
	
	int err = 0;
	uint32_t number = 0;

	printk(&amp;quot;Starting Nordic BLE peripheral tutorial\n&amp;quot;);

	
	err = bt_enable(bt_ready);

	if (err) 
	{
		printk(&amp;quot;BLE initialization failed\n&amp;quot;);
		error(); //Catch error
	}
	
	/* 	Bluetooth stack should be ready in less than 100 msec. 								\
																							\
		We use this semaphore to wait for bt_enable to call bt_ready before we proceed 		\
		to the main loop. By using the semaphore to block execution we allow the RTOS to 	\
		execute other tasks while we wait. */	
	err = k_sem_take(&amp;amp;ble_init_ok, K_MSEC(500));

	if (!err) 
	{
		printk(&amp;quot;Bluetooth initialized\n&amp;quot;);
	} else 
	{
		printk(&amp;quot;BLE initialization did not complete in time\n&amp;quot;);
		error(); //Catch error
	}

	err = my_service_init();

	for (;;) 
	{
		// Main loop
		my_service_send(my_connection, (uint8_t *)&amp;amp;number, sizeof(number));
		number++;
		k_sleep(K_MSEC(1000)); // 1000ms
	}
}&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/375890?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 23:11:04 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9b3825e5-3ae8-4fcc-a5f0-8da2c9f95de7</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;&lt;pre class="ui-code" data-mode="text"&gt;////this is .h

#include &amp;lt;zephyr.h&amp;gt;
#include &amp;lt;logging/log.h&amp;gt;

#include &amp;lt;bluetooth/bluetooth.h&amp;gt;
#include &amp;lt;bluetooth/uuid.h&amp;gt;
#include &amp;lt;bluetooth/gatt.h&amp;gt;
#include &amp;lt;bluetooth/hci.h&amp;gt;

#define MY_SERVICE_UUID 0xd4, 0x86, 0x48, 0x24, 0x54, 0xB3, 0x43, 0xA1, \
			            0xBC, 0x20, 0x97, 0x8F, 0xC3, 0x76, 0xC2, 0x75

#define RX_CHARACTERISTIC_UUID  0xA6, 0xE8, 0xC4, 0x60, 0x7E, 0xAA, 0x41, 0x6B, \
			                    0x95, 0xD4, 0x9D, 0xCC, 0x08, 0x4F, 0xCF, 0x6A

#define TX_CHARACTERISTIC_UUID  0xED, 0xAA, 0x20, 0x11, 0x92, 0xE7, 0x43, 0x5A, \
			                    0xAA, 0xE9, 0x94, 0x43, 0x35, 0x6A, 0xD4, 0xD3

/** @brief Callback type for when new data is received. */
typedef void (*data_rx_cb_t)(uint8_t *data, uint8_t length);

/** @brief Callback struct used by the my_service Service. */
struct my_service_cb 
{
	/** Data received callback. */
	data_rx_cb_t    data_rx_cb;
};

int my_service_init(void);

void my_service_send(struct bt_conn *conn, const uint8_t *data, uint16_t len);



&lt;/pre&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/375889?ContentTypeID=1</link><pubDate>Wed, 06 Jul 2022 23:09:16 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:c8e4e9fe-0e76-4975-b7cf-b2d8859201d5</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;after much experimenting I seem to be getting this error from the second example.&amp;nbsp;&lt;img style="max-height:240px;max-width:320px;" alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/pastedimage1657148949938v1.png" /&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/374409?ContentTypeID=1</link><pubDate>Fri, 24 Jun 2022 07:00:56 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9f1f8f0b-3051-4684-8215-848ad3db451b</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;Yes, you may keep this ticket open if you would like so for follow up questions which are related to the topic in this ticket. If you have new questions, I will of course try to reply and answer to them, but I would recommend to create new tickets for unique questions and cases.&lt;/p&gt;
&lt;p&gt;And also yes, I would say this type of ticket is something that is perfect as a public ticket as there are very likely more out there with the same questions and in the same situation, so go ahead and convert it if you&amp;#39;re comfortable with that!&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/374408?ContentTypeID=1</link><pubDate>Thu, 23 Jun 2022 14:38:15 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:cac3c1ba-92d9-46bc-a4bf-35bb3aa59b59</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;after quick skim this is very nice i will study all.&amp;nbsp; thank you for your help.&amp;nbsp; &amp;nbsp;Can I keep this case open for a few days if I have anymore questions? Also i am not sure why this is private but I am happy for this to be public if it helps other people.&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/374407?ContentTypeID=1</link><pubDate>Thu, 23 Jun 2022 14:30:30 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:50ad58ba-c26b-4862-948f-51677a829b30</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;No worries at all, I will do my best to help you progress with the issues you&amp;#39;re struggling with and explain how to create custom services&lt;/p&gt;
[quote user="loganmeyer3"]I have already gone through that course[/quote]
&lt;p&gt;Great to hear!&lt;/p&gt;
[quote user="loganmeyer3"] I have focused on central and peripheral example and have focused on uart central and peripheral example.[/quote]
&lt;p&gt;I was thinking you had focused the zephyr/samples/bluetooth/central and peripheral and not ...nrf/samples/bluetooth/central_uart and peripheral_uart samples (there is a slight difference there), but if you&amp;#39;ve already examined them, then lets move on a bit.&lt;/p&gt;
&lt;p&gt;1)&amp;nbsp;&lt;a href="https://github.com/edvinand/custom_ncs_ble_service_sample"&gt;This course&lt;/a&gt;,&amp;nbsp;should teach you everything you need to know about how to create your own services in NCS. Please not that this is&amp;nbsp;&lt;strong&gt;not&amp;nbsp;&lt;/strong&gt;a tutorial or guide which and it is not maintained as it is not public, but rather a course developed to demonstrate how to create your own remote controller for students. The hands on is quite tedious w.r.t step by step, but I found it very handy when learning about custom services my self. You can also skip the parts which contains pwm motor control without any issues as long as you make the corresponding changes in the cmakelists and in main. The course also contains partial solutions in zips which you can download and compare/use in case you are stuck on the hands on.&lt;/p&gt;
&lt;p&gt;2)&amp;nbsp;&lt;a href="https://devzone.nordicsemi.com/guides/nrf-connect-sdk-guides/b/getting-started/posts/ncs-ble-tutorial-part-1-custom-service-in-peripheral-role"&gt;This guide&lt;/a&gt;, which is slightly old (ncs v1.2) but it should translate pretty good into NCS today, sheds some light on how to create your own custom services.&lt;br /&gt;&lt;br /&gt;I will try to dig up some more material, but in the meanwhile (if you have time) you could examine those resources1)&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;andreas&amp;nbsp;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/374406?ContentTypeID=1</link><pubDate>Thu, 23 Jun 2022 13:45:10 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:9e392cb7-14f7-4b9d-86fa-f67e17da8e88</guid><dc:creator>loganmeyer3</dc:creator><description>&lt;p&gt;Thanks Andreas,&amp;nbsp; I have already gone through that course and have looked at the majority of the examples provided by nrf connect.&amp;nbsp; I have focused on central and peripheral example and have focused on uart central and peripheral example.&amp;nbsp; I know I am a slow learner but I have been studying this for 8 hrs a day for the past almost 3 weeks.&amp;nbsp; &amp;nbsp;I understand the NUS service but I fail to understand how to make a custom service from custom uuid and send individual bytes of data in array format.&amp;nbsp; I apologize for my ignorance,&amp;nbsp; I am just greatly struggling.&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: examples of simple peripheral/central ble transmission nrf52 series</title><link>https://devzone.nordicsemi.com/thread/374405?ContentTypeID=1</link><pubDate>Thu, 23 Jun 2022 13:26:05 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:363623ca-1d96-45ab-b9aa-400a5dc460a9</guid><dc:creator>AHaug</dc:creator><description>&lt;p&gt;Hi,&lt;br /&gt;&lt;br /&gt;I would recommend you take a look at the nrf samples in nRF Connect for Desktop, more specifically&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/central_uart/README.html"&gt;central_uart&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/samples/bluetooth/peripheral_uart/README.html"&gt;peripheral_uart&lt;/a&gt;&amp;nbsp;that uses&amp;nbsp;&lt;a href="https://developer.nordicsemi.com/nRF_Connect_SDK/doc/latest/nrf/libraries/bluetooth_services/services/nus_client.html#nus-client-readme"&gt;Nordic UART Service (NUS) Client&lt;/a&gt;. They&lt;span&gt;&amp;nbsp;uses the NUS service to send data back and forth between a UART connection and a Bluetooth&lt;span class="emoticon" data-url="https://devzone.nordicsemi.com/cfs-file/__key/system/emoji/00ae.svg" title="Registered"&gt;&amp;#x00ae;&lt;/span&gt; LE connection. The samples available in our SDK are a great starting point for examining various concepts. &lt;/span&gt;&lt;/p&gt;
&lt;p&gt;Also, in case you have not gotten started with the nRF Connect SDK,&amp;nbsp;&lt;a href="https://academy.nordicsemi.com/courses/nrf-connect-sdk-fundamentals/"&gt;this course&lt;/a&gt;&amp;nbsp;is another great starting point.&lt;/p&gt;
&lt;p&gt;Kind regards,&lt;br /&gt;Andreas&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>