diff --git a/src/ble/gatt-service/battery_service_v1_server.c b/src/ble/gatt-service/battery_service_v1_server.c
index f19b959b9..f4b2e4710 100644
--- a/src/ble/gatt-service/battery_service_v1_server.c
+++ b/src/ble/gatt-service/battery_service_v1_server.c
@@ -480,14 +480,15 @@ static void battery_service_set_callback(battery_service_v1_server_connection_t
     }
 }
 
-
-void battery_service_v1_server_set_battery_value(battery_service_v1_t * service, uint8_t value){
+uint8_t battery_service_v1_server_set_battery_value(battery_service_v1_t * service, uint8_t battery_value){
     btstack_assert(service != NULL);
-    if (service->battery_value == value){
-        return;
+    if (service->battery_value == battery_value){
+        return ERROR_CODE_REPEATED_ATTEMPTS;
     }
-
-    service->battery_value = value;
+    if (battery_value > 100){
+        return ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE;
+    }
+    service->battery_value = battery_value;
 
     uint8_t i;
     for (i = 0; i < service->connections_max_num; i++){
@@ -496,6 +497,7 @@ void battery_service_v1_server_set_battery_value(battery_service_v1_t * service,
             battery_service_set_callback(connection, BAS_NOTIFICATION_TASK_BATTERY_VALUE_CHANGED);
         }
     }
+    return ERROR_CODE_SUCCESS;
 }
 
 void battery_service_v1_server_deregister(battery_service_v1_t *service){
diff --git a/src/ble/gatt-service/battery_service_v1_server.h b/src/ble/gatt-service/battery_service_v1_server.h
index feb358596..7f95045c6 100644
--- a/src/ble/gatt-service/battery_service_v1_server.h
+++ b/src/ble/gatt-service/battery_service_v1_server.h
@@ -286,15 +286,21 @@ typedef struct battery_service_v1 {
  */
 void battery_service_v1_server_init(void);
 
-void battery_service_v1_server_register(battery_service_v1_t *service, battery_service_v1_server_connection_t *connections, uint8_t connection_max_num);
+void battery_service_v1_server_register(battery_service_v1_t * service, battery_service_v1_server_connection_t * connections, uint8_t connection_max_num);
+
+void battery_service_v1_server_deregister(battery_service_v1_t * service);
 
-void battery_service_v1_server_deregister(battery_service_v1_t *service);
 /**
  * @brief Update battery value
  * @note triggers notifications if subscribed
+ * @param service
  * @param battery_value in range 0-100
+ * @return ERROR_CODE_SUCCESS if value differs from old one, otherwise:
+ *              - ERROR_CODE_REPEATED_ATTEMPTS, or
+ *              - ERROR_CODE_PARAMETER_OUT_OF_MANDATORY_RANGE
  */
-void battery_service_v1_server_set_battery_value(battery_service_v1_t * service, uint8_t value);
+uint8_t battery_service_v1_server_set_battery_value(battery_service_v1_t * service, uint8_t battery_value);
+
 
 void battery_service_v1_server_deinit(void);