Timeout on BLE (Random disconnect)

I got most of the code from nkolban with minimal changes for reading an analog value and relaying to a cordova app.
I can connect and get values; however, what seems like after 5 seconds to 2 minutes, I get an error on the cordova app that "The connection has timed out". I similarly get the nRF Connect app to connect and read values but all of a sudden it disconnects in a similar way so I don't think it's the phone software.
I have tried updating the arduino library as stated by replacing this repository (nkolban cpp_utils), restarting arduino, but it didn't work.
Any ideas?  I would like to avoid constantly reconnecting if possible.
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

BLECharacteristic* pCharacteristic = NULL;

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/
#define SERVICE_UUID        "F8D61858-DD19-4CED-B921-6E6CCE526D48"
#define CHARACTERISTIC_UUID "9F576249-8BE9-40B0-B009-C31FB8781207"
#define DESCRIPTOR_UUID     "a928d2aa-d48e-45aa-a8c1-51e2b44a7c45"

bool deviceConnected = false;
bool oldDeviceConnected = false;
//uint8_t value = 0;

class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer) {
      deviceConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};

void setup() {

  BLEServer* pServer = NULL;
  BLEDescriptor* pDescriptor = NULL;
  // Create the BLE Device
  BLEDevice::init("ESP32");

  // Create the BLE Server
  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  // Create the BLE Service
  BLEService *pService = pServer->createService(SERVICE_UUID);

  // Create a BLE Characteristic
  pCharacteristic = pService->createCharacteristic(
                      CHARACTERISTIC_UUID,
                      BLECharacteristic::PROPERTY_NOTIFY
                    );

  // https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml
  // Create a BLE Descriptor
  pCharacteristic->addDescriptor(new BLE2902());

  // Start the service
  pService->start();

  // Start advertising
  pServer->getAdvertising()->addServiceUUID(pService->getUUID());
  pServer->getAdvertising()->start();
}

void loop() {
    int analogValue = 0;
    // notify changed value
    if (deviceConnected) {
        pCharacteristic->setValue(analogValue);
        pCharacteristic->notify();
        delay(250); // bluetooth stack will go into congestion, if too many packets are sent
    }
    ....
}

Here is the verbose log from arduino

[D][BLECharacteristic.cpp:664] setValue(): >> setValue: length=4, data=ae070000, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
[D][BLECharacteristic.cpp:671] setValue(): << setValue
[D][BLECharacteristic.cpp:524] notify(): >> notify: length: 4
[D][BLEDevice.cpp:96] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... ESP_GATTS_CONF_EVT
[D][BLEUtils.cpp:1647] dumpGattServerEvent(): GATT ServerEvent: ESP_GATTS_CONF_EVT
[D][BLEUtils.cpp:1692] dumpGattServerEvent(): [status: ESP_GATT_OK, conn_id: 0x00]
[D][BLEServer.cpp:177] handleGATTServerEvent(): >> handleGATTServerEvent: ESP_GATTS_CONF_EVT
[D][BLECharacteristic.cpp:209] handleGATTServerEvent(): >> handleGATTServerEvent: ESP_GATTS_CONF_EVT
[D][BLECharacteristic.cpp:566] notify(): << notify
[D][BLECharacteristic.cpp:461] handleGATTServerEvent(): << handleGATTServerEvent
[D][BLEServer.cpp:295] handleGATTServerEvent(): << handleGATTServerEvent
[D][BLEDevice.cpp:96] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... ESP_GATTS_DISCONNECT_EVT
[D][BLEUtils.cpp:1647] dumpGattServerEvent(): GATT ServerEvent: ESP_GATTS_DISCONNECT_EVT
[D][BLEUtils.cpp:1723] dumpGattServerEvent(): [conn_id: 0, remote_bda: 65:c3:41:74:59:c6]
[D][BLEServer.cpp:177] handleGATTServerEvent(): >> handleGATTServerEvent: ESP_GATTS_DISCONNECT_EVT
[D][BLECharacteristic.cpp:209] handleGATTServerEvent(): >> handleGATTServerEvent: ESP_GATTS_DISCONNECT_EVT
[D][BLECharacteristic.cpp:461] handleGATTServerEvent(): << handleGATTServerEvent

This now works without disconnect when using @chegewara repository.
https://github.com/chegewara/esp32-snippets-enchancements-test

Thank you everyone for this library, and Thanks @chegewara  for your work on improving the code

Hmmm, if I change delay from 250 to 100 I am back where I started. I know you mentioned you had 70Hz, but this seems like it is only 4Hz. Is it because I am sending an int?

Hi @msj121
I will try to test it asap with arduino, because my high performance was from esp-idf.

Thanks!

@msj121 Here is log from nRF connect. First time ive got situation when my samsung S9+ got problem with copy/paste nRF connect logs after few seconds connection (so many logs):
nRF Connect, 2018-11-29
No name (30:AE:A4:43:A1:72)
D	00:25:31.330	gatt.close()
D	00:25:31.340	wait(200)
V	00:25:31.545	Connecting to 30:AE:A4:43:A1:72...
D	00:25:31.546	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	00:25:31.852	[Server callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	00:25:31.852	[Server] Device with address 30:AE:A4:43:A1:72 connected
D	00:25:31.872	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	00:25:31.872	Connected to 30:AE:A4:43:A1:72
D	00:25:31.874	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
V	00:25:31.894	Discovering services...

D	00:25:37.345	server.cancelConnection(device)
I	00:25:37.345	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DA
A	00:25:37.345	"(0x) DA" received
V	00:25:37.351	Disconnecting...
I	00:25:37.351	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DB
D	00:25:37.351	gatt.disconnect()
A	00:25:37.351	"(0x) DB" received
I	00:25:37.358	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DC
A	00:25:37.358	"(0x) DC" received
I	00:25:37.365	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DD
A	00:25:37.365	"(0x) DD" received
I	00:25:37.374	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DE
A	00:25:37.374	"(0x) DE" received
I	00:25:37.379	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) DF
A	00:25:37.379	"(0x) DF" received
D	00:25:37.386	[Callback] Connection state changed with status: 0 and new state: DISCONNECTED (0)
I	00:25:37.386	Disconnected
D	00:25:37.400	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	00:25:37.400	Connected to 30:AE:A4:43:A1:72
I	00:25:37.407	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) E0
A	00:25:37.407	"(0x) E0" received
I	00:25:37.421	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) E1
A	00:25:37.421	"(0x) E1" received
V	00:25:37.421	Discovering services...

Here is "pimp my code" version with logs:
/*
    Video: https://www.youtube.com/watch?v=oCMOYS71NIU
    Based on Neil Kolban example for IDF: https://github.com/nkolban/esp32-snippets/blob/master/cpp_utils/tests/BLE%20Tests/SampleNotify.cpp
    Ported to Arduino ESP32 by Evandro Copercini

   Create a BLE server that, once we receive a connection, will send periodic notifications.
   The service advertises itself as: 4fafc201-1fb5-459e-8fcc-c5c9c331914b
   And has a characteristic of: beb5483e-36e1-4688-b7f5-ea07361b26a8

   The design of creating the BLE server is:
   1. Create a BLE Server
   2. Create a BLE Service
   3. Create a BLE Characteristic on the Service
   4. Create a BLE Descriptor on the characteristic
   5. Start the service.
   6. Start advertising.

   A connect hander associated with the server starts a background task that performs notification
   every couple of seconds.
*/
#include <BLEDevice.h>
#include <BLEServer.h>
#include <BLEUtils.h>
#include <BLE2902.h>

BLEServer* pServer = NULL;
BLECharacteristic* pCharacteristic = NULL;
bool deviceConnected = false;
bool oldDeviceConnected = false;
uint8_t value = 0;

// See the following for generating UUIDs:
// https://www.uuidgenerator.net/

#define SERVICE_UUID        "4fafc201-1fb5-459e-8fcc-c5c9c331914b"
#define CHARACTERISTIC_UUID "beb5483e-36e1-4688-b7f5-ea07361b26a8"

class MyServerCallbacks: public BLEServerCallbacks {
    void onConnect(BLEServer* pServer, esp_ble_gatts_cb_param_t *param) {
      pServer->updateConnParams(param->connect.remote_bda, 0x06, 0x06, 0, 100);
      deviceConnected = true;
    };

    void onDisconnect(BLEServer* pServer) {
      deviceConnected = false;
    }
};

void setup() {
  Serial.begin(115200);

  // Create the BLE Device
  BLEDevice::init("MyESP32");

  // Create the BLE Server
  pServer = BLEDevice::createServer();
  pServer->setCallbacks(new MyServerCallbacks());

  // Create the BLE Service
  BLEService *pService = pServer->createService(SERVICE_UUID);

  // Create a BLE Characteristic
  pCharacteristic = pService->createCharacteristic(
                      CHARACTERISTIC_UUID,
                      BLECharacteristic::PROPERTY_READ   |
                      BLECharacteristic::PROPERTY_WRITE  |
                      BLECharacteristic::PROPERTY_NOTIFY |
                      BLECharacteristic::PROPERTY_INDICATE
                    );

  // https://www.bluetooth.com/specifications/gatt/viewer?attributeXmlFile=org.bluetooth.descriptor.gatt.client_characteristic_configuration.xml
  // Create a BLE Descriptor
  pCharacteristic->addDescriptor(new BLE2902());

  // Start the service
  pService->start();

  // Start advertising
  pServer->getAdvertising()->setMinPreferred(0x0);
  pServer->getAdvertising()->start();
  Serial.println("Waiting a client connection to notify...");
}

void loop() {
    // notify changed value
    if (deviceConnected) {
        pCharacteristic->setValue(&value, 1);
        pCharacteristic->notify();
        value++;
        delay(5); // bluetooth stack will go into congestion, if too many packets are sent
    }
    // disconnecting
    if (!deviceConnected && oldDeviceConnected) {
        delay(500); // give the bluetooth stack the chance to get things ready
        pServer->startAdvertising(); // restart advertising
        Serial.println("start advertising");
        oldDeviceConnected = deviceConnected;
    }
    // connecting
    if (deviceConnected && !oldDeviceConnected) {
        // do stuff here on connecting
        oldDeviceConnected = deviceConnected;
    }
}

nRF Connect, 2018-11-29
No name (30:AE:A4:43:A1:72)
D	00:38:27.233	gatt.close()
D	00:38:27.237	wait(200)
V	00:38:27.438	Connecting to 30:AE:A4:43:A1:72...
D	00:38:27.438	gatt = device.connectGatt(autoConnect = false, TRANSPORT_LE, preferred PHY = LE 1M)
D	00:38:27.669	[Server callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	00:38:27.669	[Server] Device with address 30:AE:A4:43:A1:72 connected
D	00:38:27.680	[Callback] Connection state changed with status: 0 and new state: CONNECTED (2)
I	00:38:27.680	Connected to 30:AE:A4:43:A1:72
D	00:38:27.700	[Broadcast] Action received: android.bluetooth.device.action.ACL_CONNECTED
V	00:38:27.711	Discovering services...

D	00:39:01.894	server.cancelConnection(device)
V	00:39:01.908	Disconnecting...

D	00:39:03.162	gatt.discoverServices()
A	00:39:03.162	"(0x) E1" received
I	00:39:03.170	Connection parameters updated (interval: 11.25ms, latency: 0, timeout: 1000ms)
D	00:39:03.177	[Callback] Services discovered with status: 0
I	00:39:03.177	Services discovered
V	00:39:03.183	Generic Attribute (0x1801)
- Service Changed [I] (0x2A05)
 Client Characteristic Configuration (0x2902)
Generic Access (0x1800)
- Device Name [R] (0x2A00)
- Appearance [R] (0x2A01)
- Central Address Resolution [R] (0x2AA6)
Unknown Service (4fafc201-1fb5-459e-8fcc-c5c9c331914b)
- Unknown Characteristic [I N R W] (beb5483e-36e1-4688-b7f5-ea07361b26a8)
 Client Characteristic Configuration (0x2902)
D	00:39:03.183	gatt.setCharacteristicNotification(00002a05-0000-1000-8000-00805f9b34fb, true)
D	00:39:03.184	[Server callback] Connection state changed with status: 0 and new state: DISCONNECTED (0)
I	00:39:03.184	[Server] Device disconnected
D	00:39:03.197	gatt.setCharacteristicNotification(beb5483e-36e1-4688-b7f5-ea07361b26a8, true)
D	00:39:03.214	[Broadcast] Action received: android.bluetooth.device.action.ACL_DISCONNECTED
I	00:39:03.214	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) C4
A	00:39:03.214	"(0x) C4" received
I	00:39:03.215	Indication received from beb5483e-36e1-4688-b7f5-ea07361b26a8, value: (0x) C5
A	00:39:03.215	"(0x) C5" received
D	00:39:03.225	[Callback] Connection state changed with status: 22 and new state: DISCONNECTED (0)
E	00:39:03.225	Error 22 (0x16): GATT CONN TERMINATE LOCAL HOST
I	00:39:03.225	Disconnected

Here is version with delay(1) which is causing congest from time to time(often).  I fear it might be iOS because as I search through similar errors with other boards people sometimes mention that they don't have issues with android. SO I'll try to find an Android phone and see if it works there. Thank you! Your library definitely helped improve the connection and I am sure a lot of other bugs. At the very least I seem to have a stable 4Hz on iOS with your code and I didn't have even 1Hz stability before.
For now I will close, I will try to find and Android.

I performed long run test. After over 6 hours test with delay(3) I've got not even one packet drop or congest event.
To work with iOS you have 3 new functions.

setMinInterval (advertising),
setMaxInterval (advertising),
updateConnParams (BLEServer->onConnect())

@chegewara I still have not been able to find out why I get random disconnects on my iphone.... I have updated to the new library, and added updateConnParams:
     pServer->updateConnParams(param->connect.remote_bda, 0x06, 0x06, 0, 100);
Do you or anyone know of any fixes for this? It looks like you solved it for Android, I will include a log for most current example of disconnect:
I wrote some code to write out the malloc when "disconnect" is called from the callbacks. I am hoping this might help. Any ideas how to try and narrow down the problem would also be great, happy to try things in the .cpp files.

01:17:25.371 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:25.371 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:25.371 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:25.405 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:25.405 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.405 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.405 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:25.405 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.405 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.438 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5b05, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:25.438 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:25.438 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:25.438 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.438 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:25.438 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.505 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:25.505 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:25.505 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 5b 05                                            [.
01:17:25.505 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:25.505 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:25.505 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:25.539 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:25.539 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.539 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.539 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:25.539 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.539 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.573 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=6005, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:25.573 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:25.573 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:25.573 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.573 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:25.573 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.640 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:25.640 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:25.640 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 60 05                                            `.
01:17:25.640 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:25.640 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:25.640 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:25.673 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:25.673 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.673 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.673 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:25.673 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.673 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.706 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5c05, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:25.706 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:25.706 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:25.706 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.706 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:25.706 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.773 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:25.773 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:25.773 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 5c 05                                            .
01:17:25.773 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:25.773 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:25.773 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:25.773 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:25.807 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.807 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.807 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:25.807 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.807 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.841 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5b05, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:25.841 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:25.841 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:25.841 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.841 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:25.841 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.841 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:25.909 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:25.909 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 5b 05                                            [.
01:17:25.909 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:25.909 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:25.909 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:25.909 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:25.944 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.944 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.944 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:25.944 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.944 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:25.944 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5905, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:25.979 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:25.979 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:25.979 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.979 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:25.979 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:25.979 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.013 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.013 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 59 05                                            Y.
01:17:26.013 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:26.013 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.013 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.013 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.082 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.082 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.082 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.082 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.082 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.082 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5b05, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:26.116 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.116 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:26.116 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.116 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:26.116 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.116 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.151 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.151 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 5b 05                                            [.
01:17:26.151 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:26.151 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.151 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.151 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.219 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.219 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.219 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.219 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.219 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.219 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5905, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:26.253 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:26.253 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.253 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:26.253 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.253 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.253 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.286 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.286 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 59 05                                            Y.
01:17:26.286 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:26.286 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.286 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.286 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.353 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.353 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.353 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.353 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.353 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.353 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5505, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:26.387 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.387 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:26.387 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.387 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:26.387 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.387 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.420 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.420 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 55 05                                            U.
01:17:26.420 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:26.420 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.420 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.420 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.488 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.488 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.488 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.488 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.488 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.488 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=6205, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:26.523 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.523 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:26.523 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.523 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:26.523 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.523 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.557 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.557 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 62 05                                            b.
01:17:26.557 -> [D][BLECharacteristic.cpp:533] notify(): << notify
01:17:26.557 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.557 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.557 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.623 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.623 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.623 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.623 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.623 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.623 -> [D][BLECharacteristic.cpp:631] setValue(): >> setValue: length=2, data=5e05, characteristic UUID=9f576249-8be9-40b0-b009-c31fb8781207
01:17:26.657 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.657 -> [D][BLECharacteristic.cpp:638] setValue(): << setValue
01:17:26.657 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.657 -> [D][BLECharacteristic.cpp:484] notify(): >> notify: length: 2
01:17:26.657 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.657 -> [V][GeneralUtils.cpp:305] hexDump():      00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f
01:17:26.691 -> [V][GeneralUtils.cpp:306] hexDump():      -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
01:17:26.691 -> [V][GeneralUtils.cpp:332] hexDump(): 0000 5e 05                                            ^.
01:17:26.691 -> [D][BLEDevice.cpp:108] gattServerEventHandler(): gattServerEventHandler [esp_gatt_if: 4] ... Unknown
01:17:26.691 -> [E][BLECharacteristic.cpp:526] notify(): << esp_ble_gatts_send_ notify: rc=-1 Unknown ESP_ERR error
01:17:26.691 -> [V][BLEUtils.cpp:1531] dumpGattServerEvent(): GATT ServerEvent: Unknown
01:17:26.691 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.725 -> [V][BLEUtils.cpp:1721] dumpGattServerEvent(): dumpGattServerEvent: *** NOT CODED ***
01:17:26.725 -> [D][BLEServer.cpp:153] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.725 -> Disconnection Malloc:
01:17:26.725 -> Heap summary for capabilities 0x00000800:
01:17:26.725 ->   At 0x3ffaff10 len 240 free 0 allocated 180 min_free 0
01:17:26.725 ->     largest_free_block 0 alloc_blocks 1 free_blocks 1 total_blocks 2
01:17:26.725 ->   At 0x3ffce388 len 72824 free 0 allocated 70196 min_free 0
01:17:26.725 ->     largest_free_block 0 alloc_blocks 161 free_blocks 2 total_blocks 163
01:17:26.793 ->   At 0x3ffe0440 len 15296 free 0 allocated 15080 min_free 0
01:17:26.793 ->     largest_free_block 0 alloc_blocks 11 free_blocks 1 total_blocks 12
01:17:26.793 ->   At 0x3ffe4350 len 113840 free 91124 allocated 20796Di dmi Dni_sfrcoene ne86ct6ion4
0
01:17:26.793 ->
01:17:26.793 ->     largest_free_block 86612 alloc_blocks 113 free_blocks 17 total_blocks 130
01:17:26.793 ->   At 0x40093b50 len 50352 free 50304 allocated 0 min_free 50304
01:17:26.793 ->     largest_free_block 50304 alloc_blocks 0 free_blocks 1 total_blocks 1
01:17:26.793 ->   Totals:
01:17:26.793 ->     free 141428 allocated 106252 min_free 136944 largest_free_block 86612
01:17:26.826 -> [D][BLEServer.cpp:327] startAdvertising(): >> startAdvertising
01:17:26.826 -> [D][BLEDevice.cpp:568] startAdvertising(): >> startAdvertising
01:17:26.826 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:26.826 -> [D][BLEAdvertising.cpp:186] start(): >> start: customAdvData: 0, customScanResponseData: 0
01:17:26.826 -> [D][BLEAdvertising.cpp:198] start(): - advertising service: f8d61858-dd19-4ced-b921-6e6cce526d48
01:17:26.826 -> [D][BLEAdvertising.cpp:246] start(): << start
01:17:26.826 -> [D][BLEDevice.cpp:570] startAdvertising(): << startAdvertising
01:17:26.860 -> [D][BLEServer.cpp:329] startAdvertising(): << startAdvertising
01:17:26.860 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.860 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe881c), owner: <N/A>
01:17:26.860 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.860 -> [D][BLECharacteristic.cpp:203] handleGATTServerEvent(): >> handleGATTServerEvent: Unknown
01:17:26.860 -> [V][FreeRTOS.cpp:120] give(): Semaphore giving: name: ConfEvt (0x3ffe90b4), owner: <N/A>
01:17:26.928 -> [D][BLECharacteristic.cpp:459] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.928 -> [D][BLEServer.cpp:280] handleGATTServerEvent(): << handleGATTServerEvent
01:17:26.928 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 0 0x00
01:17:26.928 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:26.928 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:26.928 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:26.928 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 0]
01:17:26.962 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 1 0x01
01:17:26.962 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:26.962 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:26.962 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:26.962 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 1]
01:17:26.962 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 6 0x06
01:17:26.996 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:26.996 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:26.996 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:26.996 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 6]
[D][BLEServer.cpp:327] startAdvertising(): >> startAdvertising
01:17:27.302 -> [D][BLEDevice.cpp:568] startAdvertising(): >> startAdvertising
01:17:27.302 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:27.302 -> [D][BLEAdvertising.cpp:186] start(): >> start: customAdvData: 0, customScanResponseData: 0
01:17:27.302 -> [D][BLEAdvertising.cpp:198] start(): - advertising service: f8d61858-dd19-4ced-b921-6e6cce526d48
01:17:27.302 -> [D][BLEAdvertising.cpp:246] start(): << start
01:17:27.302 -> [D][BLEDevice.cpp:570] startAdvertising(): << startAdvertising
01:17:27.302 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 0 0x00
01:17:27.336 -> [D][BLEServer.cpp:329] startAdvertising(): << startAdvertising
01:17:27.336 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:27.336 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:27.336 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:27.336 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 0]
01:17:27.336 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 1 0x01
01:17:27.336 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:27.404 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:27.404 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:27.404 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 1]
01:17:27.404 -> [V][BLEUtils.cpp:1818] gapEventToString(): gapEventToString: Unknown event type 6 0x06
01:17:27.404 -> [V][BLEUtils.cpp:1050] dumpGapEvent(): Received a GAP event: Unknown event type
01:17:27.404 -> [V][BLEUtils.cpp:1265] dumpGapEvent(): *** dumpGapEvent: Logger not coded ***
01:17:27.404 -> [D][BLEDevice.cpp:563] getAdvertising(): get advertising
01:17:27.404 -> [D][BLEAdvertising.cpp:479] handleGAPEvent(): handleGAPEvent [event no: 6]

Hi,
for sure there is no issue with heap. You have plenty of it free:
free 141428 allocated 106252 min_free 136944 largest_free_block 86612
Problem with iPhone connection is that i dont know and understand some very specific and restrictive connection requirements. Because of that some library functions can  cause issues. From time to time when such issues are reported and i find time i am trying to read apple specs again and again.
I will try to run some tests with iPhone when i have time.

@chegewara Thanks for all the help! Really appreciate it. From my end, what I see everytime before disconnection event is that it looks like there is some sort of stuttering in the bluetooth data. So that it will delay like 200ms a few times and clump data together.
Then will disconnect with an error peripheral disconnected from the apple side. I have tried writing my own apple software in SWIFT thinking that it might be an apple issue and the cordova library, but bug persisted.

playing with it for a while I have noticed setting different "delays" in the loop cycle for sending data creates different timelines for disconnection event. For example, 7ms disconnects readily, 120 ms also causes some disconnects though fewer, 300ms more, and 40 ms less than all above. I am not sure if I am imagining this, but I have tried to repeat the experiment a few times on different adafruit esp32 feathers.

I did expand looking at other ble modules to see if they have the same problem and some do have public issues, but someone posted a solution for an NRF module I'd like to try.
https://devzone.nordicsemi.com/f/nordic-q-a/11837/automatically-disconnection-ios
@chegewara Do you know where these values can be set in esp32 arduino? I have gone through the current arduino code and have had trouble finding this in bleserver or other files I have been perusing.

Solution from this link are those 2 functions:
 setMinInterval (advertising),
 setMaxInterval (advertising),

https://github.com/nkolban/ESP32_BLE_Arduino/blob/master/examples/BLE_server/BLE_server.ino#L36-L37
also try to set timeout in this function for few seconds 6-10s, or even more:
 updateConnParams()
https://github.com/nkolban/ESP32_BLE_Arduino/blob/934702b6169b92c71cbc850876fd17fb9ee3236d/src/BLEServer.cpp#L415
btw i should fix that timeout probably

I have tried all three options:
void onConnect(BLEServer* pServer, esp_ble_gatts_cb_param_t *param) {
      pServer->updateConnParams(param->connect.remote_bda, 0x01, 0x90, 0, 800);
      deviceConnected = true;
    };

I also put the following at the end of the setup and got rid of pServer->getAdvertising() code:
  // Start the service
  pService->start();

  BLEAdvertising *pAdvertising = BLEDevice::getAdvertising();
  pAdvertising->addServiceUUID(pService->getUUID());
  pAdvertising->setScanResponse(true);
  pAdvertising->setMinPreferred(0x12);
  pAdvertising->setMaxPreferred(0x16);
  BLEDevice::startAdvertising();

@chegewara Still same issues, but takes longer to connect, which makes sense. Did I use large enough values? Thanks for all the help, let me know if you have any other ideas to try.
Really appreciate all the help.

You should read this, especially 11.6:
https://developer.apple.com/accessories/Accessory-Design-Guidelines.pdf

@chegewara Changed the settings to match as far as I can tell with no more success. I did notice that everytime I use the "reset" button or software "reset", the next connection tends to last longer like 5 minutes without interruption.
But once there is an interruption it doesn't tend to last more than a minute, sometimes only 10 seconds. So I reset each time right now on disconnection no matter what the reason for disconnect.
This is a "bad" workaround, but it might be useful to know that something in the code on the esp32 is fixed somewhat on reset. Not sure what changes though. Let me know if I can be of any help tracking this down.

@msj121 I have the same problem trying to upload the firmware using ios, Did when i send the first package the cellphone and esp32 disconnects, could you find a solution?

Similar issues here, almost giving up on esp32.  Connects on android but disconnect without any reason or message (even verbose activated).  Its quite sad that BLE has so little support and people sharing its code.


inputMapGoogle: report client side load errors

This uses the reportClientSideException callback to report to the server any load error for the map. This adds browser data to the error log.

I tested by removing the 'if' and faking an error, so it would work for this kind of error, so I think it's good to have it. But it does not detect the errors that we wish. Another error catcher would be required.

@greenscientist This is ready for review now, it logs everything to the server, tested and works beautifully! And we don't trap the whole browser.

Can we have both a path for the exceptions catched and one for all messages? so we can distinguish between those 2 ?

Can we have both a path for the exceptions catched and one for all messages? so we can distinguish between those 2 ?

That will duplicate a lot of code. Exceptions will have a 'error' logLevel and they are logged to the console.error, so we can differentiate this way. I could add the logLevel to the message to make sure the title is different for string finders, but I don't think we really need to paths

Added the logLvel in the server log message

Can we have both a path for the exceptions catched and one for all messages? so we can distinguish between those 2 ?

That will duplicate a lot of code. Exceptions will have a 'error' logLevel and they are logged to the console.error, so we can differentiate this way. I could add the logLevel to the message to make sure the title is different for regex string filters, but I don't think we really need two paths

The main reason was to eventually log them into separate things in the backend. If the exception are a single line, then it should be fine, otherwise it could be hard to reconstitute an exception.

Indeed, with exhaustive tests, the minute you change a character, it fails ;-)
Technically, either normal log message or exception could be multiline, though the first line is the most important, the rest being either a stack trace or an object's data. And some of the multiline exceptions have often caught exceptions that do a console.something, so with a single code path, we can eventually make that prettier more easily if we feel we need to.

It fact, we will need to use some module, no need to reinvent the wheel here.

For the backend logging you mean? Sure, console works for now, but there's probably something better eventually.

It fact, we will need to use some module, no need to reinvent the wheel here.

For the backend logging you mean? Sure, console works for now, but there's probably something better eventually.

For the frontend too. I'm sure I have seen toolkit that handle what you just implemented.

I renamed the variable and the consoleLogging file to messageLogging. Any other objection to this @greenscientist ?

We can open issues for the remaining questions.

The not logged in will be separate, both backend and frontend, as the route will be unprotecte and we don't have interviewId, so it's in addition to the current work
As for configuring logLevels to send to server, we can give it a try first and see what we get from this already to see if there's need for more.


[3.0] NORMAL on ShaderMaterial shader_type canvas_item gets ignored unless you assign a texture on the new GUI "Normal Map" dropdown (ignoring uniform sampler2D set manually)

Operating system or device - Godot version:
Linux 64bit Ubuntu 16.04 - Godot 3.0 alpha commit 0288be1e7698c984b159bbb7816ddc7aca43b2f1
Issue description:
Adding a ShaderMaterial (for manual NormalMapping) to a Sprite using a uniform sampler2D to pass the normal_map gets ignored on the fragment if no texture is assigned also on the new GUI "Normal Map" dropdown
Steps to reproduce:
create a scene with:
.- a Light2D
.- a Sprite with a texture and a Material (ShaderMaterial)
*The Light2D has a texture with alpha (point light from the godot demos)
*The Light2D mode is Add with white color and energy=1
*The new "Normal Map" dropdown texture for the Sprite is kept at null
*The texture for the Sprite is a diffuse texture and the ShaderMaterial code is:
shader_type canvas_item;
render_mode blend_add;
uniform sampler2D normal_tex;
void fragment(){
NORMAL = texture(normal_tex,UV).rgb * vec3(2.0,2.0,1.0) - vec3(1.0,1.0,0.0);
}
*The Shader Param "Normal Tex" is used to set the normal_map image of the diffuse texture
***The "NORMAL" calculation in the fragmet is ignored unless you set a texture on the new "Normal Map" dropdown on the GUI

Similar to https://github.com/godotengine/godot/issues/7298, but with UV instead of NORMAL


Update documents.py

fix uniondoc DocType

Hey @CAPITAINMARVEL ,
Could you please take a look at the tests?
Regarding the amount of commits - everything is ok. I use squash merging strategy - it will be 1 commit in the main branch in the end anyway :)

Hi @CAPITAINMARVEL ,
I'll fix the merge conflict and take a look at the error by the end of today

Hm, it looks like part of the problem has alternative solution there already. Could you please take a look? @CAPITAINMARVEL


Deserializing property files, "a.b.c.e=value" into json

I've been battling how to do this...
It is fairly common for interfaces to dump structures into a format like
(java property files):
root.prop1.sub1.key1=val
root.prop1.sub1.key2=val
root.prop1.sub2.key2=val
...
Generically, it would be:
key0{keyn}<minor_sep>Value<major_sep>
where
ksep = Key separator, default '.'
minor_sep = Minor or Key/value separator, default '='
major_sep = Major or Record/entry separator, default '\n'
What would be the best way of serializing/deserializing into json using serde ?
If you have a example, I can take a crack at it...
Thanks
JR

Hi @JRAndreassen, sorry that no one was able to provide help here. If this is still an issue, you could try taking this question to any of the resources shown in https://github.com/serde-rs/serde#getting-help.


Dependencies are missing when installing with pnpm

Reproduction

Describe the bug
  "@formkit/inputs": {
    "dependencies": {
      "@formkit/utils": "*"
    }
  },
  "@formkit/validation": {
    "dependencies": {
      "@formkit/utils": "*"
    }
  }

Environment
• OS: WIN10
• Browser chrome 99
• Version .7

I cannot duplicate this. I was able to setup a new vite project with pnpm and do pnpm add @formkit/vue — all dependencies were added properly.


No easy way to resize uploaded images in wiki

There is no way to resize images directly from the editor. In order to resize an image, one will have to go to Desk and in the respective Wiki page the height and width of the image can be reset. I tried the same and found it very tedious to go through the ima tags and update them. It also involves a lot of trial and error which is a lot more time consuming.
I think this is a bit tedious for common users.

Note for self: would have to extend image package to support resizing or wait till tiptap implements their own (https://github.com/ueberdosis/tiptap/issues/1354)

@BreadGenie We are unable to resize the image once uploaded to the editor.


proxyAgent error detection

We currently cannot detect whether the proxy agent is working correctly or not. If any error occurs while connecting, the current connection is discarded and a new connection is attempted directly.(at least that's what happens while creating a room.) While this may be useful when you disconnect AFTER you are connected, it is not the case here. We need a distinction method to fix this behavior.

This bug has been fixed in v2.0.


[Storage] Test failures with a new storage account

While working on the arm template test resource creator, realised the following.
If a new storage account is created as per the readme/contributing docs, the following tests fail

...with this error.
 Error: <?xml version="1.0" encoding="utf-8"?><Error>AuthorizationPermissionMismatch<Message>This request is not authorized to perform this operation using this permission.
RequestId:f9accbf3-701e-0008-0de8-cc0a17000000
Time:2020-01-17T03:45:27.6488473Z</Message></Error>

Roles are properly configured now. https://github.com/Azure/azure-sdk-for-js/blob/6078ce8c176d594679bc0f51410a491ba8e8de87/sdk/storage/test-resources.json#L69


[Bug]: WaitForSelector Problem in docker 22.2.0

Minimal, reproducible example
import puppeteer from "puppeteer-extra";
import { launch, getStream } from "puppeteer-stream";
import StealthPlugin from "puppeteer-extra-plugin-stealth";
import fs from "fs";
import { executablePath } from "puppeteer";

const myfunction = () => {

const browser = await launch(puppeteer, {
    headless: true,
    defaultViewport: null,
    devtools: false,
    args: [
      "--window-size=1920,1080",
      "--window-position=1921,0",
      "--autoplay-policy=no-user-gesture-required",
      "--disable-gpu",
      "--headless=new",
      "--no-sandbox",
    ],
    ignoreDefaultArgs: ["--mute-audio"],
    executablePath: "/usr/bin/google-chrome",
  });

  const page = await browser.newPage();
  // await page.setDefaultNavigationTimeout(0);
  const navigationPromise = page.waitForNavigation();
  const context = browser.defaultBrowserContext();

  await context.overridePermissions("https://meet.google.com/", [
    "microphone",
    "camera",
    "notifications",
  ]);

  await page.waitForTimeout(2500);
  await page.goto("https://meet.google.com/njc-epqn-kmf" + "?hl=en", {
    waitUntil: "networkidle0",
    // ,
    // timeout: 10000,
  });

  await navigationPromise;

  await page.waitForSelector('input[aria-label="Your name"]', {
    visible: true,
    timeout: 50000,
    hidden: false,
  });

}

myfunction();

Error string
WaitForSelector timeout
Bug behavior

[ ] Flaky
[ ] PDF

Background
I am trying to find and input in order to fill it.
Expectation
I expect the code to find the input based on 'input[aria-label="Your name"]' selector using waitForSelector
Reality
I have a waitForSelector timeout
I used the exact same code with v22.2.0 and v22.0.0 of the docker image.
This issue only happen using v22.2.0.
PS: it's a code that i have been using with a lot of previous version of the docker image
Puppeteer configuration file (if used)
No response
Puppeteer version
22.2.0
Node version
v18.19.0
Package manager
yarn
Package manager version
1.22.21
Operating system
Windows

Could you output the page's dom when the selector times out? is the element there? Note that Puppeteer does not do anything differently in Docker and the only difference could be in the website.


Delete all files named spring.provides.

Delete all files named spring.provides.
Refs: https://github.com/spring-projects/spring-boot/issues/12435

Hi, @saragluna , please review this PR. 🙏

/azp run java - spring - tests

LGTM

/check-enforcer override


Implementation for mouse drag scrolling via selection

Its a good start for something we've been missing. We could make it more flash like or use the render loop + mouseMove, although I didn't because it was kind of too slow. Room for improvement or modification of scroll speeds.

Could you squash these commits into one? You could use git rebase -i HEAD~3 for this operation.


Spurious files in repo

There appear to be a number of files/directories in the repo that are seemingly not there for a reason or should have been in .gitignore:

.eggs
.ipynb_checkpoints
conda-recipe/.ipynb_checkpoints
src/.ipynb_checkpoints
image.png
image-1.png
image-2.png

Thank you for flagging these files! They should be all removed now and I've added a few additional lines to the .gitignore file to hopefully prevent this in the future


[BUG] : Scrolling Behavior is Not Much Smooth in Main Home Page

Is there any existing issue for this?

[X] I have searched the existing issues

Description
GSSOC'23
Issue Description:

Scrolling Behavior is Not Much Smooth in Main Home Page

Screenshots
https://github.com/devs-in-tech/DevsInTech/assets/84512164/921ed2e8-6835-42ff-a622-ff4feb460e39
Any additional information?
I want to work on his ISSUE
What browser are you seeing the problem on?
Chrome

Thank you @Susmita-Dey  .I work on this Issue


filesystem start address modified

file system begin at STARTADDR = (0x10000 + lengthof(iromtext) + 0x4000) & (0xFFFFC000), aligned to 0x4000.

Fixed by #3


WIP: ISSUE-257: ErrorResponse format description

@workshur please review the format and I will add it as 4XX & 5XX responses to all endpoints after


Test for appropriate spacing from start of line and end of line

Description
All the integration test matches are updated to include checking for correct indentation from start of the line and spacing (or lack there of ) at the end of the lines.
I used the literal space character in lieu of the \s whitespace character as whitespace includes line breaks, which we specifically do not want in many cases.
Issues Resolved
closes: https://github.com/sous-chefs/haproxy/issues/228
Contribution Check List

[X] All tests pass.
[ ] New functionality includes testing.
[ ] New functionality has been documented in the README if applicable

Yep, all the tests passed. Do we know what's going on with circleci? It be nice to get that fixed up.

Ah ye , I'm not building PRs from forks. That should be fixed now.
Can you push a CHANGELOG update to force it to rerun please?

          1 Error

:no_entry_sign:
Please add labels to this Pull Request

  Generated by :no_entry_sign: Danger

Brill thanks caught a couple of things.
If you're running ChefDK/Chef Workstation
cookstyle -a should fix that.
Then run chef exec delivery local all to check the lint and unit phases are ok.


add muslce v5

init PR for adding Muscle V5.1.0 of https://github.com/rcedgar/muscle to do mutilple sequence alignment

This PR is only for Muscle V5(release in 2022), but I want to add Muscle V3.8( the Classic version of Muscle) in next PR. Could you tell  how to add anthor version of one software? @robertaboukhalil
Thanks~
Si

Hey @orangeSi, I haven't had a chance to look over this PR yet. To answer your question, to add multiple versions, you can add another array element to biowasm.json, and create examples/3.8.html and patches/3.8.patch
But let's first get this version in before you do that.

Great, thanks! I sent you a PR to fix the patch file so it correctly creates omp.h: https://github.com/orangeSi/biowasm/pull/1

I'm able to compile and run muscle in the browser! Once you merge my PR into your branch, I can merge this PR into biowasm, and I can deploy the assets to the CDN.

I'm able to compile and run muscle in the browser! Once you merge my PR into your branch, I can merge this PR into biowasm, and I can deploy the assets to the CDN.

Thanks the patch PR!  I had merged it just now~

@orangeSi Muscle is now deployed on the CDN: https://biowasm.com/cdn/v3/muscle/5.1.0, thanks for your contribution!

Hey @orangeSi, I haven't had a chance to look over this PR yet. To answer your question, to add multiple versions, you can add another array element to biowasm.json, and create examples/3.8.html and patches/3.8.patch
But let's first get this version in before you do that.

Muscle V3.8 is not in github, and only can be dowloaded from https://drive5.com/muscle/downloads_v3.htm as I known, What should I do something specical  for this (because all software url of biowasm.josn defalut is in github, so can be as git  submodule add )?

Ah I see, and I'm curious why you would want to use this old version?

Ah I see, and I'm curious why you would want to use this old version?

The reasons are as below:

Muscle V3.8 is different with V5, and V3.8 is the latest version of  Classic version of Muscle which author released at 2004, and I use muscle V3.8 a lot before this years.
The author of Muscle released V5 at 2021(https://www.biorxiv.org/content/10.1101/2<IP_ADDRESS>9169.abstract) which only had 54 cites at google scholar, and the old version(https://academic.oup.com/nar/article-abstract/32/5/1792/2380623) had 40000+ cites( V3.8 is the lasetest old version).

I see. I think the best path forward is to download the code within the compile.sh script. You don't need to add a submodule, but in the biowasm.json file, you can set the version to:
{
	"version": "3.8",
	"branch": "main"
}

Warning: Since there's no git submodule, running the ./bin/compile.py script will actually reset any changes to your local biowasm repo. For this special case, it might be easier to avoid that python script and run the compile script manually:
# Defines the env variable $EM_FLAGS
source bin/shared.sh

# Compile muscle
cd tools/muscle
./compile.sh

I see. I think the best path forward is to download the code within the compile.sh script.

ok, I will try this way! Thanks~


Updated. fhir2 version to 2.1.0

@SanoferSameera could you please update the omod/docs/dev-setup.md file with the new FHIR2 omod details? Thank you!

@SanoferSameera could you please update the omod/docs/dev-setup.md file with the new FHIR2 omod details? Thank you!

created a new card https://bahmni.atlassian.net/browse/BAH-3900 as the whole life needs an update


Using !Ref in ContentUri of LayerVersion throw error E0001

cfn-lint version: 0.43.0
Description of issue.
The ContentUri property of a resource type AWS::Serverless::LayerVersion can be a string or a LayerContent object. But, if we use !Ref the template is marked as an error with the message:

[cfn-lint] E0001: Error transforming template: Resource with id [CommonDependenciesLayer4ffbb56ae8] is invalid. 'ContentUri' requires Bucket and Key properties to be specified.

Here is an example:
AWSTemplateFormatVersion: '2010-09-09'
Transform: AWS::Serverless-2016-10-31

Parameters:
  EnvironmentName:
    Description: An environment name
    Type: String
    Default: staging
    AllowedValues:
      - sandbox
      - prod
      - staging

  LayerContentUri:
    Type: String
    Description: Layer content uri
    Default: '../dependencies-layer/nodejs'

Resources:
  CommonDependenciesLayer:
    Type: AWS::Serverless::LayerVersion
    Properties:
      LayerName: !Sub '${EnvironmentName}-common-dependencies'
      Description: 'Common dependencies'
      ContentUri: !Ref LayerContentUri
      CompatibleRuntimes:
        - nodejs12.x
      RetentionPolicy: Retain
    Metadata:
      BuildMethod: nodejs12.x

The template deploys ok using sam deploy so it is not an error. I'm already using the latest version of cfn-lint and already did cfn-lint -u
Hope this gets fixed soon.
PS: nice job!

@kstro21 thanks for reporting this.  I got a fix in that will be released in the next version.

@kstro21 thanks for reporting this.  I got a fix in that will be released in the next version.

Fixed and released in v0.44.3

Fixed and released in v0.44.3


Graphs, trees, and spreading disease | Week 5 | MIT 18.S191 Fall 2020 | James Schloss [EDIT]

Graphs, trees, and spreading disease | Week 5 | MIT 18.S191 Fall 2020 | James Schloss [EDIT]
https://youtu.be/Wa8xUJ1JhKQ
00:00 Introduction
03:35 What is a graph?
05:42 Creating trees
06:53 How to traverse the tree?
07:48 Idea of Depth first Search
07:53 Idea of Breadth first Search
09:42 Depth first search recursive scheme
11:32 Different ways in which we can recurse through the tree
11:42 How stacks and queues work?
14:51 Function for Depth first search stack
15:53 Function for Breadth first search queue
16:24 How to extend this to SIR model
17:14 Nicky Case simulation
16:09 Classes in SIR model of infection spreading
19:16 Script
22:14 Plot the tree
23:08 Discussion about LightGraphs in Julia

💯


Update batchnorm freezing to handle NormAct variants

Add GroupNorm1Act
Add BatchNormAct2d tracing change from PyTorch

The docs for this PR live here. All of your documentation changes will be reflected on that endpoint.


removing extra spaces

According to the official Google style guide for markdown, it is preferred to have newlines before and after headers.


如何在finder结果中排除node_modules

Is your feature request related to a problem? Please describe.
A clear and concise description of what the problem is. Ex. I'm always frustrated when [...]
Describe the solution you'd like
A clear and concise description of what you want to happen.
如何在finder结果中排除node_modules

Describe alternatives you've considered
A clear and concise description of any alternative solutions or features you've considered.
Additional context
Add any other context or screenshots about the feature request here.

finder = {
         filter = {
              ['textDocument/references'] = function(results)
                    --do filter
               end


LinkedIn not pulling in data

Im using the default implementation of the script and Facebook and Twitter are pull in dynamic text thats highlighted but LinkedIn opens the sharing window but dosent seem to be pulling in anything.
  var twitterSharer = window.ShareThisViaTwitter;
  var facebookSharer = window.ShareThisViaFacebook;
  var linkedinSharer = window.ShareThisViaLinkedIn;
  ShareThis({
    sharers: [ facebookSharer, twitterSharer, linkedinSharer ],
  }).init();

Same issue here.

It looks like LinkedIn doesn't support sharing portions of text. The URL for creating sharing posts/messages is now https://www.linkedin.com/sharing/share-offsite/?url={url}&title={title} but it doesn't seem to do anything with title 🤷♂
Thanks, Microsoft.
As it has lost it purpose, I'm going to pull the sharer from the next release.


adding section 2 our program

closes #25
Checklists
General Checks

[ ] the branch is up to date with main/master
[ ] the code works when pulled and run locally
[ ] All CI checks pass
[ ] all conflicts are resolved (if any)
[ ] PR has a descriptive title
[ ] PR has appropriate labels and milestones for easy identification
[ ] PR it is assigned to the owner
[ ] reviewers are assigned
[ ] the PR contributes only one focused change
[ ] It is in the appropriate column in the project board (if necessary)
[ ] has short and clear description
[ ] is linked to an issue (if it is related)
[ ] feedback is addressed (if any and if it is appropriate feedback.)

Markdown

[ ] the markdown source is formatted
[ ] spelling and grammar is correct in all text
[ ] The markdown looks correct when you preview the file
[ ] all links and images work

HTML

[ ] the code is well-formatted
[ ] the HTML code passes validation
[ ] there are no inline styles (example: style='color: red;')
[ ] there are no <style> tags with CSS, all styles are hrefs
[ ] there is no inline JavaScript (example: onclick='doSomething()')
[ ] there are no <script> tags with JS, all JS is in an separate file
[ ] ids are used for JavaScript only, not for CSS
[ ] semantic tags are used
[ ] spelling and grammar is correct in all site content

CSS

[ ] the code is well-formatted
[ ] passes all the linting checks

@gelilaa I have tried everything I know (which is still not a lot) but no matter what I do this will n to pass lint check

hey @sannesofie  as you can see in the on the lint, you have errors on the html file

inline style
mismatched div, section and body tags .

To fix the problems follow the line numbers mentioned.


Ultra high CPU & RAM usage on Apache 2.2.22

Hello, I just installed mod_pagespeed on my Debian 7 frontend server and when I put it on, CPU and RAM increase until 100% then crash server, here is my configuration:
Debian 7
Apache 2.2.22
Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz (8threads)
4 x 16384 RAM (64GB)
the website is www.youzik.com with 2k-3k online peaks (it usually consume less than 8% of the server CPU & RAM)
I dont really know how to figure out what's wrong, maybe anyone has encountered the same issue ?
Thank you.

@vanilla38 Checking out the admin pages may help with getting some insight into what is happening, especially the console. Also, if you have statistics logging enabled [1], and are able to email the raw log(s) to me (oschaaf@we-amp.com), I can take a look at more numbers, and perhaps help pinpoint what is happening through that.
[1] https://developers.google.com/speed/pagespeed/module/admin#handlers

It's really nice to you to help me, I'll do it so, thank you.

First thing I'd check is the apache error.log to see if there's some trail
of warnings or errors.
I'm assuming you installed the latest binary release from
https://developers.google.com/speed/pagespeed/module/download and started
with the default configuration (CoreFilters).
There is a FAQ entry for broken sites, which also makes sense to follow for
server overload issues:
https://developers.google.com/speed/pagespeed/module/faq#broken
-Josh
On Fri, Oct 21, 2016 at 6:41 AM, vanilla38<EMAIL_ADDRESS>wrote:

Hello, I just installed mod_pagespeed on my Debian 7 frontend server and
when I put it on, CPU and RAM increase until 100% then crash server, here
is my configuration:
Debian 7
Apache 2.2.22
Intel(R) Xeon(R) CPU E5-1620 0 @ 3.60GHz (8threads)
4 x 16384 RAM (64GB)
the website is www.youzik.com with 2k-3k online peaks (it usually consume
less than 8% of the server CPU & RAM)
I dont really know how to figure out what's wrong, maybe anyone has
encountered the same issue ?
Thank you.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/pagespeed/mod_pagespeed/issues/1420, or mute the
thread
https://github.com/notifications/unsubscribe-auth/AB2kPYWDcj7SlvPQP1Rf22evscjyxTXrks5q2JbpgaJpZM4KdGRL
.

So far we have found that there is a slow but steady increase in CPU/RAM usage. Disabling rewrite_images makes that go away, but after enabling it again increasing cache size and dropping 50% of expensive rewrites did not help. The messages log from the admin pages did not show anything noteworthy as far as I could tell, but I let the statistics page open for couple of days [1]. The child_shutdown_count stat looks pretty high to me, is that normal?
[1] (sorry about the bad formatting)
Name 	Value	Number of changes
child_shutdown_count	70693	72104
file_cache_misses	11057298	50974
pcache_cohorts_beacon_cohort_misses	1379397	50968
stdio_fs_total_ops	4754795	50539
cache_misses	4148999	50524
cache_time_us<PHONE_NUMBER>	50524
resource_url_domain_acceptances	13372767	50524
rewrite_cached_output_misses	8295771	50524
shm_cache_misses	4149968	50524
cache_backend_hits	4013327	50523
pcache_cohorts_dom_misses	1378938	50523
ipro_not_rewritable	3526926	50522
converted_meta_tags	885214	50517
num_flushes	885596	50517
rewrite_cached_output_hits	8836210	50517
shm_cache_hits	8847483	50517
total_rewrite_count	885596	50517
file_cache_inserts	663225	50499
ipro_not_in_cache	621288	50482
ipro_recorder_resources	621288	50482
cache_inserts	661124	50476
ipro_recorder_failed	621008	50475
cache_backend_misses	500806	50424
resource_url_domain_rejections	16820769	50332
javascript_blocks_minified	1448377	50300
javascript_minify_uses	1433485	50273
javascript_reducing_minifications	1433545	50273
javascript_total_bytes_saved	14058098	50273
javascript_total_original_bytes	177666594	50273
file_cache_hits	365154	49383
ipro_served	385004	49328
cache_hits	365134	49107
javascript_did_not_shrink	14832	30355
cache_expirations	15267	19998
javascript_minification_failures	0	13543

I do not expect the child_shutdown_count to be that high.  If that's been running for two days, that means a child shuts down every 2 or 3 seconds.
Could we also disable InPlaceResourceOptimization?  I'm not sure if that site is fully reliant on IPRO, but it might just narrow down the source of the problem if it goes away with IPRO off.
A couple of more questions:
which Apache MPM?   Prefork?  Worker?
what pagespeed.conf customizations have been made?

Hello,
I use apache 2.2 with mpm worker on ubuntu 12.04 server with rewrite image and IPRO.
From about a one week run (need to reboot server for some updates), I only have 11 child_shutdown_count for 48310 rewrites and 295420 cache hits.
mod_pagespeed is still <IP_ADDRESS>
Eric

Hi Eric,
I assume you are writing this because you think there's some expected ratio
between child_shutdown_count and the number of rewrites or cache hits.
What were you expecting?
I don't think there's any relationship between those three statistics.  The
child_shutdown_count simply counts the number of times that a process
running PageSpeed, as a child subprocess of the root apache process, was
shutdown.  That is related mainly to Apache configuration settings about
child lifetime.
-Josh
On Sun, Dec 4, 2016 at 8:27 AM, eldk<EMAIL_ADDRESS>wrote:

Hello,
I use apache 2.2 with mpm worker on ubuntu 12.04 server with rewrite image
and IPRO.
From about a one week run (need to reboot server for some updates), I only
have 11 child_shutdown_count for 48310 rewrites and 295420 cache hits.
mod_pagespeed is still <IP_ADDRESS>
Eric
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/pagespeed/mod_pagespeed/issues/1420#issuecomment-264703964,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AB2kPVWWRZHFPFFImL7Tu6ibyN6VW6aWks5rEr_JgaJpZM4KdGRL
.

Hello,

I assume you are writing this because you think there's some expected ratio

Not at all, I was only pointing that with same Apache version (don't know which mpm is used) and some other close environment point I have no problem with high memory and cpu usage, mod_pagespeed is working as expected.
The main diff seems to be the use of only file/disk cache as I don't see any memcached stats.


Incorporating gemma.cpp as a Library in Android Project

I've generated Native C++ project on Android Studio in Windows to use gemma.cpp as library.
and fill CMakeLists.txt as below.
cmake_minimum_required(VERSION 3.22.1)

project("gemmacpp")

add_library(${CMAKE_PROJECT_NAME} SHARED
        # List C/C++ source files with relative paths to this CMakeLists.txt.
        native-lib.cpp)

target_link_libraries(${CMAKE_PROJECT_NAME}
        # List libraries link to the target library
        android
        log)

include(FetchContent)

FetchContent_Declare(sentencepiece GIT_REPOSITORY https://github.com/google/sentencepiece GIT_TAG  origin/master)
FetchContent_MakeAvailable(sentencepiece)

FetchContent_Declare(gemma GIT_REPOSITORY https://github.com/google/gemma.cpp GIT_TAG origin/main)
FetchContent_MakeAvailable(gemma)

FetchContent_Declare(highway GIT_REPOSITORY https://github.com/google/highway.git GIT_TAG da250571a45826b21eebbddc1e50d0c1137dee5f)
FetchContent_MakeAvailable(highway)

target_link_libraries(${CMAKE_PROJECT_NAME} libgemma hwy hwy_contrib sentencepiece)
FetchContent_GetProperties(gemma)
FetchContent_GetProperties(sentencepiece)
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${gemma_SOURCE_DIR})
target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE ${sentencepiece_SOURCE_DIR})

And there are lots of errors like below

[1/59] Linking CXX executable _deps\highway-build\tests\aligned_allocator_test
FAILED: _deps/highway-build/tests/aligned_allocator_test _deps/highway-build/aligned_allocator_test[1]_tests.cmake C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/aligned_allocator_test[1]_tests.cmake
cmd.exe /C "cd . && C:\Users\urimk\AppData\Local\Android\Sdk\ndk\25.1.8937393\toolchains\llvm\prebuilt\windows-x86_64\bin\clang++.exe --target=aarch64-none-linux-android30 --sysroot=C:/Users/urimk/AppData/Local/Android/Sdk/ndk/25.1.8937393/toolchains/llvm/prebuilt/windows-x86_64/sysroot -g -DANDROID -fdata-sections -ffunction-sections -funwind-tables -fstack-protector-strong -no-canonical-prefixes -D_FORTIFY_SOURCE=2 -Wformat -Werror=format-security  -std=c++17 -fno-limit-debug-info -static-libstdc++ -Wl,--build-id=sha1 -Wl,--fatal-warnings -Wl,--gc-sections -Wl,--no-undefined -Qunused-arguments -Wl,--gc-sections _deps/highway-build/CMakeFiles/aligned_allocator_test.dir/hwy/aligned_allocator_test.cc.o -o _deps\highway-build\tests\aligned_allocator_test  _deps/highway-build/libhwy.a  _deps/highway-build/libhwy_test.a  _deps/highway-build/libhwy_contrib.a  lib/libgtest.a  lib/libgtest_main.a  _deps/highway-build/libhwy.a  lib/libgtest.a  -pthread  -latomic -lm && cmd.exe /C "cd /D C:\Users\urimk\AndroidStudioProjects\GemmaApp\app.cxx\Debug\6p2d195k\arm64-v8a_deps\highway-build && C:\Users\urimk\AppData\Local\Android\Sdk\cmake\3.22.1\bin\cmake.exe -D TEST_TARGET=aligned_allocator_test -D TEST_EXECUTABLE=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/tests/aligned_allocator_test -D TEST_EXECUTOR= -D TEST_WORKING_DIR=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build -D TEST_EXTRA_ARGS= -D TEST_PROPERTIES= -D TEST_PREFIX= -D TEST_SUFFIX= -D TEST_FILTER= -D NO_PRETTY_TYPES=FALSE -D NO_PRETTY_VALUES=FALSE -D TEST_LIST=aligned_allocator_test_TESTS -D CTEST_FILE=C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/aligned_allocator_test[1]_tests.cmake -D TEST_DISCOVERY_TIMEOUT=60 -D TEST_XML_OUTPUT_DIR= -P C:/Users/urimk/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/GoogleTestAddTests.cmake""
CMake Error at C:/Users/urimk/AppData/Local/Android/Sdk/cmake/3.22.1/share/cmake-3.22/Modules/GoogleTestAddTests.cmake:83 (message):
Error running test executable.
  Path: 'C:/Users/urimk/AndroidStudioProjects/GemmaApp/app/.cxx/Debug/6p2d195k/arm64-v8a/_deps/highway-build/tests/aligned_allocator_test'
  Result: %1 is not a valid Win32 application.
  Output:

Is there anyone who can provide a solution or a successful example?

Hi, looks like you are attempting to run the Android binaries as Windows programs, which does not work.
CMake does have support for cross compiling, check out DCMAKE_CROSSCOMPILING_EMULATOR.

@jan-wassenberg
Hi,
I'm tring to make Android application with gemma.cpp.
And my Android Studio is on the windows10.
It seems that Android Studio does the cross compile for [arm64-v8a], [armeabi-v7a], [x86], [x86_64].
Do you have an example code for https://github.com/google/gemma.cpp?tab=readme-ov-file#incorporating-gemmacpp-as-a-library-in-your-project?

I do not have experience with Android development :)

Thanks for confirm.
I'll figure it out.

Did you make it?

@agchaowanhui
I still have a linking error.

@agchaowanhui I still have a linking error.
Would you like to exchange contact information?


separate process mode?

hello, first thank you for such an amazing library, good job!!. I am using a very intensive database operation that crashes the app even if the process is on a job, but if i use a normal service on a separate process it works like a charm, there is a way to config a job to run on a separate thread?.

Hi, no that's not possible at moment. I'd recommend starting the service with the different process from the job. That would be the easiest solution I see.


Adding resources for CSS

I would like to contribute to this. @ishubham21

I would like to contribute to this. @ishubham21

Assigned


Emit function, use of ...args

From testing in jsbench, I can't see a discernible performance difference between using fn.apply and fn.call, and there is a probable speed gain by avoiding the switch statement or the array creation for multiple parameters.

The spread (...) syntax is not supported in old browsers and the performance might be the same with newer browsers, but not with the older ones.

Thank you anyway.

👍


issue when building docker

Traceback (most recent call last):
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/utils.py", line 644, in _locate
backend-1   |     obj = getattr(obj, part)
backend-1   | AttributeError: module 'sam2' has no attribute 'sam2_video_predictor'
backend-1   |
backend-1   | During handling of the above exception, another exception occurred:
backend-1   |
backend-1   | Traceback (most recent call last):
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/utils.py", line 650, in _locate
backend-1   |     obj = import_module(mod)
backend-1   |   File "/opt/conda/lib/python3.10/importlib/init.py", line 126, in import_module
backend-1   |     return _bootstrap._gcd_import(name[level:], package, level)
backend-1   |   File "", line 1050, in _gcd_import
backend-1   |   File "", line 1027, in _find_and_load
backend-1   |   File "", line 1006, in _find_and_load_unlocked
backend-1   |   File "", line 688, in _load_unlocked
backend-1   |   File "", line 883, in exec_module
backend-1   |   File "", line 241, in _call_with_frames_removed
backend-1   |   File "/opt/sam2/server/sam2/sam2_video_predictor.py", line 14, in
backend-1   |     from sam2.modeling.sam2_base import NO_OBJ_SCORE, SAM2Base
backend-1   |   File "/opt/sam2/server/sam2/modeling/sam2_base.py", line 20, in
backend-1   |     from sam2.utils.kalman_filter import KalmanFilter
backend-1   |   File "/opt/sam2/server/sam2/utils/kalman_filter.py", line 2, in
backend-1   |     import scipy.linalg
backend-1   | ModuleNotFoundError: No module named 'scipy'
backend-1   |
backend-1   | The above exception was the direct cause of the following exception:
backend-1   |
backend-1   | Traceback (most recent call last):
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 134, in _resolve_target
backend-1   |     target = _locate(target)
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/utils.py", line 653, in _locate
backend-1   |     raise ImportError(
backend-1   | ImportError: Error loading 'sam2.sam2_video_predictor.SAM2VideoPredictor':
backend-1   | ModuleNotFoundError("No module named 'scipy'")
backend-1   | Are you sure that 'sam2_video_predictor' is importable from module 'sam2'?
backend-1   |
backend-1   | The above exception was the direct cause of the following exception:
backend-1   |
backend-1   | Traceback (most recent call last):
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/arbiter.py", line 608, in spawn_worker
backend-1   |     worker.init_process()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/workers/gthread.py", line 94, in init_process
backend-1   |     super().init_process()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/workers/base.py", line 135, in init_process
backend-1   |     self.load_wsgi()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/workers/base.py", line 147, in load_wsgi
backend-1   |     self.wsgi = self.app.wsgi()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/app/base.py", line 66, in wsgi
backend-1   |     self.callable = self.load()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 57, in load
backend-1   |     return self.load_wsgiapp()
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/app/wsgiapp.py", line 47, in load_wsgiapp
backend-1   |     return util.import_app(self.app_uri)
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/gunicorn/util.py", line 370, in import_app
backend-1   |     mod = importlib.import_module(module)
backend-1   |   File "/opt/conda/lib/python3.10/importlib/init.py", line 126, in import_module
backend-1   |     return _bootstrap._gcd_import(name[level:], package, level)
backend-1   |   File "", line 1050, in _gcd_import
backend-1   |   File "", line 1027, in _find_and_load
backend-1   |   File "", line 1006, in _find_and_load_unlocked
backend-1   |   File "", line 688, in _load_unlocked
backend-1   |   File "", line 883, in exec_module
backend-1   |   File "", line 241, in _call_with_frames_removed
backend-1   |   File "/opt/sam2/server/app.py", line 35, in
backend-1   |     inference_api = InferenceAPI()
backend-1   |   File "/opt/sam2/server/inference/predictor.py", line 89, in init
backend-1   |     self.predictor = build_sam2_video_predictor(
backend-1   |   File "/opt/sam2/server/sam2/build_sam.py", line 129, in build_sam2_video_predictor
backend-1   |     model = instantiate(cfg.model, recursive=True)
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 226, in instantiate
backend-1   |     return instantiate_node(
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 333, in instantiate_node
backend-1   |     target = _resolve_target(node.get(_Keys.TARGET), full_key)
backend-1   |   File "/opt/conda/lib/python3.10/site-packages/hydra/_internal/instantiate/_instantiate2.py", line 139, in _resolve_target
backend-1   |     raise InstantiationException(msg) from e
backend-1   | hydra.errors.InstantiationException: Error locating target 'sam2.sam2_video_predictor.SAM2VideoPredictor', set env var HYDRA_FULL_ERROR=1 to see chained exception.
backend-1   | full_key: model
backend-1   | [2024-11-25 05:39:52 +0000] [8] [INFO] Worker exiting (pid: 8)
backend-1   | [2024-11-25 05:39:52 +0000] [7] [ERROR] Worker (pid:8) exited with code 3
backend-1   | [2024-11-25 05:39:52 +0000] [7] [ERROR] Shutting down: Master
backend-1   | [2024-11-25 05:39:52 +0000] [7] [ERROR] Reason: Worker failed to boot.

+1

The Docker file currently located in the sam2 folder is identical to the one from the original repository. We have not yet provided support or made any necessary modifications to it.
However, from the error message, it seems like it is missing the additional packages required to run samurai, you may try to update the docker accordingly.


Comment that Elissa made me do

Elissa made me do it

Incredible code wow!

Looks good!

This is me leaving a comment for myself


Feature: MacOs Support

Hey @edbeeching
I added macos support for stable baseline 3 wrapper:
python examples/stable_baselines3_example.py --env_path=./examples/JumperHard/bin/JumperHard.app --speedup=8
I haven't had time yet to look into ray, sf and clean rl yet.

Okay I got this working for:

stablebaselines 3 python examples/stable_baselines3_example.py --env_path=./examples/JumperHard/bin/JumperHard.app --speedup=8
clearn rl python examples/clean_rl_example.py --env_path=./examples/JumperHard/bin/JumperHard.app --speedup=8

It does not yet work properly for:

rllib gdrl --trainer=rllib --env=gdrl --env_path=./examples/JumperHard/bin/JumperHard.app --num_workers=10 --experiment=JumperHard --viz  --speedup=8 --batched_sampling=True
samplefactory gdrl --trainer=sf --env=gdrl --env_path=./examples/JumperHard/bin/JumperHard.app --num_workers=10 --experiment=JumperHard --viz  --speedup=8 --batched_sampling=True

as rllib and sf do not support apple m1 gpu acceleration yet.
Also see:

https://github.com/alex-petrenko/sample-factory/issues/264
https://github.com/ray-project/ray/issues/28321
https://discuss.ray.io/t/rllib-pytorch-and-mac-m1-gpus-no-available-node-types-can-fulfill-resource-request/6769/9

However it is quite likely that this will already work on older intel macs, but I can't confirm because I only have a m1.

This is great! Thank you

Feel free to merge if you are happy with it


implement angular ViewChildren on ListView to get the instance of child component per item

From @XoronEdge on December 10, 2017 10:34
on tap per item to show more detail
But viewchildren userdetail variable have nothing  But child component view is display

child component.ts
import { Component, Input} from "@angular/core";

@Component({
	selector:"user-some-detail",
	templateUrl:"./pages/some-detail/user-some-detail.page.html"
})
export class UserSomeDetail {

	@Input("item")item:any;
	private canShowMore:boolean;

	public constructor() {
		this.canShowMore = true;
	}
	public setShowMore(value: boolean) {
		this.canShowMore = value;
	}
}

child view
<StackLayout>

        <StackLayout *ngIf="canShowMore">

        </StackLayout>
</StackLayout>

Parent ts
import { Component, ViewChildren, QueryList, AfterViewInit }  from "@angular/core";

import { UserSomeDetail } from "../../pages/some-detail/user-some-detail.page";

class User {
	public constructor(public name: string, public age: number) {
	}
}

@Component({
	selector: "user-list",
	templateUrl: "./pages/user-list/user-list.page.html"
})
export class UserList implements AfterViewInit{
	@ViewChildren(UserSomeDetail) userdetail:QueryList<UserSomeDetail>;
	public users: Array<User>

	public constructor() {
		this.users = [];
		for(let i = 0; i <= 10; i++) {
			this.users.push(new User("lala"+i, i));
		}
	}

	public ngAfterViewInit() {
		//for testing use console
		console.log(this.userdetail);
		this.userdetail.forEach(ins => ins.setShowMore(true));
	}

	public onItemTap(args) {
	}

}

Parent view
<Page>
	 <ListView [items]="users" (itemTap)="onItemTap($event)">
    	<ng-template let-item="item" let-i="index" >
    		<user-some-detail [item]="item"></user-some-detail>
    	</ng-template>
	</ListView>
</Page>

Copied from original issue: NativeScript/NativeScript#5153

Hi @XoronEdge,
Thank you for contacting us.
We reviewed your case, however, it would help if you provide some more info about your case and why you need to access the child elements while using the ViewChildren? It would also help if you also provide info about what you are would like to achieve as a final result after you get the instance for all items?
Thank you in advance for your cooperation.

when we tap on User it show more detail about user in same view as child component so when user tap on User or per item.The list view function onItemTap change the the property 'canShowMore' of child component to true .so i need the instance of child component in parent component.child view you see in stacklayout i use ngif="canShowMore".OnTap it become true and show userdetail

Hi @XoronEdge,
In case you need to show some content dynamically in the ListView item cell, you could set up the value for the ngIf directive for every element via bindingContext.
On item tap event you could change the visibility of the taped item. Keep in mind that the ListView's refresh method should be called after those changes. This will allow the changes with the visibility to be applied.
For your convenience, I am attaching sample project, where the above-given suggestions are demonstrated.
Archive.zip


Ghost Drive

On occasion when the power is abruptly cut to the RaspberryPi running dencam, USB attached storage drives (microSD cards in card readers) do not appear to be properly ejected. The name of the drive appears to stick in /media/pi.
Several of my Pi's (I am currently testing five with four different batteries) have been neglecting to display the second status page. This, as I have come to find out, is because the system is remembering the names of my attached storage when the pi is not properly shut down (nearly every time I just pull the plug). This is easy enough to solve (just ssh in and cd /media/pi and sudo rmdir X). But in the field, this could be catastrophic as these pseudo-replicated drives prevent dencam.py from writing to either the external or internal storage.
Potential fix:
EDIA_DIR = '/media/pi'

def clearGhostDrives():
    """Delete non-existent USB drives"""
    # When power is removed (no shut-down) and a USB drive is removed,
    #  then the power is restored, a ghost folder is left in /media/pi/
    # Distinguishing between ghost folders and real ones has proven to be too much of a challenge
    # Instead, this function deletes all the USB folders
    # This is executed when powering up, before the USB drive is mounted
    # Therefore, after this removes all the folders, the system mounts the USB drive that actually exists

    # Locals
    DEL_DIR_CMD = 'sudo rm -r %s/%s'

    usbDrivesList = os.listdir(MEDIA_DIR)
    if len(usbDrivesList) > 1:
        for usbDriveName in usbDrivesList:
            doLinuxCmd(DEL_DIR_CMD % (MEDIA_DIR, usbDriveName))

@bkirshh I have been unsuccessful in being able to replicate this issue. Could you provide me with the exact steps that you did to cause the ghost drive issue? Thanks!

After my devices stabilize (we fix the slow DenCam issue) I'll try again to replicate. In the meantime can you try pulling the power on a functioning DenCam over and over again, maybe ten times.  See what happens.


d4mac, d4win stable 1.12.5 and beta 34 updates

Proposed changes
Docker for Mac, Docker for Windows updates for:

Stable 1.13.0
Beta 34

Please take a look
@MagnusS @ebriney @simonferquel @friism @mstanleyjones

LGTM, merging to get this published. Please send more comments if you see things you want updated.


Add arm64/aarch64

Checklist

[ ] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[ ] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Needs https://github.com/conda-forge/colmap-feedstock/pull/17


[feature request] Configurable Upsert parameter for Cluster resource

What problem are you facing?

Unable to add a cluster that was not initially added to ArgoCD with this Provider. Error is received that the content differs and upsert is not enabled.
https://github.com/crossplane-contrib/provider-argocd/blob/v0.5.0/pkg/controller/cluster/controller.go#L269
How could Crossplane help solve your problem?

Allowing Upsert for Cluster resource to be set to true should solve this issue

/fresh

/fresh

Version 0.8.0 allows declaring an existing cluster without any issue


Game launches, but then closes right away

Logging in works, but as soon as the EAC loading bar finishes and the outline of the game window pops up, it closes right away. Using PC Registration but not OTP.
debug.log:
[0725/033904.501:WARNING:chrome_browser_cloud_management_controller.cc(87)] Could not create policy manager as CBCM is not enabled.
[0725/033924.263:WARNING:frame_impl.cc(420)] SendProcessMessage sent to detached frame<PHONE_NUMBER>1 [5,1] will be ignored
[0725/033924.336:INFO:CONSOLE(1537)] "Uncaught ReferenceError: $ is not defined", source: https://launcher.naeu.playblackdesert.com/en-US/Main (1537)

Resolved by launching the launcher (this program) as admin

@Lunatory if the game is installed under C drive I believe you have to tick the run as admin option in order to start the game properly, to run the game without admin rights the game must not be installed under C drive


Incorrect tests?

We have a mock for push.create_push_request
https://github.com/SFDO-Tooling/CumulusCI/blob/48db7daf2743ae0b518a6af2027c7e899ded4ecb/cumulusci/tasks/push/tests/test_push_tasks.py#L499
The type of the mock is Tuple[dict, int]
The return value for the real function seems to be Tuple[str,int]
https://github.com/SFDO-Tooling/CumulusCI/blob/44b0d6a3e44427652f018e23684e37d232e7eaf0/cumulusci/tasks/push/push_api.py#L584
Perhaps this was hidden by the memoization code?

I don't think it's hidden by the memoization code; I think it's just that the task doesn't do anything with this value except store it in the return values, and the tests didn't make an assertion about it. Fixed in https://github.com/SFDO-Tooling/CumulusCI/pull/2315/commits/4184393965b8f3d27b8a4d4fe0158cc510c1883a

I don't think it's hidden by the memoization code; I think it's just that the task doesn't do anything with this value except store it in the return values, and the tests didn't make an assertion about it. Fixed in https://github.com/SFDO-Tooling/CumulusCI/pull/2315/commits/4184393965b8f3d27b8a4d4fe0158cc510c1883a


Add a default constructor

I am developing a project that needs the PID class to be inherited or prototyped, what is not allowed with a class with no default constructor. I am using PID_v1 and I had to modify the library in order to create a default constructor, but I am not comfortable using non-standard libraries. I want my code to be as compatible as possible with the tools available to the community, so people can use my work as I use the work of others.
I thought about creating a branch on PID-v1 and ask for a pull request of my version, but that project is kind of abandoned.
Is it possible to include a default constructor in QuickPID? I would gladly do it myself if I was allowed to create a branch and them request a pull.

Is it possible to include a default constructor in QuickPID?
Yes. Were you needing something like this?
#pragma once
#ifndef QuickPID_h
#define QuickPID_h

class QuickPID {

  public:

    enum class Control : uint8_t {manual, automatic, timer};        // controller mode
    enum class Action : uint8_t {direct, reverse};                  // controller action
    enum class pMode : uint8_t {pOnError, pOnMeas, pOnErrorMeas};   // proportional mode
    enum class dMode : uint8_t {dOnError, dOnMeas};                 // derivative mode
    enum class iAwMode : uint8_t {iAwCondition, iAwClamp, iAwOff};  // integral anti-windup mode

    // commonly used functions ************************************************************************************

    // Default constructor
    QuickPID() {}

    // Constructor. Links the PID to Input, Output, Setpoint, initial tuning parameters and control modes.
    QuickPID(float *Input, float *Output, float *Setpoint, float Kp, float Ki, float Kd,
             pMode pMode, dMode dMode, iAwMode iAwMode, Action Action);

    // Overload constructor links the PID to Input, Output, Setpoint, tuning parameters and control Action.
    // Uses defaults for remaining parameters.
    QuickPID(float *Input, float *Output, float *Setpoint, float Kp, float Ki, float Kd, Action Action);

    // Simplified constructor which uses defaults for remaining parameters.
    QuickPID(float *Input, float *Output, float *Setpoint);

I would also consider a pull request ... or could just publish this as an update with new version (QuickPID 3.1.3)

Added default constrictor - new version published (QuickPID 3.1.3)
Converting to discussion ... let me know if the update is suitable, or if any changes are needed.
Thanks,
dlloyd


Error<EMAIL_ADDRESS>wrong number of arguments

Hi,
I'm trying to install<EMAIL_ADDRESS>on my Mac. I'm following the installation instructions on the readme file. When I try brew install<EMAIL_ADDRESS>, I get this error
$ brew install<EMAIL_ADDRESS>Error<EMAIL_ADDRESS>wrong number of arguments (given 1, expected 0)

I've tried re-running this command after brew cleanup and  brew upgrade.
Can someone help me fix this error?
Thanks

same here


How to change Black to something else?

What to put in the Developer code to change the Black to something warmer?
Or Greytone shades..  no not 50 shades...

Also interested in this one...
IT would be grate to have solarized dark theme... :D

I have started to work on using custom SVG filters but Chrome had bugs with dynamic content. I will try suggested workaround soon. Then it would be possible to experiment with it.

Or for now, just leave the code we have to past in developertools here?
(mid-grey)

Dynamic Theme makes neutral text a little bit yellow. To make background more grey, decrease the contrast.