AnsweredAssumed Answered

BlueNRG aci_att_find_information_req bug?

Question asked by iwasz on Apr 15, 2016
Hi 

   I think I found a bug in aci_att_find_information_req which always returns BLE_STATUS_TIMEOUT for me. This function creates a hci_request variable, fills it with zeros, and then sets all fields except "event". Then in hci_send_req function, case EVT_CMD_STATUS: gets asserted, and if (r->event != EVT_CMD_STATUS) condition is checked and met (since event == 0). Then, in the next iteration of while loop, I get BLE_STATUS_TIMEOUT
   
If I initialize hci_request::event field to EVT_CMD_STATUS, function works, and I successfully got an UUID of handle 0x01. Please note, that every (?) other function with "aci_gatt_" prefix located in "bluenrg_gatt_aci.c" file has this "event" field initialized just like I mentioned, and at the other hand, every function prefixed "aci_att_" has not.


Please help me verify if this is something wrong with my code, or it's a bug. How do I proceed in the latter case? I've found a repo for BlueNRG library here https://developer.mbed.org/teams/ST/code/X_NUCLEO_IDB0XA1/ , but don't know how to contact the developers.


PS. My code is a somewhat modified example named "SensorDemo" from "STM32CubeExpansion_BLE1_V2.5.2", and I run the function on question like this:


void GAP_ConnectionComplete_CB (uint8_t addr[6], uint16_t handle)
{
        connected = TRUE;
        connection_handle = handle;


        printf ("Connected to device:");
        for (int i = 5; i > 0; i--) {
                printf ("%02X-", addr[i]);
        }
        printf ("%02X\n", addr[0]);


        tBleStatus stat = aci_att_find_information_req (connection_handle, 0x01, 0x01);


        if (stat != BLE_STATUS_SUCCESS) {
                printf ("stat != BLE_STATUS_SUCCESS (%d)\n", stat);
                while (1)
                        ;
        }
}


All the code is here : https://github.com/iwasz/blue-nrg-test , and it runs on STM32F7-DISCO + BlueNRG shield
Regs

Outcomes