From beed271f47e5a4d05e209b4235f22985b21ad278 Mon Sep 17 00:00:00 2001 From: Martin/Geno <geno+dev@fireorbit.de> Date: Sun, 18 Aug 2019 14:50:39 +0200 Subject: [PATCH] ble: card10 svc - validierung of dim --- epicardium/ble/card10.c | 29 ++++++++++++++++++++--------- 1 file changed, 20 insertions(+), 9 deletions(-) diff --git a/epicardium/ble/card10.c b/epicardium/ble/card10.c index df726fc3..ea5d7aed 100644 --- a/epicardium/ble/card10.c +++ b/epicardium/ble/card10.c @@ -168,7 +168,7 @@ static const uint8_t UUID_attChar_led_bg_top_left[] = { /* BLE UUID for card10 dim leds on bottom */ static const uint8_t UUID_char_leds_bottom_dim[] = { - ATT_PROP_WRITE_NO_RSP, + ATT_PROP_WRITE, UINT16_TO_BYTES(CARD10_LEDS_BOTTOM_DIM_VAL_HDL), CARD10_UUID_SUFFIX, 0x15, CARD10_UUID_PREFIX }; @@ -179,7 +179,7 @@ static const uint8_t UUID_attChar_leds_bottom_dim[] = { /* BLE UUID for card10 dim leds on top */ static const uint8_t UUID_char_leds_top_dim[] = { - ATT_PROP_WRITE_NO_RSP, + ATT_PROP_WRITE, UINT16_TO_BYTES(CARD10_LEDS_TOP_DIM_VAL_HDL), CARD10_UUID_SUFFIX, 0x16, CARD10_UUID_PREFIX }; @@ -533,7 +533,8 @@ static uint8_t writeCard10CB( uint8_t *pValue, attsAttr_t *pAttr ) { - uint16_t ui16; + uint16_t ui16 = 0; + uint8_t ui8 = 0; switch (handle) { case CARD10_TIME_UPDATE_VAL_HDL: @@ -597,13 +598,23 @@ static uint8_t writeCard10CB( ); return ATT_SUCCESS; case CARD10_LEDS_BOTTOM_DIM_VAL_HDL: - epic_leds_dim_bottom(pValue[0]); - APP_TRACE_INFO1("dim bottom to: %d\n", pValue[0]); - return ATT_SUCCESS; + ui8 = pValue[0]; + if(ui8 >= 1 && ui8 <= 8) { + epic_leds_dim_bottom(pValue[0]); + APP_TRACE_INFO1("dim bottom to: %d\n", pValue[0]); + return ATT_SUCCESS; + } + APP_TRACE_INFO1("dim bottom invalid value (1-8): %d\n", ui8); + return ATT_ERR_RANGE; case CARD10_LEDS_TOP_DIM_VAL_HDL: - epic_leds_dim_top(pValue[0]); - APP_TRACE_INFO1("dim top to: %d\n", pValue[0]); - return ATT_SUCCESS; + ui8 = pValue[0]; + if(ui8 >= 1 && ui8 <= 8) { + epic_leds_dim_top(ui8); + APP_TRACE_INFO1("dim top to: %d\n", ui8); + return ATT_SUCCESS; + } + APP_TRACE_INFO1("dim top invalid value (1-8): %d\n", ui8); + return ATT_ERR_RANGE; case CARD10_LEDS_ABOVE_VAL_HDL: for (ui16 = 0; ui16 < 11; ui16++) { epic_leds_set( -- GitLab