Lines Matching refs:cli
46 if (aics_insts[i].cli.conn == conn && in lookup_aics_by_handle()
47 atomic_test_bit(aics_insts[i].cli.flags, BT_AICS_CLIENT_FLAG_ACTIVE) && in lookup_aics_by_handle()
48 aics_insts[i].cli.start_handle <= handle && in lookup_aics_by_handle()
49 aics_insts[i].cli.end_handle >= handle) { in lookup_aics_by_handle()
82 if (handle == inst->cli.state_handle) { in aics_client_notify_handler()
88 inst->cli.change_counter = state->change_counter; in aics_client_notify_handler()
90 if (inst->cli.cb && inst->cli.cb->state) { in aics_client_notify_handler()
91 inst->cli.cb->state(inst, 0, state->gain, in aics_client_notify_handler()
96 } else if (handle == inst->cli.status_handle) { in aics_client_notify_handler()
100 if (inst->cli.cb && inst->cli.cb->status) { in aics_client_notify_handler()
101 inst->cli.cb->status(inst, 0, *status); in aics_client_notify_handler()
104 } else if (handle == inst->cli.desc_handle) { in aics_client_notify_handler()
117 if (inst->cli.cb && inst->cli.cb->description) { in aics_client_notify_handler()
118 inst->cli.cb->description(inst, 0, desc); in aics_client_notify_handler()
143 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_read_state_cb()
147 if (inst->cli.cb && inst->cli.cb->state) { in aics_client_read_state_cb()
148 inst->cli.cb->state(inst, cb_err, 0, 0, 0); in aics_client_read_state_cb()
158 inst->cli.change_counter = state->change_counter; in aics_client_read_state_cb()
168 if (inst->cli.cb && inst->cli.cb->state) { in aics_client_read_state_cb()
169 inst->cli.cb->state(inst, cb_err, state->gain, in aics_client_read_state_cb()
193 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_read_gain_settings_cb()
197 if (inst->cli.cb && inst->cli.cb->gain_setting) { in aics_client_read_gain_settings_cb()
198 inst->cli.cb->gain_setting(inst, cb_err, 0, 0, 0); in aics_client_read_gain_settings_cb()
216 if (inst->cli.cb && inst->cli.cb->gain_setting) { in aics_client_read_gain_settings_cb()
217 inst->cli.cb->gain_setting(inst, cb_err, gain_settings->units, in aics_client_read_gain_settings_cb()
241 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_read_type_cb()
245 if (inst->cli.cb && inst->cli.cb->type) { in aics_client_read_type_cb()
246 inst->cli.cb->type(inst, cb_err, 0); in aics_client_read_type_cb()
263 if (inst->cli.cb && inst->cli.cb->type) { in aics_client_read_type_cb()
264 inst->cli.cb->type(inst, cb_err, *type); in aics_client_read_type_cb()
286 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_read_status_cb()
290 if (inst->cli.cb && inst->cli.cb->status) { in aics_client_read_status_cb()
291 inst->cli.cb->status(inst, cb_err, 0); in aics_client_read_status_cb()
308 if (inst->cli.cb && inst->cli.cb->status) { in aics_client_read_status_cb()
309 inst->cli.cb->status(inst, cb_err, *status); in aics_client_read_status_cb()
317 if (!inst->cli.cb) { in aics_cp_notify_app()
321 switch (inst->cli.cp_val.cp.opcode) { in aics_cp_notify_app()
323 if (inst->cli.cb->set_gain) { in aics_cp_notify_app()
324 inst->cli.cb->set_gain(inst, err); in aics_cp_notify_app()
328 if (inst->cli.cb->unmute) { in aics_cp_notify_app()
329 inst->cli.cb->unmute(inst, err); in aics_cp_notify_app()
333 if (inst->cli.cb->mute) { in aics_cp_notify_app()
334 inst->cli.cb->mute(inst, err); in aics_cp_notify_app()
338 if (inst->cli.cb->set_manual_mode) { in aics_cp_notify_app()
339 inst->cli.cb->set_manual_mode(inst, err); in aics_cp_notify_app()
343 if (inst->cli.cb->set_auto_mode) { in aics_cp_notify_app()
344 inst->cli.cb->set_auto_mode(inst, err); in aics_cp_notify_app()
348 LOG_DBG("Unknown opcode 0x%02x", inst->cli.cp_val.cp.opcode); in aics_cp_notify_app()
376 inst->cli.change_counter = state->change_counter; in internal_read_state_cb()
379 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in internal_read_state_cb()
381 if (inst->cli.cp_val.cp.opcode == BT_AICS_OPCODE_SET_GAIN) { in internal_read_state_cb()
383 inst->cli.cp_val.gain_setting); in internal_read_state_cb()
385 write_err = aics_client_common_control(inst->cli.cp_val.cp.opcode, in internal_read_state_cb()
402 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in internal_read_state_cb()
432 atomic_test_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_CP_RETRIED)) { in aics_client_write_aics_cp_cb()
434 } else if (cb_err == BT_AICS_ERR_INVALID_COUNTER && inst->cli.state_handle) { in aics_client_write_aics_cp_cb()
435 inst->cli.read_params.func = internal_read_state_cb; in aics_client_write_aics_cp_cb()
436 inst->cli.read_params.handle_count = 1; in aics_client_write_aics_cp_cb()
437 inst->cli.read_params.single.handle = inst->cli.state_handle; in aics_client_write_aics_cp_cb()
438 inst->cli.read_params.single.offset = 0U; in aics_client_write_aics_cp_cb()
440 atomic_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_CP_RETRIED); in aics_client_write_aics_cp_cb()
442 cb_err = bt_gatt_read(conn, &inst->cli.read_params); in aics_client_write_aics_cp_cb()
453 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_CP_RETRIED); in aics_client_write_aics_cp_cb()
454 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_write_aics_cp_cb()
473 CHECKIF(inst->cli.conn == NULL) { in aics_client_common_control()
478 if (!inst->cli.control_handle) { in aics_client_common_control()
481 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in aics_client_common_control()
485 inst->cli.cp_val.cp.opcode = opcode; in aics_client_common_control()
486 inst->cli.cp_val.cp.counter = inst->cli.change_counter; in aics_client_common_control()
488 inst->cli.write_params.offset = 0; in aics_client_common_control()
489 inst->cli.write_params.data = &inst->cli.cp_val.cp; in aics_client_common_control()
490 inst->cli.write_params.length = sizeof(inst->cli.cp_val.cp); in aics_client_common_control()
491 inst->cli.write_params.handle = inst->cli.control_handle; in aics_client_common_control()
492 inst->cli.write_params.func = aics_client_write_aics_cp_cb; in aics_client_common_control()
494 err = bt_gatt_write(inst->cli.conn, &inst->cli.write_params); in aics_client_common_control()
496 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_common_control()
517 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_client_read_desc_cb()
521 if (inst->cli.cb && inst->cli.cb->description) { in aics_client_read_desc_cb()
522 inst->cli.cb->description(inst, cb_err, NULL); in aics_client_read_desc_cb()
545 if (inst->cli.cb && inst->cli.cb->description) { in aics_client_read_desc_cb()
546 inst->cli.cb->description(inst, cb_err, desc); in aics_client_read_desc_cb()
554 return inst->cli.state_handle && in valid_inst_discovered()
555 inst->cli.gain_handle && in valid_inst_discovered()
556 inst->cli.type_handle && in valid_inst_discovered()
557 inst->cli.status_handle && in valid_inst_discovered()
558 inst->cli.control_handle && in valid_inst_discovered()
559 inst->cli.desc_handle; in valid_inst_discovered()
627 struct bt_aics *inst = CONTAINER_OF(client_inst, struct bt_aics, cli); in aics_discover_func()
636 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in aics_discover_func()
638 if (inst->cli.cb && inst->cli.cb->discover) { in aics_discover_func()
641 inst->cli.cb->discover(inst, err); in aics_discover_func()
652 if (inst->cli.start_handle == 0U) { /* if start handle is unset */ in aics_discover_func()
653 inst->cli.start_handle = chrc->value_handle; in aics_discover_func()
655 inst->cli.end_handle = chrc->value_handle; in aics_discover_func()
671 inst->cli.change_counter = 0; in aics_client_reset()
672 inst->cli.gain_mode = 0; in aics_client_reset()
673 inst->cli.start_handle = 0; in aics_client_reset()
674 inst->cli.end_handle = 0; in aics_client_reset()
675 inst->cli.state_handle = 0; in aics_client_reset()
676 inst->cli.gain_handle = 0; in aics_client_reset()
677 inst->cli.type_handle = 0; in aics_client_reset()
678 inst->cli.status_handle = 0; in aics_client_reset()
679 inst->cli.control_handle = 0; in aics_client_reset()
680 inst->cli.desc_handle = 0; in aics_client_reset()
682 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_DESC_WRITABLE); in aics_client_reset()
683 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_CP_RETRIED); in aics_client_reset()
685 if (inst->cli.conn != NULL) { in aics_client_reset()
686 struct bt_conn *conn = inst->cli.conn; in aics_client_reset()
689 inst->cli.conn = NULL; in aics_client_reset()
696 if (aics_insts[i].cli.conn == conn) { in disconnected()
724 CHECKIF(!atomic_test_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_ACTIVE)) { in bt_aics_discover()
729 if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_discover()
736 (void)memset(&inst->cli.discover_params, 0, sizeof(inst->cli.discover_params)); in bt_aics_discover()
738 inst->cli.discover_params.start_handle = param->start_handle; in bt_aics_discover()
739 inst->cli.discover_params.end_handle = param->end_handle; in bt_aics_discover()
740 inst->cli.discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC; in bt_aics_discover()
741 inst->cli.discover_params.func = aics_discover_func; in bt_aics_discover()
743 err = bt_gatt_discover(conn, &inst->cli.discover_params); in bt_aics_discover()
745 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_discover()
748 inst->cli.conn = bt_conn_ref(conn); in bt_aics_discover()
757 if (!atomic_test_and_set_bit(aics_insts[i].cli.flags, BT_AICS_CLIENT_FLAG_ACTIVE)) { in bt_aics_client_free_instance_get()
778 if (aics->cli.conn == NULL) { in bt_aics_client_conn_get()
784 *conn = aics->cli.conn; in bt_aics_client_conn_get()
802 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_state_get()
807 if (!inst->cli.state_handle) { in bt_aics_client_state_get()
810 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_state_get()
814 inst->cli.read_params.func = aics_client_read_state_cb; in bt_aics_client_state_get()
815 inst->cli.read_params.handle_count = 1; in bt_aics_client_state_get()
816 inst->cli.read_params.single.handle = inst->cli.state_handle; in bt_aics_client_state_get()
818 err = bt_gatt_read(inst->cli.conn, &inst->cli.read_params); in bt_aics_client_state_get()
820 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_state_get()
840 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_gain_setting_get()
845 if (!inst->cli.gain_handle) { in bt_aics_client_gain_setting_get()
848 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_gain_setting_get()
852 inst->cli.read_params.func = aics_client_read_gain_settings_cb; in bt_aics_client_gain_setting_get()
853 inst->cli.read_params.handle_count = 1; in bt_aics_client_gain_setting_get()
854 inst->cli.read_params.single.handle = inst->cli.gain_handle; in bt_aics_client_gain_setting_get()
856 err = bt_gatt_read(inst->cli.conn, &inst->cli.read_params); in bt_aics_client_gain_setting_get()
858 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_gain_setting_get()
878 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_type_get()
883 if (!inst->cli.type_handle) { in bt_aics_client_type_get()
886 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_type_get()
890 inst->cli.read_params.func = aics_client_read_type_cb; in bt_aics_client_type_get()
891 inst->cli.read_params.handle_count = 1; in bt_aics_client_type_get()
892 inst->cli.read_params.single.handle = inst->cli.type_handle; in bt_aics_client_type_get()
894 err = bt_gatt_read(inst->cli.conn, &inst->cli.read_params); in bt_aics_client_type_get()
896 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_type_get()
916 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_status_get()
921 if (!inst->cli.status_handle) { in bt_aics_client_status_get()
924 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_status_get()
928 inst->cli.read_params.func = aics_client_read_status_cb; in bt_aics_client_status_get()
929 inst->cli.read_params.handle_count = 1; in bt_aics_client_status_get()
930 inst->cli.read_params.single.handle = inst->cli.status_handle; in bt_aics_client_status_get()
932 err = bt_gatt_read(inst->cli.conn, &inst->cli.read_params); in bt_aics_client_status_get()
934 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_status_get()
974 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_gain_set()
979 if (!inst->cli.control_handle) { in bt_aics_client_gain_set()
982 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_gain_set()
986 inst->cli.cp_val.cp.opcode = BT_AICS_OPCODE_SET_GAIN; in bt_aics_client_gain_set()
987 inst->cli.cp_val.cp.counter = inst->cli.change_counter; in bt_aics_client_gain_set()
988 inst->cli.cp_val.gain_setting = gain; in bt_aics_client_gain_set()
990 inst->cli.write_params.data = &inst->cli.cp_val; in bt_aics_client_gain_set()
991 inst->cli.write_params.length = sizeof(inst->cli.cp_val); in bt_aics_client_gain_set()
992 inst->cli.write_params.handle = inst->cli.control_handle; in bt_aics_client_gain_set()
993 inst->cli.write_params.func = aics_client_write_aics_cp_cb; in bt_aics_client_gain_set()
995 err = bt_gatt_write(inst->cli.conn, &inst->cli.write_params); in bt_aics_client_gain_set()
997 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_gain_set()
1017 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_description_get()
1022 if (!inst->cli.desc_handle) { in bt_aics_client_description_get()
1025 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_description_get()
1029 inst->cli.read_params.func = aics_client_read_desc_cb; in bt_aics_client_description_get()
1030 inst->cli.read_params.handle_count = 1; in bt_aics_client_description_get()
1031 inst->cli.read_params.single.handle = inst->cli.desc_handle; in bt_aics_client_description_get()
1033 err = bt_gatt_read(inst->cli.conn, &inst->cli.read_params); in bt_aics_client_description_get()
1035 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_description_get()
1056 CHECKIF(inst->cli.conn == NULL) { in bt_aics_client_description_set()
1061 if (!inst->cli.desc_handle) { in bt_aics_client_description_set()
1064 } else if (!atomic_test_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_DESC_WRITABLE)) { in bt_aics_client_description_set()
1067 } else if (atomic_test_and_set_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY)) { in bt_aics_client_description_set()
1071 err = bt_gatt_write_without_response(inst->cli.conn, inst->cli.desc_handle, description, in bt_aics_client_description_set()
1074 atomic_clear_bit(inst->cli.flags, BT_AICS_CLIENT_FLAG_BUSY); in bt_aics_client_description_set()
1087 inst->cli.cb = cb; in bt_aics_client_cb_register()