Bluetooth: Convert FOR_EACH macro instances to use CONTAINER
Change-Id: I02c31842db5df10dda3e15bff370d2e459cc909d Signed-off-by: Luiz Augusto von Dentz <luiz.von.dentz@intel.com>
This commit is contained in:
parent
4ab09bdead
commit
a8ed185615
3 changed files with 22 additions and 50 deletions
|
@ -1742,7 +1742,7 @@ struct net_buf *bt_att_create_pdu(struct bt_conn *conn, uint8_t op, size_t len)
|
|||
|
||||
static void att_reset(struct bt_att *att)
|
||||
{
|
||||
sys_snode_t *node, *tmp;
|
||||
struct bt_att_req *req, *tmp;
|
||||
#if CONFIG_BLUETOOTH_ATT_PREPARE_COUNT > 0
|
||||
struct net_buf *buf;
|
||||
|
||||
|
@ -1753,9 +1753,7 @@ static void att_reset(struct bt_att *att)
|
|||
#endif
|
||||
|
||||
/* Notify pending requests */
|
||||
SYS_SLIST_FOR_EACH_NODE_SAFE(&att->reqs, node, tmp) {
|
||||
struct bt_att_req *req = ATT_REQ(node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&att->reqs, req, tmp, node) {
|
||||
if (req->func) {
|
||||
req->func(NULL, BT_ATT_ERR_UNLIKELY, NULL, 0, req);
|
||||
}
|
||||
|
|
|
@ -697,19 +697,14 @@ static uint8_t disconnected_cb(const struct bt_gatt_attr *attr, void *user_data)
|
|||
void bt_gatt_notification(struct bt_conn *conn, uint16_t handle,
|
||||
const void *data, uint16_t length)
|
||||
{
|
||||
sys_snode_t *node, *tmp, *prev = NULL;
|
||||
struct bt_gatt_subscribe_params *params, *tmp, *prev = NULL;
|
||||
|
||||
BT_DBG("handle 0x%04x length %u", handle, length);
|
||||
|
||||
SYS_SLIST_FOR_EACH_NODE_SAFE(&subscriptions, node, tmp) {
|
||||
struct bt_gatt_subscribe_params *params;
|
||||
|
||||
params = CONTAINER_OF(node, struct bt_gatt_subscribe_params,
|
||||
node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&subscriptions, params, tmp, node) {
|
||||
if (bt_conn_addr_le_cmp(conn, ¶ms->_peer) ||
|
||||
handle != params->value_handle) {
|
||||
prev = node;
|
||||
prev = params;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -717,7 +712,7 @@ void bt_gatt_notification(struct bt_conn *conn, uint16_t handle,
|
|||
BT_GATT_ITER_STOP) {
|
||||
bt_gatt_unsubscribe(conn, params);
|
||||
} else {
|
||||
prev = node;
|
||||
prev = params;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -744,17 +739,12 @@ static void gatt_subscription_remove(struct bt_conn *conn, sys_snode_t *prev,
|
|||
|
||||
static void remove_subscriptions(struct bt_conn *conn)
|
||||
{
|
||||
sys_snode_t *node, *tmp, *prev = NULL;
|
||||
struct bt_gatt_subscribe_params *params, *tmp, *prev = NULL;
|
||||
|
||||
/* Lookup existing subscriptions */
|
||||
SYS_SLIST_FOR_EACH_NODE_SAFE(&subscriptions, node, tmp) {
|
||||
struct bt_gatt_subscribe_params *params;
|
||||
|
||||
params = CONTAINER_OF(node, struct bt_gatt_subscribe_params,
|
||||
node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&subscriptions, params, tmp, node) {
|
||||
if (bt_conn_addr_le_cmp(conn, ¶ms->_peer)) {
|
||||
prev = node;
|
||||
prev = params;
|
||||
continue;
|
||||
}
|
||||
|
||||
|
@ -762,7 +752,7 @@ static void remove_subscriptions(struct bt_conn *conn)
|
|||
(params->flags & BT_GATT_SUBSCRIBE_FLAG_VOLATILE)) {
|
||||
/* Remove subscription */
|
||||
params->value = 0;
|
||||
gatt_subscription_remove(conn, prev, params);
|
||||
gatt_subscription_remove(conn, &prev->node, params);
|
||||
} else {
|
||||
update_subscription(conn, params);
|
||||
}
|
||||
|
@ -1702,7 +1692,7 @@ static int gatt_write_ccc(struct bt_conn *conn, uint16_t handle, uint16_t value,
|
|||
int bt_gatt_subscribe(struct bt_conn *conn,
|
||||
struct bt_gatt_subscribe_params *params)
|
||||
{
|
||||
sys_snode_t *node;
|
||||
struct bt_gatt_subscribe_params *tmp;
|
||||
bool has_subscription = false;
|
||||
|
||||
if (!conn || !params || !params->notify ||
|
||||
|
@ -1715,12 +1705,7 @@ int bt_gatt_subscribe(struct bt_conn *conn,
|
|||
}
|
||||
|
||||
/* Lookup existing subscriptions */
|
||||
SYS_SLIST_FOR_EACH_NODE(&subscriptions, node) {
|
||||
struct bt_gatt_subscribe_params *tmp;
|
||||
|
||||
tmp = CONTAINER_OF(node, struct bt_gatt_subscribe_params,
|
||||
node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER(&subscriptions, tmp, node) {
|
||||
/* Fail if entry already exists */
|
||||
if (tmp == params) {
|
||||
return -EALREADY;
|
||||
|
@ -1757,7 +1742,7 @@ int bt_gatt_subscribe(struct bt_conn *conn,
|
|||
int bt_gatt_unsubscribe(struct bt_conn *conn,
|
||||
struct bt_gatt_subscribe_params *params)
|
||||
{
|
||||
sys_snode_t *node, *next, *prev = NULL;
|
||||
struct bt_gatt_subscribe_params *tmp, *next, *prev = NULL;
|
||||
bool has_subscription = false, found = false;
|
||||
|
||||
if (!conn || !params) {
|
||||
|
@ -1769,19 +1754,15 @@ int bt_gatt_unsubscribe(struct bt_conn *conn,
|
|||
}
|
||||
|
||||
/* Lookup existing subscriptions */
|
||||
SYS_SLIST_FOR_EACH_NODE_SAFE(&subscriptions, node, next) {
|
||||
struct bt_gatt_subscribe_params *tmp;
|
||||
|
||||
tmp = CONTAINER_OF(node, struct bt_gatt_subscribe_params,
|
||||
node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&subscriptions, tmp, next, node) {
|
||||
/* Remove subscription */
|
||||
if (params == tmp) {
|
||||
found = true;
|
||||
sys_slist_remove(&subscriptions, prev, node);
|
||||
sys_slist_remove(&subscriptions, &prev->node,
|
||||
&tmp->node);
|
||||
continue;
|
||||
} else {
|
||||
prev = node;
|
||||
prev = tmp;
|
||||
}
|
||||
|
||||
/* Check if there still remains any other subscription */
|
||||
|
@ -1809,15 +1790,10 @@ void bt_gatt_cancel(struct bt_conn *conn, void *params)
|
|||
|
||||
static void add_subscriptions(struct bt_conn *conn)
|
||||
{
|
||||
sys_snode_t *node;
|
||||
struct bt_gatt_subscribe_params *params;
|
||||
|
||||
/* Lookup existing subscriptions */
|
||||
SYS_SLIST_FOR_EACH_NODE(&subscriptions, node) {
|
||||
struct bt_gatt_subscribe_params *params;
|
||||
|
||||
params = CONTAINER_OF(node, struct bt_gatt_subscribe_params,
|
||||
node);
|
||||
|
||||
SYS_SLIST_FOR_EACH_CONTAINER(&subscriptions, params, node) {
|
||||
if (bt_conn_addr_le_cmp(conn, ¶ms->_peer)) {
|
||||
continue;
|
||||
}
|
||||
|
|
|
@ -417,11 +417,9 @@ static int sdp_client_ssa_search(struct bt_sdp_client *session)
|
|||
static void sdp_client_params_iterator(struct bt_sdp_client *session)
|
||||
{
|
||||
struct bt_l2cap_chan *chan = &session->chan.chan;
|
||||
const struct bt_sdp_discover_params *param;
|
||||
sys_snode_t *node, *node_s;
|
||||
struct bt_sdp_discover_params *param, *tmp;
|
||||
|
||||
SYS_SLIST_FOR_EACH_NODE_SAFE(&session->reqs, node, node_s) {
|
||||
param = GET_PARAM(node);
|
||||
SYS_SLIST_FOR_EACH_CONTAINER_SAFE(&session->reqs, param, tmp, _node) {
|
||||
if (param != session->param) {
|
||||
continue;
|
||||
}
|
||||
|
@ -429,7 +427,7 @@ static void sdp_client_params_iterator(struct bt_sdp_client *session)
|
|||
BT_DBG("");
|
||||
|
||||
/* Remove already checked UUID node */
|
||||
sys_slist_remove(&session->reqs, NULL, node);
|
||||
sys_slist_remove(&session->reqs, NULL, ¶m->_node);
|
||||
/* Invalidate cached param in context */
|
||||
session->param = NULL;
|
||||
/* Reset continuation state in current context */
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue