ArduinoCore-arc32 icon indicating copy to clipboard operation
ArduinoCore-arc32 copied to clipboard

Jira 768 CurieBLE: setAppearance does not work

Open sandeepmistry opened this issue 8 years ago • 5 comments

In v1.0.7 blePeripheral.setAppearance(appearance); was function, however in master is does not - the appearance characteristic value is 0. Note: blePeripheral.setDeviceName(name) still works.

#include <CurieBLE.h>

BLEPeripheral blePeripheral;  // BLE Peripheral Device (the board you're programming)
BLEService ledService("19B10000-E8F2-537E-4F6C-D104768A1214"); // BLE LED Service

// BLE LED Switch Characteristic - custom 128-bit UUID, read and writable by central
BLEUnsignedCharCharacteristic switchCharacteristic("19B10001-E8F2-537E-4F6C-D104768A1214", BLERead | BLEWrite);

const int ledPin = 13; // pin to use for the LED

void setup() {
  Serial.begin(9600);

  // set LED pin to output mode
  pinMode(ledPin, OUTPUT);

  // set advertised local name and service UUID:
  blePeripheral.setLocalName("LED");
  blePeripheral.setDeviceName("LED");
  blePeripheral.setAppearance(0x1234);
  blePeripheral.setAdvertisedServiceUuid(ledService.uuid());

  // add service and characteristic:
  blePeripheral.addAttribute(ledService);
  blePeripheral.addAttribute(switchCharacteristic);

  // set the initial value for the characeristic:
  switchCharacteristic.setValue(0);

  // begin advertising BLE service:
  blePeripheral.begin();

  Serial.println("BLE LED Peripheral");
}

void loop() {
  // listen for BLE peripherals to connect:
  BLECentral central = blePeripheral.central();

  // if a central is connected to peripheral:
  if (central) {
    Serial.print("Connected to central: ");
    // print the central's MAC address:
    Serial.println(central.address());

    // while the central is still connected to peripheral:
    while (central.connected()) {
      // if the remote device wrote to the characteristic,
      // use the value to control the LED:
      if (switchCharacteristic.written()) {
        if (switchCharacteristic.value()) {   // any value other than 0
          Serial.println("LED on");
          digitalWrite(ledPin, HIGH);         // will turn the LED on
        } else {                              // a 0 value
          Serial.println(F("LED off"));
          digitalWrite(ledPin, LOW);          // will turn the LED off
        }
      }
    }

    // when the central disconnects, print it out:
    Serial.print(F("Disconnected from central: "));
    Serial.println(central.address());
  }
}

sandeepmistry avatar Dec 29 '16 19:12 sandeepmistry

The same applies to the new v2 API: BLE.setAppearance(0x1234);

sandeepmistry avatar Dec 29 '16 19:12 sandeepmistry

@SidLeung this is resolved by the V4.2 testing and the jira 768 is resolved. Not released yet.

russmcinnis avatar May 02 '17 22:05 russmcinnis

Will re-test when merged for Elnath

russmcinnis avatar May 10 '17 13:05 russmcinnis

still working on other BLE issues so we will re-confirm for final Elnath release.

russmcinnis avatar May 17 '17 15:05 russmcinnis

I'm also interested in a fix for this one. Any plans for a release?

alext-mkrs avatar Sep 02 '17 12:09 alext-mkrs