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

BLE central for Komoot app service setup

Dear Nordic,

I am trying to setup a custom BLE client service to interact with the Komoot app (Turn by turn navigation).

I can connect to the phone, and receive notifications (after CCCD request).

However, I am supposed to provide my read requests with a unique identifier (present in the previous notification) so that the phone app

can switch to the next turn indication.

I have absolutely no clue how and where to do that...

Here their github where they describe the protocol:

https://github.com/komoot/BLEConnect/tree/master

Could you please provide some guidance ?

Many thanks !

Parents
  • Hello, 

    I am sorry, I don't quite understand what you mean.

     

     

    However, I am supposed to provide my read requests with a unique identifier (present in the previous notification)

     Is this a characteristic that you want to read from or write to? Does it use (BLE) notification?

    So are you trying to read the next turn, or do you want to input the next turn?

    BR,

    Edvin

  • Here is a chart of the communication:

    I am here trying to build the external BLE device (displays the turn by turn information)

    I get the notifications and I read the characteristic fine, but komoot states that the read requests must contain a uint32_t identifier which is present in the notification.

    "

    Identifier

    UInt32 value to identify a single navigation instruction. Use this identifier for sending the read request to the characteristic. If we get a read request without this identifier, we will deliver the last data object.

    "

    Could you please help me on that ?

  • I suggest that you start with trying to connect to the app with nRF Connect for Desktop, to get familiar with the services and characteristics on the device.

    I also suggest you study the softdevice documentation for Generic Attribute Server, and especially the function sd_ble_gatts_value_get().

    You did manage to the device and enable the notification for the service, right? So you have the attribute handle which you can use in sd_ble_atts_value_get()?

    BR,

    Edvin

  • The service looks really simple, however i can't understand how I am supposed to transmit this "identifier" to the iPhone...

    I am indeed connected and getting the notifications.

    Here i get notified with the identifier as notification data (87 6A...).

    The rest of the data is read when I to a "sd_ble_gattc_read" (27 bytes).

    I also don't understand how and where i have to register the characteristic 128 bits UUID. ( I did register the service base UUID though)

Reply
  • The service looks really simple, however i can't understand how I am supposed to transmit this "identifier" to the iPhone...

    I am indeed connected and getting the notifications.

    Here i get notified with the identifier as notification data (87 6A...).

    The rest of the data is read when I to a "sd_ble_gattc_read" (27 bytes).

    I also don't understand how and where i have to register the characteristic 128 bits UUID. ( I did register the service base UUID though)

Children
Related