• In Espruino on a Puck.js, I want to implement a BLE application that works as follows:

    • Puck.js running as BLE peripheral
    • Central, an iOS app, is not connected to Puck yet
    • Puck button presses add a value to a FIFO queue in the Puck
    • Central connects to Puck
    • Each time the central reads from the characteristic, the next queue entry is read
    • When there are no more queue entries, the characteristic returns a "no more entries" value such as an EoF

    I have not found an onRead event in the NRF.setServices properties (like the onWrite that is available) or any event in Espruino that I can use to implement the above logic. Am I missing something in the docs that might allow this? Is there an approach I can use with Espruino? I could write to the characteristic to remove the queue entry in the Puck but I'd like to avoid doing this. I'm not looking for a workaround, just a method of knowing, in the Espruino code, when a characteristic is being or was read.

    Edit 1: I understand that the Nordic SoftDevice does not provide an API to check if a characteristic has been read but there is a security event that I can watch so am wondering if I set up the characteristic in such a way that I'll get a security event on every read. I've tried the combinations supported according to the Espruino hardware reference but still luck on getting the security event on read to fire.




Avatar for user134932 @user134932 started