<?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>CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/f/nordic-q-a/71803/can-i-customize-my-adv-packet-absolutely</link><description>I think this is a very weird requirement 
 Normally , I use manufacturer data to do this like picture below 
 
 
 it&amp;#39;s easy and quick 
 but it contains len and type occupying 2 bytes 
 I&amp;#39;m wondering if there is a way to make my packet have no len and</description><dc:language>en-US</dc:language><generator>Telligent Community 13</generator><lastBuildDate>Fri, 12 Mar 2021 15:21:27 GMT</lastBuildDate><atom:link rel="self" type="application/rss+xml" href="https://devzone.nordicsemi.com/f/nordic-q-a/71803/can-i-customize-my-adv-packet-absolutely" /><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/299523?ContentTypeID=1</link><pubDate>Fri, 12 Mar 2021 15:21:27 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:f60ee40b-1ba4-4e89-bc81-7a34ac837a83</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello,&lt;br /&gt;&lt;br /&gt;Thank you for your patience!&lt;/p&gt;
[quote user="Aku"]I tried but failed,[/quote]
&lt;p&gt;I am sorry to hear that! Lets see if we cant resolve this issue together.&lt;/p&gt;
[quote user="Aku"]&lt;p&gt;it can still request a timeslot to blink the led,&lt;/p&gt;
&lt;p&gt;but it seems that RADIO is not working&lt;/p&gt;[/quote]
&lt;p&gt;Then we know that the device is not resetting, or otherwise failing, at least.&lt;br /&gt;How have you verified that the radio is not working?&amp;nbsp;&lt;/p&gt;
[quote user="Aku"]and i am so confused about some of the settings(registers),even i read the product specification[/quote]
&lt;p&gt;Do you mean that you read &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fradio.html&amp;amp;anchor=concept_lhd_ygj_4r"&gt;the nRF52832 RADIO peripheral&amp;#39;s documentation&lt;/a&gt;, but you are still confused about some of the configurations? Is there any register / configuration in particular you would like me to explain?&lt;br /&gt;&lt;br /&gt;You could use the &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.0.2%2Fgroup__nrf__radio__hal.html&amp;amp;anchor=ga984c7d78ecd4a4bcbc6765acb89e8f3b"&gt;nrf_radio_event_check&lt;/a&gt;&amp;nbsp;function to see whether a certain event has occurred, or &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fsdk_nrf5_v17.0.2%2Fgroup__nrf__radio__hal.html&amp;amp;anchor=ga2cddefaa6860f819d842556d3a52a684"&gt;nrf_radio_state_get&lt;/a&gt;&amp;nbsp;to check whether the configuration was a success, or in general &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fradio.html&amp;amp;anchor=concept_rnf_nml_4r"&gt;which state the radio is in at that time&lt;/a&gt;. &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fradio.html&amp;amp;anchor=concept_db5_cnl_4r"&gt;The transmit sequence diagram indicates how the state-transitions&lt;/a&gt; should be during a transfer.&lt;br /&gt;Could you these conditional checks, so that you are sure not to proceed to start the next RADIO TASK, before the radio is ready?&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;em&gt;&lt;/em&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/298245?ContentTypeID=1</link><pubDate>Mon, 08 Mar 2021 06:26:43 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:922643cd-1383-4132-9bc7-6cad98f746e7</guid><dc:creator>Aku</dc:creator><description>&lt;p&gt;hi,&lt;/p&gt;
&lt;p&gt;I tried but failed,&lt;/p&gt;
&lt;p&gt;i combine the RADIO part into my original timeslot.c&lt;/p&gt;
&lt;p&gt;here is my new timeslot.c&lt;pre class="ui-code" data-mode="csharp"&gt;#include &amp;lt;stdint.h&amp;gt;
#include &amp;lt;stdbool.h&amp;gt;
#include &amp;quot;nrf.h&amp;quot;
#include &amp;quot;app_error.h&amp;quot;
#include &amp;quot;nrf_gpio.h&amp;quot;
#include &amp;quot;boards.h&amp;quot;
#include &amp;quot;nrf_delay.h&amp;quot;
#define PACKET_LENGTH 4
static uint8_t packet[PACKET_LENGTH] = {1};
/**Constants for timeslot API
*/
static nrf_radio_request_t  m_timeslot_request;
static uint32_t             m_slot_length;

static nrf_radio_signal_callback_return_param_t signal_callback_return_param;


void radio_configure()
{
    // Radio config
    NRF_RADIO-&amp;gt;TXPOWER   = (RADIO_TXPOWER_TXPOWER_0dBm &amp;lt;&amp;lt; RADIO_TXPOWER_TXPOWER_Pos);
    NRF_RADIO-&amp;gt;FREQUENCY = 80UL;                // Frequency bin 7, 2407MHz
    NRF_RADIO-&amp;gt;MODE      = (RADIO_MODE_MODE_Nrf_2Mbit &amp;lt;&amp;lt; RADIO_MODE_MODE_Pos);
    // Radio address config
    NRF_RADIO-&amp;gt;PREFIX0     = 0x4c494c49;  // Prefix byte of addresses 3 to 0
    NRF_RADIO-&amp;gt;PREFIX1     = 0x4c494c49;  // Prefix byte of addresses 7 to 4
    NRF_RADIO-&amp;gt;BASE0       = 0x44444444;  // Base address for prefix 0
    NRF_RADIO-&amp;gt;BASE1       = 0x44444444;  // Base address for prefix 1-7
    NRF_RADIO-&amp;gt;TXADDRESS   = 0x00UL;        // Set device address 0 to use when transmitting
    NRF_RADIO-&amp;gt;RXADDRESSES = 0x01UL;        // Enable device address 0 to use which receiving
    // Packet configuration
    NRF_RADIO-&amp;gt;PCNF0 = (1 &amp;lt;&amp;lt; RADIO_PCNF0_S1LEN_Pos) |
                       (2 &amp;lt;&amp;lt; RADIO_PCNF0_S0LEN_Pos) |
                       (6 &amp;lt;&amp;lt; RADIO_PCNF0_LFLEN_Pos); //lint !e845 &amp;quot;The right argument to operator &amp;#39;|&amp;#39; is certain to be 0&amp;quot;
    // Packet configuration
    NRF_RADIO-&amp;gt;PCNF1 = (RADIO_PCNF1_WHITEEN_Disabled &amp;lt;&amp;lt; RADIO_PCNF1_WHITEEN_Pos) |
                       (RADIO_PCNF1_ENDIAN_Big &amp;lt;&amp;lt; RADIO_PCNF1_ENDIAN_Pos)        |
                       (2 &amp;lt;&amp;lt; RADIO_PCNF1_BALEN_Pos)                              |
                       ((PACKET_LENGTH) &amp;lt;&amp;lt; RADIO_PCNF1_STATLEN_Pos)              |
                       ((PACKET_LENGTH) &amp;lt;&amp;lt; RADIO_PCNF1_MAXLEN_Pos); //lint !e845 &amp;quot;The right argument to operator &amp;#39;|&amp;#39; is certain to be 0&amp;quot;
    // CRC Config
    NRF_RADIO-&amp;gt;CRCCNF = (RADIO_CRCCNF_LEN_Two &amp;lt;&amp;lt; RADIO_CRCCNF_LEN_Pos); // Number of checksum bits
    if ((NRF_RADIO-&amp;gt;CRCCNF &amp;amp; RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_Two &amp;lt;&amp;lt; RADIO_CRCCNF_LEN_Pos))
    {
        NRF_RADIO-&amp;gt;CRCINIT = 0xFFFFUL;   // Initial value      
        NRF_RADIO-&amp;gt;CRCPOLY = 0x11021UL;  // CRC poly: x^16+x^12^x^5+1
    }
    else if ((NRF_RADIO-&amp;gt;CRCCNF &amp;amp; RADIO_CRCCNF_LEN_Msk) == (RADIO_CRCCNF_LEN_One &amp;lt;&amp;lt; RADIO_CRCCNF_LEN_Pos))
    {
        NRF_RADIO-&amp;gt;CRCINIT = 0xFFUL;   // Initial value
        NRF_RADIO-&amp;gt;CRCPOLY = 0x107UL;  // CRC poly: x^8+x^2^x^1+1
    }
    nrf_delay_ms(3);
}



/**@brief Request next timeslot event in earliest configuration
 */
uint32_t request_next_event_earliest(void)
{
    m_slot_length                                  = 25000;
    m_timeslot_request.request_type                = NRF_RADIO_REQ_TYPE_EARLIEST;
    m_timeslot_request.params.earliest.hfclk       = NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED;
    m_timeslot_request.params.earliest.priority    = NRF_RADIO_PRIORITY_NORMAL;
    m_timeslot_request.params.earliest.length_us   = m_slot_length;
    m_timeslot_request.params.earliest.timeout_us  = 1000000;
    return sd_radio_request(&amp;amp;m_timeslot_request);
}


/**@brief Configure next timeslot event in earliest configuration
 */
void configure_next_event_earliest(void)
{
    m_slot_length                                  = 25000;
    m_timeslot_request.request_type                = NRF_RADIO_REQ_TYPE_EARLIEST;
    m_timeslot_request.params.earliest.hfclk       = NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED;
    m_timeslot_request.params.earliest.priority    = NRF_RADIO_PRIORITY_NORMAL;
    m_timeslot_request.params.earliest.length_us   = m_slot_length;
    m_timeslot_request.params.earliest.timeout_us  = 1000000;
}


/**@brief Configure next timeslot event in normal configuration
 */
void configure_next_event_normal(void)
{
    m_slot_length                                 = 25000;
    m_timeslot_request.request_type               = NRF_RADIO_REQ_TYPE_NORMAL;
    m_timeslot_request.params.normal.hfclk        = NRF_RADIO_HFCLK_CFG_XTAL_GUARANTEED;
    m_timeslot_request.params.normal.priority     = NRF_RADIO_PRIORITY_HIGH;
    m_timeslot_request.params.normal.distance_us  = 300000;
    m_timeslot_request.params.normal.length_us    = m_slot_length;
}


/**@brief Timeslot signal handler
 */
void nrf_evt_signal_handler(uint32_t evt_id)
{
    uint32_t err_code;
    
    switch (evt_id)
    {
        case NRF_EVT_RADIO_SIGNAL_CALLBACK_INVALID_RETURN:
            //No implementation needed
            break;
        case NRF_EVT_RADIO_SESSION_IDLE:
            //No implementation needed
            break;
        case NRF_EVT_RADIO_SESSION_CLOSED:
            //No implementation needed, session ended
            break;
        case NRF_EVT_RADIO_BLOCKED:
            //Fall through
        case NRF_EVT_RADIO_CANCELED:
            err_code = request_next_event_earliest();
            APP_ERROR_CHECK(err_code);
            break;
        default:
            break;
    }
}


/**@brief Timeslot event handler
 */
nrf_radio_signal_callback_return_param_t * radio_callback(uint8_t signal_type)
{
    switch(signal_type)
    {
        case NRF_RADIO_CALLBACK_SIGNAL_TYPE_START:
            //Start of the timeslot - set up timer interrupt
            signal_callback_return_param.params.request.p_next = NULL;
            signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE;

#if 1            
            NRF_TIMER0-&amp;gt;TASKS_STOP          = 1;
            NRF_TIMER0-&amp;gt;TASKS_CLEAR         = 1;
            NRF_TIMER0-&amp;gt;MODE                = (TIMER_MODE_MODE_Timer &amp;lt;&amp;lt; TIMER_MODE_MODE_Pos);
            NRF_TIMER0-&amp;gt;EVENTS_COMPARE[0]   = 0;
            NRF_TIMER0-&amp;gt;INTENSET            = TIMER_INTENSET_COMPARE0_Msk ;
            NRF_TIMER0-&amp;gt;CC[0]               = m_slot_length - 1000;
            NRF_TIMER0-&amp;gt;BITMODE             = (TIMER_BITMODE_BITMODE_24Bit &amp;lt;&amp;lt; TIMER_BITMODE_BITMODE_Pos);
            NRF_TIMER0-&amp;gt;TASKS_START         = 1;
            //非常重要，    reset all status in the radio peripheral
            radio_configure();
            NRF_RADIO-&amp;gt;POWER                = (RADIO_POWER_POWER_Enabled &amp;lt;&amp;lt; RADIO_POWER_POWER_Pos);
#else
            NRF_TIMER0-&amp;gt;INTENSET = TIMER_INTENSET_COMPARE0_Msk;
            NRF_TIMER0-&amp;gt;CC[0] = m_slot_length - 1000;
#endif
            NVIC_EnableIRQ(TIMER0_IRQn);
            NRF_RADIO-&amp;gt;EVENTS_DISABLED = 0;
            NRF_RADIO-&amp;gt;TASKS_DISABLE = 1;
            while( NRF_RADIO-&amp;gt;EVENTS_DISABLED == 0 );
            NRF_RADIO-&amp;gt;PACKETPTR = (uint32_t)&amp;amp;packet;
                    NRF_RADIO-&amp;gt;EVENTS_READY = 0U;  				
                    NRF_RADIO-&amp;gt;TASKS_TXEN   = 1;
                    while (NRF_RADIO-&amp;gt;EVENTS_READY == 0U)
                   {
                   }
                   NRF_RADIO-&amp;gt;TASKS_START = 1U;
                   NRF_RADIO-&amp;gt;EVENTS_END  = 0U;  
                   while (NRF_RADIO-&amp;gt;EVENTS_END == 0U)
                   {
                   }
                   NRF_RADIO-&amp;gt;EVENTS_DISABLED = 0U;
                   // Disable radio
                   NRF_RADIO-&amp;gt;TASKS_DISABLE = 1U;
                   while (NRF_RADIO-&amp;gt;EVENTS_DISABLED == 0U)
                   {
                   }		 
                   NRF_RADIO-&amp;gt;POWER = 0;
            
            nrf_gpio_pin_toggle(20); //Toggle LED4
            break;

        case NRF_RADIO_CALLBACK_SIGNAL_TYPE_RADIO:
            signal_callback_return_param.params.request.p_next = NULL;
            signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_NONE;
            break;

        case NRF_RADIO_CALLBACK_SIGNAL_TYPE_TIMER0:
            //Timer interrupt - do graceful shutdown - schedule next timeslot
            configure_next_event_normal();
            signal_callback_return_param.params.request.p_next = &amp;amp;m_timeslot_request;
            signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END;
            break;
        case NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_SUCCEEDED:
            //No implementation needed
            break;
        case NRF_RADIO_CALLBACK_SIGNAL_TYPE_EXTEND_FAILED:
            //Try scheduling a new timeslot
            configure_next_event_earliest();
            signal_callback_return_param.params.request.p_next = &amp;amp;m_timeslot_request;
            signal_callback_return_param.callback_action = NRF_RADIO_SIGNAL_CALLBACK_ACTION_REQUEST_AND_END;
            break;
        default:
            //No implementation needed
            break;
    }
    return (&amp;amp;signal_callback_return_param);
}


/**@brief Function for initializing the timeslot API.
 */
uint32_t timeslot_sd_init(void)
{
    uint32_t err_code;
    
    err_code = sd_radio_session_open(radio_callback);
    if (err_code != NRF_SUCCESS)
    {
        return err_code;
    }
    
    err_code = request_next_event_earliest();
    if (err_code != NRF_SUCCESS)
    {
        (void)sd_radio_session_close();
        return err_code;
    }
    return NRF_SUCCESS;
}



&lt;/pre&gt;&lt;/p&gt;
&lt;p&gt;it can still request a timeslot to blink the led,&lt;/p&gt;
&lt;p&gt;but it seems that RADIO is not working&lt;/p&gt;
&lt;p&gt;and i am so confused about some of the settings(registers),even i read the product specification&lt;/p&gt;
&lt;p&gt;&amp;nbsp;Any suggestions will be appreciated&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/295773?ContentTypeID=1</link><pubDate>Tue, 23 Feb 2021 09:57:14 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:5f4dfd89-8309-46aa-8670-96b8a4636a50</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello Aku,&lt;/p&gt;
[quote user="Aku"]&lt;p&gt;&lt;span&gt;the reason is&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;My boss bought a&amp;nbsp;&lt;span&gt;Bluetooth Gateway system that only accept it&amp;#39;s own protocal&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And I have to make a device to send data through by&amp;nbsp;broadcast&lt;/span&gt;&lt;/p&gt;[/quote]
&lt;p&gt;Thank you for clarifying, this makes it much easier to understand you intentions and sought-after functionality.&lt;/p&gt;
[quote user="Aku"]Actually,I have tried&amp;nbsp;Srdata and&amp;nbsp;Extend ADV already but the gateway didn&amp;#39;t accept[/quote]
&lt;p&gt;I am happy to hear that you have already looked into these options!&lt;br /&gt;If it requires a non-BLE protocol then this is likely documented in the gateway&amp;#39;s datasheet if they intend for others to create customer devices that can interact with it.&lt;/p&gt;
[quote user="Aku"]&lt;p&gt;&lt;span&gt;so i think&amp;nbsp;proprietary protocol it&amp;#39;s the only way&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;or if there is an easier way to do that?&lt;/span&gt;&lt;/p&gt;[/quote]
&lt;p&gt;Yes, if it is the case that the gateway only accepts packets that does not start with a type and length byte, this is proprietary(no longer BLE protocol), and thus you would have to use this protocol to communicate with the device. Since the SoftDevice is strictly BLE, it wont transmit / process packets that violate the BLE specification, and therefore you will have to implement this proprietary protocol yourself.&lt;br /&gt;&lt;br /&gt;In order to do this, you will need to setup a timeslot (like you have done already), and then &lt;a href="https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.nrf52832.ps.v1.1%2Fradio.html&amp;amp;anchor=concept_lhd_ygj_4r"&gt;use the radio peripheral directly during this time&lt;/a&gt; - like you would do with any other peripheral. While we do not provide any tutorials on how to do this, you could take a look at &lt;a href="https://github.com/NordicSemiconductor/Nordic-Thingy52-FW/blob/master/source/util/advertiser_beacon_timeslot.c"&gt;the Thingy52&amp;#39;s source code for its eddystone advertising&lt;/a&gt;.&lt;br /&gt;Particularly, if you look at the functions&amp;nbsp;&lt;em&gt;m_get_adv_packet&lt;/em&gt; and&amp;nbsp;&lt;em&gt;m_configure_radio,&amp;nbsp;&lt;/em&gt;in the former the non-BLE packet is setup, and in the latter the radio is configured to broadcast it. You could use this code as a starting point - substituting out the payload with that of your own.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/295719?ContentTypeID=1</link><pubDate>Tue, 23 Feb 2021 01:26:38 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:6d14ec0c-4987-43db-8247-a8ae68a6e1fd</guid><dc:creator>Aku</dc:creator><description>&lt;p&gt;HI Karl&lt;/p&gt;
&lt;p&gt;&lt;span&gt;the reason is&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;My boss bought a&amp;nbsp;&lt;span&gt;Bluetooth Gateway system that only accept it&amp;#39;s own protocal&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;And I have to make a device to send data through by&amp;nbsp;broadcast&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&amp;nbsp;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Actually,I have tried&amp;nbsp;Srdata and&amp;nbsp;Extend ADV already but the gateway didn&amp;#39;t accept&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;because of the len and type&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;it only accepts packets that start with 0x24C3 like i circle in the picture below&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;&lt;img alt=" " src="https://devzone.nordicsemi.com/resized-image/__size/640x480/__key/communityserver-discussions-components-files/4/116292.jpg" /&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;so i think&amp;nbsp;proprietary protocol it&amp;#39;s the only way&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;or if there is an easier way to do that?&lt;/span&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: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/295663?ContentTypeID=1</link><pubDate>Mon, 22 Feb 2021 15:31:21 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:50032af7-9a2f-4021-9617-50f762c054c6</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello Aku,&lt;/p&gt;
[quote user="Aku"]&lt;p&gt;thanks for reply&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve tried timeslot according to this &lt;a href="https://devzone.nordicsemi.com/nordic/short-range-guides/b/software-development-kit/posts/setting-up-the-timeslot-api"&gt;tutorial&lt;/a&gt;&amp;nbsp;with nrf52832DK ,SDK_15.3&lt;/p&gt;
&lt;p&gt;and i successfully made the led blink by the timeslot&lt;/p&gt;[/quote]
&lt;p&gt;No problem at all, I am happy to help! Great to hear that you found the tutorial useful, and that you have succeeded in setting up a timeslot.&lt;/p&gt;
[quote user="Aku"]Is there any example or document or keyword to search?[/quote]
&lt;p&gt;Just to make sure, could you describe&amp;nbsp;to me why you would want to or need to make use of a proprietary protocol? I assume it is because you are unable to fit all your data into an advertising packet&amp;#39;s 31 Byte limit, is this correct?&lt;br /&gt;As mentioned, it is a lot more work to implement a proprietary radio protocol, so if you tell me more about your application and its requirements, perhaps we are able to find a easier method to achieve the same functionality.&lt;br /&gt;The most central question is; How many bytes do you need to advertise each advertisement?&lt;br /&gt;For example, have you exhausted the option of &lt;a href="https://devzone.nordicsemi.com/nordic/short-range-guides/b/bluetooth-low-energy/posts/ble-advertising-a-beginners-tutorial"&gt;using the scan response data&lt;/a&gt; to increase the effective number of advertising bytes? Perhaps this could save you a lot of work.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/295484?ContentTypeID=1</link><pubDate>Mon, 22 Feb 2021 06:34:24 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:a6f4088f-6f59-4144-ab92-619ad53ba301</guid><dc:creator>Aku</dc:creator><description>&lt;p&gt;Hi Karl,&lt;/p&gt;
&lt;p&gt;thanks for reply&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve tried timeslot according to this &lt;a href="https://devzone.nordicsemi.com/nordic/short-range-guides/b/software-development-kit/posts/setting-up-the-timeslot-api"&gt;tutorial&lt;/a&gt;&amp;nbsp;with nrf52832DK ,SDK_15.3&lt;/p&gt;
&lt;p&gt;and i successfully made the led blink by the timeslot&lt;/p&gt;
&lt;p&gt;So now i would want to know how to use &lt;span style="background-color:#ff99cc;"&gt;radio&amp;nbsp;&lt;/span&gt;&lt;span&gt;&lt;span style="background-color:#ff99cc;"&gt;peripheral&lt;/span&gt; to make a&amp;nbsp;&lt;span style="background-color:#ffff99;"&gt;malformed packet&lt;/span&gt; or&amp;nbsp;&lt;span style="background-color:#ccffff;"&gt;proprietary protocol&lt;/span&gt;&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;Is there any example or document or keyword to search?&lt;/span&gt;&lt;/p&gt;
&lt;p&gt;&lt;span&gt;thanks&lt;/span&gt;&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item><item><title>RE: CAN I Customize my adv packet Absolutely?</title><link>https://devzone.nordicsemi.com/thread/295394?ContentTypeID=1</link><pubDate>Fri, 19 Feb 2021 15:57:49 GMT</pubDate><guid isPermaLink="false">137ad170-7792-4731-bb38-c0d22fbe4515:51614e37-280b-4315-8730-5df3b18d87da</guid><dc:creator>Karl Ylvisaker</dc:creator><description>&lt;p&gt;Hello,&lt;/p&gt;
[quote user=""]&lt;p&gt;but it contains len and type&amp;nbsp;occupying 2 bytes&lt;/p&gt;
&lt;p&gt;&lt;span style="color:rgba(255, 0, 0, 1);font-size:150%;"&gt;I&amp;#39;m wondering if there is a way to make my packet have no len and type&lt;/span&gt;&lt;/p&gt;[/quote]
&lt;p&gt;Yes, and no. Type and Len is requires for each new datafield as per the BLE specification. Leaving out these two fields violated the specification, and as such the SoftDevice has checks to ensure this does not happen. If you would like to do this, you may use the Radio peripheral directly, to communicate using your own proprietary protocol. You may implement this prorprietary protocol by using timeslots to combine with using the SoftDevice. This way, the SoftDevice will release the control of the radio peripheral, so that you may do whatever you want in the time that the SoftDevice does not require the radio for BLE.&lt;br /&gt;If you want to look into implementing your own radio protocol there are many posts on the forum about this already, and I highly recommend scrolling through these to get a better understanding of what this would entail.&lt;/p&gt;
[quote user=""]I know that Texas&amp;#39;s chip can do this like picture below[/quote]
&lt;p&gt;Any chip with access to&amp;nbsp;a 2.4 GHz radio peripheral can do this - but this is not BLE - which is why the sniffer displays the packet as malformed.&lt;br /&gt;Non-sniffer devices will discard any malformed packets, so unless you control both sides of the link this is not a possibility.&lt;br /&gt;&lt;br /&gt;Please do not hesitate to ask if anything should be unclear.&lt;br /&gt;&lt;br /&gt;Best regards,&lt;br /&gt;Karl&lt;/p&gt;&lt;div style="clear:both;"&gt;&lt;/div&gt;</description></item></channel></rss>