blob: c519eefd6f78e837bd188b5bdde536f8ea83a634 [file] [log] [blame]
/*
* Copyright (c) 2022 Nordic Semiconductor ASA
*
* SPDX-License-Identifier: Apache-2.0
*/
#include "dfu_blob_common.h"
#include <zephyr/sys/util.h>
#include "mesh_test.h"
static struct {
uint16_t addrs[6];
int rem_cnt;
} lost_targets;
bool lost_target_find_and_remove(uint16_t addr)
{
for (int i = 0; i < ARRAY_SIZE(lost_targets.addrs); i++) {
if (addr == lost_targets.addrs[i]) {
lost_targets.addrs[i] = 0;
ASSERT_TRUE(lost_targets.rem_cnt > 0);
lost_targets.rem_cnt--;
return true;
}
}
return false;
}
void lost_target_add(uint16_t addr)
{
if (lost_targets.rem_cnt >= ARRAY_SIZE(lost_targets.addrs)) {
FAIL("No more room in lost target list");
return;
}
lost_targets.addrs[lost_targets.rem_cnt] = addr;
lost_targets.rem_cnt++;
}
int lost_targets_rem(void)
{
return lost_targets.rem_cnt;
}
void common_sar_conf(uint16_t addr)
{
int err;
/* Reconfigure SAR Transmitter state to change compile-time configuration to default
* configuration.
*/
struct bt_mesh_sar_tx tx_set = {
.seg_int_step = 1,
.unicast_retrans_count = 3,
.unicast_retrans_without_prog_count = 2,
.unicast_retrans_int_step = 7,
.unicast_retrans_int_inc = 1,
.multicast_retrans_count = 2,
.multicast_retrans_int = 3,
};
struct bt_mesh_sar_tx tx_rsp;
err = bt_mesh_sar_cfg_cli_transmitter_set(0, addr, &tx_set, &tx_rsp);
if (err) {
FAIL("Failed to configure SAR Transmitter state (err %d)", err);
}
/* Reconfigure SAR Receiver state so that the transport layer doesn't generate SegAcks too
* frequently.
*/
struct bt_mesh_sar_rx rx_set = {
.seg_thresh = 0x1f,
.ack_delay_inc = 7,
.discard_timeout = 1,
.rx_seg_int_step = 0xf,
.ack_retrans_count = 1,
};
struct bt_mesh_sar_rx rx_rsp;
err = bt_mesh_sar_cfg_cli_receiver_set(0, addr, &rx_set, &rx_rsp);
if (err) {
FAIL("Failed to configure SAR Receiver state (err %d)", err);
}
}