Compare commits
3 Commits
rei/develo
...
music-serv
Author | SHA1 | Date |
---|---|---|
Jean-François Milants | 720e5ede29 | |
Jean-François Milants | 4e227135a9 | |
Jean-François Milants | dbbb6e9382 |
|
@ -17,6 +17,7 @@
|
||||||
*/
|
*/
|
||||||
#include "components/ble/MusicService.h"
|
#include "components/ble/MusicService.h"
|
||||||
#include "systemtask/SystemTask.h"
|
#include "systemtask/SystemTask.h"
|
||||||
|
#include <cstring>
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
// 0000yyxx-78fc-48fe-8e23-433b3a1942d0
|
// 0000yyxx-78fc-48fe-8e23-433b3a1942d0
|
||||||
|
@ -47,6 +48,8 @@ namespace {
|
||||||
constexpr ble_uuid128_t msRepeatCharUuid {CharUuid(0x0b, 0x00)};
|
constexpr ble_uuid128_t msRepeatCharUuid {CharUuid(0x0b, 0x00)};
|
||||||
constexpr ble_uuid128_t msShuffleCharUuid {CharUuid(0x0c, 0x00)};
|
constexpr ble_uuid128_t msShuffleCharUuid {CharUuid(0x0c, 0x00)};
|
||||||
|
|
||||||
|
constexpr uint8_t MaxStringSize {40};
|
||||||
|
|
||||||
int MusicCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
|
int MusicCallback(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt, void* arg) {
|
||||||
return static_cast<Pinetime::Controllers::MusicService*>(arg)->OnCommand(conn_handle, attr_handle, ctxt);
|
return static_cast<Pinetime::Controllers::MusicService*>(arg)->OnCommand(conn_handle, attr_handle, ctxt);
|
||||||
}
|
}
|
||||||
|
@ -125,9 +128,21 @@ void Pinetime::Controllers::MusicService::Init() {
|
||||||
int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) {
|
int Pinetime::Controllers::MusicService::OnCommand(uint16_t conn_handle, uint16_t attr_handle, struct ble_gatt_access_ctxt* ctxt) {
|
||||||
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
|
if (ctxt->op == BLE_GATT_ACCESS_OP_WRITE_CHR) {
|
||||||
size_t notifSize = OS_MBUF_PKTLEN(ctxt->om);
|
size_t notifSize = OS_MBUF_PKTLEN(ctxt->om);
|
||||||
char data[notifSize + 1];
|
size_t bufferSize = notifSize;
|
||||||
data[notifSize] = '\0';
|
if (notifSize > MaxStringSize) {
|
||||||
os_mbuf_copydata(ctxt->om, 0, notifSize, data);
|
bufferSize = MaxStringSize;
|
||||||
|
}
|
||||||
|
|
||||||
|
char data[bufferSize + 1];
|
||||||
|
os_mbuf_copydata(ctxt->om, 0, bufferSize, data);
|
||||||
|
|
||||||
|
if (notifSize > bufferSize) {
|
||||||
|
data[bufferSize-1] = '.';
|
||||||
|
data[bufferSize-2] = '.';
|
||||||
|
data[bufferSize-3] = '.';
|
||||||
|
}
|
||||||
|
data[bufferSize] = '\0';
|
||||||
|
|
||||||
char* s = &data[0];
|
char* s = &data[0];
|
||||||
if (ble_uuid_cmp(ctxt->chr->uuid, &msArtistCharUuid.u) == 0) {
|
if (ble_uuid_cmp(ctxt->chr->uuid, &msArtistCharUuid.u) == 0) {
|
||||||
artistName = s;
|
artistName = s;
|
||||||
|
|
Loading…
Reference in New Issue