Hardware components | ||||||
| × | 1 | ||||
Software apps and online services | ||||||
|
Today, even as the technology developed, motor accidents are still on the rise. A major fraction of accidents is resulting due to the carelessness of the driver. This is majorly noticed when the concentration is lost from the road, even for a split of a second. Whenever a motor accident has happened, getting immediate medical attention at the earliest can decide the difference between life and death.
The solution employs a smart helmet (two-wheelers) powered by NXP Rapid IOT prototyping kit to provide the user with all necessary information regarding his ride. The system has a accident detection (collision warning) system that will alert when a collision has been detected.
Keywords: Project ADDICT, Rapid IOT, NXP
-----------------------------------------------------------------------------------------------------------------
Unfortunately, the Rapid IOT kit was received a few days back due to some issues. So the time was short to extensively tinker into the project. However, the accident detection system was developed with some fruitful results. The issue with the device in flashing had also lead to many unsuccessful attempts.
The product NXP Rapid IOT Prototyping Kit is a unique marvel on its own. It packs a ton of features such as an ARM-based powerful processor, multiple wireless connectivity options including NFC, IC security, integrated motion, and environment sensors, cloud connectivity etc. to name a few. Currently, there are no products that boast all these features in such a compact form factor.
Along with the device, we need a couple more items to make it work. They are:
Tip 1: Its advisable to install the standard Atmosphere mobile app along with the above as we may experience issues while using the NXP counterparts.
For connecting the device with our app and cloud, we need to register and provision the device. The device was not detected with the firmware that was pre-loaded. Also, the battery of your Rapid IoT probably depletes very fast.
Tip 2: So its advisable to operate the device by powering it externally via USB.
Tip 3: If you are finding a bricked device, it may be because the device firmware is corrupt (still, don't know why). We were able to unbrick it by flashing the firmware again via the NXP Studio IDE.
For accident or collision detection, we need to process the values of the accelerometer module present in the device. So we started with programming the application via the Rapid IOT web IDE. Tutorial on how to program the device can be found here.
The NXP IOT firmware file is included as an attachment in this project.
Download the file and import it to the Rapid IOT studio IDE. Compile the project and download the firmware as a .bin file. This .bin file is used to flash the firmware of the device. Detailed tutorial on flashing the firmware can be found here.
TestingThe project was tested using a simulated accident scenario where we used hard movement and hard stopping the movement of the device. The device was able to detect the event of an accident. But there were some false detection too especially during free falls.
- Rapid IOT app issues: Whenever we tried to connect the app with the device, it crashed. We checked with other mobile phones and the problem still existed in a few cases. The device was not discovered in the Bluetooth list. Sometimes, the app doesn't come back to the device information page after login. Due to these issues, we used the Atmosphere app in those mobile phones and it worked flawlessly.
- Storage Issues: Whenever we flash a new firmware, the older bin file will be erased from the storage. So once we flash the file, we won't be able to take a copy of it from the Rapid IOT device. So I would suggest having a file backup of the firmware always in your laptop in case if you wish to revert to an earlier compiled version.
- Battery issues: The device itself is not battery friendly. Its recommended to power the device using USB while working and running.
- Flashing issues: The device refused to enter flashing mode many times.
Even though the device that we had obtained showed some signs of software damage, we plan to modify our application more extensively in the coming days to provide more features into the project.
{
"name": "ADDICT",
"createVersion": "2017-08-12",
"description": "Project ADDICT",
"lastModified": "2018-03-28T15:24:07.578Z",
"created": "2018-03-28T15:24:07.578Z",
"meta": {
"projectTypeName": "NXP Rapid IoT",
"projectTypeId": "NxpRpk"
},
"planes": {
"NXP Rapid IoT": {
"type": "mcuxpresso",
"compilerVersion": "latest",
"variants": [
"NxpRpk"
],
"meta": {},
"elements": [
{
"name": "ThreadOnOff",
"type": "EmbeddedOnOffDisplay",
"variants": [
"embedded",
"triggers",
"abilities",
"properties",
"variables",
"rpk"
],
"properties": {
"errorData": {},
"code": {
"trigger": "\treturn ATMO_Status_Success;",
"displayPage": "\n\tATMO_UI_Page_DisplayPageByCoord(ATMO_PROPERTY(ThreadOnOff, x), ATMO_PROPERTY(ThreadOnOff, y), false);\n\treturn ATMO_Status_Success;\n\t",
"onDisplayed": "\n\treturn ATMO_Status_Success;\n ",
"topRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"bottomRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"topLeftButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"setup": "\n ATMO_UI_PAGE_Config_t config;\n config.hidden = ATMO_PROPERTY(ThreadOnOff, pageHidden);\n config.textColor = ATMO_PROPERTY(ThreadOnOff, textColor);\n\tconfig.activeButtons = ATMO_UI_Page_GetButtonMask(ATMO_PROPERTY(ThreadOnOff, topRightButtonEnabled),\n\t\tATMO_PROPERTY(ThreadOnOff,bottomRightButtonEnabled), ATMO_PROPERTY(ThreadOnOff, topLeftButtonEnabled), ATMO_PROPERTY(ThreadOnOff, bottomLeftButtonEnabled));\n\tconfig.x = ATMO_PROPERTY(ThreadOnOff, x);\n config.y = ATMO_PROPERTY(ThreadOnOff, y);\n\tstrncpy(config.topLeftButtonLabel, ATMO_PROPERTY(ThreadOnOff, topLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.topRightButtonLabel, ATMO_PROPERTY(ThreadOnOff, topRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomLeftButtonLabel, ATMO_PROPERTY(ThreadOnOff, bottomLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomRightButtonLabel, ATMO_PROPERTY(ThreadOnOff, bottomRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n config.spanX = ATMO_PROPERTY(ThreadOnOff, spanX);\n\tconfig.spanY = ATMO_PROPERTY(ThreadOnOff, spanY);\n config.title = ATMO_PROPERTY(ThreadOnOff, pageTitle);\n config.titleHidden = ATMO_PROPERTY(ThreadOnOff, titleHidden);\n ATMO_UI_SELECTICON_Init(&config, 2, true, ATMO_PROPERTY(ThreadOnOff, persist), ATMO_PROPERTY(ThreadOnOff, differentStartup));\n ATMO_VARIABLE(ThreadOnOff, pageHandle) = config.templateInstance;\n ATMO_UI_SELECTICON_SetIcon(config.templateInstance, ATMO_PROPERTY(ThreadOnOff,icon));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 0, \"Off\", !ATMO_PROPERTY(ThreadOnOff, initialValue));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 1, \"On\", ATMO_PROPERTY(ThreadOnOff, initialValue));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(ThreadOnOff, offSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(ThreadOnOff, onSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(ThreadOnOff, offSetStartup));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(ThreadOnOff, onSetStartup));\n ATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(ThreadOnOff,pageHandle), 1, ATMO_ABILITY(ThreadOnOff, topRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(ThreadOnOff,pageHandle), 2, ATMO_ABILITY(ThreadOnOff, bottomRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(ThreadOnOff,pageHandle), 3, ATMO_ABILITY(ThreadOnOff, topLeftButtonPressed));\n ATMO_UI_SELECTICON_RegisterOnDisplayedAbilityHandle(ATMO_VARIABLE(ThreadOnOff,pageHandle), ATMO_ABILITY(ThreadOnOff, onDisplayed));\n ATMO_UI_SELECTICON_OverlaySaved(ATMO_VARIABLE(ThreadOnOff, pageHandle));\n return ATMO_Status_Success;\n ",
"setOff": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(ThreadOnOff,pageHandle), 0, true);\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"setOn": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(ThreadOnOff,pageHandle), 0, false);\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSet": "\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"onSet": "\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSetStartup": "\treturn ATMO_Status_Success;",
"onSetStartup": "\treturn ATMO_Status_Success;"
},
"variables": {
"pageHandle": {
"type": "ATMO_DriverInstanceHandle_t"
}
},
"embeddedPropertyConversions": {
"pageTitle": "string",
"topRightButtonLabel": "string",
"bottomRightButtonLabel": "string",
"topLeftButtonLabel": "string",
"bottomLeftButtonLabel": "string",
"label": "string"
},
"codeUserChanged": {
"onDisplayed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"valueChanged": false
},
"textColor": "GUI_GREEN",
"pageTitle": "Thread",
"titleHidden": false,
"pageHidden": false,
"topRightButtonLabel": "",
"topRightButtonEnabled": false,
"bottomRightButtonLabel": "Join",
"bottomRightButtonEnabled": true,
"topLeftButtonLabel": "",
"topLeftButtonEnabled": false,
"bottomLeftButtonLabel": "Toggle",
"bottomLeftButtonEnabled": true,
"x": "1",
"y": "2",
"spanX": 1,
"spanY": 1,
"icon": "icon_settings_thread",
"initialValue": false,
"persist": true,
"differentStartup": true
},
"meta": {
"editorX": 435,
"editorY": 266,
"lastTrigger": "offSetStartup"
},
"triggers": {
"triggered": [],
"onDisplayed": [],
"topRightButtonPressed": [],
"bottomRightButtonPressed": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "EmbeddedNxpRpkThread",
"targetAbility": "join"
}
],
"topLeftButtonPressed": [],
"offSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOffFunc",
"targetAbility": "trigger"
}
],
"setOn": [],
"onSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOnFunc",
"targetAbility": "trigger"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "BluetoothOnOff",
"targetAbility": "setOff"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThrRebootReqPage",
"targetAbility": "displayPage"
}
],
"offSetStartup": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOffFunc",
"targetAbility": "trigger"
}
],
"onSetStartup": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "BluetoothOnOff",
"targetAbility": "setOff"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOnFunc",
"targetAbility": "trigger"
}
],
"valueChanged": []
},
"interruptAbilities": {
"trigger": false,
"displayPage": false,
"onDisplayed": false,
"topRightButtonPressed": false,
"bottomRightButtonPressed": false,
"topLeftButtonPressed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"offSetStartup": false,
"onSetStartup": false
},
"abilities": [
{
"name": "trigger",
"triggers": [
"triggered"
]
},
{
"name": "displayPage",
"triggers": []
},
{
"name": "onDisplayed",
"triggers": [
"onDisplayed"
]
},
{
"name": "topRightButtonPressed",
"triggers": [
"topRightButtonPressed"
]
},
{
"name": "bottomRightButtonPressed",
"triggers": [
"bottomRightButtonPressed"
]
},
{
"name": "topLeftButtonPressed",
"triggers": [
"topLeftButtonPressed"
]
},
{
"name": "setup",
"triggers": []
},
{
"name": "setOff",
"triggers": [
"offSet"
]
},
{
"name": "setOn",
"triggers": [
"setOn"
]
},
{
"name": "offSet",
"triggers": [
"offSet"
]
},
{
"name": "onSet",
"triggers": [
"onSet"
]
},
{
"name": "offSetStartup",
"triggers": [
"offSetStartup"
]
},
{
"name": "onSetStartup",
"triggers": [
"onSetStartup"
]
}
]
},
{
"name": "BluetoothOnOff",
"type": "EmbeddedOnOffDisplay",
"variants": [
"embedded",
"triggers",
"abilities",
"properties",
"variables",
"rpk"
],
"properties": {
"errorData": {},
"code": {
"trigger": "\treturn ATMO_Status_Success;",
"displayPage": "\n\tATMO_UI_Page_DisplayPageByCoord(ATMO_PROPERTY(BluetoothOnOff, x), ATMO_PROPERTY(BluetoothOnOff, y), false);\n\treturn ATMO_Status_Success;\n\t",
"onDisplayed": "\n\treturn ATMO_Status_Success;\n ",
"topRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"bottomRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"topLeftButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"setup": "\n ATMO_UI_PAGE_Config_t config;\n config.hidden = ATMO_PROPERTY(BluetoothOnOff, pageHidden);\n config.textColor = ATMO_PROPERTY(BluetoothOnOff, textColor);\n\tconfig.activeButtons = ATMO_UI_Page_GetButtonMask(ATMO_PROPERTY(BluetoothOnOff, topRightButtonEnabled),\n\t\tATMO_PROPERTY(BluetoothOnOff,bottomRightButtonEnabled), ATMO_PROPERTY(BluetoothOnOff, topLeftButtonEnabled), ATMO_PROPERTY(BluetoothOnOff, bottomLeftButtonEnabled));\n\tconfig.x = ATMO_PROPERTY(BluetoothOnOff, x);\n config.y = ATMO_PROPERTY(BluetoothOnOff, y);\n\tstrncpy(config.topLeftButtonLabel, ATMO_PROPERTY(BluetoothOnOff, topLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.topRightButtonLabel, ATMO_PROPERTY(BluetoothOnOff, topRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomLeftButtonLabel, ATMO_PROPERTY(BluetoothOnOff, bottomLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomRightButtonLabel, ATMO_PROPERTY(BluetoothOnOff, bottomRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n config.spanX = ATMO_PROPERTY(BluetoothOnOff, spanX);\n\tconfig.spanY = ATMO_PROPERTY(BluetoothOnOff, spanY);\n config.title = ATMO_PROPERTY(BluetoothOnOff, pageTitle);\n config.titleHidden = ATMO_PROPERTY(BluetoothOnOff, titleHidden);\n ATMO_UI_SELECTICON_Init(&config, 2, true, ATMO_PROPERTY(BluetoothOnOff, persist), ATMO_PROPERTY(BluetoothOnOff, differentStartup));\n ATMO_VARIABLE(BluetoothOnOff, pageHandle) = config.templateInstance;\n ATMO_UI_SELECTICON_SetIcon(config.templateInstance, ATMO_PROPERTY(BluetoothOnOff,icon));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 0, \"Off\", !ATMO_PROPERTY(BluetoothOnOff, initialValue));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 1, \"On\", ATMO_PROPERTY(BluetoothOnOff, initialValue));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(BluetoothOnOff, offSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(BluetoothOnOff, onSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(BluetoothOnOff, offSetStartup));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(BluetoothOnOff, onSetStartup));\n ATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(BluetoothOnOff,pageHandle), 1, ATMO_ABILITY(BluetoothOnOff, topRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(BluetoothOnOff,pageHandle), 2, ATMO_ABILITY(BluetoothOnOff, bottomRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(BluetoothOnOff,pageHandle), 3, ATMO_ABILITY(BluetoothOnOff, topLeftButtonPressed));\n ATMO_UI_SELECTICON_RegisterOnDisplayedAbilityHandle(ATMO_VARIABLE(BluetoothOnOff,pageHandle), ATMO_ABILITY(BluetoothOnOff, onDisplayed));\n ATMO_UI_SELECTICON_OverlaySaved(ATMO_VARIABLE(BluetoothOnOff, pageHandle));\n return ATMO_Status_Success;\n ",
"setOff": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(BluetoothOnOff,pageHandle), 0, true);\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"setOn": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(BluetoothOnOff,pageHandle), 0, false);\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSet": "\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"onSet": "\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSetStartup": "\treturn ATMO_Status_Success;",
"onSetStartup": "\treturn ATMO_Status_Success;"
},
"variables": {
"pageHandle": {
"type": "ATMO_DriverInstanceHandle_t"
}
},
"embeddedPropertyConversions": {
"pageTitle": "string",
"topRightButtonLabel": "string",
"bottomRightButtonLabel": "string",
"topLeftButtonLabel": "string",
"bottomLeftButtonLabel": "string",
"label": "string"
},
"codeUserChanged": {
"onDisplayed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"valueChanged": false
},
"textColor": "GUI_BLUE",
"pageTitle": "Bluetooth",
"titleHidden": false,
"pageHidden": false,
"topRightButtonLabel": "",
"topRightButtonEnabled": false,
"bottomRightButtonLabel": "",
"bottomRightButtonEnabled": false,
"topLeftButtonLabel": "",
"topLeftButtonEnabled": false,
"bottomLeftButtonLabel": "Toggle",
"bottomLeftButtonEnabled": true,
"x": "0",
"y": "2",
"spanX": 1,
"spanY": 1,
"icon": "icon_settings_bluetooth",
"initialValue": true,
"persist": true,
"differentStartup": true
},
"meta": {
"editorX": 447,
"editorY": 140,
"lastTrigger": "onSetStartup"
},
"triggers": {
"triggered": [],
"onDisplayed": [],
"topRightButtonPressed": [],
"bottomRightButtonPressed": [],
"topLeftButtonPressed": [],
"offSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "BtOffFunc",
"targetAbility": "trigger"
}
],
"setOn": [],
"onSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "BtOnFunc",
"targetAbility": "trigger"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOnOff",
"targetAbility": "setOff"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "BleRebootReqPage",
"targetAbility": "displayPage"
}
],
"offSetStartup": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "BtOffFunc",
"targetAbility": "trigger"
}
],
"onSetStartup": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "ThreadOnOff",
"targetAbility": "setOff"
},
{
"mapping": {},
"targetOrder": [],
"targetElement": "BtOnFunc",
"targetAbility": "trigger"
}
],
"valueChanged": []
},
"interruptAbilities": {
"trigger": false,
"displayPage": false,
"onDisplayed": false,
"topRightButtonPressed": false,
"bottomRightButtonPressed": false,
"topLeftButtonPressed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"offSetStartup": false,
"onSetStartup": false
},
"abilities": [
{
"name": "trigger",
"triggers": [
"triggered"
]
},
{
"name": "displayPage",
"triggers": []
},
{
"name": "onDisplayed",
"triggers": [
"onDisplayed"
]
},
{
"name": "topRightButtonPressed",
"triggers": [
"topRightButtonPressed"
]
},
{
"name": "bottomRightButtonPressed",
"triggers": [
"bottomRightButtonPressed"
]
},
{
"name": "topLeftButtonPressed",
"triggers": [
"topLeftButtonPressed"
]
},
{
"name": "setup",
"triggers": []
},
{
"name": "setOff",
"triggers": [
"offSet"
]
},
{
"name": "setOn",
"triggers": [
"setOn"
]
},
{
"name": "offSet",
"triggers": [
"offSet"
]
},
{
"name": "onSet",
"triggers": [
"onSet"
]
},
{
"name": "offSetStartup",
"triggers": [
"offSetStartup"
]
},
{
"name": "onSetStartup",
"triggers": [
"onSetStartup"
]
}
]
},
{
"name": "AccelOnOff",
"type": "EmbeddedOnOffDisplay",
"variants": [
"embedded",
"triggers",
"abilities",
"properties",
"variables",
"rpk"
],
"properties": {
"errorData": {},
"code": {
"trigger": "\treturn ATMO_Status_Success;",
"displayPage": "\n\tATMO_UI_Page_DisplayPageByCoord(ATMO_PROPERTY(AccelOnOff, x), ATMO_PROPERTY(AccelOnOff, y), false);\n\treturn ATMO_Status_Success;\n\t",
"onDisplayed": "\n\treturn ATMO_Status_Success;\n ",
"topRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"bottomRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"topLeftButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"setup": "\n ATMO_UI_PAGE_Config_t config;\n config.hidden = ATMO_PROPERTY(AccelOnOff, pageHidden);\n config.textColor = ATMO_PROPERTY(AccelOnOff, textColor);\n\tconfig.activeButtons = ATMO_UI_Page_GetButtonMask(ATMO_PROPERTY(AccelOnOff, topRightButtonEnabled),\n\t\tATMO_PROPERTY(AccelOnOff,bottomRightButtonEnabled), ATMO_PROPERTY(AccelOnOff, topLeftButtonEnabled), ATMO_PROPERTY(AccelOnOff, bottomLeftButtonEnabled));\n\tconfig.x = ATMO_PROPERTY(AccelOnOff, x);\n config.y = ATMO_PROPERTY(AccelOnOff, y);\n\tstrncpy(config.topLeftButtonLabel, ATMO_PROPERTY(AccelOnOff, topLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.topRightButtonLabel, ATMO_PROPERTY(AccelOnOff, topRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomLeftButtonLabel, ATMO_PROPERTY(AccelOnOff, bottomLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomRightButtonLabel, ATMO_PROPERTY(AccelOnOff, bottomRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n config.spanX = ATMO_PROPERTY(AccelOnOff, spanX);\n\tconfig.spanY = ATMO_PROPERTY(AccelOnOff, spanY);\n config.title = ATMO_PROPERTY(AccelOnOff, pageTitle);\n config.titleHidden = ATMO_PROPERTY(AccelOnOff, titleHidden);\n ATMO_UI_SELECTICON_Init(&config, 2, true, ATMO_PROPERTY(AccelOnOff, persist), ATMO_PROPERTY(AccelOnOff, differentStartup));\n ATMO_VARIABLE(AccelOnOff, pageHandle) = config.templateInstance;\n ATMO_UI_SELECTICON_SetIcon(config.templateInstance, ATMO_PROPERTY(AccelOnOff,icon));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 0, \"Off\", !ATMO_PROPERTY(AccelOnOff, initialValue));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 1, \"On\", ATMO_PROPERTY(AccelOnOff, initialValue));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(AccelOnOff, offSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(AccelOnOff, onSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(AccelOnOff, offSetStartup));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(AccelOnOff, onSetStartup));\n ATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(AccelOnOff,pageHandle), 1, ATMO_ABILITY(AccelOnOff, topRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(AccelOnOff,pageHandle), 2, ATMO_ABILITY(AccelOnOff, bottomRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(AccelOnOff,pageHandle), 3, ATMO_ABILITY(AccelOnOff, topLeftButtonPressed));\n ATMO_UI_SELECTICON_RegisterOnDisplayedAbilityHandle(ATMO_VARIABLE(AccelOnOff,pageHandle), ATMO_ABILITY(AccelOnOff, onDisplayed));\n ATMO_UI_SELECTICON_OverlaySaved(ATMO_VARIABLE(AccelOnOff, pageHandle));\n return ATMO_Status_Success;\n ",
"setOff": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(AccelOnOff,pageHandle), 0, true);\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"setOn": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(AccelOnOff,pageHandle), 0, false);\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSet": "\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"onSet": "\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSetStartup": "\treturn ATMO_Status_Success;",
"onSetStartup": "\treturn ATMO_Status_Success;"
},
"variables": {
"pageHandle": {
"type": "ATMO_DriverInstanceHandle_t"
}
},
"embeddedPropertyConversions": {
"pageTitle": "string",
"topRightButtonLabel": "string",
"bottomRightButtonLabel": "string",
"topLeftButtonLabel": "string",
"bottomLeftButtonLabel": "string",
"label": "string"
},
"codeUserChanged": {
"onDisplayed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"valueChanged": false
},
"textColor": "GUI_GREEN",
"pageTitle": "Accelerometer",
"titleHidden": false,
"pageHidden": false,
"topRightButtonLabel": "",
"topRightButtonEnabled": false,
"bottomRightButtonLabel": "",
"bottomRightButtonEnabled": false,
"topLeftButtonLabel": "",
"topLeftButtonEnabled": false,
"bottomLeftButtonLabel": "Toggle",
"bottomLeftButtonEnabled": true,
"x": "44",
"y": "4",
"spanX": 1,
"spanY": 1,
"icon": "icon_sensors_accmag",
"initialValue": true,
"persist": true,
"differentStartup": false
},
"meta": {
"editorX": 724,
"editorY": 24,
"lastTrigger": "offSet"
},
"triggers": {
"triggered": [],
"onDisplayed": [],
"topRightButtonPressed": [],
"bottomRightButtonPressed": [],
"topLeftButtonPressed": [],
"offSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "FXOS8700AccelerometerMagnetometer",
"targetAbility": "setDisabled"
}
],
"setOn": [],
"onSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "FXOS8700AccelerometerMagnetometer",
"targetAbility": "setEnabled"
}
],
"offSetStartup": [],
"onSetStartup": [],
"valueChanged": []
},
"interruptAbilities": {
"trigger": false,
"displayPage": false,
"onDisplayed": false,
"topRightButtonPressed": false,
"bottomRightButtonPressed": false,
"topLeftButtonPressed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"offSetStartup": false,
"onSetStartup": false
},
"abilities": [
{
"name": "trigger",
"triggers": [
"triggered"
]
},
{
"name": "displayPage",
"triggers": []
},
{
"name": "onDisplayed",
"triggers": [
"onDisplayed"
]
},
{
"name": "topRightButtonPressed",
"triggers": [
"topRightButtonPressed"
]
},
{
"name": "bottomRightButtonPressed",
"triggers": [
"bottomRightButtonPressed"
]
},
{
"name": "topLeftButtonPressed",
"triggers": [
"topLeftButtonPressed"
]
},
{
"name": "setup",
"triggers": []
},
{
"name": "setOff",
"triggers": [
"offSet"
]
},
{
"name": "setOn",
"triggers": [
"setOn"
]
},
{
"name": "offSet",
"triggers": [
"offSet"
]
},
{
"name": "onSet",
"triggers": [
"onSet"
]
},
{
"name": "offSetStartup",
"triggers": [
"offSetStartup"
]
},
{
"name": "onSetStartup",
"triggers": [
"onSetStartup"
]
}
]
},
{
"name": "GyroOnOff",
"type": "EmbeddedOnOffDisplay",
"variants": [
"embedded",
"triggers",
"abilities",
"properties",
"variables",
"rpk"
],
"properties": {
"errorData": {},
"code": {
"trigger": "\treturn ATMO_Status_Success;",
"displayPage": "\n\tATMO_UI_Page_DisplayPageByCoord(ATMO_PROPERTY(GyroOnOff, x), ATMO_PROPERTY(GyroOnOff, y), false);\n\treturn ATMO_Status_Success;\n\t",
"onDisplayed": "\n\treturn ATMO_Status_Success;\n ",
"topRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"bottomRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"topLeftButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"setup": "\n ATMO_UI_PAGE_Config_t config;\n config.hidden = ATMO_PROPERTY(GyroOnOff, pageHidden);\n config.textColor = ATMO_PROPERTY(GyroOnOff, textColor);\n\tconfig.activeButtons = ATMO_UI_Page_GetButtonMask(ATMO_PROPERTY(GyroOnOff, topRightButtonEnabled),\n\t\tATMO_PROPERTY(GyroOnOff,bottomRightButtonEnabled), ATMO_PROPERTY(GyroOnOff, topLeftButtonEnabled), ATMO_PROPERTY(GyroOnOff, bottomLeftButtonEnabled));\n\tconfig.x = ATMO_PROPERTY(GyroOnOff, x);\n config.y = ATMO_PROPERTY(GyroOnOff, y);\n\tstrncpy(config.topLeftButtonLabel, ATMO_PROPERTY(GyroOnOff, topLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.topRightButtonLabel, ATMO_PROPERTY(GyroOnOff, topRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomLeftButtonLabel, ATMO_PROPERTY(GyroOnOff, bottomLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomRightButtonLabel, ATMO_PROPERTY(GyroOnOff, bottomRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n config.spanX = ATMO_PROPERTY(GyroOnOff, spanX);\n\tconfig.spanY = ATMO_PROPERTY(GyroOnOff, spanY);\n config.title = ATMO_PROPERTY(GyroOnOff, pageTitle);\n config.titleHidden = ATMO_PROPERTY(GyroOnOff, titleHidden);\n ATMO_UI_SELECTICON_Init(&config, 2, true, ATMO_PROPERTY(GyroOnOff, persist), ATMO_PROPERTY(GyroOnOff, differentStartup));\n ATMO_VARIABLE(GyroOnOff, pageHandle) = config.templateInstance;\n ATMO_UI_SELECTICON_SetIcon(config.templateInstance, ATMO_PROPERTY(GyroOnOff,icon));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 0, \"Off\", !ATMO_PROPERTY(GyroOnOff, initialValue));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 1, \"On\", ATMO_PROPERTY(GyroOnOff, initialValue));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(GyroOnOff, offSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(GyroOnOff, onSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(GyroOnOff, offSetStartup));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(GyroOnOff, onSetStartup));\n ATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(GyroOnOff,pageHandle), 1, ATMO_ABILITY(GyroOnOff, topRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(GyroOnOff,pageHandle), 2, ATMO_ABILITY(GyroOnOff, bottomRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(GyroOnOff,pageHandle), 3, ATMO_ABILITY(GyroOnOff, topLeftButtonPressed));\n ATMO_UI_SELECTICON_RegisterOnDisplayedAbilityHandle(ATMO_VARIABLE(GyroOnOff,pageHandle), ATMO_ABILITY(GyroOnOff, onDisplayed));\n ATMO_UI_SELECTICON_OverlaySaved(ATMO_VARIABLE(GyroOnOff, pageHandle));\n return ATMO_Status_Success;\n ",
"setOff": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(GyroOnOff,pageHandle), 0, true);\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"setOn": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(GyroOnOff,pageHandle), 0, false);\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSet": "\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"onSet": "\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSetStartup": "\treturn ATMO_Status_Success;",
"onSetStartup": "\treturn ATMO_Status_Success;"
},
"variables": {
"pageHandle": {
"type": "ATMO_DriverInstanceHandle_t"
}
},
"embeddedPropertyConversions": {
"pageTitle": "string",
"topRightButtonLabel": "string",
"bottomRightButtonLabel": "string",
"topLeftButtonLabel": "string",
"bottomLeftButtonLabel": "string",
"label": "string"
},
"codeUserChanged": {
"onDisplayed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"valueChanged": false
},
"textColor": "GUI_GREEN",
"pageTitle": "Gyroscope",
"titleHidden": false,
"pageHidden": false,
"topRightButtonLabel": "",
"topRightButtonEnabled": false,
"bottomRightButtonLabel": "",
"bottomRightButtonEnabled": false,
"topLeftButtonLabel": "",
"topLeftButtonEnabled": false,
"bottomLeftButtonLabel": "Toggle",
"bottomLeftButtonEnabled": true,
"x": "45",
"y": "4",
"spanX": 1,
"spanY": 1,
"icon": "icon_sensors_gyro",
"initialValue": true,
"persist": true,
"differentStartup": false
},
"meta": {
"editorX": 831,
"editorY": 25,
"lastTrigger": "offSet"
},
"triggers": {
"triggered": [],
"onDisplayed": [],
"topRightButtonPressed": [],
"bottomRightButtonPressed": [],
"topLeftButtonPressed": [],
"offSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "FXAS21002Gyroscope",
"targetAbility": "setDisabled"
}
],
"setOn": [],
"onSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "FXAS21002Gyroscope",
"targetAbility": "setEnabled"
}
],
"offSetStartup": [],
"onSetStartup": [],
"valueChanged": []
},
"interruptAbilities": {
"trigger": false,
"displayPage": false,
"onDisplayed": false,
"topRightButtonPressed": false,
"bottomRightButtonPressed": false,
"topLeftButtonPressed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"offSetStartup": false,
"onSetStartup": false
},
"abilities": [
{
"name": "trigger",
"triggers": [
"triggered"
]
},
{
"name": "displayPage",
"triggers": []
},
{
"name": "onDisplayed",
"triggers": [
"onDisplayed"
]
},
{
"name": "topRightButtonPressed",
"triggers": [
"topRightButtonPressed"
]
},
{
"name": "bottomRightButtonPressed",
"triggers": [
"bottomRightButtonPressed"
]
},
{
"name": "topLeftButtonPressed",
"triggers": [
"topLeftButtonPressed"
]
},
{
"name": "setup",
"triggers": []
},
{
"name": "setOff",
"triggers": [
"offSet"
]
},
{
"name": "setOn",
"triggers": [
"setOn"
]
},
{
"name": "offSet",
"triggers": [
"offSet"
]
},
{
"name": "onSet",
"triggers": [
"onSet"
]
},
{
"name": "offSetStartup",
"triggers": [
"offSetStartup"
]
},
{
"name": "onSetStartup",
"triggers": [
"onSetStartup"
]
}
]
},
{
"name": "LightOnOff",
"type": "EmbeddedOnOffDisplay",
"variants": [
"embedded",
"triggers",
"abilities",
"properties",
"variables",
"rpk"
],
"properties": {
"errorData": {},
"code": {
"trigger": "\treturn ATMO_Status_Success;",
"displayPage": "\n\tATMO_UI_Page_DisplayPageByCoord(ATMO_PROPERTY(LightOnOff, x), ATMO_PROPERTY(LightOnOff, y), false);\n\treturn ATMO_Status_Success;\n\t",
"onDisplayed": "\n\treturn ATMO_Status_Success;\n ",
"topRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"bottomRightButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"topLeftButtonPressed": "\n\treturn ATMO_Status_Success;\n\t",
"setup": "\n ATMO_UI_PAGE_Config_t config;\n config.hidden = ATMO_PROPERTY(LightOnOff, pageHidden);\n config.textColor = ATMO_PROPERTY(LightOnOff, textColor);\n\tconfig.activeButtons = ATMO_UI_Page_GetButtonMask(ATMO_PROPERTY(LightOnOff, topRightButtonEnabled),\n\t\tATMO_PROPERTY(LightOnOff,bottomRightButtonEnabled), ATMO_PROPERTY(LightOnOff, topLeftButtonEnabled), ATMO_PROPERTY(LightOnOff, bottomLeftButtonEnabled));\n\tconfig.x = ATMO_PROPERTY(LightOnOff, x);\n config.y = ATMO_PROPERTY(LightOnOff, y);\n\tstrncpy(config.topLeftButtonLabel, ATMO_PROPERTY(LightOnOff, topLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.topRightButtonLabel, ATMO_PROPERTY(LightOnOff, topRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomLeftButtonLabel, ATMO_PROPERTY(LightOnOff, bottomLeftButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n\tstrncpy(config.bottomRightButtonLabel, ATMO_PROPERTY(LightOnOff, bottomRightButtonLabel), ATMO_BUTTON_LABEL_MAXLEN);\n config.spanX = ATMO_PROPERTY(LightOnOff, spanX);\n\tconfig.spanY = ATMO_PROPERTY(LightOnOff, spanY);\n config.title = ATMO_PROPERTY(LightOnOff, pageTitle);\n config.titleHidden = ATMO_PROPERTY(LightOnOff, titleHidden);\n ATMO_UI_SELECTICON_Init(&config, 2, true, ATMO_PROPERTY(LightOnOff, persist), ATMO_PROPERTY(LightOnOff, differentStartup));\n ATMO_VARIABLE(LightOnOff, pageHandle) = config.templateInstance;\n ATMO_UI_SELECTICON_SetIcon(config.templateInstance, ATMO_PROPERTY(LightOnOff,icon));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 0, \"Off\", !ATMO_PROPERTY(LightOnOff, initialValue));\n ATMO_UI_SELECTICON_SetOptionText(config.templateInstance, 1, \"On\", ATMO_PROPERTY(LightOnOff, initialValue));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(LightOnOff, offSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(LightOnOff, onSet));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 0, ATMO_ABILITY(LightOnOff, offSetStartup));\n ATMO_UI_SELECTICON_RegisterOptionSelectedStartupAbilityHandle(config.templateInstance, 1, ATMO_ABILITY(LightOnOff, onSetStartup));\n ATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(LightOnOff,pageHandle), 1, ATMO_ABILITY(LightOnOff, topRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(LightOnOff,pageHandle), 2, ATMO_ABILITY(LightOnOff, bottomRightButtonPressed));\n\tATMO_UI_SELECTICON_RegisterButtonAbilityHandle(ATMO_VARIABLE(LightOnOff,pageHandle), 3, ATMO_ABILITY(LightOnOff, topLeftButtonPressed));\n ATMO_UI_SELECTICON_RegisterOnDisplayedAbilityHandle(ATMO_VARIABLE(LightOnOff,pageHandle), ATMO_ABILITY(LightOnOff, onDisplayed));\n ATMO_UI_SELECTICON_OverlaySaved(ATMO_VARIABLE(LightOnOff, pageHandle));\n return ATMO_Status_Success;\n ",
"setOff": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(LightOnOff,pageHandle), 0, true);\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"setOn": "\n ATMO_UI_SELECTICON_SetOption(ATMO_VARIABLE(LightOnOff,pageHandle), 0, false);\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSet": "\n ATMO_CreateValueBool(out, false);\n return ATMO_Status_Success;\n ",
"onSet": "\n ATMO_CreateValueBool(out, true);\n return ATMO_Status_Success;\n ",
"offSetStartup": "\treturn ATMO_Status_Success;",
"onSetStartup": "\treturn ATMO_Status_Success;"
},
"variables": {
"pageHandle": {
"type": "ATMO_DriverInstanceHandle_t"
}
},
"embeddedPropertyConversions": {
"pageTitle": "string",
"topRightButtonLabel": "string",
"bottomRightButtonLabel": "string",
"topLeftButtonLabel": "string",
"bottomLeftButtonLabel": "string",
"label": "string"
},
"codeUserChanged": {
"onDisplayed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"valueChanged": false
},
"textColor": "GUI_GREEN",
"pageTitle": "Light",
"titleHidden": false,
"pageHidden": false,
"topRightButtonLabel": "",
"topRightButtonEnabled": false,
"bottomRightButtonLabel": "",
"bottomRightButtonEnabled": false,
"topLeftButtonLabel": "",
"topLeftButtonEnabled": false,
"bottomLeftButtonLabel": "Toggle",
"bottomLeftButtonEnabled": true,
"x": "41",
"y": "4",
"spanX": 1,
"spanY": 1,
"icon": "icon_sensors_light",
"initialValue": true,
"persist": true,
"differentStartup": false
},
"meta": {
"editorX": 1063,
"editorY": 27,
"lastTrigger": "onSet"
},
"triggers": {
"triggered": [],
"onDisplayed": [],
"topRightButtonPressed": [],
"bottomRightButtonPressed": [],
"topLeftButtonPressed": [],
"offSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "TSL2572AmbientLight",
"targetAbility": "setDisabled"
}
],
"setOn": [],
"onSet": [
{
"mapping": {},
"targetOrder": [],
"targetElement": "TSL2572AmbientLight",
"targetAbility": "setEnabled"
}
],
"offSetStartup": [],
"onSetStartup": [],
"valueChanged": []
},
"interruptAbilities": {
"trigger": false,
"displayPage": false,
"onDisplayed": false,
"topRightButtonPressed": false,
"bottomRightButtonPressed": false,
"topLeftButtonPressed": false,
"setup": false,
"setOff": false,
"setOn": false,
"offSet": false,
"onSet": false,
"offSetStartup": false,
"onSetStartup": false
},
"abilities": [
{
"name": "trigger",
"triggers": [
"triggered"
]
},
{
"name": "displayPage",
"triggers": []
},
{
...
This file has been truncated, please download it to see its full contents.
Comments