sforkowany z mirror/meshtastic-firmware
remove old BLE api
rodzic
7473a6c27a
commit
bdbaf9c655
|
@ -23,9 +23,6 @@ static CallbackCharacteristic *meshFromNumCharacteristic;
|
||||||
|
|
||||||
BLEService *meshService;
|
BLEService *meshService;
|
||||||
|
|
||||||
// If defined we will also support the old API
|
|
||||||
#define SUPPORT_OLD_BLE_API
|
|
||||||
|
|
||||||
class BluetoothPhoneAPI : public PhoneAPI
|
class BluetoothPhoneAPI : public PhoneAPI
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
@ -78,108 +75,6 @@ class ProtobufCharacteristic : public CallbackCharacteristic
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
#ifdef SUPPORT_OLD_BLE_API
|
|
||||||
class NodeInfoCharacteristic : public BLECharacteristic, public BLECharacteristicCallbacks
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
NodeInfoCharacteristic()
|
|
||||||
: BLECharacteristic("d31e02e0-c8ab-4d3f-9cc9-0b8466bdabe8",
|
|
||||||
BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ)
|
|
||||||
{
|
|
||||||
setCallbacks(this);
|
|
||||||
}
|
|
||||||
|
|
||||||
void onRead(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
const NodeInfo *info = nodeDB.readNextInfo();
|
|
||||||
|
|
||||||
if (info) {
|
|
||||||
DEBUG_MSG("Sending nodeinfo: num=0x%x, lastseen=%u, id=%s, name=%s\n", info->num, info->position.time, info->user.id,
|
|
||||||
info->user.long_name);
|
|
||||||
size_t numbytes = pb_encode_to_bytes(trBytes, sizeof(trBytes), NodeInfo_fields, info);
|
|
||||||
c->setValue(trBytes, numbytes);
|
|
||||||
} else {
|
|
||||||
c->setValue(trBytes, 0); // Send an empty response
|
|
||||||
DEBUG_MSG("Done sending nodeinfos\n");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void onWrite(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
DEBUG_MSG("Reset nodeinfo read pointer\n");
|
|
||||||
nodeDB.resetReadPointer();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// wrap our protobuf version with something that forces the service to reload the config
|
|
||||||
class RadioCharacteristic : public ProtobufCharacteristic
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
RadioCharacteristic()
|
|
||||||
: ProtobufCharacteristic("b56786c8-839a-44a1-b98e-a1724c4a0262",
|
|
||||||
BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ, RadioConfig_fields,
|
|
||||||
&radioConfig)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void onRead(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
DEBUG_MSG("Reading radio config, sdsecs %u\n", radioConfig.preferences.sds_secs);
|
|
||||||
ProtobufCharacteristic::onRead(c);
|
|
||||||
}
|
|
||||||
|
|
||||||
void onWrite(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
DEBUG_MSG("Writing radio config\n");
|
|
||||||
ProtobufCharacteristic::onWrite(c);
|
|
||||||
bluetoothPhoneAPI->handleSetRadio(radioConfig);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// wrap our protobuf version with something that forces the service to reload the owner
|
|
||||||
class OwnerCharacteristic : public ProtobufCharacteristic
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
OwnerCharacteristic()
|
|
||||||
: ProtobufCharacteristic("6ff1d8b6-e2de-41e3-8c0b-8fa384f64eb6",
|
|
||||||
BLECharacteristic::PROPERTY_WRITE | BLECharacteristic::PROPERTY_READ, User_fields, &owner)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void onWrite(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
// NOTE: We do not call the standard ProtobufCharacteristic superclass, because we want custom write behavior
|
|
||||||
|
|
||||||
static User o; // if the phone doesn't set ID we are careful to keep ours, we also always keep our macaddr
|
|
||||||
if (writeToDest(c, &o)) {
|
|
||||||
bluetoothPhoneAPI->handleSetOwner(o);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
class MyNodeInfoCharacteristic : public ProtobufCharacteristic
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
MyNodeInfoCharacteristic()
|
|
||||||
: ProtobufCharacteristic("ea9f3f82-8dc4-4733-9452-1f6da28892a2", BLECharacteristic::PROPERTY_READ, MyNodeInfo_fields,
|
|
||||||
&myNodeInfo)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
void onRead(BLECharacteristic *c)
|
|
||||||
{
|
|
||||||
// update gps connection state
|
|
||||||
myNodeInfo.has_gps = gps->isConnected;
|
|
||||||
|
|
||||||
ProtobufCharacteristic::onRead(c);
|
|
||||||
|
|
||||||
myNodeInfo.error_code = 0; // The phone just read us, so throw it away
|
|
||||||
myNodeInfo.error_address = 0;
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
#endif
|
|
||||||
|
|
||||||
class ToRadioCharacteristic : public CallbackCharacteristic
|
class ToRadioCharacteristic : public CallbackCharacteristic
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -248,12 +143,6 @@ BLEService *createMeshBluetoothService(BLEServer *server)
|
||||||
addWithDesc(service, meshFromNumCharacteristic, "fromRadio");
|
addWithDesc(service, meshFromNumCharacteristic, "fromRadio");
|
||||||
addWithDesc(service, new ToRadioCharacteristic, "toRadio");
|
addWithDesc(service, new ToRadioCharacteristic, "toRadio");
|
||||||
addWithDesc(service, new FromRadioCharacteristic, "fromNum");
|
addWithDesc(service, new FromRadioCharacteristic, "fromNum");
|
||||||
#ifdef SUPPORT_OLD_BLE_API
|
|
||||||
addWithDesc(service, new MyNodeInfoCharacteristic, "myNode");
|
|
||||||
addWithDesc(service, new RadioCharacteristic, "radio");
|
|
||||||
addWithDesc(service, new OwnerCharacteristic, "owner");
|
|
||||||
addWithDesc(service, new NodeInfoCharacteristic, "nodeinfo");
|
|
||||||
#endif
|
|
||||||
|
|
||||||
meshFromNumCharacteristic->addDescriptor(addBLEDescriptor(new BLE2902())); // Needed so clients can request notification
|
meshFromNumCharacteristic->addDescriptor(addBLEDescriptor(new BLE2902())); // Needed so clients can request notification
|
||||||
|
|
||||||
|
|
Ładowanie…
Reference in New Issue