Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
Loading items

Target

Select target project
  • card10/firmware
  • annejan/firmware
  • astro/firmware
  • fpletz/firmware
  • gerd/firmware
  • fleur/firmware
  • swym/firmware
  • l/firmware
  • uberardy/firmware
  • wink/firmware
  • madonius/firmware
  • mot/firmware
  • filid/firmware
  • q3k/firmware
  • hauke/firmware
  • Woazboat/firmware
  • pink/firmware
  • mossmann/firmware
  • omniskop/firmware
  • zenox/firmware
  • trilader/firmware
  • Danukeru/firmware
  • shoragan/firmware
  • zlatko/firmware
  • sistason/firmware
  • datenwolf/firmware
  • bene/firmware
  • amedee/firmware
  • martinling/firmware
  • griffon/firmware
  • chris007/firmware
  • adisbladis/firmware
  • dbrgn/firmware
  • jelly/firmware
  • rnestler/firmware
  • mh/firmware
  • ln/firmware
  • penguineer/firmware
  • monkeydom/firmware
  • jens/firmware
  • jnaulty/firmware
  • jeffmakes/firmware
  • marekventur/firmware
  • pete/firmware
  • h2obrain/firmware
  • DooMMasteR/firmware
  • jackie/firmware
  • prof_r/firmware
  • Draradech/firmware
  • Kartoffel/firmware
  • hinerk/firmware
  • abbradar/firmware
  • JustTB/firmware
  • LuKaRo/firmware
  • iggy/firmware
  • ente/firmware
  • flgr/firmware
  • Lorphos/firmware
  • matejo/firmware
  • ceddral7/firmware
  • danb/firmware
  • joshi/firmware
  • melle/firmware
  • fitch/firmware
  • deurknop/firmware
  • sargon/firmware
  • markus/firmware
  • kloenk/firmware
  • lucaswerkmeister/firmware
  • derf/firmware
  • meh/firmware
  • dx/card10-firmware
  • torben/firmware
  • yuvadm/firmware
  • AndyBS/firmware
  • klausdieter1/firmware
  • katzenparadoxon/firmware
  • xiretza/firmware
  • ole/firmware
  • techy/firmware
  • thor77/firmware
  • TilCreator/firmware
  • fuchsi/firmware
  • dos/firmware
  • yrlf/firmware
  • PetePriority/firmware
  • SuperVirus/firmware
  • sur5r/firmware
  • tazz/firmware
  • Alienmaster/firmware
  • flo_h/firmware
  • baldo/firmware
  • mmu_man/firmware
  • Foaly/firmware
  • sodoku/firmware
  • Guinness/firmware
  • ssp/firmware
  • led02/firmware
  • Stormwind/firmware
  • arist/firmware
  • coon/firmware
  • mdik/firmware
  • pippin/firmware
  • royrobotiks/firmware
  • zigot83/firmware
  • mo_k/firmware
106 results
Select Git revision
Loading items
Show changes

Commits on Source 6

...@@ -256,228 +256,272 @@ static uint16_t initLightSensorLen = sizeof(initLightSensorValue); ...@@ -256,228 +256,272 @@ static uint16_t initLightSensorLen = sizeof(initLightSensorValue);
*/ */
static const attsAttr_t card10SvcAttrList[] = { static const attsAttr_t card10SvcAttrList[] = {
{ .pUuid = attPrimSvcUuid, {
.pUuid = attPrimSvcUuid,
.pValue = (uint8_t *)UUID_svc, .pValue = (uint8_t *)UUID_svc,
.pLen = (uint16_t *)&UUID_len, .pLen = (uint16_t *)&UUID_len,
.maxLen = sizeof(UUID_svc), .maxLen = sizeof(UUID_svc),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
},
// TIME // TIME
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_time, .pValue = (uint8_t *)UUID_char_time,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_time), .maxLen = sizeof(UUID_char_time),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_time, },
{
.pUuid = UUID_attChar_time,
.pValue = timeValue, .pValue = timeValue,
.pLen = &timeLen, .pLen = &timeLen,
.maxLen = sizeof(uint64_t), .maxLen = sizeof(uint64_t),
.settings = (ATTS_SET_WRITE_CBACK | ATTS_SET_READ_CBACK), .settings = ATTS_SET_WRITE_CBACK | ATTS_SET_READ_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
ATTS_PERMIT_WRITE_AUTH | ATTS_PERMIT_READ | ATTS_PERMIT_WRITE_AUTH | ATTS_PERMIT_READ |
ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH) }, ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH,
},
// VIBRA // VIBRA
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_vibra, .pValue = (uint8_t *)UUID_char_vibra,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_vibra), .maxLen = sizeof(UUID_char_vibra),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_vibra, },
{
.pUuid = UUID_attChar_vibra,
.pValue = NULL, .pValue = NULL,
.maxLen = sizeof(uint16_t), .maxLen = sizeof(uint16_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// ROCKETS // ROCKETS
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_rockets, .pValue = (uint8_t *)UUID_char_rockets,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_rockets), .maxLen = sizeof(UUID_char_rockets),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_rockets, },
{
.pUuid = UUID_attChar_rockets,
.pValue = NULL, .pValue = NULL,
.maxLen = 3 * sizeof(uint8_t), .maxLen = 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// BG LED Bottom left // BG LED Bottom left
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_led_bg_bottom_left, .pValue = (uint8_t *)UUID_char_led_bg_bottom_left,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_led_bg_bottom_left), .maxLen = sizeof(UUID_char_led_bg_bottom_left),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_led_bg_bottom_left, },
{
.pUuid = UUID_attChar_led_bg_bottom_left,
.pValue = NULL, .pValue = NULL,
.maxLen = 3 * sizeof(uint8_t), .maxLen = 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// BG LED Bottom right // BG LED Bottom right
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_led_bg_bottom_right, .pValue = (uint8_t *)UUID_char_led_bg_bottom_right,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_led_bg_bottom_right), .maxLen = sizeof(UUID_char_led_bg_bottom_right),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_led_bg_bottom_right, },
{
.pUuid = UUID_attChar_led_bg_bottom_right,
.pValue = NULL, .pValue = NULL,
.maxLen = 3 * sizeof(uint8_t), .maxLen = 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// BG LED top right // BG LED top right
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_led_bg_top_right, .pValue = (uint8_t *)UUID_char_led_bg_top_right,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_led_bg_top_right), .maxLen = sizeof(UUID_char_led_bg_top_right),
.settings = 0, .settings = 0,
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_led_bg_top_right, },
{
.pUuid = UUID_attChar_led_bg_top_right,
.pValue = NULL, .pValue = NULL,
.maxLen = 3 * sizeof(uint8_t), .maxLen = 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// BG LED top left // BG LED top left
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_led_bg_top_left, .pValue = (uint8_t *)UUID_char_led_bg_top_left,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_led_bg_top_left), .maxLen = sizeof(UUID_char_led_bg_top_left),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_led_bg_top_left, },
{
.pUuid = UUID_attChar_led_bg_top_left,
.pValue = NULL, .pValue = NULL,
.maxLen = 3 * sizeof(uint8_t), .maxLen = 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// Dim bottom module // Dim bottom module
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_leds_bottom_dim, .pValue = (uint8_t *)UUID_char_leds_bottom_dim,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_leds_bottom_dim), .maxLen = sizeof(UUID_char_leds_bottom_dim),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_leds_bottom_dim, },
{
.pUuid = UUID_attChar_leds_bottom_dim,
.pValue = NULL, .pValue = NULL,
.pLen = 0, .pLen = 0,
.maxLen = sizeof(uint8_t), .maxLen = sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// Dim top module // Dim top module
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_leds_top_dim, .pValue = (uint8_t *)UUID_char_leds_top_dim,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_leds_top_dim), .maxLen = sizeof(UUID_char_leds_top_dim),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_leds_top_dim, },
{
.pUuid = UUID_attChar_leds_top_dim,
.pValue = NULL, .pValue = NULL,
.maxLen = sizeof(uint8_t), .maxLen = sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// led powersafe // led powersafe
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_led_powersafe, .pValue = (uint8_t *)UUID_char_led_powersafe,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_led_powersafe), .maxLen = sizeof(UUID_char_led_powersafe),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_led_powersafe, },
{
.pUuid = UUID_attChar_led_powersafe,
.pValue = NULL, .pValue = NULL,
.maxLen = sizeof(uint8_t), .maxLen = sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// flashlight // flashlight
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_flashlight, .pValue = (uint8_t *)UUID_char_flashlight,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_flashlight), .maxLen = sizeof(UUID_char_flashlight),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_flashlight, },
{
.pUuid = UUID_attChar_flashlight,
.pValue = NULL, .pValue = NULL,
.maxLen = sizeof(uint8_t), .maxLen = sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// personal state // personal state
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_personal_state, .pValue = (uint8_t *)UUID_char_personal_state,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_personal_state), .maxLen = sizeof(UUID_char_personal_state),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_personal_state, },
{
.pUuid = UUID_attChar_personal_state,
.pValue = &personalStateValue, .pValue = &personalStateValue,
.pLen = &personalStateLen, .pLen = &personalStateLen,
.maxLen = sizeof(uint16_t), .maxLen = sizeof(uint16_t),
.settings = (ATTS_SET_WRITE_CBACK | ATTS_SET_READ_CBACK), .settings = ATTS_SET_WRITE_CBACK | ATTS_SET_READ_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
ATTS_PERMIT_WRITE_AUTH | ATTS_PERMIT_READ | ATTS_PERMIT_WRITE_AUTH | ATTS_PERMIT_READ |
ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH) }, ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH,
},
// ABOVE LEDS // ABOVE LEDS
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_leds_above, .pValue = (uint8_t *)UUID_char_leds_above,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_leds_above), .maxLen = sizeof(UUID_char_leds_above),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_leds_above, },
{
.pUuid = UUID_attChar_leds_above,
.pValue = NULL, .pValue = NULL,
.maxLen = 11 * 3 * sizeof(uint8_t), .maxLen = 11 * 3 * sizeof(uint8_t),
.settings = ATTS_SET_WRITE_CBACK, .settings = ATTS_SET_WRITE_CBACK,
.permissions = .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
(ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
ATTS_PERMIT_WRITE_AUTH) }, },
// Light sensor // Light sensor
{ .pUuid = attChUuid, {
.pUuid = attChUuid,
.pValue = (uint8_t *)UUID_char_light_sensor, .pValue = (uint8_t *)UUID_char_light_sensor,
.pLen = (uint16_t *)&UUID_char_len, .pLen = (uint16_t *)&UUID_char_len,
.maxLen = sizeof(UUID_char_light_sensor), .maxLen = sizeof(UUID_char_light_sensor),
.permissions = ATTS_PERMIT_READ }, .permissions = ATTS_PERMIT_READ,
{ .pUuid = UUID_attChar_light_sensor, },
{
.pUuid = UUID_attChar_light_sensor,
.pValue = initLightSensorValue, .pValue = initLightSensorValue,
.pLen = &initLightSensorLen, .pLen = &initLightSensorLen,
.maxLen = sizeof(uint8_t), .maxLen = sizeof(uint8_t),
.settings = ATTS_SET_READ_CBACK, .settings = ATTS_SET_READ_CBACK,
.permissions = .permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_ENC |
(ATTS_PERMIT_READ | ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH,
ATTS_PERMIT_READ_AUTH) }, },
}; };
// validating, that the service really get all charateristics // validating, that the service really get all charateristics
......
...@@ -143,7 +143,8 @@ static const attsAttr_t fileTransCfgList[] = { ...@@ -143,7 +143,8 @@ static const attsAttr_t fileTransCfgList[] = {
.pLen = NULL, .pLen = NULL,
.maxLen = 128, .maxLen = 128,
.settings = ATTS_SET_WRITE_CBACK | ATTS_SET_VARIABLE_LEN, .settings = ATTS_SET_WRITE_CBACK | ATTS_SET_VARIABLE_LEN,
.permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_AUTH, .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
ATTS_PERMIT_WRITE_AUTH,
}, },
/* File transfer Central RX characteristic */ /* File transfer Central RX characteristic */
{ {
...@@ -161,7 +162,8 @@ static const attsAttr_t fileTransCfgList[] = { ...@@ -161,7 +162,8 @@ static const attsAttr_t fileTransCfgList[] = {
.pLen = &attRxChConfigValue_len, .pLen = &attRxChConfigValue_len,
.maxLen = sizeof(attRxChConfigValue), .maxLen = sizeof(attRxChConfigValue),
.settings = ATTS_SET_VARIABLE_LEN, .settings = ATTS_SET_VARIABLE_LEN,
.permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_AUTH, .permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_ENC |
ATTS_PERMIT_READ_AUTH,
}, },
/* File transfer Central RX notification channel */ /* File transfer Central RX notification channel */
{ {
...@@ -170,8 +172,9 @@ static const attsAttr_t fileTransCfgList[] = { ...@@ -170,8 +172,9 @@ static const attsAttr_t fileTransCfgList[] = {
.pLen = &attRxChConfigValue_len, .pLen = &attRxChConfigValue_len,
.maxLen = sizeof(attRxChConfigValue), .maxLen = sizeof(attRxChConfigValue),
.settings = ATTS_SET_CCC, .settings = ATTS_SET_CCC,
.permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_AUTH | .permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_ENC |
ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_AUTH, ATTS_PERMIT_READ_AUTH | ATTS_PERMIT_WRITE |
ATTS_PERMIT_WRITE_ENC | ATTS_PERMIT_WRITE_AUTH,
}, },
}; };
......
...@@ -31,66 +31,84 @@ enum { UART_SVC_HDL = UART_START_HDL, /*!< \brief UART service declaration */ ...@@ -31,66 +31,84 @@ enum { UART_SVC_HDL = UART_START_HDL, /*!< \brief UART service declaration */
/* clang-format off */ /* clang-format off */
static const uint8_t UARTSvc[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x01,0x00,0x40,0x6E}; static const uint8_t UARTSvc[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x01,0x00,0x40,0x6E};
static const uint16_t UARTSvc_len = sizeof(UARTSvc);
static const uint8_t uartRxCh[] = {ATT_PROP_WRITE, UINT16_TO_BYTES(UART_RX_HDL), 0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x02,0x00,0x40,0x6E}; static const uint8_t uartRxCh[] = {ATT_PROP_WRITE, UINT16_TO_BYTES(UART_RX_HDL), 0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x02,0x00,0x40,0x6E};
const uint8_t attUartRxChUuid[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5, 0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x02,0x00,0x40,0x6E}; static const uint16_t uartRxCh_len = sizeof(uartRxCh);
static const uint8_t attUartRxChUuid[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5, 0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x02,0x00,0x40,0x6E};
static const uint8_t uartTxCh[] = {ATT_PROP_READ | ATT_PROP_NOTIFY, UINT16_TO_BYTES(UART_TX_HDL), 0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x03,0x00,0x40,0x6E}; static const uint8_t uartTxCh[] = {ATT_PROP_READ | ATT_PROP_NOTIFY, UINT16_TO_BYTES(UART_TX_HDL), 0x9E,0xCA,0xDC,0x24,0x0E,0xE5,0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x03,0x00,0x40,0x6E};
const uint8_t attUartTxChUuid[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5, 0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x03,0x00,0x40,0x6E}; static const uint16_t uartTxCh_len = sizeof(uartTxCh);
/* clang-format on */ static const uint8_t attUartTxChUuid[] = {0x9E,0xCA,0xDC,0x24,0x0E,0xE5, 0xA9,0xE0,0x93,0xF3,0xA3,0xB5,0x03,0x00,0x40,0x6E};
static void *SvcUARTAddGroupDyn(void)
{
void *pSHdl;
uint8_t initCcc[] = { UINT16_TO_BYTES(0x0000) };
/* Create the service */ static uint8_t ble_uart_tx_buf[128];
pSHdl = AttsDynCreateGroup(UART_START_HDL, UART_END_HDL); static uint16_t ble_uart_buf_tx_fill = 0;
/* clang-format on */
if (pSHdl != NULL) { /* Attribute list for uriCfg group */
/* clang-format off */ static const attsAttr_t uartAttrCfgList[] = {
/* Primary service */ /* Primary service */
AttsDynAddAttrConst( pSHdl, attPrimSvcUuid, UARTSvc, sizeof(UARTSvc), {
0, ATTS_PERMIT_READ); .pUuid = attPrimSvcUuid,
.pValue = (uint8_t *)UARTSvc,
.pLen = (uint16_t *)&UARTSvc_len,
.maxLen = sizeof(UARTSvc),
.settings = 0,
.permissions = ATTS_PERMIT_READ,
},
/* UART rx characteristic */ /* UART rx characteristic */
AttsDynAddAttrConst( pSHdl, attChUuid, uartRxCh, sizeof(uartRxCh), {
0, ATTS_PERMIT_READ); .pUuid = attChUuid,
// XXX: attUartRxChUuid is 16 bytes but nothing says so.... .pValue = (uint8_t *)uartRxCh,
.pLen = (uint16_t *)&uartRxCh_len,
.maxLen = sizeof(uartRxCh),
.settings = 0,
.permissions = ATTS_PERMIT_READ,
},
/* UART rx value */ /* UART rx value */
// XXX: not sure if max value of 128 is fine... {
AttsDynAddAttr( pSHdl, attUartRxChUuid, NULL, 0, 128, .pUuid = attUartRxChUuid,
ATTS_SET_WRITE_CBACK | ATTS_SET_VARIABLE_LEN, ATTS_PERMIT_WRITE); .pValue = NULL,
.pLen = NULL,
.maxLen = 128,
.settings = ATTS_SET_WRITE_CBACK | ATTS_SET_VARIABLE_LEN,
.permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
ATTS_PERMIT_WRITE_AUTH,
},
/* UART tx characteristic */ /* UART tx characteristic */
AttsDynAddAttrConst( pSHdl, attChUuid, uartTxCh, sizeof(uartTxCh), {
0, ATTS_PERMIT_READ); .pUuid = attChUuid,
.pValue = (uint8_t *)uartTxCh,
.pLen = (uint16_t *)&uartTxCh_len,
.maxLen = sizeof(uartTxCh),
.settings = 0,
.permissions = ATTS_PERMIT_READ,
},
/* UART tx value */ /* UART tx value */
/* TODO: do we need ATTS_SET_READ_CBACK ? */ {
AttsDynAddAttr( pSHdl, attUartTxChUuid, NULL, 0, sizeof(uint8_t), .pUuid = attUartTxChUuid,
ATTS_SET_READ_CBACK, ATTS_PERMIT_READ); .pValue = ble_uart_tx_buf,
.pLen = &ble_uart_buf_tx_fill,
.maxLen = sizeof(ble_uart_tx_buf),
.settings = 0,
.permissions = ATTS_PERMIT_READ | ATTS_PERMIT_READ_ENC |
ATTS_PERMIT_READ_AUTH,
},
/* UART tx CCC descriptor */ /* UART tx CCC descriptor */
AttsDynAddAttr( pSHdl, attCliChCfgUuid, initCcc, sizeof(uint16_t), sizeof(uint16_t), {
ATTS_SET_CCC, ATTS_PERMIT_READ | ATTS_PERMIT_WRITE); .pUuid = attCliChCfgUuid,
/* clang-format on */ .pValue = NULL,
} .pLen = NULL,
.maxLen = 0,
return pSHdl; .settings = ATTS_SET_CCC,
} .permissions = ATTS_PERMIT_WRITE | ATTS_PERMIT_WRITE_ENC |
ATTS_PERMIT_WRITE_AUTH | ATTS_PERMIT_READ |
ATTS_PERMIT_READ_ENC | ATTS_PERMIT_READ_AUTH,
},
};
dmConnId_t active_connection = 0; dmConnId_t active_connection = 0;
static uint8_t UARTReadCback(
dmConnId_t connId,
uint16_t handle,
uint8_t operation,
uint16_t offset,
attsAttr_t *pAttr
) {
printf("read callback\n");
return ATT_SUCCESS;
}
static uint8_t UARTWriteCback( static uint8_t UARTWriteCback(
dmConnId_t connId, dmConnId_t connId,
uint16_t handle, uint16_t handle,
...@@ -119,8 +137,6 @@ static uint8_t UARTWriteCback( ...@@ -119,8 +137,6 @@ static uint8_t UARTWriteCback(
return ATT_SUCCESS; return ATT_SUCCESS;
} }
static uint8_t ble_uart_tx_buf[128];
static uint8_t ble_uart_buf_tx_fill;
static int ble_uart_lasttick = 0; static int ble_uart_lasttick = 0;
void ble_uart_write(uint8_t *pValue, uint8_t len) void ble_uart_write(uint8_t *pValue, uint8_t len)
...@@ -134,11 +150,6 @@ void ble_uart_write(uint8_t *pValue, uint8_t len) ...@@ -134,11 +150,6 @@ void ble_uart_write(uint8_t *pValue, uint8_t len)
if (ble_uart_buf_tx_fill == 128 || pValue[i] == '\r' || if (ble_uart_buf_tx_fill == 128 || pValue[i] == '\r' ||
pValue[i] == '\n') { pValue[i] == '\n') {
if (ble_uart_buf_tx_fill > 0) { if (ble_uart_buf_tx_fill > 0) {
AttsSetAttr(
UART_TX_HDL,
ble_uart_buf_tx_fill,
ble_uart_tx_buf
);
if (active_connection) { if (active_connection) {
int x = xTaskGetTickCount() - int x = xTaskGetTickCount() -
ble_uart_lasttick; ble_uart_lasttick;
...@@ -165,11 +176,15 @@ void ble_uart_write(uint8_t *pValue, uint8_t len) ...@@ -165,11 +176,15 @@ void ble_uart_write(uint8_t *pValue, uint8_t len)
} }
} }
static attsGroup_t uartCfgGroup = {
.pAttr = (attsAttr_t *)uartAttrCfgList,
.writeCback = UARTWriteCback,
.startHandle = UART_START_HDL,
.endHandle = UART_END_HDL,
};
void bleuart_init(void) void bleuart_init(void)
{ {
/* Add the UART service dynamically */ /* Add the UART service */
void *pSHdl; AttsAddGroup(&uartCfgGroup);
pSHdl = SvcUARTAddGroupDyn();
AttsDynRegister(pSHdl, UARTReadCback, UARTWriteCback);
//AttsDynRegister(pSHdl, NULL, UARTWriteCback);
} }