Hackster is hosting Hackster Holidays, Ep. 6: Livestream & Giveaway Drawing. Watch previous episodes or stream live on Monday!Stream Hackster Holidays, Ep. 6 on Monday!
Jeffrey Jacques
Published © GPL3+

Internet of Wookies

Control a Star Wars Forces of Destiny Roaring Chewbacca Adventure Figure over Bluetooth or the cloud using NXP Rapid IoT Kit.

IntermediateFull instructions provided605

Things used in this project

Hardware components

Rapid IoT Prototyping Kit
NXP Rapid IoT Prototyping Kit
×1
Hexiwear docking station
×1
Star Wars Forces of Destiny Roaring Chewbacca Adventure Figure
×1
M/F JST connectors
×1
Dupont connectors
×1
Hitec servo wire
×1
30 AWG magnet wire
×1

Software apps and online services

NXP Rapid IOT
NXP Atmosphere Online Studio

Hand tools and fabrication machines

JST Crimper
Soldering iron (generic)
Soldering iron (generic)
Pozidriv bit #1
X-ACTO knife

Story

Read more

Code

Internet of Wookies.atmo

JSON
Import to NXP / Atmosphere Online IDE
{
  "name": "Internet of Wookies",
  "createVersion": "2017-08-12",
  "description": "Control a Chewbacca toy",
  "lastModified": "2018-04-12T19:12:32.670Z",
  "created": "2018-04-12T19:12:32.670Z",
  "meta": {
    "projectTypeName": "NXP Rapid IoT",
    "projectTypeId": "NxpRpk"
  },
  "planes": {
    "NXP Rapid IoT": {
      "type": "mcuxpresso",
      "compilerVersion": "latest",
      "variants": [
        "NxpRpk"
      ],
      "meta": {},
      "elements": [
        {
          "name": "BLECharacteristicCustom",
          "type": "EmbeddedBLECharacteristicCustom",
          "variants": [
            "embedded",
            "triggers",
            "abilities",
            "properties",
            "variables",
            "ble"
          ],
          "properties": {
            "errorData": {},
            "code": {
              "trigger": "\treturn ATMO_Status_Success;",
              "setup": "\n\tATMO_BLE_GATTSAddService(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\t&ATMO_VARIABLE(BLECharacteristicCustom, bleServiceHandle), \n\t\tATMO_PROPERTY(BLECharacteristicCustom, bleServiceUuid));\n\t\n\tuint8_t property = 0;\n\tuint8_t permission = 0;\n\t\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, read) ? ATMO_BLE_Property_Read : 0;\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, write) ? ATMO_BLE_Property_Write : 0;\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, notify) ? ATMO_BLE_Property_Notify : 0;\n\n\tpermission |= ATMO_PROPERTY(BLECharacteristicCustom, read) ? ATMO_BLE_Permission_Read : 0;\n\tpermission |= ATMO_PROPERTY(BLECharacteristicCustom, write) ? ATMO_BLE_Permission_Write : 0;\n\n\tATMO_DATATYPE types[3] = {ATMO_PROPERTY(BLECharacteristicCustom, writeDataType), ATMO_PROPERTY(BLECharacteristicCustom, readDataType), ATMO_PROPERTY(BLECharacteristicCustom, notifyDataType)};\n\t\n\tATMO_BLE_GATTSAddCharacteristic(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\t&ATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle), \n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleServiceHandle), \n\t\tATMO_PROPERTY(BLECharacteristicCustom, bleCharacteristicUuid), \n\t\tproperty, permission, ATMO_GetMaxValueSize(3, 64, types));\n\t\n\tATMO_BLE_GATTSRegisterCharacteristicAbilityHandle(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle), \n\t\tATMO_BLE_Characteristic_Written, \n\t\tATMO_ABILITY(BLECharacteristicCustom, written));\n\t\n\treturn ATMO_Status_Success;\n\t",
              "setValue": "\n\t\n\t// Convert to the desired write data type\n\tATMO_Value_t convertedValue;\n\tATMO_InitValue(&convertedValue);\n\tATMO_CreateValueConverted(&convertedValue, ATMO_PROPERTY(BLECharacteristicCustom, readDataType), in);\n\n\tATMO_BLE_GATTSSetCharacteristic(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle),\n\t\tconvertedValue.size, \n\t\t(uint8_t *)convertedValue.data,\n\t\tNULL);\n\t\n\tATMO_FreeValue(&convertedValue);\n\t\t\n\treturn ATMO_Status_Success;\n\t",
              "written": "\n\tATMO_CreateValueConverted(out, ATMO_PROPERTY(BLECharacteristicCustom, writeDataType), in);\n\treturn ATMO_Status_Success;\n\t",
              "subscibed": "\treturn ATMO_Status_Success;",
              "unsubscribed": "\treturn ATMO_Status_Success;"
            },
            "variables": {
              "bleServiceHandle": {
                "type": "ATMO_BLE_Handle_t"
              },
              "bleCharacteristicHandle": {
                "type": "ATMO_BLE_Handle_t"
              }
            },
            "embeddedPropertyConversions": {
              "bleServiceUuid": "string",
              "bleCharacteristicUuid": "string"
            },
            "codeUserChanged": {
              "setup": false,
              "setValue": false,
              "written": false,
              "subscibed": false,
              "unsubscribed": false
            },
            "instance": "ATMO_DRIVERINSTANCE_BLE_BLE1",
            "bleServiceUuid": "218b778d-8794-4f55-ae1e-3fe1f6744c6c",
            "bleCharacteristicUuid": "218b778d-8794-4f55-ae1e-3fe1f6744c6d",
            "read": true,
            "write": true,
            "notify": false,
            "readDataType": "ATMO_DATATYPE_VOID",
            "writeDataType": "ATMO_DATATYPE_VOID",
            "notifyDataType": "ATMO_DATATYPE_VOID"
          },
          "meta": {
            "editorX": 50,
            "editorY": 239,
            "lastTrigger": "written"
          },
          "triggers": {
            "triggered": [],
            "written": [
              {
                "mapping": {},
                "targetOrder": [],
                "targetElement": "EmbeddedNxpRpkRgbLed",
                "targetAbility": "toggleRed"
              },
              {
                "mapping": {},
                "targetOrder": [],
                "targetElement": "GPIOPin",
                "targetAbility": "toggle"
              }
            ],
            "subscibed": [],
            "unsubscribed": []
          },
          "interruptAbilities": {
            "trigger": false,
            "setup": false,
            "setValue": "valueSet",
            "written": true,
            "subscibed": true,
            "unsubscribed": true
          },
          "abilities": [
            {
              "name": "trigger",
              "triggers": [
                "triggered"
              ]
            },
            {
              "name": "setup",
              "triggers": []
            },
            {
              "name": "setValue",
              "triggers": []
            },
            {
              "name": "written",
              "triggers": [
                "written"
              ]
            },
            {
              "name": "subscibed",
              "triggers": [
                "subscibed"
              ]
            },
            {
              "name": "unsubscribed",
              "triggers": [
                "unsubscribed"
              ]
            }
          ]
        },
        {
          "name": "EmbeddedNxpRpkRgbLed",
          "type": "EmbeddedNxpRpkRgbLed",
          "variants": [
            "embedded",
            "triggers",
            "abilities",
            "properties",
            "variables",
            "rpk"
          ],
          "properties": {
            "errorData": {},
            "code": {
              "trigger": "\treturn ATMO_Status_Success;",
              "setup": "\n    RGB_Led_Set_State(RGB_LED_BRIGHT_HIGH, RGB_LED_COLOR_BLACK);\n\treturn ATMO_Status_Success;\n\t",
              "setColorPreset": "\n    unsigned int desiredColor = 0;\n    ATMO_GetUnsignedInt(in, &desiredColor);\n\n    uint8_t brightness = 0;\n    uint8_t color = 0;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(brightness, desiredColor);\n    return ATMO_Status_Success;\n    ",
              "setBrightnessLow": "\n    uint8_t brightness = 0;\n    uint8_t color = 0;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(RGB_LED_BRIGHT_LOW, color);\n    return ATMO_Status_Success;\n    ",
              "setBrightnessOff": "\n    uint8_t brightness = 0;\n    uint8_t color = 0;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(RGB_LED_BRIGHT_OFF, color);\n    return ATMO_Status_Success;\n    ",
              "setBrightnessMedium": "\n    uint8_t brightness = 0;\n    uint8_t color = 0;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(RGB_LED_BRIGHT_MEDIUM, color);\n    return ATMO_Status_Success;\n    ",
              "setBrightnessHigh": "\n    uint8_t brightness = 0;\n    uint8_t color = 0;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(RGB_LED_BRIGHT_HIGH, color);\n    return ATMO_Status_Success;\n    ",
              "setRedOn": "\n    RGB_Led_Set_State(RGB_LED_BRIGHT_HIGH, RGB_LED_COLOR_RED);\n\treturn ATMO_Status_Success;\n    ",
              "setGreenOn": "\n    RGB_Led_Set_State(RGB_LED_BRIGHT_HIGH, RGB_LED_COLOR_GREEN);\n\treturn ATMO_Status_Success;\n    ",
              "setBlueOn": "\n    RGB_Led_Set_State(RGB_LED_BRIGHT_HIGH, RGB_LED_COLOR_BLUE);\n\treturn ATMO_Status_Success;\n    ",
              "setWhiteOn": "\treturn ATMO_Status_Success;",
              "toggleRed": "\n\tuint8_t color, brightness;\n    RGB_Led_Get_State(&brightness, &color);\n    if(brightness == RGB_LED_BRIGHT_OFF || color == RGB_LED_COLOR_BLACK)\n    {\n        brightness = RGB_LED_BRIGHT_HIGH;\n    }\n    else\n    {\n        brightness = RGB_LED_BRIGHT_OFF;\n    }\n\n    RGB_Led_Set_State(brightness, RGB_LED_COLOR_RED);\n    return ATMO_Status_Success;\n\t",
              "toggleGreen": "\n\tuint8_t color, brightness;\n    RGB_Led_Get_State(&brightness, &color);\n    if(brightness == RGB_LED_BRIGHT_OFF || color == RGB_LED_COLOR_BLACK)\n    {\n        brightness = RGB_LED_BRIGHT_HIGH;\n    }\n    else\n    {\n        brightness = RGB_LED_BRIGHT_OFF;\n    }\n\n    RGB_Led_Set_State(brightness, RGB_LED_COLOR_GREEN);\n    return ATMO_Status_Success;\n\t",
              "toggleBlue": "\n\tuint8_t color, brightness;\n    RGB_Led_Get_State(&brightness, &color);\n    if(brightness == RGB_LED_BRIGHT_OFF || color == RGB_LED_COLOR_BLACK)\n    {\n        brightness = RGB_LED_BRIGHT_HIGH;\n    }\n    else\n    {\n        brightness = RGB_LED_BRIGHT_OFF;\n    }\n\n    RGB_Led_Set_State(brightness, RGB_LED_COLOR_BLUE);\n    return ATMO_Status_Success;\n\t",
              "setOff": "\n    uint8_t color, brightness;\n    RGB_Led_Get_State(&brightness, &color);\n    RGB_Led_Set_State(brightness, RGB_LED_COLOR_BLACK);\n\treturn ATMO_Status_Success;\n    ",
              "setColorHex": "\n    unsigned int color = 0;\n    ATMO_GetUnsignedInt(in, &color);\n    uint8_t red = (color >> 16) & 0xFF;\n    uint8_t green = (color >> 8) & 0xFF;\n    uint8_t blue = color & 0xFF;\n    Rgb_Led_Set_Colors(red, green, blue);  \n    ATMO_CreateValueUnsignedInt(out, color);\n\treturn ATMO_Status_Success;\n    "
            },
            "variables": {},
            "embeddedPropertyConversions": {},
            "codeUserChanged": {
              "setup": false,
              "setRedOn": false,
              "setGreenOn": false,
              "setBlueOn": false,
              "setWhiteOn": false,
              "toggleRed": false,
              "toggleGreen": false,
              "toggleBlue": false,
              "setOff": false,
              "setColorHex": false,
              "setRed": false,
              "setGreen": false,
              "setBlue": false,
              "adjustRed": false,
              "adjustGreen": false,
              "adjustBlue": false,
              "setRedOff": false,
              "setGreenOff": false,
              "setBlueOff": false
            }
          },
          "meta": {
            "editorX": 446,
            "editorY": 243,
            "lastTrigger": "triggered"
          },
          "triggers": {
            "triggered": [],
            "brightnessSet": [],
            "colorSet": [],
            "redSet": [],
            "greenSet": [],
            "blueSet": []
          },
          "interruptAbilities": {
            "trigger": false,
            "setup": false,
            "setColorPreset": false,
            "setBrightnessLow": false,
            "setBrightnessOff": false,
            "setBrightnessMedium": false,
            "setBrightnessHigh": false,
            "setRedOn": false,
            "setGreenOn": false,
            "setBlueOn": false,
            "setWhiteOn": false,
            "toggleRed": false,
            "toggleGreen": false,
            "toggleBlue": false,
            "setOff": false,
            "setColorHex": false
          },
          "abilities": [
            {
              "name": "trigger",
              "triggers": [
                "triggered"
              ]
            },
            {
              "name": "setup",
              "triggers": []
            },
            {
              "name": "setColorPreset",
              "triggers": []
            },
            {
              "name": "setBrightnessLow",
              "triggers": [
                "brightnessSet"
              ]
            },
            {
              "name": "setBrightnessOff",
              "triggers": [
                "brightnessSet"
              ]
            },
            {
              "name": "setBrightnessMedium",
              "triggers": [
                "brightnessSet"
              ]
            },
            {
              "name": "setBrightnessHigh",
              "triggers": [
                "brightnessSet"
              ]
            },
            {
              "name": "setRedOn",
              "triggers": []
            },
            {
              "name": "setGreenOn",
              "triggers": []
            },
            {
              "name": "setBlueOn",
              "triggers": []
            },
            {
              "name": "setWhiteOn",
              "triggers": []
            },
            {
              "name": "toggleRed",
              "triggers": []
            },
            {
              "name": "toggleGreen",
              "triggers": []
            },
            {
              "name": "toggleBlue",
              "triggers": []
            },
            {
              "name": "setOff",
              "triggers": []
            },
            {
              "name": "setColorHex",
              "triggers": [
                "colorSet"
              ]
            }
          ]
        },
        {
          "name": "GPIOPin",
          "type": "EmbeddedGPIOPin",
          "variants": [
            "embedded",
            "triggers",
            "abilities",
            "properties",
            "variables"
          ],
          "properties": {
            "errorData": {},
            "code": {
              "trigger": "\treturn ATMO_Status_Success;",
              "setup": "\n\tATMO_GPIO_Config_t config;\n\tconfig.pinMode = ATMO_PROPERTY(GPIOPin, mode);\n\tconfig.initialState = ATMO_PROPERTY(GPIOPin, state);\n\tATMO_GPIO_SetPinConfiguration(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin), &config);\n\n\t#if ATMO_PROPERTY(GPIOPin, interruptEnabled) == true\n\t\tATMO_GPIO_RegisterInterruptCallback(\n\t\t\tATMO_PROPERTY(GPIOPin, instance), \n\t\t\tATMO_PROPERTY(GPIOPin, pin), \n\t\t\tATMO_PROPERTY(GPIOPin, interruptMode), \n\t\t\tATMO_INTERRUPT(GPIOPin, interrupt));\n\t#endif\n\t\n\treturn ATMO_Status_Success;\n\t",
              "setState": "\n\tbool state;\n\tATMO_GetBool(in, &state);\n\tATMO_GPIO_SetPinState(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin), (ATMO_GPIO_PinState_t)state);\n\treturn ATMO_Status_Success;\n\t",
              "setPinHigh": "\n\tATMO_GPIO_SetPinState(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin), ATMO_GPIO_PinState_High);\n\treturn ATMO_Status_Success;\n\t",
              "setPinLow": "\n\tATMO_GPIO_SetPinState(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin), ATMO_GPIO_PinState_Low);\n\treturn ATMO_Status_Success;\n\t",
              "read": "\n\tATMO_CreateValueBool(out, ATMO_GPIO_Read(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin)));\n\treturn ATMO_Status_Success;\n\t",
              "toggle": "\n\tATMO_GPIO_Toggle(ATMO_PROPERTY(GPIOPin, instance), ATMO_PROPERTY(GPIOPin, pin));\n\treturn ATMO_Status_Success;\n\t",
              "interrupt": "\treturn ATMO_Status_Success;"
            },
            "variables": {},
            "embeddedPropertyConversions": {},
            "codeUserChanged": {
              "setup": false,
              "setState": false,
              "setPinHigh": false,
              "setPinLow": false,
              "read": false,
              "toggle": false,
              "interrupt": false
            },
            "instance": "ATMO_DRIVERINSTANCE_GPIO_GPIO1",
            "pin": "MB1_PWM",
            "mode": "ATMO_GPIO_PinMode_Output_OpenDrainPullUp",
            "state": "ATMO_GPIO_PinState_High",
            "interruptEnabled": false,
            "interruptMode": "ATMO_GPIO_InterruptTrigger_None"
          },
          "meta": {
            "editorX": 448,
            "editorY": 41,
            "lastTrigger": "triggered"
          },
          "triggers": {
            "triggered": [],
            "stateSet": [],
            "read": [],
            "toggled": [],
            "interrupt": []
          },
          "interruptAbilities": {
            "trigger": false,
            "setup": false,
            "setState": false,
            "setPinHigh": false,
            "setPinLow": false,
            "read": false,
            "toggle": false,
            "interrupt": true
          },
          "abilities": [
            {
              "name": "trigger",
              "triggers": [
                "triggered"
              ]
            },
            {
              "name": "setup",
              "triggers": []
            },
            {
              "name": "setState",
              "triggers": [
                "stateSet"
              ]
            },
            {
              "name": "setPinHigh",
              "triggers": [
                "stateSet"
              ]
            },
            {
              "name": "setPinLow",
              "triggers": [
                "stateSet"
              ]
            },
            {
              "name": "read",
              "triggers": [
                "read"
              ]
            },
            {
              "name": "toggle",
              "triggers": [
                "toggled"
              ]
            },
            {
              "name": "interrupt",
              "triggers": [
                "interrupt"
              ]
            }
          ]
        }
      ],
      "libraries": {},
      "drivers": {
        "adc": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_ADC_ADC1"
          }
        ],
        "ble": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_BLE_BLE1"
          }
        ],
        "block": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_BLOCK_BLOCK1"
          }
        ],
        "datetime": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_DATETIME_DATETIME1"
          }
        ],
        "filesytem": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_FILESYSTEM_FILESYSTEM1"
          }
        ],
        "gpio": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_GPIO_GPIO1"
          }
        ],
        "http": [],
        "i2c": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_I2C_I2C1",
            "primary": true
          },
          {
            "id": 1,
            "name": "ATMO_DRIVERINSTANCE_I2C_I2C2"
          }
        ],
        "interval": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_INTERVAL_INTERVAL1"
          }
        ],
        "nfc": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_NFC_NFC1"
          }
        ],
        "pwm": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_PWM_PWM1"
          }
        ],
        "spi": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_SPI_SPI1"
          }
        ],
        "uart": [
          {
            "id": 0,
            "name": "ATMO_DRIVERINSTANCE_UART_UART1"
          },
          {
            "id": 1,
            "name": "ATMO_DRIVERINSTANCE_UART_UART2"
          },
          {
            "id": 2,
            "name": "ATMO_DRIVERINSTANCE_UART_UART3"
          },
          {
            "id": 3,
            "name": "ATMO_DRIVERINSTANCE_UART_UART4",
            "primary": true
          }
        ],
        "wifi": []
      },
      "static": {
        "header": "",
        "footer": "",
        "functions": {
          "ATMO_Setup": {
            "returnType": "void",
            "code": "\n",
            "arguments": []
          }
        }
      }
    },
    "App View": {
      "type": "app",
      "compilerVersion": "latest",
      "variants": [],
      "meta": {
        "appViewLayouts": {
          "320": {
            "560": true
          }
        }
      },
      "elements": [
        {
          "name": "BLECharacteristicCustom",
          "type": "AppBLECharacteristicCustom",
          "variants": [
            "app",
            "ble"
          ],
          "properties": {
            "errorData": {},
            "readData": null,
            "code": {
              "trigger": "\treturn ATMO_Status_Success;",
              "setup": "\n\tATMO_BLE_GATTSAddService(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\t&ATMO_VARIABLE(BLECharacteristicCustom, bleServiceHandle), \n\t\tATMO_PROPERTY(BLECharacteristicCustom, bleServiceUuid));\n\t\n\tuint8_t property = 0;\n\tuint8_t permission = 0;\n\t\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, read) ? ATMO_BLE_Property_Read : 0;\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, write) ? ATMO_BLE_Property_Write : 0;\n\tproperty |= ATMO_PROPERTY(BLECharacteristicCustom, notify) ? ATMO_BLE_Property_Notify : 0;\n\n\tpermission |= ATMO_PROPERTY(BLECharacteristicCustom, read) ? ATMO_BLE_Permission_Read : 0;\n\tpermission |= ATMO_PROPERTY(BLECharacteristicCustom, write) ? ATMO_BLE_Permission_Write : 0;\n\n\tATMO_DATATYPE types[3] = {ATMO_PROPERTY(BLECharacteristicCustom, writeDataType), ATMO_PROPERTY(BLECharacteristicCustom, readDataType), ATMO_PROPERTY(BLECharacteristicCustom, notifyDataType)};\n\t\n\tATMO_BLE_GATTSAddCharacteristic(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\t&ATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle), \n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleServiceHandle), \n\t\tATMO_PROPERTY(BLECharacteristicCustom, bleCharacteristicUuid), \n\t\tproperty, permission, ATMO_GetMaxValueSize(3, 64, types));\n\t\n\tATMO_BLE_GATTSRegisterCharacteristicAbilityHandle(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle), \n\t\tATMO_BLE_Characteristic_Written, \n\t\tATMO_ABILITY(BLECharacteristicCustom, written));\n\t\n\treturn ATMO_Status_Success;\n\t",
              "setValue": "\n\t\n\t// Convert to the desired write data type\n\tATMO_Value_t convertedValue;\n\tATMO_InitValue(&convertedValue);\n\tATMO_CreateValueConverted(&convertedValue, ATMO_PROPERTY(BLECharacteristicCustom, readDataType), in);\n\n\tATMO_BLE_GATTSSetCharacteristic(\n\t\tATMO_PROPERTY(BLECharacteristicCustom, instance),\n\t\tATMO_VARIABLE(BLECharacteristicCustom, bleCharacteristicHandle),\n\t\tconvertedValue.size, \n\t\t(uint8_t *)convertedValue.data,\n\t\tNULL);\n\t\n\tATMO_FreeValue(&convertedValue);\n\t\t\n\treturn ATMO_Status_Success;\n\t",
              "written": "\n\tATMO_CreateValueConverted(out, ATMO_PROPERTY(BLECharacteristicCustom, writeDataType), in);\n\treturn ATMO_Status_Success;\n\t",
              "subscibed": "\treturn ATMO_Status_Success;",
              "unsubscribed": "\treturn ATMO_Status_Success;"
            },
            "variables": {
              "bleServiceHandle": {
                "type": "ATMO_BLE_Handle_t"
              },
              "bleCharacteristicHandle": {
                "type": "ATMO_BLE_Handle_t"
              }
            },
            "embeddedPropertyConversions": {
              "bleServiceUuid": "string",
              "bleCharacteristicUuid": "string"
            },
            "codeUserChanged": {
              "setup": false,
              "setValue": false,
              "written": false,
              "subscibed": false,
              "unsubscribed": false
            },
            "instance": "ATMO_DRIVERINSTANCE_BLE_BLE1",
            "bleServiceUuid": "218b778d-8794-4f55-ae1e-3fe1f6744c6c",
            "bleCharacteristicUuid": "218b778d-8794-4f55-ae1e-3fe1f6744c6d",
            "read": true,
            "write": true,
            "notify": false,
            "readDataType": "ATMO_DATATYPE_VOID",
            "writeDataType": "ATMO_DATATYPE_VOID",
            "notifyDataType": "ATMO_DATATYPE_VOID"
          },
          "meta": {
            "editorX": 350,
            "editorY": 119,
            "lastTrigger": "read"
          },
          "triggers": {
            "triggered": [],
            "read": [],
            "written": [],
            "notification": [],
            "indication": [],
            "subscribed": [],
            "unsubscribed": []
          },
          "coupledElementName": "BLECharacteristicCustom",
          "coupledElementPlaneName": "NXP Rapid IoT"
        },
        {
          "name": "Button",
          "type": "AppUIButton",
          "variants": [
            "app",
            "ui"
          ],
          "properties": {
            "errorData": null,
            "layouts": {
              "320": {
                "560": {
                  "width": 237.5,
                  "height": 71,
                  "x": 42.5,
                  "y": 216.7166748046875,
                  "rotation": 0,
                  "propertyOverlay": {}
                }
              }
            },
            "visible": true,
            "labelText": "Chewie is that you?!",
            "labelFont": "18px Helvetica",
            "labelColor": "black",
            "pressedData": {
              "x": 0,
              "y": 0
            },
            "releasedData": {
              "x": 0,
              "y": 0
            },
            "overData": {
              "x": 0,
              "y": 0
            },
            "leftData": {
              "x": 0,
              "y": 0
            }
          },
          "meta": {
            "editorX": 154,
            "editorY": 104,
            "lastTrigger": "released"
          },
          "triggers": {
            "triggered": [],
            "pressed": [
              {
                "mapping": {
                  "value": {
                    "code": ""
                  }
                },
                "targetOrder": [
                  "value"
                ],
                "targetElement": "BLECharacteristicCustom",
                "targetAbility": "write"
              }
            ],
            "released": [
              {
                "mapping": {
                  "value": {
                    "code": ""
                  }
                },
                "targetOrder": [
                  "value"
                ],
                "targetElement": "BLECharacteristicCustom",
                "targetAbility": "write"
              }
            ],
            "over": []
          }
        },
        {
          "name": "Label",
          "type": "AppUILabel",
          "variants": [
            "app",
            "ui"
          ],
          "properties": {
            "errorData": null,
            "layouts": {
              "320": {
                "560": {
                  "width": 234.5,
                  "height": 86,
                  "x": 46.75,
                  "y": 19,
                  "rotation": 0,
                  "propertyOverlay": {}
                }
              }
            },
            "visible": true,
            "text": "Internet of Wookies",
            "font": "18px Helvetica",
            "color": "black",
            "alignment": "center"
          },
          "meta": {
            "editorX": 152,
            "editorY": 13,
            "lastTrigger": "triggered"
          },
          "triggers": {
            "triggered": []
          }
        },
        {
          "name": "CloudCommand",
          "type": "AppCloudCommand",
          "variants": [
            "app"
          ],
          "properties": {
            "errorData": null,
            "time": 15000,
            "value": null
          },
          "meta": {
            "editorX": 161,
            "editorY": 261,
            "lastTrigger": "commandReceived"
          },
          "triggers": {
            "triggered": [],
            "commandReceived": [
              {
                "mapping": {
                  "value": {
                    "code": ""
                  }
                },
                "targetOrder": [
                  "value"
                ],
                "targetElement": "BLECharacteristicCustom",
                "targetAbility": "write"
              }
            ]
          }
        },
        {
          "name": "Image",
          "type": "AppUIImage",
          "variants": [
            "app",
            "ui"
          ],
          "properties": {
            "errorData": null,
            "layouts": {
              "320": {
                "560": {
                  "width": 235,
                  "height": 152.1625,
                  "x": 46,
                  "y": 53,
                  "rotation": 0,
                  "propertyOverlay": {}
                }
              }
            },
            "visible": true,
            "image": "data:image/jpg;base64,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",
            "scaling": "targetWidth",
            "pressedData": {
              "x": 0,
              "y": 0
            },
            "releasedData": {
              "x": 0,
              "y": 0
            },
            "overData": {
              "x": 0,
              "y": 0
            },
            "leftData": {
              "x": 0,
              "y": 0
            }
          },
          "meta": {
            "editorX": 82,
            "editorY": 142,
            "lastTrigger": "triggered"
          },
          "triggers": {
            "triggered": [],
            "pressed": [],
            "released": [],
            "over": [],
            "imageSet": []
          }
        }
      ]
    },
    "Cloud": {
      "type": "cloud",
      "compilerVersion": "latest",
      "variants": [],
      "meta": {},
      "elements": [
        {
          "name": "CloudCommand",
          "type": "CloudCommand",
          "variants": [
            "cloud"
          ],
          "properties": {
            "errorData": null,
            "time": 15000,
            "value": null
          },
          "meta": {
            "editorX": 350,
            "editorY": 38,
            "lastTrigger": "commandQueued"
          },
          "triggers": {
            "triggered": [],
            "commandQueued": []
          },
          "coupledElementName": "CloudCommand",
          "coupledElementPlaneName": "App View"
        },
        {
          "name": "CloudSchedule",
          "type": "CloudSchedule",
          "variants": [
            "cloud"
          ],
          "properties": {
            "errorData": null,
            "minute": "30",
            "hour": "11",
            "dayOfWeek": null
          },
          "meta": {
            "editorX": 154,
            "editorY": 37,
            "lastTrigger": "scheduled"
          },
          "triggers": {
            "triggered": [],
            "scheduled": [
              {
                "mapping": {
                  "value": {
                    "code": ""
                  }
                },
                "targetOrder": [
                  "value"
                ],
                "targetElement": "CloudCommand",
                "targetAbility": "sendCommand"
              }
            ]
          }
        }
      ],
      "layout": {
        "height": 1000,
        "width": 1000,
        "zIndexOrder": []
      }
    }
  }
}

Internet of Wookies firmware.bin

C/C++
Flash to NXP Rapid IoT
No preview (download only).

Internet of Wookies source.zip

C/C++
Source code
No preview (download only).

Credits

Jeffrey Jacques

Jeffrey Jacques

2 projects • 3 followers

Comments