#ifndef BLE_CHARACTERISTICS_H_
#define BLE_CHARACTERISTICS_H_

#include "ble_config.h"

/*

 Pinecil exposes two main services; Status and settings

 Status:
 - Current setpoint temperature
 - Current live tip temperature
 - Current DC Input
 - Current Handle cold junction temperature
 - Current power level (aka pwm level)

 Settings:
 - One entry for every setting in the unit
*/

// d85efab4-168e-4a71-affd-33e27f9bc533
#define BT_UUID_SVC_LIVE_DATA BT_UUID_DECLARE_128(BT_UUID_128_ENCODE(0xd85efab4, 0x168e, 0x4a71, 0xaffd, 0x33e27f9bc533))
// f6d75f91-5a10-4eba-a233-47d3f26a907f
#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_SETPOINT_TEMP BT_UUID_DECLARE_16(0x0002)
#define BT_UUID_CHAR_BLE_LIVE_DC_INPUT      BT_UUID_DECLARE_16(0x0003)
#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_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

#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_SAVE BT_UUID_DECLARE_16(0)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_1    BT_UUID_DECLARE_16(1)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_2    BT_UUID_DECLARE_16(2)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_3    BT_UUID_DECLARE_16(3)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_4    BT_UUID_DECLARE_16(4)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_5    BT_UUID_DECLARE_16(5)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_6    BT_UUID_DECLARE_16(6)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_7    BT_UUID_DECLARE_16(7)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_8    BT_UUID_DECLARE_16(8)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_9    BT_UUID_DECLARE_16(9)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_10   BT_UUID_DECLARE_16(10)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_11   BT_UUID_DECLARE_16(11)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_12   BT_UUID_DECLARE_16(12)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_13   BT_UUID_DECLARE_16(13)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_14   BT_UUID_DECLARE_16(14)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_15   BT_UUID_DECLARE_16(15)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_16   BT_UUID_DECLARE_16(16)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_17   BT_UUID_DECLARE_16(17)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_18   BT_UUID_DECLARE_16(18)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_19   BT_UUID_DECLARE_16(19)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_20   BT_UUID_DECLARE_16(20)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_21   BT_UUID_DECLARE_16(21)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_22   BT_UUID_DECLARE_16(22)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_23   BT_UUID_DECLARE_16(23)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_24   BT_UUID_DECLARE_16(24)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_25   BT_UUID_DECLARE_16(25)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_26   BT_UUID_DECLARE_16(26)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_27   BT_UUID_DECLARE_16(27)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_28   BT_UUID_DECLARE_16(28)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_29   BT_UUID_DECLARE_16(29)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_30   BT_UUID_DECLARE_16(30)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_31   BT_UUID_DECLARE_16(31)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_32   BT_UUID_DECLARE_16(32)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_33   BT_UUID_DECLARE_16(33)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_34   BT_UUID_DECLARE_16(34)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_35   BT_UUID_DECLARE_16(35)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_36   BT_UUID_DECLARE_16(36)
#define BT_UUID_CHAR_BLE_SETTINGS_VALUE_37   BT_UUID_DECLARE_16(37)

#endif