4 Replies Latest reply on Aug 27, 2014 5:33 PM by userc_2062

    Connectable vs. nonconnectable Advertisements.

    userc_2062

      Dear WICED BLE Forum,

       

      According to "Bluetooth Low Energy: The Developer's Handbook", page 81, there are seven types of advertising packets:

      ADV_IND, ADV_DIRECT_IND, ADV_NONCONN_IND, ADV_SCAN_IND, SCAN_REQ, SCAN_RSP, CONNECT_REQ.

       

      How may I generate ADV_NONCONN_IND or ADV_SCAN_IND in my WICED-Smart application?  In particular I would

      like to advertise/broadcast dynamic information at a low data rate while I am connected to a central device. 

       

      --Blake.

        • 1. Re: Connectable vs. nonconnectable Advertisements.
          jota_1939431

          Hello Blake,

           

          We have several Apps in our SDK 2.1 that show the types of Advertising Packets:

          Hello_Sensor is a Connectable Advertisement as you might have guessed.  It can also send Notifications and Indications from the Peripheral.

           

          We also have a my_beacon app that uses a Non-connectable undirected advertisement.

          We have an ibeacon_device with hard-coded UUID, Major/Minor Numbers and Xmit Power and you can easily advertise as a beacon and be in a connection with a Central to send dynamic data as you would with hello_sensor.c App.

           

          But hello_sensor is a great place to start.

           

          Hope this helps

          JT

           

          1 of 1 people found this helpful
          • 2. Re: Connectable vs. nonconnectable Advertisements.
            userc_2062

            Thank you J.T., that is an excellent and concise example which emits a non-connectable undirected advertisement.  However, I would like to have more information about the blecm_startAdv() function, which seems to be key to this application.  I'm wondering whether I may call it while connected as a peripheral device, and about any caveats or requirements for using it properly.  I'm also very curious about the blecm_generate_advCb() function.  When should I call it?

             

            --Blake.

            • 3. Re: Connectable vs. nonconnectable Advertisements.
              ArvindS_76

              blecm_startAdv() and its parameters map to BT spec Set Advertising Parameters and Set Advertise Enable.

               

              /// \param advType Type of advertisement.  0 : ADV_IND; 1 : ADV_DIRECT_IND; 2 : ADV_SCAN_IND; 3 : ADV_NONCONN_IND; others are invalid.

              /// \param adcInterval Min and Max advertisement interval in BT slots. Min = 20mS; Max = 10.24s. Not valid for ADV_DIRECT_IND

              /// \param advChannel  Mask of channels to advertise (bitwise set to enable). 1 = Ch 37; 2 = Ch 38; 4 = Ch 39.

              /// \param advAdrType Own address type. 0 : Public; 1 : Random device address; Others are reserved.

              /// \param advFilterPolicy ADV filter policy. 0 : Allow scan and connect from any; 1 : Allow scan from whitelist, connect from any; 2 : Allow scan from any, connect from whitelist; 3 : Allow scan and connect from whitelist only.

              /// \param initiatorAdrType Direct address type. 0 : Public; 1 : Random device address; Others are reserved.

              /// \param initiatorAdr Address of the device to be connected when ADV_DIRECT_IND

              void blecm_startAdv(int advType,  int advInterval, int advChannel, int advAdrType, int advFilterPolicy, int initiatorAdrType, UINT8 *initiatorAdr );

               

               

              blecm_generate_advCb() is a test function that got left in the ROM. It does not do serve any useful purpose as far as I can tell.

               

              EDIT: Add more responses below. I forgot that ^S posts instead of saving.

               

              > I 'm wondering whether I may call it while connected as a peripheral device, and about any caveats or requirements for using it properly.

              Yes, but you need to do a few things before that. Like calling blecm_enableConMux(if you intend to do connectable advs) and blecm_enablescatternet(). See hello_client sample app. The other thing to keep in mind is that bleprofile_Discoverable() uses this in its state machine. So if you use blecm_startAdv(), don't use bleprofile_Discoverable() .

              1 of 1 people found this helpful
              • 4. Re: Connectable vs. nonconnectable Advertisements.
                userc_2062

                Thank you so much.  I appreciate your quick and detailed response.  We will be sure to call blecm_enableConMux if we send connectable advertisements while in a connection.  Our plan is to send connectable advertisements only while not in a connection, so we will not call blecm_enableConMux unless that plan changes. 

                1 of 1 people found this helpful