static bool reply_cb(struct sol_coap_server *server, struct sol_coap_packet *req, const struct sol_network_link_addr *cliaddr, void *data) { struct sol_str_slice *path = data; static int count; struct sol_buffer *buf; size_t offset; SOL_BUFFER_DECLARE_STATIC(addr, SOL_INET_ADDR_STRLEN); if (!req || !cliaddr) //timeout return false; sol_network_link_addr_to_str(cliaddr, &addr); SOL_INF("Got response from %.*s\n", SOL_STR_SLICE_PRINT(sol_buffer_get_slice(&addr))); sol_coap_packet_get_payload(req, &buf, &offset); SOL_INF("Payload: %.*s\n", (int)(buf->used - offset), (char *)sol_buffer_at(buf, offset)); if (++count == 10) disable_observing(req, server, path, cliaddr); return true; }
static void on_disconnect(void *user_data, struct sol_bt_conn *conn) { SOL_BUFFER_DECLARE_STATIC(str, SOL_BLUETOOTH_ADDR_STRLEN); sol_network_link_addr_to_str(sol_bt_conn_get_addr(conn), &str); SOL_INF("Disconnected from device %.*s, trying again", (int)str.used, (char *)str.data); }
static bool on_connect(void *user_data, struct sol_bt_conn *conn) { SOL_BUFFER_DECLARE_STATIC(str, SOL_BLUETOOTH_ADDR_STRLEN); sol_network_link_addr_to_str(sol_bt_conn_get_addr(conn), &str); SOL_INF("Connected to device %.*s", (int)str.used, (char *)str.data); return true; }