This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC2650: TIMAC 1.5.2: MAC_MCPS_DATA_CNF event generates MAC_UNSUPPORTED_SECURITY status

Part Number: CC2650
Other Parts Discussed in Thread: TIMAC,

Hallo,

I'm using TIMAC 1.05.02 Application on CC2650. The application sends messages direct, all 300ms. After a time period of ca. 2-3 hours
the MAC_MCPS_DATA_CNF event generates always satus MAC_UNSUPPORTED_SECURITY and no more messages are send.

FEATURE_MAC_SECURITY is not defined in my application.

I appreciate any help that you can provide.
Rachenka

  • Rachenka,

    Can you confirm that FEATURE_MAC_SECURITY is also not defined in the stack?

    ~Brocklobsta

  • ~Brocklobsta,

    yes, I can confirm the FEATURE_MAC_SECURITY is not defined in the stack.

    I send all 300ms a HF-message to a destination address. If the message has not be acknowledged from the destination receiver, the message is broadcasted.

    /* If message not acknowledged, broad cast the message */
    if (pData->dataCnf.hdr.status == MAC_NO_ACK)
    {
    msa_DestShortAddr = MSA__BROADCAST_SHORT_ADDR;
    /* Start MSA send event one-shot timer */
    Clock_start(Clock_handle(&msaSendClk));
    }

    Here the code of my send procedure. The message is 9 byte long.

    void MSA_McpsDataReq(uint8* data, uint8 dataLength,  uint16 dstShortAddr)
    {
    Timac_MacMcpsDataReq_t *pData;
    static uint_least8_t handle = 0;

    if ((pData = MAC_McpsDataAllocMsg(dataLength, MAC_SEC_LEVEL_NONE, MAC_KEY_ID_MODE_NONE)) != NULL)
    {
    pData->mac.srcAddrMode = SADDR_MODE_SHORT;
    pData->mac.dstAddr.addrMode = SADDR_MODE_SHORT;
    pData->mac.dstAddr.addr.shortAddr = dstShortAddr;
    pData->mac.dstPanId = msa_PanId;
    pData->mac.msduHandle = handle++;
    if (dstShortAddr != 0xFFFF)
    pData->mac.txOptions = MAC_TXOPTION_ACK;

    /* Copy data */
    memcpy (pData->msdu.p, data, dataLength);

    /* Send out data request */
    MAC_McpsDataReqMsg(pData);
    }
    }

    Rachenka

  • Hello,

    Does anyone have some suggestions? I'm stuck with this problem and unable to work :(

    Any help is appreciated.


    Thanks & Regards,
    Rachenka

  • Hey,

    Instead of compiling out security (You will need a new library to disable security in the stack). Can you set macSecurity = FALSE in msa.c? This should disable security.

  • Hi ~Brocklobsta,

    Thank you very much for your reply. I've tried that. Unfortunately, this did not help.

    It seems as if the MAC Stack would hang up after a time period somewhere in the execution of the command:

    /* Send out data request */
    MAC_McpsDataReqMsg(pData);
    

    I thoroughly investigated all this.

    • I have a clock in my MSA task that comes periodically (all 100sec) and sends a heartbeat-packet via UART (I’m using NPI for UART communication).
    • When I turn off the clock, the periodic sending of HF packets works without problems.

    I assume, that this clock interrupts the command 

    /* Send out data request */
    MAC_McpsDataReqMsg(pData);

    at an unfavorable point so that the MAC Stack does not work properly and sends no messages more.

    Do you have an idea, how I can solve that?

    Perhaps, enclosing the MAC_McpsDataReqMsg (pData) in a critical section (ICall_enterCriticalSection()) or so?

    By the way, I’m sending now periodically every 25ms, packets of 100 bytes

    Thanks,

    Rachenka