• Hi,

    I have a problem that when connecting two Pucks together using BLE, there seems to be some sort of timeout going on which I did not program. I am using 1v91.

    I have a central and a peripheral Puck. Here is the code for the peripheral, which is pretty vanilla:

    var g_value = 0;
    function onInit() {
        "A4AF09E7-5BC2-46F6-BA08-DA8E0982D84D" :
            readable: true,
            writable: true,
            notify: true,
            value : g_value,
            onWrite : function(evt)
              digitalPulse(LED2, true, 10);
              g_value = evt.data[0];

    Here is the code for the central:

    var g_gatt = false;
    var g_characteristic = false;
    var g_counter = 0;
    function connect(nextStep) {
        console.log("Requesting device");
            filters: [{
                name: 'Puck.js 2061'
        }).then(function(device) {
            console.log("Connecting to GATT");
            return device.gatt.connect();
        }).then(function(gatt) {
            console.log("Connecting to service");
            g_gatt = gatt;
            return g_gatt.getPrimaryService("A4AF09E7-5BC2-­46F6-BA08-DA8E0982D84D");
        }).then(function(service) {
            console.log("Getting characteristic");
            return service.getCharacteristic("0x2A6E");
        }).then(function(characteristic) {
            console.log("Calling next step");
            g_characteristic = characteristic;
        }).catch(function() {
            console.log("Error connecting");
    function write(value) {
        if (!g_characteristic)
            connect(function() {
            console.log("Writing ", value);
            g_characteristic.writeValue(value).catch­(function() {
                g_characteristic = false;
    function onInit() {
        setWatch(function() {
        }, BTN, {
            edge: "rising",
            debounce: 50,
            repeat: true

    Again, nothing special. So when I first press the button on the central, it will connect to the peripheral and write the value. The peripheral will shortly blink green. Connecting of course takes a while, but subsequent writes will be fast. So far so good.

    The problem is that after letting the Pucks rest for a while, the write will fail. Then the catch will come into play and reconnect. So there seems to be some kind of inactivity timeout somewhere. I did not find any documentation for that or any hint how I can avoid that. Any ideas?

    The question is if there is a better way to send integers (preferably not just 8 bits) than sending them as a character and reconverting to an integer? Also, the way I handle the !g_characteristic case feels pretty clumsy. Any better idea on how to handle that? Generally, any hint on how to program the central more elegant is welcome.



Avatar for stevie4711 @stevie4711 started