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.

TI-15.4 Stack problem with receiving data

Other Parts Discussed in Thread: CC1310

Hello!

I'm developing a device based “SimpleLink Sub-1 Ghz Sensor to cloud” and I have a problem. I will describe what I have

- I base development on “simplelink_cc13x0_sdk_3_20_00_23”. I have a “gateway” board, a “sensor” board and “coprocessor” board.

- In sdk I took an example “sensor_CC1310_LAUNCHXL_tirtos_ccs” Now I am redoing it for my task.

- A sensor board developed on the basis of cc1310.

-The sensor board is in sleep mode. Timer wakes up board, after board sends “my message” to the gateway. The gateway receives and processes “my message”, after it replies with “another message”.

My problem

-In the sensor application, I do not accept a response from the gateway. In the log on the gateway side I get  code “MAC_NO_ACK”

below will be the message log on the gateway side

message from sensor to gateway


52.900: 00000000: fe 35 42 85 02 01 00 00-00 00 00 00 00 02 34 12 |.5B...........4.|

52.900: 00000010: 00 00 00 00 00 00 2d 47-28 00 06 00 dc ac dc ac |......-G(.......|

52.900: 00000020: 46 00 c4 60 33 33 33 33-33 33 33 33 05 03 03 cf |F..`33333333....|

52.900: 00000030: 03 00 00 02 00 00 00 14-00 ac |.......... |


message from the gateway to the sensor


52.903: 00000000: fe 25 22 05 02 01 00 00-00 00 00 00 00 dc ac 02 |.%".............|

52.903: 00000010: 80 01 00 00 33 33 33 33-33 33 33 33 05 03 03 00 |....33333333....|

52.904: 00000020: 00 00 00 02 00 00 00 15-01 e1 |.......... |


confirmation from the coprocessor


52.910: 00000000: fe 01 62 05 00 66 - |..b..f |


message from sensor to gateway


53.033: 00000000: fe 10 42 84 e9 80 73 5e-28 00 3f 00 03 00 00 00 |..B...s^(.?.....|

53.033: 00000010: 32 00 00 00 b4 - |2.... |


why in the last message I get the code “e9”? What am I doing wrong?

  • Hi,

    As recommended on the page http://www.ti.com/tool/TIDEP0084, I would recommend to instead use http://www.ti.com/tool/TI-15.4-STACK-GATEWAY-LINUX-SDK for 15.4 Stack based gateways.

    Regards,
    Toby

  • Hello Toby!

    Thank you for your reply.
    I found some answers, but still have a problem.

    If my sensor board, in "config.h"  i set  CONFIG_RX_ON_IDLE    in "true",  the log shows me:

      34.286: 00000000: fe 10 42 84 00 80 e2 12-1a 00 24 00 00 5c 00 cc |..B.......$..\..|
      34.286: 00000010: 9b 00 00 00 93         -                        |.....           |

    But, i can't use in my program CONFIG_RX_ON_IDLE    in "true", cose I achieve minimal current consumption.
    My question is  - “Using the flag  CONFIG_RX_ON_IDLE  to false, can I correctly receive messages on the sensor board?”For example, if I don’t transfer control to IDLE?

  • Savva,

    Yes you can receive messages when sensor is set to RX_ON_IDLE. but the way you receive messages will depend on how the network is configured.

    Our stack can be configured in  3 main modes of operation:

    1. Beacon

    2.Non-Beacon

    3. Freq Hop

    All of these modes have different ways to send messages to the sensor, and all of them are discussed i our user guide in detail (http://dev.ti.com/tirex/explore/node?node=APeHcG.A0wniaym22zAYKw__pTTHBmu__LATEST)

    but in summary this is how it works....

    Beacon - The sensors will wake up on every beacon interval, and receive a beacon from the coordinator. If there is a message pending fro a sensor the collector will then send it after sending the beacon.

    Non-Beacon - The sensor will POLL periodically the collector for messages.

    Freq Hop - When there is a message ready to be sent, the collector will change into the RX channel of the sensor and will send the message.

    Regards,

    AB

  • AB,

    thanks for the answer!
    My fault, I forgot to say that I work in Non-Beacon mode.

    I rewrote the source code. The sensor board is now sending a POLL.  But since I need to achieve minimal current consumption, I changed part of the code.
    I removed all the messages from the message pool that were in the example, instead I added one of mine. But the situation has not changed In the "gateway" log, after the gateway sends a message, it receives a command with the code “MAC_NO_ACK” (E9). No callbacks(dataIndCB) are called in the sensor.

    I suspect the problem is due to sleep patterns. The RF module simply goes to sleep after sending a message. Therefore, reception does not occur in the sensor board.
  • I solved the problem!

    When my sensor board sends a pool req, I exhibit "ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle, 1);"


    I write the flag back when I accept the answer or by timeout "ApiMac_mlmeSetReqBool(ApiMac_attribute_RxOnWhenIdle,0);"

    in conjunction with setting up the power manager "Power_setConstraint(PowerCC26XX_SD_DISALLOW);" it gives sleep consumption of hundreds of microamps