Implementing Bluetooth® LE Beacons on the KW40Z Wireless Microcontroller

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Implementing Bluetooth® LE Beacons on the KW40Z Wireless Microcontroller

Implementing Bluetooth® LE Beacons on the KW40Z Wireless Microcontroller

Overview

Bluetooth Low Energy offers the ability to broadcast data in format of non-connectable advertising packets while not being in a connection. This GAP Advertisement is widely known as a beacon and is used in today’s IoT applications in different forms. This article will present the current beacon format in our demo application from the KW40Z software package and how to create the most popular beacon formats on the market.

The advertising packet format and payload are declared in the gAppAdvertisingData structure from app_config.c. This structure points to an array of AD elements, advScanStruct:

static const gapAdStructure_t advScanStruct[] = {

  {

    .length = NumberOfElements(adData0) + 1,

    .adType = gAdFlags_c,

    .aData = (void *)adData0

  }, 

  {

    .length = NumberOfElements(adData1) + 1,

    .adType = gAdManufacturerSpecificData_c,

    .aData = (void *)adData1

  }

};

Due to the fact that all beacons use the advertising flags structure and that the advertising PDU is 31 bytes in length (Bluetooth Low Energy v4.1), the maximum payload length is 28 bytes, including length and type for the AD elements.

The AD Flags element is declared as it follows:

static const uint8_t adData0[1] =  { (gapAdTypeFlags_t)(gLeGeneralDiscoverableMode_c | gBrEdrNotSupported_c) };

The demo application uses a hash function to generate a random UUID for the KW40Z default beacon. This is done in BleApp_Init:

void BleApp_Init(void)

{

    sha1Context_t ctx;

   

    /* Initialize sha buffer with values from SIM_UID */

    FLib_MemCopy32Unaligned(&ctx.buffer[0], SIM_UIDL);

    FLib_MemCopy32Unaligned(&ctx.buffer[4], SIM_UIDML);

    FLib_MemCopy32Unaligned(&ctx.buffer[8], SIM_UIDMH);

    FLib_MemCopy32Unaligned(&ctx.buffer[12], 0);

    

    SHA1_Hash(&ctx, ctx.buffer, 16);

   

    /* Updated UUID value from advertising data with the hashed value */

    FLib_MemCpy(&gAppAdvertisingData.aAdStructures[1].aData[3], ctx.hash, 16);

}

When implementing a constant beacon payload, please bear in mind to disable this code section.

KW40Z Default Beacon

The KW40Z software implements a proprietary beacon with the maximum ADV payload and uses the following Manufacturer Specific Advertising Data structure of 26 bytes.

pastedImage_18.png

This is the default implementation of the beacon demo example from the KW40Z Connectivity Software package.

static uint8_t adData1[26] = {

    /* Company Identifier*/     0xFF, 0x01

    /* Beacon Identifier */     0xBC,

    /* UUID */                  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,                              

    /* A */                     0x00, 0x00,

    /* B */                     0x00, 0x00,

    /* C */                     0x00, 0x00,

    /* RSSI at 1m */            0x1E};

iBeacon

iBeacon is a protocol designed by Apple. It uses a 20 byte payload that consists of the following identifying information [1] :

pastedImage_22.png

To advertise an iBeacon packet, the user needs to change the second AD element, adData1, like below:

static uint8_t adData1[25] = {

                               0x4C, 0x00,   

                               0x02, 0x15,

        /* UUID */             0xD9, 0xB9, 0xEC, 0x1F, 0x39, 0x25, 0x43, 0xD0, 0x80, 0xA9, 0x1E, 0x39, 0xD4, 0xCE, 0xA9, 0x5C,

        /* Major Version */    0x00, 0x01

        /* Minor Version */    0x00, 0x0A,

                               0xC5};


AltBeacon

AltBeacon is an open specification designed for proximity beacon advertisements [2]. It also uses a Manufacturer Specific Advertising Data structure:

pastedImage_20.png

To advertise an AltBeacon packet, the user needs to change the second AD element, like below:

static uint8_t adData1[26] = {

    /* MFG ID*/         0xFF, 0x01,

    /* Beacon Code */   0xBE, 0xAC,

    /* Beacon ID */     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x02, 0x03, 0x04,

    /* Ref RSSI*/       0xC5,

    /* MFG RSVD*/       0x00};

Eddystone

Eddystone™ is an open Bluetooth® Smart beacon format from Google [3]. It offers three data type packets:

  • Eddystone™-UID
  • Eddystone™-URL
  • Eddystone™-TLM

Eddystone™ uses two advertising structures:

  • Complete List of 16-bit Service UUIDs structure, which contains the Eddystone Service UUID (0xFEAA).
  • Service Data structure, which also contains the Eddystone™ Service UUID (0xFEAA).

Thus, advScanStruct will now have 3 elements:

static const gapAdStructure_t advScanStruct[] = {

  {

    .length = NumberOfElements(adData0) + 1,

    .adType = gAdFlags_c,

    .aData = (void *)adData0

  }, 

  {

    .length = NumberOfElements(adData1) + 1,

    .adType = gAdComplete16bitServiceList_c,

    .aData = (void *)adData1

  },

  {

    .length = NumberOfElements(adData2) + 1,

    .adType = gAdServiceData16bit_c,

    .aData = (void *)adData2

  }

};

The complete List of 16-bit Service UUIDs element will look like:

static const uint8_t adData1[2] =  { 0xAA, 0xFE };

Eddystone™-UID

Eddystone™-UID broadcasts a unique 16-bit Beacon ID to identify a particular device in a group. The Service Data block has the following structure:

pastedImage_22.png

To implement this, the user needs to add a third AD element, as follows:

static uint8_t adData2[22] = {

    /* ID */ 0xAA, 0xFE,

    /* Frame Type */    0x00,

    /* Ranging Data */  0xEE,

    /* Namespace */     0x8B, 0x0C, 0xA7, 0x50, 0x09, 0x54, 0x77, 0xCB, 0x3E, 0x77,

    /* Instance */      0x00, 0x00, 0x00, 0x00, 0x00, 0x01,

    /* RFU */           0x00, 0x00};

Eddystone™-URL

Eddystone™-URL broadcasts a compressed URL. The Service Data block has the following structure:

pastedImage_29.png

In this example, we will implement a beacon which will advertise NXP’s webpage, http://www.nxp.com.

To implement this, the user needs to add a third AD element, as follows:

static const uint8_t adData2[9] = {

    /* ID */ 0xAA, 0xFE,

    /* Frame Type */    0x10,

    /* TX Power */      0xEE,

    /* URL scheme */    0x00,

    /* Encode URL */    'n', 'x, 'p', 0x07};

Eddystone™-TLM

Eddystone™-TLM broadcasts telemetry data about the beacon device operation. The Service Data block has the following structure:

pastedImage_30.png

To implement this, the user needs to add a third AD element, as follows:

static uint8_t adData2[16] = {

    /* ID */ 0xAA, 0xFE,

    /* Frame Type */    0x20,

    /* TLM Version */   0x00,

    /* VBATT */        0x00, 0x00,

    /* TEMP */         0x00, 0x00,

    /* ADV_CNT */      0x00, 0x00, 0x00, 0x00,

    /* SEC_CNT */      0x00, 0x00, 0x00, 0x00};

Labels (2)
Comments

Thanks alexandruandreescu, Great tutorial.

in case of iBeacon, We need to have different major/minor for different KW40 module. In this example, we have to compile every time for different beacons/KW40  by changing the adData1 parameters.

Is there anyway to read the iBeacon parameters (uint8_t adData1[25]) from a config file?   In that case, we can use the same binary with different config files for different KW40.

Thanks.

The eddystone beacon is not being detected by Chrome (v51) or the Physical Web Android app. I commented out BleApp_Init(), and also tried using a https url in addition to the nxp example provided.

static const uint8_t adData2[19] = {  

    /* ID */ 0xAA, 0xFE, 

    /* Frame Type */    0x10, 

    /* TX Power */      0xEE, 

    /* URL scheme */    0x03, /* https:// */ 

    /* Encode URL */    'c','o','m','m','u','n','i','t','y','.','n','x','p', 0x07}; 

Can confirm that the default "beacon" example in the KW40Z_1.0.1 ConnSw is detected by the Kinetis BLE toolbox.

This was resolved on Android side.

Dear sir,

I tried to implement ibeacon feature on KW41z.

I used the beacon example in MKW41Z_ConnSw_1.0.2.

pastedImage_1.png

The default packet is NXP beacon format.

I tried to change it to ibeacon packet format like you mentioned below.

pastedImage_5.png

I used the beacon app "Locate" from App store. But I can't get my KW41 device.

Could you help me how I could implement the ibeacon feature on KW41 successfully.

pastedImage_4.pngpastedImage_2.png

Thanks.

BR,

Sean Wu

Weikeng Inc.

Dear Sir,

In the actual application can not only run a mode (ibeacon / EddyStone ...).

How to modify the software can achieve two modes (iBeacon and EddyStone) can run at the same time?

Thanks,

Daniel Tseng

@Alexandru Andreescu Thanks for the article; it was really helpful.
I am a student and was trying to convert KW41 to Alt Beacon. It was successful the only thing I would like to mention is "When implementing a constant beacon payload, please bear in mind to disable this code section." this line is really important.

%3CLINGO-SUB%20id%3D%22lingo-sub-1129134%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EImplementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129134%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CH1%20id%3D%22toc-hId-382601194%22%20id%3D%22toc-hId-382601194%22%20id%3D%22toc-hId-1296888070%22%3EOverview%3C%2FH1%3E%3CP%3E%3C%2FP%3E%3CP%3EBluetooth%20Low%20Energy%20offers%20the%20ability%20to%20broadcast%20data%20in%20format%20of%20non-connectable%20advertising%20packets%20while%20not%20being%20in%20a%20connection.%20This%20GAP%20Advertisement%20is%20widely%20known%20as%20a%20beacon%20and%20is%20used%20in%20today%E2%80%99s%20IoT%20applications%20in%20different%20forms.%20This%20article%20will%20present%20the%20current%20beacon%20format%20in%20our%20demo%20application%20from%20the%20KW40Z%20software%20package%20and%20how%20to%20create%20the%20most%20popular%20beacon%20formats%20on%20the%20market.%3C%2FP%3E%3CP%3EThe%20advertising%20packet%20format%20and%20payload%20are%20declared%20in%20the%20%3CEM%3EgAppAdvertisingData%3C%2FEM%3E%20structure%20from%20%3CEM%3Eapp_config.c%3C%2FEM%3E.%20This%20structure%20points%20to%20an%20array%20of%20AD%20elements%2C%20%3CEM%3EadvScanStruct%3C%2FEM%3E%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14492329910143516%22%20data-renderedposition%3D%22264_50_824_192%22%20jivemacro_uid%3D%22_14492329910143516%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20const%20gapAdStructure_t%20advScanStruct%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.length%20%3D%20NumberOfElements(adData0)%20%2B%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.adType%20%3D%20gAdFlags_c%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.aData%20%3D%20(void%20*)adData0%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7D%2C%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.length%20%3D%20NumberOfElements(adData1)%20%2B%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.adType%20%3D%20gAdManufacturerSpecificData_c%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.aData%20%3D%20(void%20*)adData1%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EDue%20to%20the%20fact%20that%20all%20beacons%20use%20the%20advertising%20flags%20structure%20and%20that%20the%20advertising%20PDU%20is%2031%20bytes%20in%20length%20(Bluetooth%20Low%20Energy%20v4.1)%2C%20the%20maximum%20payload%20length%20is%2028%20bytes%2C%20including%20length%20and%20type%20for%20the%20AD%20elements.%3C%2FP%3E%3CP%3EThe%20AD%20Flags%20element%20is%20declared%20as%20it%20follows%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14483523242435168%20jive_text_macro%22%20data-renderedposition%3D%22612_50_824_16%22%20jivemacro_uid%3D%22_14483523242435168%22%3E%3CP%3Estatic%20const%20uint8_t%20adData0%5B1%5D%20%3D%26nbsp%3B%20%7B%20(gapAdTypeFlags_t)(gLeGeneralDiscoverableMode_c%20%7C%20gBrEdrNotSupported_c)%20%7D%3B%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3EThe%20demo%20application%20uses%20a%20hash%20function%20to%20generate%20a%20random%20UUID%20for%20the%20KW40Z%20default%20beacon.%20This%20is%20done%20in%20BleApp_Init%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22_jivemacro_uid_14492333294351745%20jive_macro_code%20jive_text_macro%22%20data-renderedposition%3D%22732_50_824_240%22%20jivemacro_uid%3D%22_14492333294351745%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Evoid%20BleApp_Init(void)%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20sha1Context_t%20ctx%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Initialize%20sha%20buffer%20with%20values%20from%20SIM_UID%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20FLib_MemCopy32Unaligned(%26amp%3Bctx.buffer%5B0%5D%2C%20SIM_UIDL)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20FLib_MemCopy32Unaligned(%26amp%3Bctx.buffer%5B4%5D%2C%20SIM_UIDML)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20FLib_MemCopy32Unaligned(%26amp%3Bctx.buffer%5B8%5D%2C%20SIM_UIDMH)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20FLib_MemCopy32Unaligned(%26amp%3Bctx.buffer%5B12%5D%2C%200)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20SHA1_Hash(%26amp%3Bctx%2C%20ctx.buffer%2C%2016)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Updated%20UUID%20value%20from%20advertising%20data%20with%20the%20hashed%20value%20*%2F%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20FLib_MemCpy(%26amp%3BgAppAdvertisingData.aAdStructures%5B1%5D.aData%5B3%5D%2C%20ctx.hash%2C%2016)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%7D%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3EWhen%20implementing%20a%20constant%20beacon%20payload%2C%20please%20bear%20in%20mind%20to%20disable%20this%20code%20section.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CH1%20id%3D%22toc-hId--1424853269%22%20id%3D%22toc-hId--1424853269%22%20id%3D%22toc-hId--510566393%22%3EKW40Z%20Default%20Beacon%3C%2FH1%3E%3CP%3E%3C%2FP%3E%3CP%3EThe%20KW40Z%20software%20implements%20a%20proprietary%20beacon%20with%20the%20maximum%20ADV%20payload%20and%20uses%20the%20following%20Manufacturer%20Specific%20Advertising%20Data%20structure%20of%2026%20bytes.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_18.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_18.png%22%20style%3D%22width%3A%20605px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F36466i5736DFB7AACAF96A%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_18.png%22%20alt%3D%22pastedImage_18.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EThis%20is%20the%20default%20implementation%20of%20the%20beacon%20demo%20example%20from%20the%20KW40Z%20Connectivity%20Software%20package.%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14483520180913526%20jive_text_macro%22%20data-renderedposition%3D%221267_50_824_128%22%20jivemacro_uid%3D%22_14483520180913526%22%3E%3CP%3Estatic%20uint8_t%20adData1%5B26%5D%20%3D%20%7B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Company%20Identifier*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xFF%2C%200x01%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Beacon%20Identifier%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xBC%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20UUID%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20A%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20B%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20C%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20RSSI%20at%201m%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x1E%7D%3B%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CH1%20id%3D%22toc-hId-1062659564%22%20id%3D%22toc-hId-1062659564%22%20id%3D%22toc-hId-1976946440%22%3EiBeacon%3C%2FH1%3E%3CP%3E%3C%2FP%3E%3CP%3EiBeacon%20is%20a%20protocol%20designed%20by%20Apple.%20It%20uses%20a%2020%20byte%20payload%20that%20consists%20of%20the%20following%20identifying%20information%20%3CA%20href%3D%22https%3A%2F%2Fdeveloper.apple.com%2Fibeacon%2FGetting-Started-with-iBeacon.pdf%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3E%5B1%5D%3C%2FA%3E%20%3A%3C%2FP%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2024px%3B%20font-weight%3A%20bold%3B%20line-height%3A%201.5%3B%22%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%20style%3D%22width%3A%20361px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F9544i5132E58BEB6976FC%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_22.png%22%20alt%3D%22pastedImage_22.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ETo%20advertise%20an%20iBeacon%20packet%2C%20the%20user%20needs%20to%20change%20the%20second%20AD%20element%2C%20%3CEM%3EadData1%3C%2FEM%3E%2C%20like%20below%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14492334532495333%20jive_text_macro%22%20data-renderedposition%3D%221612_50_824_112%22%20jivemacro_uid%3D%22_14492334532495333%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20uint8_t%20adData1%5B25%5D%20%3D%20%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x4C%2C%200x00%2C%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x02%2C%200x15%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20UUID%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xD9%2C%200xB9%2C%200xEC%2C%200x1F%2C%200x39%2C%200x25%2C%200x43%2C%200xD0%2C%200x80%2C%200xA9%2C%200x1E%2C%200x39%2C%200xD4%2C%200xCE%2C%200xA9%2C%200x5C%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Major%20Version%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x01%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Minor%20Version%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x0A%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xC5%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3CSPAN%20style%3D%22font-size%3A%2024px%3B%20font-weight%3A%20bold%3B%20line-height%3A%201.5%3B%22%3E%3CBR%20%2F%3E%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2024px%3B%20font-weight%3A%20bold%3B%20line-height%3A%201.5%3B%22%3EAltBeacon%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EAltBeacon%20is%20an%20open%20specification%20designed%20for%20proximity%20beacon%20advertisements%20%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2Csans-serif%3B%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2FAltBeacon%2Fspec%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3E%5B2%5D%3C%2FA%3E%3C%2FSPAN%3E.%20It%20also%20uses%20a%20Manufacturer%20Specific%20Advertising%20Data%20structure%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_20.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_20.png%22%20style%3D%22width%3A%20605px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F8445i513D6B78B821EA8B%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_20.png%22%20alt%3D%22pastedImage_20.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ETo%20advertise%20an%20AltBeacon%20packet%2C%20the%20user%20needs%20to%20change%20the%20second%20AD%20element%2C%20like%20below%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14492335116832900%20jive_text_macro%22%20data-renderedposition%3D%221997_50_824_96%22%20jivemacro_uid%3D%22_14492335116832900%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20uint8_t%20adData1%5B26%5D%20%3D%20%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20MFG%20ID*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xFF%2C%200x01%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Beacon%20Code%20*%2F%26nbsp%3B%26nbsp%3B%200xBE%2C%200xAC%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Beacon%20ID%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x01%2C%200x02%2C%200x03%2C%200x04%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Ref%20RSSI*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xC5%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20MFG%20RSVD*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CH1%20id%3D%22toc-hId--744794899%22%20id%3D%22toc-hId--744794899%22%20id%3D%22toc-hId-169491977%22%3E%3C%2FH1%3E%3CH1%20id%3D%22toc-hId-1742717934%22%20id%3D%22toc-hId-1742717934%22%20id%3D%22toc-hId--1637962486%22%3EEddystone%3CSPAN%20style%3D%22font-size%3A%2018pt%3B%20font-family%3A%20Calibri%2C%20sans-serif%3B%22%3E%E2%84%A2%3C%2FSPAN%3E%3C%2FH1%3E%3CP%3E%3C%2FP%3E%3CP%3EEddystone%E2%84%A2%20is%20an%20open%20Bluetooth%C2%AE%20Smart%20beacon%20format%20from%20Google%20%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2Csans-serif%3B%22%3E%3CA%20href%3D%22https%3A%2F%2Fgithub.com%2Fgoogle%2Feddystone%2Fblob%2Fmaster%2Fprotocol-specification.md%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3E%5B3%5D%3C%2FA%3E.%3C%2FSPAN%3E%20It%20offers%20three%20data%20type%20packets%3A%3C%2FP%3E%3CUL%20style%3D%22list-style-type%3A%20disc%3B%22%3E%3CLI%3EEddystone%E2%84%A2-UID%3C%2FLI%3E%3CLI%3EEddystone%E2%84%A2-URL%3C%2FLI%3E%3CLI%3EEddystone%E2%84%A2-TLM%3C%2FLI%3E%3C%2FUL%3E%3CP%3EEddystone%E2%84%A2%20uses%20two%20advertising%20structures%3A%3C%2FP%3E%3CUL%3E%3CLI%3EComplete%20List%20of%2016-bit%20Service%20UUIDs%20structure%2C%20which%20contains%20the%20Eddystone%20Service%20UUID%20(0xFEAA).%3C%2FLI%3E%3CLI%3EService%20Data%20structure%2C%20which%20also%20contains%20the%20Eddystone%E2%84%A2%3CSPAN%20style%3D%22font-size%3A%2011.0pt%3B%20font-family%3A%20'Calibri'%2Csans-serif%3B%22%3E%20%3C%2FSPAN%3E%20Service%20UUID%20(0xFEAA).%3C%2FLI%3E%3C%2FUL%3E%3CP%3EThus%2C%20%3CEM%3EadvScanStruct%3C%2FEM%3E%20will%20now%20have%203%20elements%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14492336754422203%22%20data-renderedposition%3D%222426_50_824_272%22%20jivemacro_uid%3D%22_14492336754422203%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20const%20gapAdStructure_t%20advScanStruct%5B%5D%20%3D%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.length%20%3D%20NumberOfElements(adData0)%20%2B%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.adType%20%3D%20gAdFlags_c%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.aData%20%3D%20(void%20*)adData0%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7D%2C%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.length%20%3D%20NumberOfElements(adData1)%20%2B%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.adType%20%3D%20gAdComplete16bitServiceList_c%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.aData%20%3D%20(void%20*)adData1%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7D%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7B%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.length%20%3D%20NumberOfElements(adData2)%20%2B%201%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.adType%20%3D%20gAdServiceData16bit_c%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20.aData%20%3D%20(void%20*)adData2%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%20%7D%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CP%3EThe%20complete%20List%20of%2016-bit%20Service%20UUIDs%20element%20will%20look%20like%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14492336909744594%20jive_text_macro%22%20data-renderedposition%3D%222776_50_824_16%22%20jivemacro_uid%3D%22_14492336909744594%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20const%20uint8_t%20adData1%5B2%5D%20%3D%26nbsp%3B%20%7B%200xAA%2C%200xFE%20%7D%3B%3C%2FSPAN%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CH2%20id%3D%22toc-hId--1861687888%22%20id%3D%22toc-hId--1861687888%22%20id%3D%22toc-hId--947401012%22%3EEddystone%E2%84%A2-UID%3C%2FH2%3E%3CP%3E%3C%2FP%3E%3CP%3EEddystone%E2%84%A2-UID%20broadcasts%20a%20unique%2016-bit%20Beacon%20ID%20to%20identify%20a%20particular%20device%20in%20a%20group.%20The%20Service%20Data%20block%20has%20the%20following%20structure%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_22.png%22%20style%3D%22width%3A%20605px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F8528i0C7530173851F8C0%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_22.png%22%20alt%3D%22pastedImage_22.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ETo%20implement%20this%2C%20the%20user%20needs%20to%20add%20a%20third%20AD%20element%2C%20as%20follows%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20jive_text_macro%20_jivemacro_uid_14492337260348266%22%20data-renderedposition%3D%223035_50_824_112%22%20jivemacro_uid%3D%22_14492337260348266%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20uint8_t%20adData2%5B22%5D%20%3D%20%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20ID%20*%2F%200xAA%2C%200xFE%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Frame%20Type%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Ranging%20Data%20*%2F%26nbsp%3B%200xEE%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Namespace%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x8B%2C%200x0C%2C%200xA7%2C%200x50%2C%200x09%2C%200x54%2C%200x77%2C%200xCB%2C%200x3E%2C%200x77%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Instance%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x00%2C%200x01%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20RFU%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3CP%3E%3C%2FP%3E%3CH2%20id%3D%22toc-hId-625824945%22%20id%3D%22toc-hId-625824945%22%20id%3D%22toc-hId-1540111821%22%3EEddystone%E2%84%A2-URL%3C%2FH2%3E%3CP%3E%3C%2FP%3E%3CP%3EEddystone%E2%84%A2-URL%20broadcasts%20a%20compressed%20URL.%20The%20Service%20Data%20block%20has%20the%20following%20structure%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_29.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_29.png%22%20style%3D%22width%3A%20505px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F54285iEC31F56975D2FFCF%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_29.png%22%20alt%3D%22pastedImage_29.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EIn%20this%20example%2C%20we%20will%20implement%20a%20beacon%20which%20will%20advertise%20NXP%E2%80%99s%20webpage%2C%20%3CSPAN%20style%3D%22color%3A%20%232989c5%3B%22%3E%3CA%20class%3D%22jive-link-external-small%22%20href%3D%22http%3A%2F%2Fwww.nxp.com%2F%22%20rel%3D%22nofollow%20noopener%20noreferrer%22%20target%3D%22_blank%22%3Ehttp%3A%2F%2Fwww.nxp.com%3C%2FA%3E%3CSPAN%3E.%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ETo%20implement%20this%2C%20the%20user%20needs%20to%20add%20a%20third%20AD%20element%2C%20as%20follows%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14495820458297004%20jive_text_macro%22%20data-renderedposition%3D%223390_50_824_96%22%20jivemacro_uid%3D%22_14495820458297004%22%3E%3CP%3Estatic%20const%20uint8_t%20adData2%5B9%5D%20%3D%20%7B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20ID%20*%2F%200xAA%2C%200xFE%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Frame%20Type%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x10%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20TX%20Power%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xEE%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20URL%20scheme%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Encode%20URL%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%20'n'%2C%20'x%2C%20'p'%2C%200x07%7D%3B%3C%2FP%3E%3C%2FPRE%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3C%2FP%3E%3CH2%20id%3D%22toc-hId--1181629518%22%20id%3D%22toc-hId--1181629518%22%20id%3D%22toc-hId--267342642%22%3EEddystone%E2%84%A2-TLM%3C%2FH2%3E%3CP%3E%3C%2FP%3E%3CP%3EEddystone%E2%84%A2-TLM%20broadcasts%20telemetry%20data%20about%20the%20beacon%20device%20operation.%20The%20Service%20Data%20block%20has%20the%20following%20structure%3A%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_30.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_30.png%22%20style%3D%22width%3A%20605px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F54305i612012605EFFA9C5%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_30.png%22%20alt%3D%22pastedImage_30.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3ETo%20implement%20this%2C%20the%20user%20needs%20to%20add%20a%20third%20AD%20element%2C%20as%20follows%3A%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CPRE%20__default_attr%3D%22c%2B%2B%22%20__jive_macro_name%3D%22code%22%20class%3D%22jive_macro_code%20_jivemacro_uid_14492338043205612%20jive_text_macro%22%20data-renderedposition%3D%223729_50_824_128%22%20jivemacro_uid%3D%22_14492338043205612%22%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3Estatic%20uint8_t%20adData2%5B16%5D%20%3D%20%7B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20ID%20*%2F%200xAA%2C%200xFE%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Frame%20Type%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x20%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20TLM%20Version%20*%2F%26nbsp%3B%26nbsp%3B%200x00%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20VBATT%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20TEMP%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20ADV_CNT%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%200x00%2C%200x00%2C%3C%2FSPAN%3E%3C%2FP%3E%3CP%20style%3D%22margin-bottom%3A%20.0001pt%3B%22%3E%3CSPAN%20style%3D%22font-size%3A%2010.0pt%3B%20font-family%3A%20'Courier%20New'%3B%22%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20SEC_CNT%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x00%2C%200x00%2C%200x00%2C%200x00%7D%3B%3C%2FSPAN%3E%3C%2FP%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-1129134%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3EBLE%20Software%3C%2FLINGO-LABEL%3E%3CLINGO-LABEL%3EKW41Z31Z21Z%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129140%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129140%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%40%3CA%20_jive_internal%3D%22true%22%20data-content-finding%3D%22Community%22%20data-userid%3D%22212290%22%20data-username%3D%22alexandruandreescu%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fpeople%2Falexandruandreescu%22%20style%3D%22color%3A%20%235e89c1%3B%20background-color%3A%20%23ffffff%3B%20border%3A%200px%3B%20font-weight%3A%20600%3B%20text-decoration%3A%20none%3B%20font-size%3A%2011.9994px%3B%22%20target%3D%22_blank%22%3EAlexandru%20Andreescu%3C%2FA%3E%26nbsp%3BThanks%20for%20the%20article%3B%20it%20was%20really%20helpful.%3CBR%20%2F%3EI%20am%20a%20student%20and%20was%20trying%20to%20convert%20KW41%20to%20Alt%20Beacon.%20It%20was%20successful%20the%20only%20thing%20I%20would%20like%20to%20mention%20is%20%22%3CSPAN%20style%3D%22color%3A%20%2351626f%3B%20background-color%3A%20%23ffffff%3B%22%3EWhen%20implementing%20a%20constant%20beacon%20payload%2C%20please%20bear%20in%20mind%20to%20disable%20this%20code%20section.%22%26nbsp%3B%3CSPAN%20style%3D%22color%3A%20%233d3d3d%3B%22%3Ethis%20line%20is%20really%20important.%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129139%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129139%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EDear%20Sir%2C%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22%22%20lang%3D%22en%22%3E%3CSPAN%20class%3D%22%22%3E%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22%22%20lang%3D%22en%22%3E%3CSPAN%20class%3D%22%22%3EIn%20the%20actual%20application%20can%20not%20only%20run%20a%20mode%20(ibeacon%20%2F%20EddyStone%20...).%3C%2FSPAN%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EHow%20to%20modify%20the%20software%20can%20achieve%20two%20modes%20(iBeacon%20and%20EddyStone)%20can%20run%20at%20the%20same%20time%EF%BC%9F%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EThanks%2C%3C%2FP%3E%3CP%3EDaniel%20Tseng%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129138%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129138%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EDear%20sir%2C%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EI%20tried%20to%20implement%20ibeacon%20feature%20on%20KW41z.%3C%2FP%3E%3CP%3EI%20used%20the%20beacon%20example%20in%26nbsp%3B%3CSTRONG%3EMKW41Z_ConnSw_1.0.2%3C%2FSTRONG%3E.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_1.png%22%20style%3D%22width%3A%20626px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F6181i78D1413430D5658D%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_1.png%22%20alt%3D%22pastedImage_1.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EThe%20default%20packet%20is%20NXP%20beacon%20format.%3C%2FP%3E%3CP%3EI%20tried%20to%20change%20it%20to%20ibeacon%20packet%20format%20like%20you%20mentioned%20below.%3C%2FP%3E%3CH1%20style%3D%22color%3A%20%23646464%3B%20background-color%3A%20%23ffffff%3B%20border%3A%200px%3B%20font-weight%3A%20600%3B%20font-size%3A%2026px%3B%22%20id%3D%22toc-hId-382601198%22%20id%3D%22toc-hId--277845746%22%3E%3C%2FH1%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_5.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_5.png%22%20style%3D%22width%3A%20999px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F6269i3AC829E3240B3D90%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_5.png%22%20alt%3D%22pastedImage_5.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3EI%20used%20the%20beacon%20app%20%22Locate%22%20from%20App%20store.%20But%20I%20can't%20get%20my%20KW41%20device.%3C%2FP%3E%3CP%3ECould%20you%20help%20me%20how%20I%20could%20implement%20the%20ibeacon%20feature%20on%20KW41%20successfully.%3C%2FP%3E%3CP%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_4.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_4.png%22%20style%3D%22width%3A%20512px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F6184iDC1E52B2F0EB8242%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_4.png%22%20alt%3D%22pastedImage_4.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3CSPAN%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_2.png%22%3E%3Cspan%20class%3D%22lia-inline-image-display-wrapper%22%20image-alt%3D%22pastedImage_2.png%22%20style%3D%22width%3A%20519px%3B%22%3E%3Cimg%20src%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fimage%2Fserverpage%2Fimage-id%2F6320iD74AFB397EDB935F%2Fimage-size%2Flarge%3Fv%3Dv2%26amp%3Bpx%3D999%22%20role%3D%22button%22%20title%3D%22pastedImage_2.png%22%20alt%3D%22pastedImage_2.png%22%20%2F%3E%3C%2Fspan%3E%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3C%2FP%3E%3CP%3EThanks.%3C%2FP%3E%3CP%3EBR%2C%3C%2FP%3E%3CP%3ESean%20Wu%3C%2FP%3E%3CP%3EWeikeng%20Inc.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129137%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129137%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThis%20was%20resolved%20on%20Android%20side.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129136%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129136%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThe%20eddystone%20beacon%20is%20not%20being%20detected%20by%20Chrome%20(v51)%20or%20the%20Physical%20Web%20Android%20app.%20I%20commented%20out%20BleApp_Init()%2C%20and%20also%20tried%20using%20a%20https%20url%20in%20addition%20to%20the%20nxp%20example%20provided.%3C%2FP%3E%3CBLOCKQUOTE%3E%3CP%3Estatic%20const%20uint8_t%20adData2%5B19%5D%20%3D%20%7B%26nbsp%3B%26nbsp%3B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20ID%20*%2F%200xAA%2C%200xFE%2C%26nbsp%3B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Frame%20Type%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x10%2C%26nbsp%3B%20%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20TX%20Power%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%26nbsp%3B%200xEE%2C%26nbsp%3B%20%3C%2FP%3E%3CP%3E%3CSPAN%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20URL%20scheme%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%200x03%2C%20%2F*%20%3C%2FSPAN%3E%3CA%20class%3D%22jive-link-external-small%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fexternal-link.jspa%3Furl%3Dhttps%253A%252F%252F%22%20target%3D%22_blank%22%3Ehttps%3A%2F%2F%3C%2FA%3E%3CSPAN%3E%20*%2F%26nbsp%3B%20%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%26nbsp%3B%26nbsp%3B%26nbsp%3B%20%2F*%20Encode%20URL%20*%2F%26nbsp%3B%26nbsp%3B%26nbsp%3B%20'c'%2C'o'%2C'm'%2C'm'%2C'u'%2C'n'%2C'i'%2C't'%2C'y'%2C'.'%2C'n'%2C'x'%2C'p'%2C%200x07%7D%3B%26nbsp%3B%20%3C%2FP%3E%3C%2FBLOCKQUOTE%3E%3CP%3ECan%20confirm%20that%20the%20default%20%22beacon%22%20example%20in%20the%20KW40Z_1.0.1%20ConnSw%20is%20detected%20by%20the%20Kinetis%20BLE%20toolbox.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-1129135%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3ERe%3A%20Implementing%20Bluetooth%C2%AE%20LE%20Beacons%20on%20the%20KW40Z%20Wireless%20Microcontroller%20%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-1129135%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EThanks%20%3CA%20class%3D%22jx-jive-macro-user%22%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Fpeople%2Falexandruandreescu%22%20target%3D%22_blank%22%3Ealexandruandreescu%3C%2FA%3E%2C%20Great%20tutorial.%3C%2FP%3E%3CP%3Ein%20case%20of%20iBeacon%2C%20We%20need%20to%20have%20different%20major%2Fminor%20for%20different%20KW40%20module.%20In%20this%20example%2C%20we%20have%20to%20compile%20every%20time%20for%20different%20beacons%2FKW40%26nbsp%3B%20by%20changing%20the%20adData1%20parameters.%20%3C%2FP%3E%3CP%3EIs%20there%20anyway%20to%20read%20the%20iBeacon%20parameters%20(%3CSPAN%20style%3D%22font-size%3A%2012px%3B%20font-family%3A%20Consolas%2C%20'Courier%20New'%2C%20Courier%2C%20mono%2C%20serif%3B%20color%3A%20%23000000%3B%22%3Euint8_t%20adData1%5B%3C%2FSPAN%3E%3CSPAN%20class%3D%22number%22%20style%3D%22font-size%3A%2012px%3B%20font-family%3A%20Consolas%2C%20'Courier%20New'%2C%20Courier%2C%20mono%2C%20serif%3B%20color%3A%20green%3B%22%3E25%3C%2FSPAN%3E%3CSPAN%20style%3D%22font-size%3A%2012px%3B%20font-family%3A%20Consolas%2C%20'Courier%20New'%2C%20Courier%2C%20mono%2C%20serif%3B%20color%3A%20%23000000%3B%22%3E%5D%3C%2FSPAN%3E)%20from%20a%20config%20file%3F%26nbsp%3B%26nbsp%3B%20In%20that%20case%2C%20we%20can%20use%20the%20same%20binary%20with%20different%20config%20files%20for%20different%20KW40.%3C%2FP%3E%3CP%3EThanks.%3C%2FP%3E%3C%2FLINGO-BODY%3E
No ratings
Version history
Last update:
‎09-10-2020 03:37 AM
Updated by: