Tool/software:
Hello!
I encountered an unexpected TI15.4 stack error while working on a project that requires simultaneous operation of Bluetooth peripheral and Ti15.4 Coordinator. When running the program for a longer periods of time with Bluetooth simply advertising (interval of 1s) and some traffic on TI15.4 network an assert from TI15.4 stack is triggered. Dumping LR value on assert I found out that the error is triggered in macTxFrame function located in the mac_tx.c file - "transmit on top of transmit"
MAC_INTERNAL_API void macTxFrame(uint8 txType) { MAC_ASSERT(!macTxActive); /* transmit on top of transmit */ MAC_ASSERT(pMacDataTx != NULL); /* must have data to transmit */ /* mark transmit as active */ macTxActive = MAC_TX_ACTIVE_INITIALIZE;
There is no particular way in which I can triggered this assert, it seems to happen randomly.
The very first time I was faced with this issue was in SDK version: simplelink_cc13xx_cc26xx_sdk_7_10_01_24
I then decided to upgrade to the latest available SDK version (simplelink_cc13xx_cc26xx_sdk_7_41_00_17) but the issue seems to still be there with the MCU asserting randomly on that "transmit on top of transmit" assert. Given that this is a rather low level MAC function and DMM running on top of it I would assume such synchronization is already in place.
Questions:
- What could be the reason for MAC layer to trigger such assert?
- What can be done to prevent such asserts? (what conditions should be met in order to minimize the possibility of such error)