Hello, im trying to create a mesh system with sensors that work like a chat. I tested it on 5 devices and there is a strange behavior. After 120 test messages an error appears :"
i know it has to do with a buffer being full, but i dont know how to empty it. How do i get rid of this error ?
My code + config (the rest is mostly chat example) :
void main(void) { int err; printk("Initializing...\n"); err = bt_enable(bt_ready); if (err) { printk("Bluetooth init failed (err %d)\n", err); } k_timer_start(&my_timer, K_MSEC(100), K_MSEC(1000)); }
K_WORK_DEFINE(repeating_timer_work,my_enemy); void my_fren(struct k_timer *dummy) { k_work_submit(&repeating_timer_work); } K_TIMER_DEFINE(my_timer, my_fren, NULL);
long long int timestamp = 0; static void my_enemy(struct k_timer *timer_id){ if(bt_mesh_is_provisioned()){ char * test[20]; timestamp += 1; char * str[20]; sprintf(str, "timestamp-%d",timestamp); test[0] = str; free(str); messagueages(test); } }
int messagueages(char *mes[]){ int err; err = bt_mesh_chat_cli_message_send(&chat, mes[0]); if (err){ LOG_WRN("Failed to send message: %d", err); } return 0; }
CONFIG_BT_MESH_TX_SEG_MSG_COUNT=64 CONFIG_BT_MESH_RX_SEG_MSG_COUNT=64 CONFIG_BT_MESH_SEG_BUFS=64 CONFIG_BT_MESH_RX_SEG_MAX=10 CONFIG_BT_MESH_TX_SEG_MAX=10 CONFIG_BT_MESH_SEG_ACK_BASE_TIMEOUT=150 CONFIG_BT_MESH_SEG_ACK_PER_HOP_TIMEOUT=50 CONFIG_BT_MESH_SEG_ACK_PER_SEGMENT_TIMEOUT=0 CONFIG_BT_MESH_DEFAULT_TTL=7 CONFIG_BT_MESH_LOOPBACK_BUFS=3 CONFIG_BT_MESH_TX_SEG_RETRANS_COUNT=4 CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_UNICAST=400 CONFIG_BT_MESH_TX_SEG_RETRANS_TIMEOUT_GROUP=50 CONFIG_BT_MESH_NETWORK_TRANSMIT_COUNT=0 CONFIG_BT_MESH_NETWORK_TRANSMIT_INTERVAL=20 CONFIG_BT_MESH_RELAY=y CONFIG_BT_MESH_RELAY_ENABLED=y CONFIG_BT_MESH_RELAY_RETRANSMIT_COUNT=2 CONFIG_BT_MESH_RELAY_RETRANSMIT_INTERVAL=20 CONFIG_BT_MESH_RELAY_BUF_COUNT=32 CONFIG_BT_MESH_BEACON_ENABLED=y