Coder Social home page Coder Social logo

simplicityconnect-ios's Introduction

Simplicity Connect Mobile Application

This is the source code for the Simplicity Connect mobile application.

What is Simplicity Connect BLE mobile app?

Silicon Labs Simplicity Connect is a generic BLE mobile app for testing and debugging Bluetooth® Low Energy applications. With Simplicity Connect, you can quickly troubleshoot your BLE embedded application code, Over-the-Air (OTA) firmware update, data throughput, and interoperability with Android and iOS mobiles, among the many other features. You can use the Simplicity Connect app with all Silicon Labs Bluetooth development kits, Systems on Chip (SoC), and modules.

Why download Simplicity Connect?

Simplicity Connect radically saves the time you will use for testing and debugging! With Simplicity Connect, you can quickly see what’s wrong with your code and how to fix and optimize it. Simplicity Connect is the first BLE mobile app allowing you to test data throughput and mobile interoperability with a single tap on the app.

The app name has been changed from Simplicity Connect to Simplicity Connect.

How does it work?

Using Simplicity Connect BLE mobile app is easy. It runs on your mobile devices such as a smartphone or tablet. It utilizes the Bluetooth adapter on the mobile to scan, connect and interact with nearby BLE hardware.

After connecting the Simplicity Connect app and BLE hardware (e.g., a dev kit), the Blinky test on the app shows a green light indicating when your setup is ready to go. The app includes simple demos to teach you how to get started with Simplicity Connect and all Silicon Labs development tools.

The Browser, Advertiser, and Logging features help you to find and fix bugs quickly and test throughput and mobile interoperability simply, with a tap of a button. With our Simplicity Studio’s Network Analyzer tool (free of charge), you can view the packet trace data and dive into the details.

Demos and Sample Apps

Simplicity Connect includes many demos to test sample apps in the Silicon Labs GSDK quickly. Here are demo examples:

  • Blinky: The ”Hello World” of BLE – Toggling a LED is only one tap away.
  • Throughput: Measure application data throughput between the BLE hardware and your mobile device in both directions
  • Health Thermometer: Connect to a BLE hardware kit and receive the temperature data from the on-board sensor.
  • Connected Lighting DMP: Leverage the dynamic multi-protocol (DMP) sample apps to control a DMP light node from a mobile and protocol-specific switch node (Zigbee, proprietary) while keeping the light status in sync across all devices.
  • Range Test: Visualize the RSSI and other RF performance data on the mobile phone while running the Range Test sample application on a pair of Silicon Labs radio boards.
  • Motion: Control a 3D render of a Silicon Labs Thunderboard or Dev Kit that follows the phyiscal board movements.
  • Environment: Read and display the data from the on-board sensors on a Silicon Labs Thunderboard or Dev Kit.
  • Wi-Fi Commissioning: Commission a Wi-Fi device over BLE.
  • Bluetooth Electronic Shelf Labels (ESL): Adds and commissions ESL tags to the system network by scanning the tag's QR code with the mobile device's camera and provides the user a UI to view the list commissioned tags and control them.
  • Matter: Commission and control of the Matter devices over Thread and Wi-Fi.
  • Wi-Fi OTA Firmware Update: The Wi-Fi OTA firmware update demo demonstrates how to update the SiWx91x user application firmware over Wi-Fi connection, by downloading the image from the mobile phone.

Development Features

Simplicity Connect helps developers create and troubleshoot Bluetooth applications running on Silicon Labs’ BLE hardware. Here’s a rundown of some example functionalities.

Bluetooth Browser - A powerful tool to explore the BLE devices around you. Key features include:

  • Scan and sort results with a rich data set
  • Label favorite devices to surface on the top of scanning results
  • Advanced filtering to identify the types of devices you want to find
  • Save filters for later use
  • Multiple connections
  • Bluetooth 5 advertising extensions
  • Rename services and characteristics with 128-bit UUIDs (mappings dictionary)
  • Over-the-air (OTA) device firmware upgrade (DFU) in reliable and fast modes
  • Configurable MTU and connection interval
  • All GATT operations

Bluetooth Advertiser – Create and enable multiple parallel advertisement sets:

  • Legacy and extended advertising
  • Configurable advertisement interval, TX Power, primary/secondary PHYs
  • Manual advertisement start/stop and stop based on a time/event limit
  • Support for multiple AD types

Bluetooth GATT Configurator – Create and manipulate multiple GATT databases

  • Add services, characteristics and descriptors
  • Operate the local GATT from the browser when connected to a device
  • Import/export GATT database between the mobile device and Simplicity Studio GATT Configurator

Bluetooth Interoperability Test – Verify interoperability between the BLE hardware and your mobile device

  • Runs a sequence of BLE operations to verify interoperability
  • Export results log

How to build project

To build project you need Install Cocoapods. Run command pod install in the main folder of the project and then use generated SiliconLabsApp.xcworkspace file to open project. Use BlueGecko scheme to run or test app.

How to start developing

Applications are written using MVVM pattern. The View Controllers layer (also a starting point for each of app - Demo, IOP, Browser, Develop) is in the <project_directory>/ViewController folder. You can find there references to View Models and the Models that are used in the specific applications. Each app has mostly separated files so is almost unlikely that modifying one part of code is going to break other app. For storing data we are using Realm database. Please notice that you must take care of migrations when you are modifying scheme of objects (modify SILRealmConfiguration.swift file). At <project_directory>/Supporting Files you can find XMLs of SIG Group defined GATT services, characteristics and descriptors. The IOP test suites are in folder <project_directory>/ViewControllers/IOP Test App/TestScenario. The OTA related code is located in <project_directory>/ViewControllers/BluetoothBrowser/Details/OTA.

Additional information

The app can be found on the Google PlayStore and Apple App Store.

Learn more about Simplicity Connect BLE mobile app.

Release Notes

For more information on Silicon Labs product portfolio please visit www.silabs.com.

License

Copyright 2021 Silicon Laboratories

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

simplicityconnect-ios's People

Contributors

kamilczajkasilabs avatar hdrsl avatar mantosh83 avatar grjanoszsilabs avatar piotrsarnasilabs avatar jcstange-silabs avatar

Stargazers

Jason Adams avatar  avatar Chris H avatar  avatar Dmitry Dyachenko avatar Thiago Aguirre Lorscheiter avatar  avatar  avatar  avatar Deepin avatar  avatar Owen Kellogg avatar Julian avatar Ryota Wakabayashi avatar Tonya Henson avatar Shanti Rodríguez avatar Kristof Van Landschoot avatar Marcus R. Brown avatar Mike Warren avatar Alexander Salas Bastidas avatar Masanori Kawai avatar Juanjo Valiño avatar  avatar Joey Nelson avatar  avatar Kevin Tan avatar  avatar Michele Piffari avatar James Robert Lund III  avatar Qingqing Huang avatar  avatar Alexander Kremenchuk avatar  avatar  avatar  avatar  avatar CoderBoy avatar Bekzod Rakhmatov avatar Minsoo Kim avatar  avatar Jaster avatar Maginawin avatar Cairdac avatar Andrei Ivantsov avatar Tomohiro Hayashi avatar Ihor Demchenko avatar  avatar Frederik Riedel avatar Herbert Lauden avatar  avatar Bob avatar Zee Lv avatar Fábián Tamás László avatar 98k avatar hbk3 avatar  avatar  avatar Vitaliy Pavlyuk avatar ZW Cai avatar Julien Ranzijn avatar Chris McCabe avatar Ian Jackson avatar Jeff Kingyens avatar

Watchers

James Cloos avatar Jason Adams avatar Ankit Sharma avatar Tabi Parker avatar Tiago Monte avatar Greg Hodgson avatar jdasilvaav avatar  avatar  avatar Bob avatar  avatar

simplicityconnect-ios's Issues

Characteristic value not updates.

Hi!
I am facing issues in write request and steps that I followed to write the characteristics are as follow:

Step 1: I connected the device from the browser screen.
Step 2: I wrote the characteristic in ASCII field. e.g., 321 and last value was 123456
Step 3: Now I read the same characteristic which was updated recently and I got the result as e.g., 321456. So here, my updated value is appended by its prior value. Hence result is incorrect.
Step 4: Then I tried disconnecting it and connect and then I read the characteristic. Hence, result is same i.e., 321456. So, is not updated.

This happens certain time not regularly.

SILDebugCharacteristicTableViewCell~ipad.xib does not include Property Buttons

In the 1.4.2 release (available here), the SiliconLabsApp/Base.lproj/Debug/Services/SILDebugCharacteristicTableViewCell~ipad.xib file does not include any of the (Read,Write,Indicate,Notify) Property Buttons that are in the SILDebugCharacteristicTableViewCell~iphone.xib file.
This means that when running on an iPad, the Read/Write/etc icons are not interactive, and cause the characteristic value to be shown/hidden, the same as if elsewhere on that row was tapped.

Disconnection Issue

Hi Silicon team,

I am using EFR connect app in iOS to configure the device but I had faced some issue while connecting and disconnecting the device.
step 1: I connect the device from the browser screen
step 2: On next screen I disconnect it
step 3: Repeat step 1 and step 2 continuously 3-4 times and my device didn't receive an update of disconnection. Now, my device is still connected in its memory but app is unable to connect the same device because it is still not updated status.

App go back to the browser screen but status not updated in the device and hence unable to connect it again.

Minimal code or SDK for DFU firmware update

I'd like to implement a feature into my own app that allows a user to update the firmware of a Silicon Labs device. The app also interacts with non-Silicon Labs bluetooth devices in a different manner.

Is there a minimal subset of this code that can be used to handle the DFU upload in my own app? I realize that this is a more of a sample app, but is there an SDK that can be imported? Barring any of that, is there an explanation somewhere for what commands the device expects and how the data could be sent that I could instead use to implement it myself?

Sorry, I know this isn't really an "issue" with this project, I just wasn't sure where else to ask about this.

Thanks

The "Start Command" is sent twice to OTA Control on OTA start.

I'm using the latest version of the app (v2.4.3) on iOS 15.4 on an iPhone XS.

We are trying to implement OTA Updates and have put together some PoC FW. All works perfectly, but we have noticed that the iOS app sends two 0x00 commands to the OTA Control characteristic. Our proof of concept is based on the uploading multiple images to multiple slots example. The target is a xGM220P (BRD4311A) dev kit. If we use the "speed" mode, as we have some actions that take actual time (they need to access the flash to do some checks) this is enough to trigger a timeout. This doesn't happen if we use reliable mode, as the timeout is probably more generous. While I understand that I could just use the reliable mode, the source of the issue is this command being sent twice. This doesn't happen on Android and there's nothing in the documentation that says that the command needs to be sent twice.

Steps to reproduce:

  1. Connect to the target
  2. Select the storage slot
  3. Click on the 3 dot menu, OTA DFU
  4. Select Partial Method. Both Reliability and Speed modes have the issue. Choose a file, click on OTA UPDATE to start the update.

A write op is sent from the phone, to the OTA Control Characteristic, with data 0x00.

E16FFB8B-D8FD-4356-BB65-C58DAF079D4C

OTA Failure

I am trying to flash a GBL file to a BGM111 using the OTA functionality of the app. I currently have it stored on iCloud and the app can find it okay. I've also attached the file here. I am able to select the BGM111 just fine in the Bluetooth Browser and connect to it, but it seems once the OTA window appears and the GBL file is selected for a partial flash, the BGM 111 stops responding and the app hangs with a spinning Waiting activity indicator.

It also seems like another connect event occurs before a disconnect with no error is done:

2018-02-23 11:34:21.124558-0500 SiliconLabsApp[560:125069] [DocumentManager] The view service did terminate with error: Error Domain=_UIViewServiceErrorDomain Code=1 "(null)" UserInfo={Terminated=disconnect method}
2018-02-23 11:34:21.685634-0500 SiliconLabsApp[560:125069] didConnectPeripheral: <CBPeripheral: 0x1d010a560, identifier = 210DB2DA-18CA-0AE6-E85C-235CE3F04362, name = R2 USATest, state = connected>
2018-02-23 11:34:42.494512-0500 SiliconLabsApp[560:125069] didDisconnectPeripheral: R2 USATest
2018-02-23 11:34:42.494656-0500 SiliconLabsApp[560:125069] error: (null)

Can GBL files be used for a partial OTA update?

MRS_BLE_STACK_se.gbl.zip

Build errors

Have you tried to build this example? It occurs a lot of errors, starting from installing pods, and then inside the project.
For example, you define SILAlertBarView but this SILAlertBarView.h does not exist in the project files or in the pods, where we should get it?

Failed to find throughput service

Hello EFR Connect team,

I am facing with an issue with EFR Connect App

We tried to port the project "Bluetooth - SoC Throughput (two buttons)" that is available on Simplicity Studio both Demo and Example to Zephyr. We did manage to connect to EFR Connect App and measure throughput on Android version but not able to do that on IOS version. I captured the error as below

image

We are running our Zephyr example on xg24 dev kit (2601B) - EFRConnect 2.8.0

Please help us to check this issue

Thanks

OTA升级求助

我们遇到的问题:
1、给OTA特征值发00的时候,蓝牙名称会变。固件升级结束, 给OTA特征值发03的时候,设备蓝牙会断开,但是蓝牙名称并未改回我们自定义的FP+SN格式,但是DEMO列表里面设备名称未更新,用demo升级之后,用其他的蓝牙调试助手App,可以查看证实。
2、OTA升级,第一次能成功,但是第二次升级,设备会无法正常切换到嵌入式程序,一直就是OTA模式下。第二次是哪怕我们把App卸载了重新扫描连接设备,只要这个设备升级过就不行。但是DEMO可以,我看Demo升级完成后,点确定也没发什么特殊指令啊

项目的嵌入式工程师说:他都是用你们的源码改改开发的。我们让他做OTA防护,他根本不知道怎么做,也不想做。毕竟是甲方,我们也没办法。

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.