[{"data":1,"prerenderedAt":1883},["ShallowReactive",2],{"navigation":3,"\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdeploy":488,"\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdeploy-surround":1878},[4,326,444,470],{"title":5,"path":6,"stem":7,"children":8,"page":191},"Docs","\u002Fdocs","1.docs",[9,32,62,116,138,192,262,268,292],{"title":10,"path":11,"stem":12,"children":13,"icon":15},"Getting Started","\u002Fdocs\u002Fgetting-started","1.docs\u002F1.getting-started\u002F1.index",[14,16,20,24,28],{"title":10,"path":11,"stem":12,"icon":15},"i-lucide-house",{"title":17,"path":18,"stem":19},"Register a User","\u002Fdocs\u002Fgetting-started\u002Fregister-a-user","1.docs\u002F1.getting-started\u002F2.register-a-user",{"title":21,"path":22,"stem":23},"Platform Overview","\u002Fdocs\u002Fgetting-started\u002Fplatform-overview","1.docs\u002F1.getting-started\u002F3.platform-overview",{"title":25,"path":26,"stem":27},"Create an Organisation","\u002Fdocs\u002Fgetting-started\u002Fcreate-an-organisation","1.docs\u002F1.getting-started\u002F4.create-an-organisation",{"title":29,"path":30,"stem":31},"Quickstarts","\u002Fdocs\u002Fgetting-started\u002Fquickstarts","1.docs\u002F1.getting-started\u002F5.quickstarts",{"title":33,"path":34,"stem":35,"children":36},"Organisation Administration","\u002Fdocs\u002Finfuse-cloud","1.docs\u002F2.infuse-cloud\u002F1.index",[37,38,42,46,50,54,58],{"title":33,"path":34,"stem":35},{"title":39,"path":40,"stem":41},"Create or Switch Organisations","\u002Fdocs\u002Finfuse-cloud\u002Fcreate-or-switch-organisations","1.docs\u002F2.infuse-cloud\u002F2.create-or-switch-organisations",{"title":43,"path":44,"stem":45},"Organisation Profile","\u002Fdocs\u002Finfuse-cloud\u002Forganisation-profile","1.docs\u002F2.infuse-cloud\u002F3.organisation-profile",{"title":47,"path":48,"stem":49},"Members and Invitations","\u002Fdocs\u002Finfuse-cloud\u002Fmembers-and-invitations","1.docs\u002F2.infuse-cloud\u002F4.members-and-invitations",{"title":51,"path":52,"stem":53},"Member Roles","\u002Fdocs\u002Finfuse-cloud\u002Fmember-roles","1.docs\u002F2.infuse-cloud\u002F5.member-roles",{"title":55,"path":56,"stem":57},"API Access","\u002Fdocs\u002Finfuse-cloud\u002Fapi-access","1.docs\u002F2.infuse-cloud\u002F6.api-access",{"title":59,"path":60,"stem":61},"Webhooks","\u002Fdocs\u002Finfuse-cloud\u002Fwebhooks","1.docs\u002F2.infuse-cloud\u002F7.webhooks",{"title":63,"path":64,"stem":65,"children":66},"Infuse-IoT Cloud","\u002Fdocs\u002Finfuse-iot-cloud","1.docs\u002F3.infuse-iot-cloud\u002F1.index",[67,68,72,76,80,84,88,92,96,100,104,108,112],{"title":63,"path":64,"stem":65},{"title":69,"path":70,"stem":71},"Provisioning","\u002Fdocs\u002Finfuse-iot-cloud\u002Fprovisioning","1.docs\u002F3.infuse-iot-cloud\u002F10.provisioning",{"title":73,"path":74,"stem":75},"Connectivity","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconnectivity","1.docs\u002F3.infuse-iot-cloud\u002F11.connectivity",{"title":77,"path":78,"stem":79},"Definitions","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdefinitions","1.docs\u002F3.infuse-iot-cloud\u002F12.definitions",{"title":81,"path":82,"stem":83},"Telemetry","\u002Fdocs\u002Finfuse-iot-cloud\u002Ftelemetry","1.docs\u002F3.infuse-iot-cloud\u002F13.telemetry",{"title":85,"path":86,"stem":87},"Console","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconsole","1.docs\u002F3.infuse-iot-cloud\u002F2.console",{"title":89,"path":90,"stem":91},"Concepts","\u002Fdocs\u002Finfuse-iot-cloud\u002Fconcepts","1.docs\u002F3.infuse-iot-cloud\u002F3.concepts",{"title":93,"path":94,"stem":95},"Boards","\u002Fdocs\u002Finfuse-iot-cloud\u002Fboards","1.docs\u002F3.infuse-iot-cloud\u002F4.boards",{"title":97,"path":98,"stem":99},"Networks","\u002Fdocs\u002Finfuse-iot-cloud\u002Fnetworks","1.docs\u002F3.infuse-iot-cloud\u002F5.networks",{"title":101,"path":102,"stem":103},"Devices","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdevices","1.docs\u002F3.infuse-iot-cloud\u002F6.devices",{"title":105,"path":106,"stem":107},"Device Configuration","\u002Fdocs\u002Finfuse-iot-cloud\u002Fdevice-configuration","1.docs\u002F3.infuse-iot-cloud\u002F7.device-configuration",{"title":109,"path":110,"stem":111},"Applications and Releases","\u002Fdocs\u002Finfuse-iot-cloud\u002Fapplications-and-releases","1.docs\u002F3.infuse-iot-cloud\u002F8.applications-and-releases",{"title":113,"path":114,"stem":115},"Commands","\u002Fdocs\u002Finfuse-iot-cloud\u002Fcommands","1.docs\u002F3.infuse-iot-cloud\u002F9.commands",{"title":117,"path":118,"stem":119,"children":120},"Infuse-DB","\u002Fdocs\u002Finfuse-db","1.docs\u002F4.infuse-db\u002F1.index",[121,122,126,130,134],{"title":117,"path":118,"stem":119},{"title":123,"path":124,"stem":125},"Datasets","\u002Fdocs\u002Finfuse-db\u002Fdatasets","1.docs\u002F4.infuse-db\u002F2.datasets",{"title":127,"path":128,"stem":129},"Ingestion","\u002Fdocs\u002Finfuse-db\u002Fingestion","1.docs\u002F4.infuse-db\u002F3.ingestion",{"title":131,"path":132,"stem":133},"Querying","\u002Fdocs\u002Finfuse-db\u002Fquerying","1.docs\u002F4.infuse-db\u002F4.querying",{"title":135,"path":136,"stem":137},"Retention","\u002Fdocs\u002Finfuse-db\u002Fretention","1.docs\u002F4.infuse-db\u002F5.retention",{"title":139,"path":140,"stem":141,"children":142},"Embedded Tools","\u002Fdocs\u002Finfuse-iot-sdk","1.docs\u002F4.infuse-iot-sdk\u002F1.index",[143,144,148],{"title":139,"path":140,"stem":141},{"title":145,"path":146,"stem":147},"Infuse-IoT SDK","\u002Fdocs\u002Finfuse-iot-sdk\u002Fsdk-reference","1.docs\u002F4.infuse-iot-sdk\u002F2.sdk-reference",{"title":149,"path":150,"stem":151,"children":152,"page":191},"Python Tools","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools",[153,156,159,163,167,171,175,179,183,187],{"title":149,"path":154,"stem":155},"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fpython-tools","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F01.python-tools",{"title":113,"path":157,"stem":158},"\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcommands","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F02.commands",{"title":160,"path":161,"stem":162},"Credential Management","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcredentials","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F03.credentials",{"title":164,"path":165,"stem":166},"Gateways","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fgateways","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F04.gateways",{"title":168,"path":169,"stem":170},"Infuse-IoT Cloud support","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fcloud","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F05.cloud",{"title":172,"path":173,"stem":174},"Provision Hardware","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fhardware-provisioning","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F06.hardware-provisioning",{"title":176,"path":177,"stem":178},"TDF Viewers","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Ftdf-viewers","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F07.tdf-viewers",{"title":180,"path":181,"stem":182},"RPC Runners","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Frpc-runner","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F08.rpc-runner",{"title":184,"path":185,"stem":186},"Over-the-Air Upgrades","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fota-upgrades","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F09.ota-upgrades",{"title":188,"path":189,"stem":190},"Bluetooth Log Viewer","\u002Fdocs\u002Finfuse-iot-sdk\u002Fpython-tools\u002Fble-log-viewer","1.docs\u002F4.infuse-iot-sdk\u002Fpython-tools\u002F10.ble-log-viewer",false,{"title":193,"path":194,"stem":195,"children":196},"Infuse-Marketplace","\u002Fdocs\u002Fmarketplace","1.docs\u002F5.marketplace\u002F1.index",[197,198,202,206,232],{"title":193,"path":194,"stem":195},{"title":199,"path":200,"stem":201},"Infuse-Marketplace Instances","\u002Fdocs\u002Fmarketplace\u002Finstances","1.docs\u002F5.marketplace\u002F2.instances",{"title":203,"path":204,"stem":205},"Infuse-Marketplace Roles","\u002Fdocs\u002Fmarketplace\u002Froles","1.docs\u002F5.marketplace\u002F3.roles",{"title":207,"path":208,"stem":209,"children":210},"Infuse-Marketplace Developers","\u002Fdocs\u002Fmarketplace\u002Fdevelopers","1.docs\u002F5.marketplace\u002Fdevelopers\u002F1.index",[211,212,216,220,224,228],{"title":207,"path":208,"stem":209},{"title":213,"path":214,"stem":215},"Create an App or Algorithm","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fcreate-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F2.create-product",{"title":217,"path":218,"stem":219},"Upload Assets","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fupload-assets","1.docs\u002F5.marketplace\u002Fdevelopers\u002F3.upload-assets",{"title":221,"path":222,"stem":223},"Releases and Versions","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Freleases-and-versions","1.docs\u002F5.marketplace\u002Fdevelopers\u002F4.releases-and-versions",{"title":225,"path":226,"stem":227},"Pricing","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpricing","1.docs\u002F5.marketplace\u002Fdevelopers\u002F5.pricing",{"title":229,"path":230,"stem":231},"Publish an App or Algorithm","\u002Fdocs\u002Fmarketplace\u002Fdevelopers\u002Fpublish-product","1.docs\u002F5.marketplace\u002Fdevelopers\u002F6.publish-product",{"title":233,"path":234,"stem":235,"children":236},"Infuse-Marketplace Providers","\u002Fdocs\u002Fmarketplace\u002Fproviders","1.docs\u002F5.marketplace\u002Fproviders\u002F1.index",[237,238,242,246,250,254,258],{"title":233,"path":234,"stem":235},{"title":239,"path":240,"stem":241},"Discover Apps and Algorithms","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fdiscover-products","1.docs\u002F5.marketplace\u002Fproviders\u002F2.discover-products",{"title":243,"path":244,"stem":245},"Create and Manage Listings","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcreate-listings","1.docs\u002F5.marketplace\u002Fproviders\u002F3.create-listings",{"title":247,"path":248,"stem":249},"Build a Storefront","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fbuild-a-storefront","1.docs\u002F5.marketplace\u002Fproviders\u002F4.build-a-storefront",{"title":251,"path":252,"stem":253},"Checkout Flow","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fcheckout-flow","1.docs\u002F5.marketplace\u002Fproviders\u002F5.checkout-flow",{"title":255,"path":256,"stem":257},"Purchases","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Fpurchases","1.docs\u002F5.marketplace\u002Fproviders\u002F6.purchases",{"title":259,"path":260,"stem":261},"Install Purchased Apps and Algorithms","\u002Fdocs\u002Fmarketplace\u002Fproviders\u002Finstall-purchased-products","1.docs\u002F5.marketplace\u002Fproviders\u002F7.install-purchased-products",{"title":263,"path":264,"stem":265,"children":266},"Infuse-Analytics","\u002Fdocs\u002Finfuse-analytics","1.docs\u002F6.infuse-analytics\u002F1.index",[267],{"title":263,"path":264,"stem":265},{"title":89,"path":269,"stem":270,"children":271},"\u002Fdocs\u002Fconcepts","1.docs\u002F7.concepts\u002F1.index",[272,273,277,281,284,288],{"title":89,"path":269,"stem":270},{"title":274,"path":275,"stem":276},"Organisations","\u002Fdocs\u002Fconcepts\u002Forganisations","1.docs\u002F7.concepts\u002F2.organisations",{"title":278,"path":279,"stem":280},"Products","\u002Fdocs\u002Fconcepts\u002Fproducts","1.docs\u002F7.concepts\u002F3.products",{"title":101,"path":282,"stem":283},"\u002Fdocs\u002Fconcepts\u002Fdevices","1.docs\u002F7.concepts\u002F5.devices",{"title":285,"path":286,"stem":287},"Entitlements","\u002Fdocs\u002Fconcepts\u002Fentitlements","1.docs\u002F7.concepts\u002F6.entitlements",{"title":289,"path":290,"stem":291},"Infuse-Marketplace Model","\u002Fdocs\u002Fconcepts\u002Fmarketplace-model","1.docs\u002F7.concepts\u002F7.marketplace-model",{"title":293,"path":294,"stem":295,"children":296},"IAM and Access","\u002Fdocs\u002Fiam-and-access","1.docs\u002F8.iam-and-access\u002F1.index",[297,298,302,306,310,314,318,322],{"title":293,"path":294,"stem":295},{"title":299,"path":300,"stem":301},"Users, Groups, and Roles","\u002Fdocs\u002Fiam-and-access\u002Fusers-groups-and-roles","1.docs\u002F8.iam-and-access\u002F2.users-groups-and-roles",{"title":303,"path":304,"stem":305},"Permissions and Resource Limits","\u002Fdocs\u002Fiam-and-access\u002Fpermissions","1.docs\u002F8.iam-and-access\u002F3.permissions",{"title":307,"path":308,"stem":309},"Service Accounts","\u002Fdocs\u002Fiam-and-access\u002Fservice-accounts","1.docs\u002F8.iam-and-access\u002F4.service-accounts",{"title":311,"path":312,"stem":313},"API Keys","\u002Fdocs\u002Fiam-and-access\u002Fapi-tokens","1.docs\u002F8.iam-and-access\u002F5.api-tokens",{"title":315,"path":316,"stem":317},"Token Exchange","\u002Fdocs\u002Fiam-and-access\u002Ftoken-exchange","1.docs\u002F8.iam-and-access\u002F6.token-exchange",{"title":319,"path":320,"stem":321},"Rotate and Revoke Credentials","\u002Fdocs\u002Fiam-and-access\u002Frotate-and-revoke-credentials","1.docs\u002F8.iam-and-access\u002F7.rotate-and-revoke-credentials",{"title":323,"path":324,"stem":325},"Troubleshooting Auth","\u002Fdocs\u002Fiam-and-access\u002Ftroubleshooting-auth","1.docs\u002F8.iam-and-access\u002F8.troubleshooting-auth",{"title":327,"path":328,"stem":329,"children":330},"Guides","\u002Fguides","2.guides\u002F1.index",[331,332,342,352,424,434],{"title":327,"path":328,"stem":329},{"title":333,"path":334,"stem":335,"children":336},"Access Guides","\u002Fguides\u002Faccess","2.guides\u002Faccess\u002F1.index",[337,338],{"title":333,"path":334,"stem":335},{"title":339,"path":340,"stem":341},"Create an API Key","\u002Fguides\u002Faccess\u002Fcreate-an-api-token","2.guides\u002Faccess\u002F2.create-an-api-token",{"title":343,"path":344,"stem":345,"children":346},"Data Guides","\u002Fguides\u002Fdata","2.guides\u002Fdata\u002F1.index",[347,348],{"title":343,"path":344,"stem":345},{"title":349,"path":350,"stem":351},"Stream IoT Data to Infuse-DB","\u002Fguides\u002Fdata\u002Fstream-iot-data-to-infuse-db","2.guides\u002Fdata\u002F2.stream-iot-data-to-infuse-db",{"title":353,"path":354,"stem":355,"children":356},"Embedded SDK Guides","\u002Fguides\u002Fembedded-iot","2.guides\u002Fembedded-iot\u002F1.index",[357,358,362,384,394],{"title":353,"path":354,"stem":355},{"title":359,"path":360,"stem":361},"Python Tools Setup & Install","\u002Fguides\u002Fembedded-iot\u002Fpython-setup-install","2.guides\u002Fembedded-iot\u002F2.python-setup-install",{"title":363,"path":364,"stem":365,"children":366},"Creating Embedded Algorithms","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F1.index",[367,368,372,376,380],{"title":363,"path":364,"stem":365},{"title":369,"path":370,"stem":371},"Data collection","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdata-collection","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F2.data-collection",{"title":373,"path":374,"stem":375},"Dataset Creation","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdataset-creation","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F3.dataset-creation",{"title":377,"path":378,"stem":379},"Training Models","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Ftraining-models","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F4.training-models",{"title":381,"path":382,"stem":383},"Deploying Models","\u002Fguides\u002Fembedded-iot\u002Fembedded-algorithms\u002Fdeploy","2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F5.deploy",{"title":385,"path":386,"stem":387,"children":388},"Hardware Guides","\u002Fguides\u002Fembedded-iot\u002Fhardware","2.guides\u002Fembedded-iot\u002Fhardware\u002F1.index",[389,390],{"title":385,"path":386,"stem":387},{"title":391,"path":392,"stem":393},"nRF54L15 Tag","\u002Fguides\u002Fembedded-iot\u002Fhardware\u002Fnrf54l15-tag","2.guides\u002Fembedded-iot\u002Fhardware\u002F2.nrf54l15-tag",{"title":395,"path":396,"stem":397,"children":398},"How To's","\u002Fguides\u002Fembedded-iot\u002Fhow-tos","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F1.index",[399,400,404,408,412,416,420],{"title":395,"path":396,"stem":397},{"title":401,"path":402,"stem":403},"Device Provisioning","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fprovision-a-tag","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F01.provision-a-tag",{"title":405,"path":406,"stem":407},"Setup and Flash a gateway","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fflash-a-gateway","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F02.flash-a-gateway",{"title":409,"path":410,"stem":411},"Connecting to a gateway","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fconnect-gateway","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F03.connect-gateway",{"title":413,"path":414,"stem":415},"How to physically connect a device","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fdevice-logs","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F03.device-logs",{"title":417,"path":418,"stem":419},"Configuring the default network","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Fconfigure-network","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F04.configure-network",{"title":421,"path":422,"stem":423},"Device's Infuse ID","\u002Fguides\u002Fembedded-iot\u002Fhow-tos\u002Ftag-infuse-id","2.guides\u002Fembedded-iot\u002Fhow-tos\u002F05.tag-infuse-id",{"title":425,"path":426,"stem":427,"children":428},"IoT Guides","\u002Fguides\u002Fiot","2.guides\u002Fiot\u002F1.index",[429,430],{"title":425,"path":426,"stem":427},{"title":431,"path":432,"stem":433},"Connect an IoT Device","\u002Fguides\u002Fiot\u002Fconnect-a-device","2.guides\u002Fiot\u002F2.connect-a-device",{"title":435,"path":436,"stem":437,"children":438},"Infuse-Marketplace Guides","\u002Fguides\u002Fmarketplace","2.guides\u002Fmarketplace\u002F1.index",[439,440],{"title":435,"path":436,"stem":437},{"title":441,"path":442,"stem":443},"Build an Infuse-Marketplace Storefront","\u002Fguides\u002Fmarketplace\u002Fbuild-a-storefront","2.guides\u002Fmarketplace\u002F2.build-a-storefront",{"title":445,"path":446,"stem":447,"children":448},"API Reference","\u002Fapi-reference","3.api-reference\u002F1.index",[449,450,454,458,462,466],{"title":445,"path":446,"stem":447},{"title":451,"path":452,"stem":453},"Admin API","\u002Fapi-reference\u002Fcloud","3.api-reference\u002F2.cloud",{"title":455,"path":456,"stem":457},"Infuse-Marketplace API","\u002Fapi-reference\u002Fmarketplace","3.api-reference\u002F3.marketplace",{"title":459,"path":460,"stem":461},"IAM API","\u002Fapi-reference\u002Fiam","3.api-reference\u002F4.iam",{"title":463,"path":464,"stem":465},"Infuse-IoT Cloud API","\u002Fapi-reference\u002Fiot","3.api-reference\u002F5.iot",{"title":467,"path":468,"stem":469},"Infuse-DB API","\u002Fapi-reference\u002Fdb","3.api-reference\u002F6.db",{"title":471,"path":472,"stem":473,"children":474},"Resources","\u002Fresources","4.resources\u002F1.index",[475,476,480,484],{"title":471,"path":472,"stem":473},{"title":477,"path":478,"stem":479},"SDKs","\u002Fresources\u002Fsdks","4.resources\u002F2.sdks",{"title":481,"path":482,"stem":483},"OpenAPI Specs","\u002Fresources\u002Fopenapi-specs","4.resources\u002F3.openapi-specs",{"title":485,"path":486,"stem":487},"Examples","\u002Fresources\u002Fexamples","4.resources\u002F4.examples",{"id":489,"title":381,"body":490,"description":1872,"extension":1873,"links":1874,"meta":1875,"navigation":1378,"path":382,"seo":1876,"stem":383,"__hash__":1877},"docs\u002F2.guides\u002Fembedded-iot\u002Fembedded-algorithms\u002F5.deploy.md",{"type":491,"value":492,"toc":1861},"minimark",[493,497,510,1857],[494,495,496],"p",{},"With a completed model, it's time to test it out on real hardware.",[498,499,500,504,507],"ol",{},[501,502,503],"li",{},"Select & Download the model",[501,505,506],{},"Test it in simulation (Optional)",[501,508,509],{},"Deploy it to the target hardware",[511,512,514,519,522,525,529,532,540,543,549,552,602,606,609,625,632,640,643,1854],"steps",{"level":513},"2",[515,516,518],"h2",{"id":517},"download-the-model","Download the Model",[494,520,521],{},"Once training has successfully completed, there may be multiple models available.\nThese will typically involve a tradeoff between accuracy vs flash footprint & processing time.",[494,523,524],{},"Once selected, download the model locally. It comes bundled as the model source files & weights\nand a standalone executable that can be used to test the model on your local machine.",[515,526,528],{"id":527},"test-the-model-in-simulation-optional","Test the Model in Simulation (Optional)",[494,530,531],{},"Downloading the model contains two key components:",[498,533,534,537],{},[501,535,536],{},"The ML algorithms C code, to be deployed to the embedded device.",[501,538,539],{},"An standalone executable (for each OS) that can be run on your local machine.",[494,541,542],{},"Using the standalone executable downloaded with the model, you can test the model in a simulated environment on your local machine.\nThe model accepts a CSV input and requires similar configuration as the model training (like specifying the label and session columns when applicable).",[544,545,546],"tip",{},[494,547,548],{},"The standalone executable is very useful to validate the model on the entire dataset, non-training data or specific scenarios before deploying it to the target hardware.",[494,550,551],{},"When deploying the model to the target hardware, sometimes the model can be incorrectly input or configured.\nIt's also useful to sanity check the model's behaviour in a controlled environment,\nallowing you to test standardised inputs and validate the outputs are identical in the both the\nsimulation and the target hardware environments.\nThese tests help identify any discrepancies in the model before deploying to firmware early on and isolating firmware issues.",[544,553,554,560,582,585,599],{},[494,555,556,557],{},"Take note that the input columns won't necessarily match the training csv data.\nThe resultant order is not clear, but column headers seem to be sorted alphabetically. e.g.\nUsing training data formatted like",[558,559],"br",{},[561,562,563],"table",{},[564,565,566],"thead",{},[567,568,569,573,576,579],"tr",{},[570,571,572],"th",{},"acc_x",[570,574,575],{},"acc_y",[570,577,578],{},"acc_z",[570,580,581],{},"acc_mag",[494,583,584],{},"Needs to be rearranged to this for model input:",[561,586,587],{},[564,588,589],{},[567,590,591,593,595,597],{},[570,592,581],{},[570,594,572],{},[570,596,575],{},[570,598,578],{},[494,600,601],{},"When testing using the standalone executable, ensure the CSV data used is re-ordered to match.",[515,603,605],{"id":604},"deploy-the-model-to-the-target-hardware","Deploy the Model to the Target Hardware",[494,607,608],{},"Once you are satisfied with the model's performance in simulation, you can deploy it to the target hardware.\nFollow the hardware-specific instructions to transfer the model files and executable to the device.",[494,610,611,612,616,617,620,621,624],{},"Refer to the sample in: ",[613,614,615],"code",{},"samples\u002Falgorithms\u002Fimu_algo",".\nInsert the algorithm into ",[613,618,619],{},"nrf_edgeai_generated"," folder into the ",[613,622,623],{},"imu_algo\u002Fgesture_algorithm"," subfolder.",[494,626,627,628,631],{},"The sample contains two ",[613,629,630],{},"main.c"," files:",[498,633,634,637],{},[501,635,636],{},"The first being the general application setting up hardware, sampling accelerometer,",[501,638,639],{},"The second containing the gesture algorithm and used as a standalone extension\nadded to the first dynamically.",[494,641,642],{},"However, there are a few points that need to be updated to accomodate the model:",[511,644,646,651,669,683,687,696,734,738,747,923,935,938,1646,1650,1653,1752,1756,1759,1762,1847],{"level":645},"3",[647,648,650],"h3",{"id":649},"model-input-count","Model input count",[494,652,653,654,657,658,668],{},"Check ",[613,655,656],{},"nrf_edgeai_user_model.c"," for the parameter ",[613,659,663],{"className":660,"language":661,"style":662},"language-c shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","c","",[664,665,667],"span",{"class":666},"sTEyZ","USER_UNIQ_INPUTS_NUM",".\nThis indicates the number of input values the model expects.",[494,670,671,672,675,676,682],{},"In ",[613,673,674],{},"imu_algo\u002Fgesture_algorithm\u002Fmain.c",", update the ",[613,677,680],{"className":678,"language":679,"style":662},"language-C shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","C",[664,681,667],{"class":666}," value to the corresponding value above.",[647,684,686],{"id":685},"model-input-type","Model Input type",[494,688,689,690,695],{},"Similarly, check the model configuration for the input type: ",[613,691,692],{"className":678,"language":679,"style":662},[664,693,694],{"class":666},"INPUT_FEATURE_DATA_TYPE",".",[494,697,698,699,703,704,709,710,714,715,721,722,728,729,695],{},"In the ",[613,700,701],{"className":660,"language":661,"style":662},[664,702,630],{"class":666},", search for the ",[613,705,706],{"className":660,"language":661,"style":662},[664,707,708],{"class":666},"flt_32 input_sample"," and update the\ntype depending on the ",[613,711,712],{"className":660,"language":661,"style":662},[664,713,694],{"class":666},", using\n",[613,716,717],{"className":660,"language":661,"style":662},[664,718,720],{"class":719},"sBMFI","flt32_t",", ",[613,723,724],{"className":660,"language":661,"style":662},[664,725,727],{"class":726},"spNyl","int16_t"," or ",[613,730,731],{"className":660,"language":661,"style":662},[664,732,733],{"class":726},"int8_t",[647,735,737],{"id":736},"input-model-order","Input model order",[494,739,740,741,746],{},"Similarly, the model is fed by copying values to ",[613,742,743],{"className":660,"language":661,"style":662},[664,744,745],{"class":666},"input_sample",", before being provided to the model e.g.",[748,749,751],"pre",{"className":660,"code":750,"language":661,"meta":662,"style":662},"  input_sample[0] = mag(acc_sample->x, acc_sample->y, acc_sample->z);\n  input_sample[1] = (float)acc_sample->x;\n  input_sample[2] = (float)acc_sample->y;\n  input_sample[3] = (float)acc_sample->z;\n  nrf_edgeai_feed_inputs(user_model, input_sample, USER_UNIQ_INPUTS_NUM);\n",[613,752,753,814,846,873,900],{"__ignoreMap":662},[664,754,757,760,764,768,771,774,778,781,784,787,791,794,797,799,802,804,806,808,811],{"class":755,"line":756},"line",1,[664,758,759],{"class":666},"  input_sample",[664,761,763],{"class":762},"sMK4o","[",[664,765,767],{"class":766},"sbssI","0",[664,769,770],{"class":762},"]",[664,772,773],{"class":762}," =",[664,775,777],{"class":776},"s2Zo4"," mag",[664,779,780],{"class":762},"(",[664,782,783],{"class":666},"acc_sample",[664,785,786],{"class":762},"->",[664,788,790],{"class":789},"sHdIc","x",[664,792,793],{"class":762},",",[664,795,796],{"class":666}," acc_sample",[664,798,786],{"class":762},[664,800,801],{"class":789},"y",[664,803,793],{"class":762},[664,805,796],{"class":666},[664,807,786],{"class":762},[664,809,810],{"class":789},"z",[664,812,813],{"class":762},");\n",[664,815,817,819,821,824,826,828,831,834,837,839,841,843],{"class":755,"line":816},2,[664,818,759],{"class":666},[664,820,763],{"class":762},[664,822,823],{"class":766},"1",[664,825,770],{"class":762},[664,827,773],{"class":762},[664,829,830],{"class":762}," (",[664,832,833],{"class":726},"float",[664,835,836],{"class":762},")",[664,838,783],{"class":666},[664,840,786],{"class":762},[664,842,790],{"class":666},[664,844,845],{"class":762},";\n",[664,847,849,851,853,855,857,859,861,863,865,867,869,871],{"class":755,"line":848},3,[664,850,759],{"class":666},[664,852,763],{"class":762},[664,854,513],{"class":766},[664,856,770],{"class":762},[664,858,773],{"class":762},[664,860,830],{"class":762},[664,862,833],{"class":726},[664,864,836],{"class":762},[664,866,783],{"class":666},[664,868,786],{"class":762},[664,870,801],{"class":666},[664,872,845],{"class":762},[664,874,876,878,880,882,884,886,888,890,892,894,896,898],{"class":755,"line":875},4,[664,877,759],{"class":666},[664,879,763],{"class":762},[664,881,645],{"class":766},[664,883,770],{"class":762},[664,885,773],{"class":762},[664,887,830],{"class":762},[664,889,833],{"class":726},[664,891,836],{"class":762},[664,893,783],{"class":666},[664,895,786],{"class":762},[664,897,810],{"class":666},[664,899,845],{"class":762},[664,901,903,906,908,911,913,916,918,921],{"class":755,"line":902},5,[664,904,905],{"class":776},"  nrf_edgeai_feed_inputs",[664,907,780],{"class":762},[664,909,910],{"class":666},"user_model",[664,912,793],{"class":762},[664,914,915],{"class":666}," input_sample",[664,917,793],{"class":762},[664,919,920],{"class":666}," USER_UNIQ_INPUTS_NUM",[664,922,813],{"class":762},[494,924,925,926,929,930,929,932,934],{},"These will need to be updated depending on the input order of the model.\nFor accelerometer values, refer to the ",[613,927,928],{},"acc_sample->``x","\u002F",[613,931,801],{},[613,933,810],{},".\nHere, it's simpler to calculate magnitudes manually.",[494,936,937],{},"Additionally, gyro data can be integrated easily using e.g.",[748,939,950],{"className":660,"code":940,"highlights":941,"language":661,"meta":662,"style":662},"  \u002F* Feed data into the model.*\u002F\n  const struct imu_sample *acc_sample;\n  const struct imu_sample *gyro_sample;\n  ...\n  imu_data = zbus_chan_const_msg(chan);\n  acc_start = imu_data->accelerometer.offset;\n  gyro_start = imu_data->gyroscope.offset;\n  inference_window_start = imu_data->accelerometer.timestamp_ticks;\n  for (int i = 0; i \u003C imu_data->accelerometer.num; i++) {\n    \u002F* This model expects Floating Point inputs, and a magnitude *\u002F\n    acc_sample = &imu_data->samples[acc_start + i];\n    gyro_sample = &gyro_data->samples[gyro_start + i];\n    input_sample[0] = sqrtf((float)acc_sample->x * (float)acc_sample->x +\n          (float)acc_sample->y * (float)acc_sample->y +\n          (float)acc_sample->z * (float)acc_sample->z);\n    input_sample[1] = (float)acc_sample->x;\n    input_sample[2] = (float)acc_sample->y;\n    input_sample[3] = (float)acc_sample->z;\n\n    input_sample[4] = sqrtf((float)gyro_sample->x * (float)gyro_sample->x +\n          (float)gyro_sample->y * (float)gyro_sample->y +\n          (float)gyro_sample->z * (float)gyro_sample->z);\n    input_sample[5] = (float)gyro_sample->x;\n    input_sample[6] = (float)gyro_sample->y;\n    input_sample[7] = (float)gyro_sample->z;\n\n    \u002F* Feed this sample pair into the model's windowing buffer *\u002F\n    res = nrf_edgeai_feed_inputs(user_model, input_sample, USER_UNIQ_INPUTS_NUM);\n    if (res == NRF_EDGEAI_ERR_INPROGRESS) {\n      continue;\n    }\n  ...\n",[848,942,943,944,945,946,947,948,949],7,12,20,21,22,23,24,25,[613,951,952,958,976,993,998,1016,1034,1051,1068,1114,1120,1153,1181,1229,1261,1292,1319,1346,1373,1380,1424,1455,1486,1514,1542,1570,1575,1581,1606,1627,1635,1641],{"__ignoreMap":662},[664,953,954],{"class":755,"line":756},[664,955,957],{"class":956},"sHwdD","  \u002F* Feed data into the model.*\u002F\n",[664,959,960,963,966,969,972,974],{"class":755,"line":816},[664,961,962],{"class":726},"  const",[664,964,965],{"class":726}," struct",[664,967,968],{"class":666}," imu_sample ",[664,970,971],{"class":762},"*",[664,973,783],{"class":666},[664,975,845],{"class":762},[664,977,980,982,984,986,988,991],{"class":978,"line":848},[755,979],"highlight",[664,981,962],{"class":726},[664,983,965],{"class":726},[664,985,968],{"class":666},[664,987,971],{"class":762},[664,989,990],{"class":666},"gyro_sample",[664,992,845],{"class":762},[664,994,995],{"class":755,"line":875},[664,996,997],{"class":666},"  ...\n",[664,999,1000,1003,1006,1009,1011,1014],{"class":755,"line":902},[664,1001,1002],{"class":666},"  imu_data ",[664,1004,1005],{"class":762},"=",[664,1007,1008],{"class":776}," zbus_chan_const_msg",[664,1010,780],{"class":762},[664,1012,1013],{"class":666},"chan",[664,1015,813],{"class":762},[664,1017,1019,1022,1024,1027,1029,1032],{"class":755,"line":1018},6,[664,1020,1021],{"class":666},"  acc_start ",[664,1023,1005],{"class":762},[664,1025,1026],{"class":666}," imu_data",[664,1028,786],{"class":762},[664,1030,1031],{"class":666},"accelerometer.offset",[664,1033,845],{"class":762},[664,1035,1037,1040,1042,1044,1046,1049],{"class":1036,"line":942},[755,979],[664,1038,1039],{"class":666},"  gyro_start ",[664,1041,1005],{"class":762},[664,1043,1026],{"class":666},[664,1045,786],{"class":762},[664,1047,1048],{"class":666},"gyroscope.offset",[664,1050,845],{"class":762},[664,1052,1054,1057,1059,1061,1063,1066],{"class":755,"line":1053},8,[664,1055,1056],{"class":666},"  inference_window_start ",[664,1058,1005],{"class":762},[664,1060,1026],{"class":666},[664,1062,786],{"class":762},[664,1064,1065],{"class":666},"accelerometer.timestamp_ticks",[664,1067,845],{"class":762},[664,1069,1071,1075,1077,1080,1083,1085,1088,1091,1093,1096,1098,1100,1103,1105,1108,1111],{"class":755,"line":1070},9,[664,1072,1074],{"class":1073},"s7zQu","  for",[664,1076,830],{"class":762},[664,1078,1079],{"class":726},"int",[664,1081,1082],{"class":666}," i ",[664,1084,1005],{"class":762},[664,1086,1087],{"class":766}," 0",[664,1089,1090],{"class":762},";",[664,1092,1082],{"class":666},[664,1094,1095],{"class":762},"\u003C",[664,1097,1026],{"class":666},[664,1099,786],{"class":762},[664,1101,1102],{"class":666},"accelerometer.num",[664,1104,1090],{"class":762},[664,1106,1107],{"class":666}," i",[664,1109,1110],{"class":762},"++)",[664,1112,1113],{"class":762}," {\n",[664,1115,1117],{"class":755,"line":1116},10,[664,1118,1119],{"class":956},"    \u002F* This model expects Floating Point inputs, and a magnitude *\u002F\n",[664,1121,1123,1127,1129,1132,1135,1137,1140,1142,1145,1148,1150],{"class":755,"line":1122},11,[664,1124,1126],{"class":1125},"swJcz","    acc_sample ",[664,1128,1005],{"class":762},[664,1130,1131],{"class":762}," &",[664,1133,1134],{"class":666},"imu_data",[664,1136,786],{"class":762},[664,1138,1139],{"class":666},"samples",[664,1141,763],{"class":762},[664,1143,1144],{"class":1125},"acc_start ",[664,1146,1147],{"class":762},"+",[664,1149,1107],{"class":1125},[664,1151,1152],{"class":762},"];\n",[664,1154,1156,1159,1161,1163,1166,1168,1170,1172,1175,1177,1179],{"class":1155,"line":943},[755,979],[664,1157,1158],{"class":1125},"    gyro_sample ",[664,1160,1005],{"class":762},[664,1162,1131],{"class":762},[664,1164,1165],{"class":666},"gyro_data",[664,1167,786],{"class":762},[664,1169,1139],{"class":666},[664,1171,763],{"class":762},[664,1173,1174],{"class":1125},"gyro_start ",[664,1176,1147],{"class":762},[664,1178,1107],{"class":1125},[664,1180,1152],{"class":762},[664,1182,1184,1187,1189,1191,1193,1195,1198,1201,1203,1205,1207,1209,1211,1214,1216,1218,1220,1222,1224,1226],{"class":755,"line":1183},13,[664,1185,1186],{"class":666},"    input_sample",[664,1188,763],{"class":762},[664,1190,767],{"class":766},[664,1192,770],{"class":762},[664,1194,773],{"class":762},[664,1196,1197],{"class":776}," sqrtf",[664,1199,1200],{"class":762},"((",[664,1202,833],{"class":726},[664,1204,836],{"class":762},[664,1206,783],{"class":666},[664,1208,786],{"class":762},[664,1210,790],{"class":666},[664,1212,1213],{"class":762}," *",[664,1215,830],{"class":762},[664,1217,833],{"class":726},[664,1219,836],{"class":762},[664,1221,783],{"class":666},[664,1223,786],{"class":762},[664,1225,790],{"class":666},[664,1227,1228],{"class":762}," +\n",[664,1230,1232,1235,1237,1239,1241,1243,1245,1247,1249,1251,1253,1255,1257,1259],{"class":755,"line":1231},14,[664,1233,1234],{"class":762},"          (",[664,1236,833],{"class":726},[664,1238,836],{"class":762},[664,1240,783],{"class":666},[664,1242,786],{"class":762},[664,1244,801],{"class":666},[664,1246,1213],{"class":762},[664,1248,830],{"class":762},[664,1250,833],{"class":726},[664,1252,836],{"class":762},[664,1254,783],{"class":666},[664,1256,786],{"class":762},[664,1258,801],{"class":666},[664,1260,1228],{"class":762},[664,1262,1264,1266,1268,1270,1272,1274,1276,1278,1280,1282,1284,1286,1288,1290],{"class":755,"line":1263},15,[664,1265,1234],{"class":762},[664,1267,833],{"class":726},[664,1269,836],{"class":762},[664,1271,783],{"class":666},[664,1273,786],{"class":762},[664,1275,810],{"class":666},[664,1277,1213],{"class":762},[664,1279,830],{"class":762},[664,1281,833],{"class":726},[664,1283,836],{"class":762},[664,1285,783],{"class":666},[664,1287,786],{"class":762},[664,1289,810],{"class":666},[664,1291,813],{"class":762},[664,1293,1295,1297,1299,1301,1303,1305,1307,1309,1311,1313,1315,1317],{"class":755,"line":1294},16,[664,1296,1186],{"class":666},[664,1298,763],{"class":762},[664,1300,823],{"class":766},[664,1302,770],{"class":762},[664,1304,773],{"class":762},[664,1306,830],{"class":762},[664,1308,833],{"class":726},[664,1310,836],{"class":762},[664,1312,783],{"class":666},[664,1314,786],{"class":762},[664,1316,790],{"class":666},[664,1318,845],{"class":762},[664,1320,1322,1324,1326,1328,1330,1332,1334,1336,1338,1340,1342,1344],{"class":755,"line":1321},17,[664,1323,1186],{"class":666},[664,1325,763],{"class":762},[664,1327,513],{"class":766},[664,1329,770],{"class":762},[664,1331,773],{"class":762},[664,1333,830],{"class":762},[664,1335,833],{"class":726},[664,1337,836],{"class":762},[664,1339,783],{"class":666},[664,1341,786],{"class":762},[664,1343,801],{"class":666},[664,1345,845],{"class":762},[664,1347,1349,1351,1353,1355,1357,1359,1361,1363,1365,1367,1369,1371],{"class":755,"line":1348},18,[664,1350,1186],{"class":666},[664,1352,763],{"class":762},[664,1354,645],{"class":766},[664,1356,770],{"class":762},[664,1358,773],{"class":762},[664,1360,830],{"class":762},[664,1362,833],{"class":726},[664,1364,836],{"class":762},[664,1366,783],{"class":666},[664,1368,786],{"class":762},[664,1370,810],{"class":666},[664,1372,845],{"class":762},[664,1374,1376],{"class":755,"line":1375},19,[664,1377,1379],{"emptyLinePlaceholder":1378},true,"\n",[664,1381,1383,1385,1387,1390,1392,1394,1396,1398,1400,1402,1404,1406,1408,1410,1412,1414,1416,1418,1420,1422],{"class":1382,"line":944},[755,979],[664,1384,1186],{"class":666},[664,1386,763],{"class":762},[664,1388,1389],{"class":766},"4",[664,1391,770],{"class":762},[664,1393,773],{"class":762},[664,1395,1197],{"class":776},[664,1397,1200],{"class":762},[664,1399,833],{"class":726},[664,1401,836],{"class":762},[664,1403,990],{"class":666},[664,1405,786],{"class":762},[664,1407,790],{"class":666},[664,1409,1213],{"class":762},[664,1411,830],{"class":762},[664,1413,833],{"class":726},[664,1415,836],{"class":762},[664,1417,990],{"class":666},[664,1419,786],{"class":762},[664,1421,790],{"class":666},[664,1423,1228],{"class":762},[664,1425,1427,1429,1431,1433,1435,1437,1439,1441,1443,1445,1447,1449,1451,1453],{"class":1426,"line":945},[755,979],[664,1428,1234],{"class":762},[664,1430,833],{"class":726},[664,1432,836],{"class":762},[664,1434,990],{"class":666},[664,1436,786],{"class":762},[664,1438,801],{"class":666},[664,1440,1213],{"class":762},[664,1442,830],{"class":762},[664,1444,833],{"class":726},[664,1446,836],{"class":762},[664,1448,990],{"class":666},[664,1450,786],{"class":762},[664,1452,801],{"class":666},[664,1454,1228],{"class":762},[664,1456,1458,1460,1462,1464,1466,1468,1470,1472,1474,1476,1478,1480,1482,1484],{"class":1457,"line":946},[755,979],[664,1459,1234],{"class":762},[664,1461,833],{"class":726},[664,1463,836],{"class":762},[664,1465,990],{"class":666},[664,1467,786],{"class":762},[664,1469,810],{"class":666},[664,1471,1213],{"class":762},[664,1473,830],{"class":762},[664,1475,833],{"class":726},[664,1477,836],{"class":762},[664,1479,990],{"class":666},[664,1481,786],{"class":762},[664,1483,810],{"class":666},[664,1485,813],{"class":762},[664,1487,1489,1491,1493,1496,1498,1500,1502,1504,1506,1508,1510,1512],{"class":1488,"line":947},[755,979],[664,1490,1186],{"class":666},[664,1492,763],{"class":762},[664,1494,1495],{"class":766},"5",[664,1497,770],{"class":762},[664,1499,773],{"class":762},[664,1501,830],{"class":762},[664,1503,833],{"class":726},[664,1505,836],{"class":762},[664,1507,990],{"class":666},[664,1509,786],{"class":762},[664,1511,790],{"class":666},[664,1513,845],{"class":762},[664,1515,1517,1519,1521,1524,1526,1528,1530,1532,1534,1536,1538,1540],{"class":1516,"line":948},[755,979],[664,1518,1186],{"class":666},[664,1520,763],{"class":762},[664,1522,1523],{"class":766},"6",[664,1525,770],{"class":762},[664,1527,773],{"class":762},[664,1529,830],{"class":762},[664,1531,833],{"class":726},[664,1533,836],{"class":762},[664,1535,990],{"class":666},[664,1537,786],{"class":762},[664,1539,801],{"class":666},[664,1541,845],{"class":762},[664,1543,1545,1547,1549,1552,1554,1556,1558,1560,1562,1564,1566,1568],{"class":1544,"line":949},[755,979],[664,1546,1186],{"class":666},[664,1548,763],{"class":762},[664,1550,1551],{"class":766},"7",[664,1553,770],{"class":762},[664,1555,773],{"class":762},[664,1557,830],{"class":762},[664,1559,833],{"class":726},[664,1561,836],{"class":762},[664,1563,990],{"class":666},[664,1565,786],{"class":762},[664,1567,810],{"class":666},[664,1569,845],{"class":762},[664,1571,1573],{"class":755,"line":1572},26,[664,1574,1379],{"emptyLinePlaceholder":1378},[664,1576,1578],{"class":755,"line":1577},27,[664,1579,1580],{"class":956},"    \u002F* Feed this sample pair into the model's windowing buffer *\u002F\n",[664,1582,1584,1587,1589,1592,1594,1596,1598,1600,1602,1604],{"class":755,"line":1583},28,[664,1585,1586],{"class":1125},"    res ",[664,1588,1005],{"class":762},[664,1590,1591],{"class":776}," nrf_edgeai_feed_inputs",[664,1593,780],{"class":762},[664,1595,910],{"class":1125},[664,1597,793],{"class":762},[664,1599,915],{"class":1125},[664,1601,793],{"class":762},[664,1603,920],{"class":1125},[664,1605,813],{"class":762},[664,1607,1609,1612,1614,1617,1620,1623,1625],{"class":755,"line":1608},29,[664,1610,1611],{"class":1073},"    if",[664,1613,830],{"class":762},[664,1615,1616],{"class":1125},"res ",[664,1618,1619],{"class":762},"==",[664,1621,1622],{"class":1125}," NRF_EDGEAI_ERR_INPROGRESS",[664,1624,836],{"class":762},[664,1626,1113],{"class":762},[664,1628,1630,1633],{"class":755,"line":1629},30,[664,1631,1632],{"class":1073},"      continue",[664,1634,845],{"class":762},[664,1636,1638],{"class":755,"line":1637},31,[664,1639,1640],{"class":762},"    }\n",[664,1642,1644],{"class":755,"line":1643},32,[664,1645,997],{"class":1125},[647,1647,1649],{"id":1648},"output-class-names","Output Class Names",[494,1651,1652],{},"Depending on which classes the model will output, update the class labels at the top of the file.",[748,1654,1656],{"className":660,"code":1655,"language":661,"meta":662,"style":662},"  const char *class_strings[] = {\n    \"Double Shake\", \"Double Tap\", \"Triple Tap\", \"CW rotate\", \"CCW rotate\", \"Idle\", \"Unknown\",\n  };\n",[613,1657,1658,1677,1747],{"__ignoreMap":662},[664,1659,1660,1662,1665,1667,1670,1673,1675],{"class":755,"line":756},[664,1661,962],{"class":726},[664,1663,1664],{"class":726}," char",[664,1666,1213],{"class":762},[664,1668,1669],{"class":666},"class_strings",[664,1671,1672],{"class":726},"[]",[664,1674,773],{"class":762},[664,1676,1113],{"class":762},[664,1678,1679,1682,1686,1689,1691,1694,1697,1699,1701,1703,1706,1708,1710,1712,1715,1717,1719,1721,1724,1726,1728,1730,1733,1735,1737,1739,1742,1744],{"class":755,"line":816},[664,1680,1681],{"class":762},"    \"",[664,1683,1685],{"class":1684},"sfazB","Double Shake",[664,1687,1688],{"class":762},"\"",[664,1690,793],{"class":762},[664,1692,1693],{"class":762}," \"",[664,1695,1696],{"class":1684},"Double Tap",[664,1698,1688],{"class":762},[664,1700,793],{"class":762},[664,1702,1693],{"class":762},[664,1704,1705],{"class":1684},"Triple Tap",[664,1707,1688],{"class":762},[664,1709,793],{"class":762},[664,1711,1693],{"class":762},[664,1713,1714],{"class":1684},"CW rotate",[664,1716,1688],{"class":762},[664,1718,793],{"class":762},[664,1720,1693],{"class":762},[664,1722,1723],{"class":1684},"CCW rotate",[664,1725,1688],{"class":762},[664,1727,793],{"class":762},[664,1729,1693],{"class":762},[664,1731,1732],{"class":1684},"Idle",[664,1734,1688],{"class":762},[664,1736,793],{"class":762},[664,1738,1693],{"class":762},[664,1740,1741],{"class":1684},"Unknown",[664,1743,1688],{"class":762},[664,1745,1746],{"class":762},",\n",[664,1748,1749],{"class":755,"line":848},[664,1750,1751],{"class":762},"  };\n",[647,1753,1755],{"id":1754},"output-class-probabilities","Output class probabilities.",[494,1757,1758],{},"The sample model outputs the class probabilities as floating point values.\nHowever, depending on the model, it can output integer probabilities (uint8 or uint16).",[494,1760,1761],{},"If so update the probability extraction to accomodate this:",[748,1763,1766],{"className":660,"code":1764,"highlights":1765,"language":661,"meta":662,"style":662},"printk(\"class: %s (%d) %.3f\\n\", class_strings[predicted_class], predicted_class,\n           (double)user_model->decoded_output.classif.probabilities\n               .p_f32[predicted_class]);\n",[848],[613,1767,1768,1817,1834],{"__ignoreMap":662},[664,1769,1770,1773,1775,1777,1780,1783,1785,1788,1791,1794,1797,1799,1801,1804,1806,1809,1812,1815],{"class":755,"line":756},[664,1771,1772],{"class":776},"printk",[664,1774,780],{"class":762},[664,1776,1688],{"class":762},[664,1778,1779],{"class":1684},"class: ",[664,1781,1782],{"class":1125},"%s",[664,1784,830],{"class":1684},[664,1786,1787],{"class":1125},"%d",[664,1789,1790],{"class":1684},") ",[664,1792,1793],{"class":1125},"%.3f",[664,1795,1796],{"class":666},"\\n",[664,1798,1688],{"class":762},[664,1800,793],{"class":762},[664,1802,1803],{"class":666}," class_strings",[664,1805,763],{"class":762},[664,1807,1808],{"class":666},"predicted_class",[664,1810,1811],{"class":762},"],",[664,1813,1814],{"class":666}," predicted_class",[664,1816,1746],{"class":762},[664,1818,1819,1822,1825,1827,1829,1831],{"class":755,"line":816},[664,1820,1821],{"class":762},"           (",[664,1823,1824],{"class":726},"double",[664,1826,836],{"class":762},[664,1828,910],{"class":666},[664,1830,786],{"class":762},[664,1832,1833],{"class":666},"decoded_output.classif.probabilities\n",[664,1835,1837,1840,1842,1844],{"class":1836,"line":848},[755,979],[664,1838,1839],{"class":666},"               .p_f32",[664,1841,763],{"class":762},[664,1843,1808],{"class":666},[664,1845,1846],{"class":762},"]);\n",[494,1848,1849,1850,1853],{},"Changing ",[613,1851,1852],{},"user_model->decoded_output.classif.probabilities.p_f32"," to the appropriate type.",[494,1855,1856],{},"Test the model on the hardware to ensure it performs as expected.",[1858,1859,1860],"style",{},"html pre.shiki code .sTEyZ, html code.shiki .sTEyZ{--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8}html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sBMFI, html code.shiki .sBMFI{--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B}html pre.shiki code .spNyl, html code.shiki .spNyl{--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA}html pre.shiki code .sMK4o, html code.shiki .sMK4o{--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF}html pre.shiki code .sbssI, html code.shiki .sbssI{--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C}html pre.shiki code .s2Zo4, html code.shiki .s2Zo4{--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF}html pre.shiki code .sHdIc, html code.shiki .sHdIc{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic}html pre.shiki code .sHwdD, html code.shiki .sHwdD{--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic}html pre.shiki code .s7zQu, html code.shiki .s7zQu{--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic}html pre.shiki code .swJcz, html code.shiki .swJcz{--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178}html pre.shiki code .sfazB, html code.shiki .sfazB{--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D}",{"title":662,"searchDepth":848,"depth":816,"links":1862},[1863,1864,1865],{"id":517,"depth":816,"text":518},{"id":527,"depth":816,"text":528},{"id":604,"depth":816,"text":605,"children":1866},[1867,1868,1869,1870,1871],{"id":649,"depth":848,"text":650},{"id":685,"depth":848,"text":686},{"id":736,"depth":848,"text":737},{"id":1648,"depth":848,"text":1649},{"id":1754,"depth":848,"text":1755},"Deploy trained machine learning models to the target hardware.","md",null,{},{"title":381,"description":1872},"tUWMWW1sbvVIwZxfgcTExje_6d-ezJ3LTY1OMwMXgdg",[1879,1881],{"title":377,"path":378,"stem":379,"description":1880,"children":-1},"Train machine learning models using the prepared dataset.",{"title":385,"path":386,"stem":387,"description":1882,"children":-1},"Hardware specific guides.",1791526862204]