Uploaded image for project: 'Mynewt'
  1. Mynewt
  2. MYNEWT-707

Add API to retrieve public and static random addresses from chip specific locations

    XMLWordPrintableJSON

Details

    • New Feature
    • Status: Resolved
    • Major
    • Resolution: Fixed
    • v1_0_0_rel
    • v1_1_0_rel
    • Nimble
    • Security Level: Public (Viewable by anyone)
    • None

    Description

      This ticket will add API to retrieve a public address and random static address from "chip specific" locations. Here are the API and how they will work for the nordic chips, which are currently the only supported BLE chips. This ticket does not address storing/retrieving these values from flash or configuration areas.

      1) The ble_hw_get_public_addr function will do the following:

      • If the user has overridden the default public address (the syscfg variable) with a non-zero public address, that address will be returned by this function.
      • If the default public address in the syscfg is all zero, the code will read FICR and check if the device address type in the FICR is public. If so, it means the nordic chip was factory programmed with a public address and this will be used.
      • If both of the above checks fail, the code will read UICR[0] and UICR[1] to see if a public address has been programmed into the UICR. We are doing this to make it easy for folks to program their development kits with public addresses so they do not have to hardcode them. UICR[0] will contain the least significant 4 bytes of the device address. UICR[1] will contain the most significant two bytes. The upper 16 bits of this word should be set to 0. The API will presume that this is a valid public device address as long as the upper 16-bits of this 32-bit word are all zero. We will also check to see if this is a valid public address (see below). If both UICR[0] and UICR[1] are zero, this will not be considered a valid public address.

      2) The ble_hw_get_static_addr() will do the following:

      • Read the FICR to see if there is a random address in the FICR. This is the default programming of the nrf51dk and nrf52dk. Unless you have them program a public device address in the FICR, it will have a random address.
      • If the chip does not have a random address the API returns -1.
      • If the chip has a random address the upper two bits will be set to 1 (which denotes random static address).

      Attachments

        Issue Links

          Activity

            People

              wes3 Will Sanfilippo
              wes3 Will Sanfilippo
              Votes:
              0 Vote for this issue
              Watchers:
              2 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: