2023-06-26 15:13:17 +02:00

85 lines
2.3 KiB
C

#include "BLE.h"
#include "BLE_UUID.h"
#include "BLEh.h"
#include "host/ble_att.h"
#include "host/ble_gatt.h"
#include "host/ble_uuid.h"
struct char_pres_format frequency_char_pres_format = {
.format = FORMAT_UINT32,
.unit = HERTZ_UNIT_UUID,
.exponent = 0,
.namespc = 1,
.descrH = NSP_DESC_MAIN & 0xff,
.descrL = (NSP_DESC_MAIN>>8) & 0xff,
};
struct dsc_content switching_frequency_dsc = {
.data = &frequency_char_pres_format,
.data_size = CHAR_PRESENTATION_FORMAT_SIZE,
};
struct char_pres_format duty_cycle_char_pres_format = {
.format = FORMAT_UINT32,
.unit = UNITLESS_UNIT_UUID,
.exponent = -6,
.namespc = 1,
.descrH = NSP_DESC_MAIN & 0xff,
.descrL = (NSP_DESC_MAIN>>8) & 0xff,
};
struct dsc_content duty_cycle_dsc = {
.data = &duty_cycle_char_pres_format,
.data_size = CHAR_PRESENTATION_FORMAT_SIZE,
};
struct ble_gatt_svc_def gatt_svcs[] = {
[RAW_VALUES_SVC_ID] = {
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(METROLOGY_SERVICE),
},
[CALC_VALUES_SVC_ID] = {
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(METROLOGY_SERVICE),
},
[CONFIGURATION_SVC_ID] = {
.type = BLE_GATT_SVC_TYPE_PRIMARY,
.uuid = BLE_UUID16_DECLARE(CONFIGURATION_SERVICE),
.characteristics = (struct ble_gatt_chr_def[]){
[SWITCHING_FREQUENCY_CHR_ID] = {
.uuid = BLE_UUID16_DECLARE(SWITCHING_FREQUENCY_CHAR),
.access_cb = NULL,
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE,
.min_key_size = 0,
.arg = NULL,
.descriptors = (struct ble_gatt_dsc_def[]){
[0] = {
.uuid = BLE_UUID16_DECLARE(CHAR_PRES_FORMAT),
.att_flags = BLE_ATT_F_READ,
.access_cb = NULL,
.arg = &switching_frequency_dsc,
},
{ 0 },
},
},
[DUTY_CYCLE_CHR_ID] = {
.uuid = BLE_UUID16_DECLARE(DUTY_CYCLE_FREQUENCY_CHAR),
.access_cb = NULL,
.flags = BLE_GATT_CHR_F_READ | BLE_GATT_CHR_F_WRITE,
.min_key_size = 0,
.arg = NULL,
.descriptors = (struct ble_gatt_dsc_def[]){
[0] = {
.uuid = BLE_UUID16_DECLARE(CHAR_PRES_FORMAT),
.att_flags = BLE_ATT_F_READ,
.access_cb = NULL,
.arg = &duty_cycle_dsc,
},
{ 0 },
},
},
{ 0 },
},
},
{ 0 },
};