Channel sounding using multiple reflectors

I am attempting to do channel sounding with one initiator and two reflectors.  Switching between reflectors, by connecting to each in turn, does work, but it is very slow.

I have tried both

  • connecting to both, enabling channel sounding at the time of connection and leaving it enabled
  • connecting to both, enabling and disabling channel sounding with one reflector connection at a time

Both methods lead to successful sounding at the time of connection, but from the point where there have been CS events between the initiator and the second reflector it only ever works with the last connection made, and infinite aborted sub-events with the first device connection, basically getting a subevent_done_status of  BT_CONN_LE_CS_SUBEVENT_ABORTED with the reason being declared BT_CONN_LE_CS_PROCEDURE_ABORT_CHMAP_INSTANT_PASSED.

What is this error, why is it happening?  More importantly, what would be the steps to enable rapid switching or simultaneous CS with two reflectors?

I had some hope that the question posed on  channel sounding cs channel map update instant passing would give some info, but 3 months later Swathy's update is still pending. 

Parents Reply Children
  • Well my question is does calling



    struct bt_le_cs_procedure_enable_param params = {
    .config_id = conndat->id,
    .enable = BT_CONN_LE_CS_PROCEDURES_DISABLED
    };

    int err = bt_le_cs_procedure_enable(conndat->connection, &params);

    do what I think it does. 

    Because (I think) I'm disabling the sounding procedures on one, then enabling on the other.  If this is the case, only one CS procedure is ever being called at once, so they can't be interfering with each other and it wouldn't be timing related.

    And this does work, partially.  

    Connect to A enabled sounding, works for reflector A.  Then I disable, connect to reflector B.  Sounding works for reflector B.  Then I disable B, re-enable A: errors, the "instant passed".  Disable A, re-enable B, works fine.  

    So the problem is unlikely to be timing related, it is something else, and I'm uncertain where the issue is or why it's these errors, so I'd really like to see a step-by-step of how to get multiple reflectors going, either simultaneously, or simply one at a time *while remaining connected to both*.

Related