DA14586 DSPS device SUOTAR

6 posts / 0 new
Last post
dlo
Offline
Last seen: 4 days 14 hours ago
Joined: 2017-05-26 16:21
DA14586 DSPS device SUOTAR

Using the DSPS Device demo provided I am trying to add SUOTA.

I've followed the Training_06_suota_example_v1.1_0.pdf and also the https://support.dialog-semiconductor.com/guide/faq-da1458x-software-peri...

I've got everything to compile and I've also checked the prox reporter source code to compare.

However after everything compiles and loaded to test, I no longer see DSPS advertised in the Dialog DSPS app or see it in the SUOTA app.

The code seems to be running because I can see the quadrature encoder I wrote working and because I can see it on a different BLE scanning app and can connect and see its advertising data.

I think the problem is the
#define USER_ADVERTISE_DATA "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07"\
ADV_UUID_SUOTAR_SERVICE

I don't think I understand how to format the USER_ADVERTISE_DATA correctly. "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07" this is the default DSPS string.

Thank you for your help!

Device: 
dlo
Offline
Last seen: 4 days 14 hours ago
Joined: 2017-05-26 16:21
I think I"m starting to get

I think I"m starting to get it, I edited to add the ADV_UUID_SUOTAR_SERVICE ( "\xF5\xFE" /* SUOTAR Service */) at the end of the define and changed the size from 0x11 to 0x13

#define USER_ADVERTISE_DATA "\x13\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07\xF5\xFE"

I also added it to:
#define SPS_SERVICE_UUID {0xb7, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}

#define SPS_SERVER_TX_UUID {0xb8, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}
#define SPS_SERVER_RX_UUID {0xba, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}
#define SPS_FLOW_CTRL_UUID {0xb9, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}

However, when I try to compile I get these errors:
..\..\common\src\profiles\spss\user_sps_config.h(94): error: #146: too many initializer values
static const struct att_uuid_128 sps_service = {
PS_SERVICE_UUID};

searching further I see a define in att.h (ATT_UUID_128_LEN) I added 2 bytes to it and it compiles and works. I can see the device in the DSPS app. Nothing on the SUOTA app though.
Edit:
The app seems unstable, it showed up once on the advertisement, but now it just crashes after system_init() in arch_system.c

Changing ATT_UUID_128_LEN back to 0x0010 fixed the crashing problem. Need to figure out how to add the SUOTA adv string and not crash now...

...

PM_Dialog
Offline
Last seen: 19 hours 50 min ago
Staff
Joined: 2018-02-08 11:03
Hi dlo,

Hi dlo,

The SUOTA is a profile, and the DSPS is a demo project, so in order to have SUOTA functionality to the DSPS what you will have to do to add the SUOTA profile to the DSPS demo, besides the OTA project there are also some guidelines for this on the FAQ in the Software Implementation section (How to add the SUOTA profile to my SDK application) for the 5.0.3 SDK which is quite identical with the 5.0.4 SDK. You will be able to find the FAQ section on the top level menu of the support site, please check the link below:

https://support.dialog-semiconductor.com/guide/frequently-asked-questions

From what you mentioned in you post, I suppose that you have added the SUOTA profile to the DSPS project, before starting the procedure described in the tutorial. Could you please share hot did you define the advertising data? Also, it would be very helpful to indicate a little bit clear which is your issue? You are able to have SUOTA but you don’t know how to add it into the advertising string?

Thanks, PM_Dialog

dlo
Offline
Last seen: 4 days 14 hours ago
Joined: 2017-05-26 16:21
Hello,

Hello,

I tried going over the FAQ before starting the SUOTA, but it didn't seem to apply to the DA14586 since it uses SUOTAR instead of SPOTAR, and I didn't find spotar files int he SDK folder of the DSPS project. I found the #define in the user config module.h file and it was already included. So I added the suotar files to the project in KEIL and looked at the SUOTAR example in the proxy reporter in the SDK example to make sure things were as close as possible.

I am thinking the SUOTAR is implemented in the code correctly, but not advertising for the SUOTA app to see. What I tried to explain above is how I tried to place the advertising:

This is the original DSPS advertising string:
#define USER_ADVERTISE_DATA "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07"
This is the modified one to add ADV_UUID_SUOTAR_SERVICE
#define USER_ADVERTISE_DATA "\x13\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07\xF5\xFE"
Compiling this worked, but didn't show anything on the app either.

Then I also added it to:
#define SPS_SERVICE_UUID {0xb7, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}

#define SPS_SERVER_TX_UUID {0xb8, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}
#define SPS_SERVER_RX_UUID {0xba, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}
#define SPS_FLOW_CTRL_UUID {0xb9, 0x5c, 0x49, 0xd2, 0x04, 0xa3, 0x40, 0x71, 0xa0, 0xb5, 0x35, 0x85, 0x3e, 0xb0, 0x83, 0x07, 0xF5, 0xFE}

However, when I try to compile I get these errors:
..\..\common\src\profiles\spss\user_sps_config.h(94): error: #146: too many initializer values
static const struct att_uuid_128 sps_service = {
PS_SERVICE_UUID};

searching further I see a define in att.h (ATT_UUID_128_LEN) I added 2 bytes to it and it compiles. However after this, it crashes when I try to run. The debugger shows me it's in one of the error handlers.

Attached is my project files without including the SDK files.

Thank you for your support!

Attachment: 
PM_Dialog
Offline
Last seen: 19 hours 50 min ago
Staff
Joined: 2018-02-08 11:03
Hi dlo,

Hi dlo,

The key information for SUOTA application is to check is the complete list of 16bits service UUID, to see whether it's 0xFEF5, otherwise the device will be filtered off.

So, please update the advertising data as follow:

#define USER_ADVERTISE_DATA                "\x11\x07\xb7\x5c\x49\xd2\x04\xa3\x40\x71\xa0\xb5\x35\x85\x3e\xb0\x83\x07\x03\x03\xF5\xFE"

Adding complete list of 16bits service UUID: "0x03, 0x03, 0xF5, 0xFE" to the advertising data.

  • 0x03 : length
  • 0x03 : ADV_TYPE_COMPLETE_LIST_16BIT_SERVICE_IDS
  • 0xF5, 0xFE : ADV_UUID_SUOTAR_SERVICE

Thanks, PM_Dialog

dlo
Offline
Last seen: 4 days 14 hours ago
Joined: 2017-05-26 16:21
Thank you! That was very

Thank you! That was very informative.