Fill out more characteristics
This commit is contained in:
@@ -22,6 +22,8 @@
|
|||||||
#define BT_UUID_SVC_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85efab4, 0x168e, 0x4a71, 0xaffd, 0x33e27f9bc533))
|
#define BT_UUID_SVC_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85efab4, 0x168e, 0x4a71, 0xaffd, 0x33e27f9bc533))
|
||||||
// f6d75f91-5a10-4eba-a233-47d3f26a907f
|
// f6d75f91-5a10-4eba-a233-47d3f26a907f
|
||||||
#define BT_UUID_SVC_SETTINGS_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d75f91, 0x5a10, 0x4eba, 0xa233, 0x47d3f26a907f))
|
#define BT_UUID_SVC_SETTINGS_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xf6d75f91, 0x5a10, 0x4eba, 0xa233, 0x47d3f26a907f))
|
||||||
|
// 9eae1adb-9d0d-48c5-a6e7-ae93f0ea37b0
|
||||||
|
#define BT_UUID_SVC_BULK_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0x9eae1adb, 0x9d0d, 0x48c5, 0xa6e7, 0xae93f0ea37b0))
|
||||||
|
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_LIVE_TEMP BT_UUID_DECLARE_16(0x0001)
|
#define BT_UUID_CHAR_BLE_LIVE_LIVE_TEMP BT_UUID_DECLARE_16(0x0001)
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_SETPOINT_TEMP BT_UUID_DECLARE_16(0x0002)
|
#define BT_UUID_CHAR_BLE_LIVE_SETPOINT_TEMP BT_UUID_DECLARE_16(0x0002)
|
||||||
@@ -29,6 +31,20 @@
|
|||||||
#define BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP BT_UUID_DECLARE_16(0x0004)
|
#define BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP BT_UUID_DECLARE_16(0x0004)
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL BT_UUID_DECLARE_16(0x0005)
|
#define BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL BT_UUID_DECLARE_16(0x0005)
|
||||||
#define BT_UUID_CHAR_BLE_LIVE_POWER_SRC BT_UUID_DECLARE_16(0x0006)
|
#define BT_UUID_CHAR_BLE_LIVE_POWER_SRC BT_UUID_DECLARE_16(0x0006)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_TIP_RES BT_UUID_DECLARE_16(0x0007)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_UPTIME BT_UUID_DECLARE_16(0x0008)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_MOVEMENT BT_UUID_DECLARE_16(0x0009)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_MAX_TEMP BT_UUID_DECLARE_16(0x000A)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_RAW_TIP BT_UUID_DECLARE_16(0x000B)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_HALL_SENSOR BT_UUID_DECLARE_16(0x000C)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_OP_MODE BT_UUID_DECLARE_16(0x000D)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_EST_WATTS BT_UUID_DECLARE_16(0x000E)
|
||||||
|
|
||||||
|
// Bulk data that returns non-fixed sized objects
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA BT_UUID_DECLARE_16(0x0001)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME BT_UUID_DECLARE_16(0x0002)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_BUILD BT_UUID_DECLARE_16(0x0003)
|
||||||
|
#define BT_UUID_CHAR_BLE_LIVE_DEV_ID BT_UUID_DECLARE_16(0x0004)
|
||||||
|
|
||||||
// Settings
|
// Settings
|
||||||
|
|
||||||
|
|||||||
@@ -25,6 +25,12 @@
|
|||||||
#include "ble_handlers.h"
|
#include "ble_handlers.h"
|
||||||
#include "pd.h"
|
#include "pd.h"
|
||||||
#include "power.hpp"
|
#include "power.hpp"
|
||||||
|
#if POW_PD
|
||||||
|
#include "USBPD.h"
|
||||||
|
#include "pd.h"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern TickType_t lastMovementTime;
|
||||||
|
|
||||||
int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
||||||
if (attr == NULL || attr->uuid == NULL) {
|
if (attr == NULL || attr->uuid == NULL) {
|
||||||
@@ -62,12 +68,122 @@ int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_att
|
|||||||
break;
|
break;
|
||||||
case 6: // power src
|
case 6: // power src
|
||||||
// Todo return enum for current power source
|
// Todo return enum for current power source
|
||||||
|
if (getIsPoweredByDCIN()) {
|
||||||
|
temp = 0;
|
||||||
|
} else if (USBPowerDelivery::negotiationComplete()) {
|
||||||
|
temp = 1;
|
||||||
|
} else {
|
||||||
|
temp = 2;
|
||||||
|
}
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
break;
|
||||||
|
case 7:
|
||||||
|
// Tip resistance
|
||||||
|
temp = getTipResistanceX10();
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
break;
|
||||||
|
case 8:
|
||||||
|
// uptime
|
||||||
|
temp = xTaskGetTickCount() / TICKS_100MS;
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
break;
|
||||||
|
case 9:
|
||||||
|
// movement
|
||||||
|
temp = lastMovementTime / TICKS_100MS;
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 10:
|
||||||
|
// max temp
|
||||||
|
temp = TipThermoModel::getTipMaxInC();
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
break;
|
||||||
|
case 11:
|
||||||
|
// raw tip
|
||||||
|
temp = TipThermoModel::convertTipRawADCTouV(getTipRawTemp(0), true);
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
break;
|
||||||
|
case 12:
|
||||||
|
// hall sensor
|
||||||
|
{
|
||||||
|
int16_t hallEffectStrength = getRawHallEffect();
|
||||||
|
if (hallEffectStrength < 0)
|
||||||
|
hallEffectStrength = -hallEffectStrength;
|
||||||
|
temp = hallEffectStrength;
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case 13:
|
||||||
|
// Operating mode
|
||||||
|
// TODO: Needs tracking
|
||||||
|
break;
|
||||||
|
case 14:
|
||||||
|
// Estimated watts
|
||||||
|
temp = x10WattHistory.average();
|
||||||
|
memcpy(buf, &temp, sizeof(temp));
|
||||||
|
return sizeof(temp);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
MSG("Unhandled attr read %d | %d\n", (uint32_t)attr->uuid, uuid_value);
|
MSG("Unhandled attr read %d | %d\n", (uint32_t)attr->uuid, uuid_value);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
||||||
|
if (attr == NULL || attr->uuid == NULL) {
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
uint16_t uuid_value = ((struct bt_uuid_16 *)attr->uuid)->val;
|
||||||
|
// Bulk is the non-const size service
|
||||||
|
switch (uuid_value) {
|
||||||
|
case 1:
|
||||||
|
// Bulk data
|
||||||
|
{
|
||||||
|
uint32_t bulkData[] = {
|
||||||
|
TipThermoModel::getTipInC(), // Current temp
|
||||||
|
getSettingValue(SettingsOptions::SolderingTemp), // Setpoint
|
||||||
|
getHandleTemperature(0), // Handle X10 Temp in C
|
||||||
|
getInputVoltageX10(getSettingValue(SettingsOptions::VoltageDiv), 0), // Input voltage
|
||||||
|
x10WattHistory.average(), // Estimated Wattage
|
||||||
|
X10WattsToPWM(x10WattHistory.average()), // Power as PWM level
|
||||||
|
TipThermoModel::convertTipRawADCTouV(getTipRawTemp(0), true), // Raw tip
|
||||||
|
};
|
||||||
|
int lenToCopy = sizeof(bulkData) - offset;
|
||||||
|
if (lenToCopy > len) {
|
||||||
|
lenToCopy = len;
|
||||||
|
}
|
||||||
|
if (lenToCopy < 0) {
|
||||||
|
lenToCopy = 0;
|
||||||
|
}
|
||||||
|
memcpy(buf, ((uint8_t *)bulkData) + offset, lenToCopy);
|
||||||
|
return lenToCopy;
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
// Accelerometer name
|
||||||
|
// TODO: Need to store non-encoded version
|
||||||
|
break;
|
||||||
|
case 3:
|
||||||
|
// Build
|
||||||
|
// TODO: Need to store non-encoded version
|
||||||
|
break;
|
||||||
|
case 4:
|
||||||
|
// Device unique id
|
||||||
|
{
|
||||||
|
uint64_t id = getDeviceID();
|
||||||
|
memcpy(buf, &id, sizeof(id));
|
||||||
|
return sizeof(id);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
int ble_char_read_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
int ble_char_read_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset) {
|
||||||
if (attr == NULL || attr->uuid == NULL) {
|
if (attr == NULL || attr->uuid == NULL) {
|
||||||
return 0;
|
return 0;
|
||||||
|
|||||||
@@ -9,6 +9,7 @@ extern "C" {
|
|||||||
|
|
||||||
int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset);
|
int ble_char_read_status_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset);
|
||||||
int ble_char_read_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset);
|
int ble_char_read_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset);
|
||||||
|
int ble_char_read_bulk_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, void *buf, u16_t len, u16_t offset);
|
||||||
|
|
||||||
int ble_char_write_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, const void *buf, u16_t len, u16_t offset, u8_t flags);
|
int ble_char_write_setting_value_callback(struct bt_conn *conn, const struct bt_gatt_attr *attr, const void *buf, u16_t len, u16_t offset, u8_t flags);
|
||||||
|
|
||||||
|
|||||||
@@ -151,6 +151,20 @@ static struct bt_gatt_attr attrs[] = {
|
|||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_HANDLE_TEMP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_POWER_LEVEL, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_POWER_SRC, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_POWER_SRC, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_TIP_RES, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_UPTIME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_MOVEMENT, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_MAX_TEMP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_RAW_TIP, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_HALL_SENSOR, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_OP_MODE, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_EST_WATTS, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_status_callback, NULL, NULL),
|
||||||
|
|
||||||
|
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_BULK_DATA),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BULK_LIVE_DATA, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_ACCEL_NAME, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_BUILD, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_LIVE_DEV_ID, BT_GATT_CHRC_READ, BT_GATT_PERM_READ, ble_char_read_bulk_value_callback, NULL, NULL),
|
||||||
|
|
||||||
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_SETTINGS_DATA),
|
BT_GATT_PRIMARY_SERVICE(BT_UUID_SVC_SETTINGS_DATA),
|
||||||
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_SETTINGS_VALUE_SAVE, BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE | BT_GATT_CHRC_WRITE_WITHOUT_RESP, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE,
|
BT_GATT_CHARACTERISTIC(BT_UUID_CHAR_BLE_SETTINGS_VALUE_SAVE, BT_GATT_CHRC_READ | BT_GATT_CHRC_WRITE | BT_GATT_CHRC_WRITE_WITHOUT_RESP, BT_GATT_PERM_READ | BT_GATT_PERM_WRITE,
|
||||||
|
|||||||
Reference in New Issue
Block a user