Tracker crashes when updating ConfigObject

We use a custom Tracker one firmware and custom config-schema.
Now we added more config parameters ConfigObject("tempRed" to a custom group we had already and also updated the config-schema.json
It seems the tracker is crashing while loading the last local settings from EEPROM.
Is it possible to clear the locally stored parameter settings so the new structured config gets fetched from the cloud after the device is online?
If I comment out the added config part in the firmware the device is working fine again.

below the simplified code section:

setup()

    static ConfigObject chargeDesc("charge", {
        ConfigBool("pause", &PauseCharging),
        ConfigBool("stop", &StopCharging),
        ConfigInt("dcLimit", &UserDcFastChargeCurrentLimit, 0, 65535),
        // this part is added
        ConfigObject("tempRed", {
            ConfigBool("tempRedEn", &TempReductionEnable),
            ConfigInt("reduceTemp", &ReduceTemp, 0, 100)
        })
    });
    ConfigService::instance().registerModule(chargeDesc);

config-schema.json

		"charge": {
			"$id": "#/properties/charge",
			"type": "object",
			"title": "Charge",
			"description": "Charging control",
			"default": {},
			"minimumFirmwareVersion": 120,
			"deviceLevelOnly": true,
			"properties": {
				"pause": {
				...
				},
				// this part is added
				"tempRed": {
					"$id": "#/properties/charge/tempRed",
					"type": "object",
					"title": "Temperature dependent reduction",
					"description": "Reduce charging speed when battery gets hot.",
					"default": {},
					"properties": {
						"tempRedEn": {
							"$id": "#/properties/charge/tempRed/tempRedEn",
							"type": "boolean",
							"title": "Enable",
							"description": "...",
							"default": false,
							"examples": [
								true
							]
						},
						"reduceTemp": {
							"$id": "#/properties/charge/tempRed/reduceTemp",
							"type": "number",
							"title": "Reduction temperature",
							"description": "blablabla.",
							"default": 45,
							"examples": [
								50
							],
							"minimum": 0,
							"maximum": 100
						}
					}

Yes, you can clear the configuration on the filesystem by running the {"cmd":"reset_to_factory"} command in Various Console Commands · particle-iot/tracker-edge Wiki · GitHub.

Some advice on debugging the crashing problem may be to separate the configuration into another function. I have noticed that several ConfigObject instances residing in the same place may consume a bunch of space on the stack and cause an overflow. We'll work on a different way to setup these objects so that the stack isn't used up in the future.

Thank you.
I was not able to create multiple ConfigObject's with the same name in the constructor variables.
I have splitten the ConfigObject and created a new tab which works.

The firmware is still based on tracker-edge V17 and device OS 4.0.
Should we update to improve stability?
We had a few times that a device suddenly started to publish the location every second even the config limits it to every 600 seconds. Once the trigger was "GPS lock" and an other time "radius" while geofencing was disabled all the time.
{"cmd":"reset_to_factory"} dit solve the issue but it should not happen in the first place.

There were some fixes in v18 to address the extra publishes. Device OS 4.2.0 will come out very soon and will have fixes for some UART buffering problems (if applicable), security, and various other things.

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.