This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

Is it possible to run gazelle Host and BLE concurrently?

Hi everyone, 

I have a device which can be a gzll host or BLE, depends on what software inside, and it is based on 51822. And now, I would like to combine this two function in to a new hardware which is based on 52832. I have searched some solution on DevZone and almost all I can find is BLE + gzll device, and based on nrf51. So I am wondering if it is implementable, if so how could I implement this kind of application

Can anyone please help me with this question

Parents
  • Hi Johnson, 

    Do you need to have both protocol concurrently ? Or it's ok to disconnect and switch between them ?

    It's easier if you have gazel device + BLE concurrently than to have Gazel host + BLE. The reason is that the host has more timing requirement than the device. The way we have now with the concurrent BLE Gazel example is that we reinitialize Gazel device whenever we have a timeslot from the softdevice. This is OK for Gazel device but not the best for Gazel host as it will make all Gazell devices connected to it to be unsync (for example with the channel hopping).

    In short, it's possible to have Gazel host + BLE concurrently but it will affect the Gazel performance significantly if the BLE activity is more frequent. 

  • Hi Hung Bui,

    I need both protocol concurrently, which connected to the smartphone and gazel device at the same time.

    Following is what I'd like to do:

    first of all, i'd like to wait for the signal from smartphone and gazel devices without disconnect to each of them, and then

    1.when there is some signal from smartphone do the thing what smartphone ask to do,

    2.when there is some signal from the gazel device to the thing what the device ask to do,

    is that possible to implement without disconnection?

    Thanks,

    Johnson

  • Hi Torbjørn

    OK, seem I have lot of work to do 
    by the way, which example would you suggest me to do this application?

    "multiprotocal/ble_app_gzll" and add timeslot  or
    "ble_peripheral/ble_app_uart" and ad timeslot and gzll or other example?

    Adding gzll to ble_peripheral/ble_app_uart isn't going well to me.

    hope you can give me some suggestions.

    thanks

    Johnson

  • Hi Johnson

    I believe the multiprotocol/ble_app_gzll example would be the best place to start. 

    Then all the right files will be included, and the main change is to add timeslots and to try running the two protocols semi concurrently. 

    I will have to do some investigation on my end to see if running a Gazell host in a timeslot is at all possible. 

    If this can't be done then the only option is to use the ESB stack, and implement Gazell on top of ESB. 

    Best regards
    Torbjørn

  • Hi Torbjørn

    I have done the ble part of my application  - adding nus service into "multiprotocal/ble_app_gzll" and it work fine now

    but how do i change it from gazell device to gazell host?

    it seems it's not so easy to do it only if i import nrf_gzp.c, nrf_gzp_host.c, and nrf_gzp_host_nrf5x.c to the project, but after import the c files it will shows the error message when i try to download it to the demo board. see this question.

    Or in you opinion, how should i do for it of the gazell part?

  • Hi 

    Can you try to zip up your project files and upload it here?

    Then I can try your project myself and see if I can find the problem. 

    Best regards
    Torbjørn

  • Hi Torbjørn

    I'm still working at this project 
    and I would like to ask for you opinion

    below is what i'm going to do ~

    in order to make my device into the gzll pairing mode, I would like to add a button
    keep pressing the button and it will disable the softdevice and enable the gzll and get into gzll pairing mode after pairing successfully(i hope so)
    release the button and it disable gzll and enable the softdevice and timeslot
    and i would like to handle the data from gzll in the timeslot

    in your opinion is it ok to implement?

    or anything i have to notice?

    Thanks

    Johnson

Reply
  • Hi Torbjørn

    I'm still working at this project 
    and I would like to ask for you opinion

    below is what i'm going to do ~

    in order to make my device into the gzll pairing mode, I would like to add a button
    keep pressing the button and it will disable the softdevice and enable the gzll and get into gzll pairing mode after pairing successfully(i hope so)
    release the button and it disable gzll and enable the softdevice and timeslot
    and i would like to handle the data from gzll in the timeslot

    in your opinion is it ok to implement?

    or anything i have to notice?

    Thanks

    Johnson

Children
  • Hi Johnson

    Who is the end user?

    I don't know if it is very intuitive to have to keep the button pressed while the Gazell library is in pairing mode, as it might take some time for pairing to complete. 

    You might want to consider starting a timer once you press the button instead, and keep Gazell enabled until the pairing is completed, or the timer times out. 

    Then the user just have to press the button briefly, and wait for the pairing to complete (or for the timer to time out). 

    Best regards
    Torbjørn

  • Hi Torbjørn

    I have a application which is base on 51822 with gzll only and the user have to long press the button to pair and release util it complete pairing. 

    so i think it doesn't matter who the end user is 

    there is a problem which i am facing

    the post upon said that pressing the button to switch between gzll and ble
    and i can successfully pairing to gzll but after i release the button to turn of the gzll and start ble.
    The application will return a error code 0x1001 which is returned by sd_softdevice_enable in nrf_sdh_enable_request when the first press of the button after i flash the software.
    but the 2nd or 3rd ,,,,,,will go fine 

    so what is the problem of this?

  • Hi Johnson

    The reason I brought up the end user is that it sounded like a possible usability issue to link the Gazell pairing directly to how long the user presses a button, but if you have already tested this out in the field then it's fine Slight smile

    Error 0x1001 corresponds to the NRF_ERROR_SDM_INCORRECT_INTERRUPT_CONFIGURATION error, which can occur if you have enabled interrupts in your application that use interrupt priority 0 or 2 (reserved by the SoftDevice), or if you have enabled interrupts that the SoftDevice should have exclusive access to, such as the RADIO or TIMER0 interrupts. 

    Are you sure that Gazell is properly disabled before you try to start the SoftDevice?

    Could you try to manually disable the RADIO and TIMER0 interrupts by calling NVIC_DisableIRQ(RADIO_IRQn) and NVIC_DisableIRQ(TIMER0_IRQn) ?

    Best regards
    Torbjørn

Related