10000 added logic so if the custom defined macro based address template oct… · sparkfun/mbed-os-ambiq-apollo3@7259029 · GitHub
[go: up one dir, main page]

Skip to content

Commit 7259029

Browse files
author
Kirk
committed
added logic so if the custom defined macro based address template octet is zero, not to update the devices mac address
1 parent cc9ba2f commit 7259029

File tree

1 file changed

+19
-11
lines changed

1 file changed

+19
-11
lines changed

features/FEATURE_BLE/targets/TARGET_Ambiq_Micro/hal/apollo3/hci_drv_apollo3.c

Lines changed: 19 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -192,8 +192,9 @@ void *BLE;
192192
// example:
193193
// mbed compile -t GCC_ARM -m SFE_ARTEMIS_DK -D AM_CUSTOM_BDADDR -D AM_CUSTOM_BDADDR_TEMPLT0=0xaa1109
194194
//
195-
// These #defines override any template values specified in b_BLEMacAddress
196-
//
195+
// These #defines override any template values specified in g_BLEMacAddress.
196+
//
197+
// NOTE: If a octet value in the macro number is 0, it is not assigned
197198
//
198199
// Worth noting, these can also be set in your mbed_app.json file, with the following
199200
//
@@ -750,18 +751,25 @@ ap3_hciDrvWrite(uint8_t type, uint16_t len, uint8_t *pData)
750751
if(g_BLEMacAddress[i]) // !=0, set value
751752
bd_addr[i] = g_BLEMacAddress[i];
752753
}
753-
754-
// 3: Via macros defined to 24 bit numbers
754+
755+
// 3: Via macros defined to 24 bit numbers. If an octet is zero, we skip
756+
// setting that octet it
755757
#ifdef AM_CUSTOM_BDADDR_TEMPLT0
756-
bd_addr[0] = AM_CUSTOM_BDADDR_TEMPLT0; // lower 8 bits
757-
bd_addr[1] = AM_CUSTOM_BDADDR_TEMPLT0 >> 8; // mid 8 bits
758-
bd_addr[2] = AM_CUSTOM_BDADDR_TEMPLT0 >> 16; // high 8 bits
758+
if(AM_CUSTOM_BDADDR_TEMPLT0 & 0xFF)
759+
bd_addr[0] = AM_CUSTOM_BDADDR_TEMPLT0; // lower 8 bits
760+
if(AM_CUSTOM_BDADDR_TEMPLT0 & 0xFF00)
761+
bd_addr[1] = AM_CUSTOM_BDADDR_TEMPLT0 >> 8; // mid 8 bits
762+
if(AM_CUSTOM_BDADDR_TEMPLT0 & 0xFF0000)
763+
bd_addr[2] = AM_CUSTOM_BDADDR_TEMPLT0 >> 16; // high 8 bits
759764
#endif
760765
#ifdef AM_CUSTOM_BDADDR_TEMPLT1
761-
bd_addr[3] = AM_CUSTOM_BDADDR_TEMPLT1; // lower 8 bits
762-
bd_addr[4] = AM_CUSTOM_BDADDR_TEMPLT1 >> 8; // mid 8 bits
763-
bd_addr[5] = AM_CUSTOM_BDADDR_TEMPLT1 >> 16; // high 8 bits
764-
#endif
766+
if(AM_CUSTOM_BDADDR_TEMPLT1 & 0xFF)
767+
bd_addr[3] = AM_CUSTOM_BDADDR_TEMPLT1; // lower 8 bits
768+
if(AM_CUSTOM_BDADDR_TEMPLT1 & 0xFF00)
769+
bd_addr[4] = AM_CUSTOM_BDADDR_TEMPLT1 >> 8; // mid 8 bits
770+
if(AM_CUSTOM_BDADDR_TEMPLT1 & 0xFF0000)
771+
bd_addr[5] = AM_CUSTOM_BDADDR_TEMPLT1 >> 16; // high 8 bits
772+
#endif
765773
// Send the command to
766774
HciVendorSpecificCmd(AM_CODE_SET_BDADDR, sizeof(bd_addr), bd_addr);
767775

0 commit comments

Comments
 (0)
0