I'm working with newtmgr over BLE based on the newtmgr lib in the master branch of apache-mynewt-core, which currently has the following structure:

Service UUID: 8D53DC1D-1DB7-4CD3-868B-8A527460AA84
Characteristic UUID: DA2E7828-FBCE-4E01-AE9E-261174997C48

The source code has this explanatory comment on the service:

> The "newtmgr" service consists of one write no-rsp characteristic for
> newtmgr requests: a single-byte characteristic that can only accepts
> write-without-response commands. The contents of each write command
> contains an NMP request. NMP responses are sent back in the form of
> unsolicited notifications from the same characteristic.

I remember some discussions previously about unsolicited notifies and whether this was or wasn't supported in the BLE spec (I believe between Carles Cufi from Nordic and I believe Will and/or Chris at Runtime?), but given the uncertainty around this I wonder if it wouldn't be better to adjust the newtmgr service definition to have two characteristics similar to the way 'nus' (Nordic UART Service) works:

- One TXD or 'Request' characteristic to write commands to, which can reuse the existing characteristic as-is - A new RXD or 'Response' characteristic with notify enabled, which would also allow you to send multiple data chunks since each packet will cause a new notify event on the Central, making it relatively easy to manage rebuilding packets.

I've been doing some initial tests with the netmgr service as is and many apps don't seem to like the unsolicited notifications even if they can be made to work. Two separate characteristics would probably ensure everything is handled unambiguously on any platform, but I'm curious to hear other people's thoughts?

Kevin

Reply via email to