Fix firmware version reported by Device Information Service on BLE. It was previously hard-coded, it is now set by CMake accoridng to the project version.
Fix Manufacturer name, model number, sw revision according to https://wiki.pine64.org/index.php?title=Firmware_versioning_for_companion_apps.
This commit is contained in:
parent
61e7ad9186
commit
1aa5b0a440
3 changed files with 30 additions and 8 deletions
|
@ -8,6 +8,8 @@ constexpr ble_uuid16_t DeviceInformationService::serialNumberUuid;
|
||||||
constexpr ble_uuid16_t DeviceInformationService::fwRevisionUuid;
|
constexpr ble_uuid16_t DeviceInformationService::fwRevisionUuid;
|
||||||
constexpr ble_uuid16_t DeviceInformationService::deviceInfoUuid;
|
constexpr ble_uuid16_t DeviceInformationService::deviceInfoUuid;
|
||||||
constexpr ble_uuid16_t DeviceInformationService::hwRevisionUuid;
|
constexpr ble_uuid16_t DeviceInformationService::hwRevisionUuid;
|
||||||
|
constexpr ble_uuid16_t DeviceInformationService::swRevisionUuid;
|
||||||
|
|
||||||
|
|
||||||
int DeviceInformationCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
|
int DeviceInformationCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt *ctxt, void *arg) {
|
||||||
auto deviceInformationService = static_cast<DeviceInformationService*>(arg);
|
auto deviceInformationService = static_cast<DeviceInformationService*>(arg);
|
||||||
|
@ -44,6 +46,9 @@ int DeviceInformationService::OnDeviceInfoRequested(uint16_t conn_handle, uint16
|
||||||
case hwRevisionId:
|
case hwRevisionId:
|
||||||
str = hwRevision;
|
str = hwRevision;
|
||||||
break;
|
break;
|
||||||
|
case swRevisionId:
|
||||||
|
str = swRevision;
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
return BLE_ATT_ERR_UNLIKELY;
|
return BLE_ATT_ERR_UNLIKELY;
|
||||||
}
|
}
|
||||||
|
@ -84,6 +89,12 @@ DeviceInformationService::DeviceInformationService() :
|
||||||
.arg = this,
|
.arg = this,
|
||||||
.flags = BLE_GATT_CHR_F_READ,
|
.flags = BLE_GATT_CHR_F_READ,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
.uuid = (ble_uuid_t *) &swRevisionUuid,
|
||||||
|
.access_cb = DeviceInformationCallback,
|
||||||
|
.arg = this,
|
||||||
|
.flags = BLE_GATT_CHR_F_READ,
|
||||||
|
},
|
||||||
{
|
{
|
||||||
0
|
0
|
||||||
}
|
}
|
||||||
|
|
|
@ -3,6 +3,7 @@
|
||||||
#include <array>
|
#include <array>
|
||||||
|
|
||||||
#include <host/ble_gap.h>
|
#include <host/ble_gap.h>
|
||||||
|
#include <Version.h>
|
||||||
|
|
||||||
namespace Pinetime {
|
namespace Pinetime {
|
||||||
namespace Controllers {
|
namespace Controllers {
|
||||||
|
@ -21,12 +22,15 @@ namespace Pinetime {
|
||||||
static constexpr uint16_t serialNumberId {0x2a25};
|
static constexpr uint16_t serialNumberId {0x2a25};
|
||||||
static constexpr uint16_t fwRevisionId {0x2a26};
|
static constexpr uint16_t fwRevisionId {0x2a26};
|
||||||
static constexpr uint16_t hwRevisionId {0x2a27};
|
static constexpr uint16_t hwRevisionId {0x2a27};
|
||||||
|
static constexpr uint16_t swRevisionId {0x2a28};
|
||||||
|
|
||||||
static constexpr const char* manufacturerName = "Codingfield";
|
static constexpr const char* manufacturerName = "PINE64";
|
||||||
static constexpr const char* modelNumber = "1";
|
static constexpr const char* modelNumber = "PineTime";
|
||||||
static constexpr const char* serialNumber = "9.8.7.6.5.4";
|
|
||||||
static constexpr const char* fwRevision = "0.7.0";
|
|
||||||
static constexpr const char* hwRevision = "1.0.0";
|
static constexpr const char* hwRevision = "1.0.0";
|
||||||
|
static constexpr const char* serialNumber = "0";
|
||||||
|
static constexpr const char* fwRevision = Version::VersionString();
|
||||||
|
static constexpr const char* swRevision = "InfiniTime";
|
||||||
|
|
||||||
|
|
||||||
static constexpr ble_uuid16_t deviceInfoUuid {
|
static constexpr ble_uuid16_t deviceInfoUuid {
|
||||||
.u { .type = BLE_UUID_TYPE_16 },
|
.u { .type = BLE_UUID_TYPE_16 },
|
||||||
|
@ -58,7 +62,12 @@ namespace Pinetime {
|
||||||
.value = hwRevisionId
|
.value = hwRevisionId
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ble_gatt_chr_def characteristicDefinition[6];
|
static constexpr ble_uuid16_t swRevisionUuid {
|
||||||
|
.u {.type = BLE_UUID_TYPE_16},
|
||||||
|
.value = swRevisionId
|
||||||
|
};
|
||||||
|
|
||||||
|
struct ble_gatt_chr_def characteristicDefinition[7];
|
||||||
struct ble_gatt_svc_def serviceDefinition[2];
|
struct ble_gatt_svc_def serviceDefinition[2];
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -5,12 +5,14 @@
|
||||||
namespace Pinetime {
|
namespace Pinetime {
|
||||||
class Version {
|
class Version {
|
||||||
public:
|
public:
|
||||||
static uint32_t Major() {return major;}
|
static constexpr uint32_t Major() {return major;}
|
||||||
static uint32_t Minor() {return minor;}
|
static constexpr uint32_t Minor() {return minor;}
|
||||||
static uint32_t Patch() {return patch;}
|
static constexpr uint32_t Patch() {return patch;}
|
||||||
|
static constexpr char* VersionString() {return versionString;}
|
||||||
private:
|
private:
|
||||||
static constexpr uint32_t major = @PROJECT_VERSION_MAJOR@;
|
static constexpr uint32_t major = @PROJECT_VERSION_MAJOR@;
|
||||||
static constexpr uint32_t minor = @PROJECT_VERSION_MINOR@;
|
static constexpr uint32_t minor = @PROJECT_VERSION_MINOR@;
|
||||||
static constexpr uint32_t patch = @PROJECT_VERSION_PATCH@;
|
static constexpr uint32_t patch = @PROJECT_VERSION_PATCH@;
|
||||||
|
static constexpr char* versionString = "@PROJECT_VERSION_MAJOR@.@PROJECT_VERSION_MINOR@.@PROJECT_VERSION_PATCH@";
|
||||||
};
|
};
|
||||||
}
|
}
|
Loading…
Reference in a new issue