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 Johnson

    I will take over this case since I have done more work with Gazell in the past. 

    I don't really have much more to provide unfortunately. 

    We don't have any examples showing how to do concurrent Gazell host and BLE. As Hung mentioned it is quite easy to do one or the other and switch back and forth, but running both at the same time is much more complicated. 

    The Gazell host needs to switch the RF channel at a constant rate, set by the Gazell RX period, and this has to happen independently of any BLE activity. The Gazell device can operate much more asynchronously, and as such it is easier to implement inside the timeslot API.

    Best regards
    Torbjørn

  • Hi Torbjørn

    After few weeks, my requirement has been changed

    Gzll Host and BLE will wait for the data from the smartphone/Gzlldevice at the same time
    after recieve the data no matter it's from smartphone/Gzlldevice, the other protocal will be disabled
    until the data stop sending from smartphone/Gzlldevice, and my device start to wait for the data again

    how's this kind of application, is it easier to implement?

  • Hi 

    The application you describe should be easier to run reliably, without much packet loss. If you can run Gazell host and BLE side by side without sending much data, and then switch off one of them when you start to receive packets, you should ensure good RF performance. 

    In terms of implementation it is not much easier unfortunately. You will still have to implement the Gazell host running on top of the timeslot API from scratch, since we don't have any examples showing you how to do this. 

    I am also not sure how well suited the current Gazell library is to running through timeslots in host mode, as this has not been properly tested. 
    Since Gazell is provided as a library only it is not possible to change the low level behavior of Gazell to make it more suitable to use in timeslots. 

    Best regards
    Torbjørn

  • 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

Reply
  • 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

Children
  • 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

  • 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?

Related