What I’m also really surprised by is the posts I tripped over that I hadn’t previously seen saying BT functions like services/characteristics isn’t supported. A BT device with no BT. That’s surprising, absolutely useless for the next generation of my main product but happy enough to use it for another project if BLE setup is easy and integrated on the same chip.
ps, the only reference to BT setup is via https://docs.particle.io/reference/device-os/firmware/argon/#listen-
and even that doesn’t call out specifically if it will listen for the main wifi creds, or how to do it. which is curious to say the least.
The BLE setup API is not currently documented. The best way is probably to look from the mobile app and device SDK implementations, but it’s not really intended to be used by anything other than the device setup SDK.
What you’re probably most interested in is the generic BLE API. It does not yet exist, but it is being planned.
I know its not your department, but I’m a little frustrated with this new platform as I have no idea who its designed to help. You’d presume a BLE enabled device would ship from day 1 with setup interfaces so people don’t need to face north and switch between their devices wifi screen and an app to provide the device basic wifi setup info. its 2018, nearly 2019 after all.
i’ve wasted my clients time suggesting we delay for this platform. i’ll go back to my older solution of P1 + Microchip BLE. it’s not perfect because of how Particle blocks when doing particle connect, but its better than the beer coaster that the argon box will become.
static let particleMeshServiceUUID: CBUUID = CBUUID(string: "6FA90001-5C4E-48A8-94F4-8030546F36FC")
static let particleMeshRXCharacterisiticUUID: CBUUID = CBUUID(string: "6FA90004-5C4E-48A8-94F4-8030546F36FC")
let particleMeshTXCharacterisiticUUID: CBUUID = CBUUID(string: "6FA90003-5C4E-48A8-94F4-8030546F36FC")
i’ll clone the repo later, but jumping around it seems like it’s not as trivial as you may expect, ie the multiple rounds of handshake in https://github.com/particle-iot/photon-tinker-ios/blob/master/Photon-Tinker/Mesh/MeshSetupBluetoothConnectionHandshakeManager.swift
It’s actually not clear if the code exists to scan the wifi for networks and provide joining info. i may have missed it, but seems like its just to create a mesh network and setup its encryption etc.
i’m genuinely surprised how providing wifi connection info wasn’t the first item on the todo list for the BLE integration. You’d anticipate connect to characteristics, issue a json or CBOR with parameters and a possible hash with a secret salt you can specify via firmware, returning array of hashes from scan, reply with chosen network and passwords, success/failure notification. you know, the first thing a customer in the field requires.