This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts
This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

casting pointers

Hello!

I've bumped into the issue with casting...

main.c:
static ble_gap_addr_t addr0;
static uint16_t *p_host0;

int main(void) {
    p_host0 = (void*)&addr0.addr[0];

works fine, but...

beacon.c:
static ble_gap_addr_t addr1;
static uint16_t *p_host1;

void init_beacon(void) {
   p_host1 = (void*)&addr1.addr[0];

hungs in assignment when I call init_beacon() from main()

Where is rake?

Parents
  • .. even editing SDK's internals will not help though.. SoftDevice expects the intact ble_gap_addr_t struct.

    So, the only option is to copy the address from/to SDK's structs into specially aligned space:

    typedef struct {
       uint16_t extra_aligner; // required to access addr[2] by uint32_t pointer
       uint8_t addr[BLE_GAP_ADDR_LEN];
    } aligned_addr __attribute__((aligned(32)));
    
    static aligned_addr addr;    
    static uint32_t *const p_net = (void*)&aligned_addr.addr[2];
    static uint16_t *const p_host = (void*)&aligned_addr.addr[0];
    

    and now it is possible to assign some (see BL specs. as per PUBLIC address!) address in the form NE:TW:OR:K_:HO:ST

Reply
  • .. even editing SDK's internals will not help though.. SoftDevice expects the intact ble_gap_addr_t struct.

    So, the only option is to copy the address from/to SDK's structs into specially aligned space:

    typedef struct {
       uint16_t extra_aligner; // required to access addr[2] by uint32_t pointer
       uint8_t addr[BLE_GAP_ADDR_LEN];
    } aligned_addr __attribute__((aligned(32)));
    
    static aligned_addr addr;    
    static uint32_t *const p_net = (void*)&aligned_addr.addr[2];
    static uint16_t *const p_host = (void*)&aligned_addr.addr[0];
    

    and now it is possible to assign some (see BL specs. as per PUBLIC address!) address in the form NE:TW:OR:K_:HO:ST

Children
No Data
Related