Lines Matching refs:mic_ctlr

51 static void micp_mic_ctlr_mute_changed(struct bt_micp_mic_ctlr *mic_ctlr, int err, uint8_t mute_val)  in micp_mic_ctlr_mute_changed()  argument
57 listener->mute(mic_ctlr, err, mute_val); in micp_mic_ctlr_mute_changed()
62 static void micp_mic_ctlr_mute_written(struct bt_micp_mic_ctlr *mic_ctlr, int err, uint8_t mute_val) in micp_mic_ctlr_mute_written() argument
69 listener->unmute_written(mic_ctlr, err); in micp_mic_ctlr_mute_written()
73 listener->mute_written(mic_ctlr, err); in micp_mic_ctlr_mute_written()
79 static void micp_mic_ctlr_discover_complete(struct bt_micp_mic_ctlr *mic_ctlr, int err) in micp_mic_ctlr_discover_complete() argument
83 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in micp_mic_ctlr_discover_complete()
91 aics_cnt = mic_ctlr->aics_inst_cnt; in micp_mic_ctlr_discover_complete()
95 listener->discover(mic_ctlr, err, aics_cnt); in micp_mic_ctlr_discover_complete()
104 struct bt_micp_mic_ctlr *mic_ctlr; in mute_notify_handler() local
110 mic_ctlr = mic_ctlr_get_by_conn(conn); in mute_notify_handler()
116 micp_mic_ctlr_mute_changed(mic_ctlr, 0, *mute_val); in mute_notify_handler()
129 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in micp_mic_ctlr_read_mute_cb() local
133 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in micp_mic_ctlr_read_mute_cb()
147 micp_mic_ctlr_mute_changed(mic_ctlr, cb_err, mute_val); in micp_mic_ctlr_read_mute_cb()
155 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in micp_mic_ctlr_write_mics_mute_cb() local
156 uint8_t mute_val = mic_ctlr->mute_val_buf[0]; in micp_mic_ctlr_write_mics_mute_cb()
160 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in micp_mic_ctlr_write_mics_mute_cb()
162 micp_mic_ctlr_mute_written(mic_ctlr, err, mute_val); in micp_mic_ctlr_write_mics_mute_cb()
240 struct bt_micp_mic_ctlr *mic_ctlr = lookup_micp_by_aics(inst); in micp_mic_ctlr_aics_discover_cb() local
243 if (mic_ctlr == NULL) { in micp_mic_ctlr_aics_discover_cb()
245 micp_mic_ctlr_discover_complete(mic_ctlr, BT_GATT_ERR(BT_ATT_ERR_UNLIKELY)); in micp_mic_ctlr_aics_discover_cb()
252 err = bt_gatt_discover(mic_ctlr->conn, &mic_ctlr->discover_params); in micp_mic_ctlr_aics_discover_cb()
257 micp_mic_ctlr_discover_complete(mic_ctlr, err); in micp_mic_ctlr_aics_discover_cb()
326 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in micp_discover_include_func() local
329 LOG_DBG("Discover include complete for MICS: %u AICS", mic_ctlr->aics_inst_cnt); in micp_discover_include_func()
332 micp_mic_ctlr_discover_complete(mic_ctlr, 0); in micp_discover_include_func()
345 mic_ctlr->aics_inst_cnt < CONFIG_BT_MICP_MIC_CTLR_MAX_AICS_INST) { in micp_discover_include_func()
356 mic_ctlr->discover_params.start_handle = attr->handle + 1; in micp_discover_include_func()
358 inst_idx = mic_ctlr->aics_inst_cnt++; in micp_discover_include_func()
359 err = bt_aics_discover(conn, mic_ctlr->aics[inst_idx], in micp_discover_include_func()
363 micp_mic_ctlr_discover_complete(mic_ctlr, err); in micp_discover_include_func()
383 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in micp_discover_func() local
393 mic_ctlr->discover_params.start_handle = mic_ctlr->start_handle; in micp_discover_func()
394 mic_ctlr->discover_params.end_handle = mic_ctlr->end_handle; in micp_discover_func()
395 mic_ctlr->discover_params.type = BT_GATT_DISCOVER_INCLUDE; in micp_discover_func()
396 mic_ctlr->discover_params.func = micp_discover_include_func; in micp_discover_func()
398 err = bt_gatt_discover(conn, &mic_ctlr->discover_params); in micp_discover_func()
401 micp_mic_ctlr_discover_complete(mic_ctlr, err); in micp_discover_func()
404 micp_mic_ctlr_discover_complete(mic_ctlr, err); in micp_discover_func()
418 mic_ctlr->mute_handle = chrc->value_handle; in micp_discover_func()
419 sub_params = &mic_ctlr->mute_sub_params; in micp_discover_func()
420 sub_params->disc_params = &mic_ctlr->mute_sub_disc_params; in micp_discover_func()
427 sub_params->end_handle = mic_ctlr->end_handle; in micp_discover_func()
440 micp_mic_ctlr_discover_complete(mic_ctlr, err); in micp_discover_func()
454 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in primary_discover_func() local
458 micp_mic_ctlr_discover_complete(mic_ctlr, -ENODATA); in primary_discover_func()
471 mic_ctlr->start_handle = attr->handle + 1; in primary_discover_func()
472 mic_ctlr->end_handle = prim_service->end_handle; in primary_discover_func()
475 mic_ctlr->discover_params.uuid = NULL; in primary_discover_func()
476 mic_ctlr->discover_params.start_handle = mic_ctlr->start_handle; in primary_discover_func()
477 mic_ctlr->discover_params.end_handle = mic_ctlr->end_handle; in primary_discover_func()
478 mic_ctlr->discover_params.type = BT_GATT_DISCOVER_CHARACTERISTIC; in primary_discover_func()
479 mic_ctlr->discover_params.func = micp_discover_func; in primary_discover_func()
481 err = bt_gatt_discover(conn, &mic_ctlr->discover_params); in primary_discover_func()
484 micp_mic_ctlr_discover_complete(mic_ctlr, err); in primary_discover_func()
493 static void micp_mic_ctlr_reset(struct bt_micp_mic_ctlr *mic_ctlr) in micp_mic_ctlr_reset() argument
495 mic_ctlr->start_handle = 0; in micp_mic_ctlr_reset()
496 mic_ctlr->end_handle = 0; in micp_mic_ctlr_reset()
497 mic_ctlr->mute_handle = 0; in micp_mic_ctlr_reset()
499 mic_ctlr->aics_inst_cnt = 0; in micp_mic_ctlr_reset()
502 if (mic_ctlr->conn != NULL) { in micp_mic_ctlr_reset()
503 struct bt_conn *conn = mic_ctlr->conn; in micp_mic_ctlr_reset()
506 mic_ctlr->conn = NULL; in micp_mic_ctlr_reset()
512 struct bt_micp_mic_ctlr *mic_ctlr = mic_ctlr_get_by_conn(conn); in disconnected() local
514 if (mic_ctlr->conn == conn) { in disconnected()
515 micp_mic_ctlr_reset(mic_ctlr); in disconnected()
525 struct bt_micp_mic_ctlr *mic_ctlr; in bt_micp_mic_ctlr_discover() local
543 mic_ctlr = mic_ctlr_get_by_conn(conn); in bt_micp_mic_ctlr_discover()
544 if (atomic_test_and_set_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY)) { in bt_micp_mic_ctlr_discover()
550 (void)memset(&mic_ctlr->discover_params, 0, in bt_micp_mic_ctlr_discover()
551 sizeof(mic_ctlr->discover_params)); in bt_micp_mic_ctlr_discover()
552 micp_mic_ctlr_reset(mic_ctlr); in bt_micp_mic_ctlr_discover()
559 for (size_t j = 0U; j < ARRAY_SIZE(mic_ctlr->aics); j++) { in bt_micp_mic_ctlr_discover()
588 mic_ctlr->conn = bt_conn_ref(conn); in bt_micp_mic_ctlr_discover()
589 mic_ctlr->discover_params.func = primary_discover_func; in bt_micp_mic_ctlr_discover()
590 mic_ctlr->discover_params.uuid = mics_uuid; in bt_micp_mic_ctlr_discover()
591 mic_ctlr->discover_params.type = BT_GATT_DISCOVER_PRIMARY; in bt_micp_mic_ctlr_discover()
592 mic_ctlr->discover_params.start_handle = BT_ATT_FIRST_ATTRIBUTE_HANDLE; in bt_micp_mic_ctlr_discover()
593 mic_ctlr->discover_params.end_handle = BT_ATT_LAST_ATTRIBUTE_HANDLE; in bt_micp_mic_ctlr_discover()
595 err = bt_gatt_discover(conn, &mic_ctlr->discover_params); in bt_micp_mic_ctlr_discover()
597 *mic_ctlr_out = mic_ctlr; in bt_micp_mic_ctlr_discover()
599 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in bt_micp_mic_ctlr_discover()
626 int bt_micp_mic_ctlr_included_get(struct bt_micp_mic_ctlr *mic_ctlr, in bt_micp_mic_ctlr_included_get() argument
629 CHECKIF(mic_ctlr == NULL) { in bt_micp_mic_ctlr_included_get()
638 included->aics_cnt = mic_ctlr->aics_inst_cnt; in bt_micp_mic_ctlr_included_get()
639 included->aics = mic_ctlr->aics; in bt_micp_mic_ctlr_included_get()
647 struct bt_micp_mic_ctlr *mic_ctlr; in bt_micp_mic_ctlr_get_by_conn() local
654 mic_ctlr = mic_ctlr_get_by_conn(conn); in bt_micp_mic_ctlr_get_by_conn()
655 if (mic_ctlr->conn == NULL) { in bt_micp_mic_ctlr_get_by_conn()
661 return mic_ctlr; in bt_micp_mic_ctlr_get_by_conn()
664 int bt_micp_mic_ctlr_conn_get(const struct bt_micp_mic_ctlr *mic_ctlr, struct bt_conn **conn) in bt_micp_mic_ctlr_conn_get() argument
666 CHECKIF(mic_ctlr == NULL) { in bt_micp_mic_ctlr_conn_get()
671 if (mic_ctlr->conn == NULL) { in bt_micp_mic_ctlr_conn_get()
677 *conn = mic_ctlr->conn; in bt_micp_mic_ctlr_conn_get()
681 int bt_micp_mic_ctlr_mute_get(struct bt_micp_mic_ctlr *mic_ctlr) in bt_micp_mic_ctlr_mute_get() argument
685 CHECKIF(mic_ctlr == NULL) { in bt_micp_mic_ctlr_mute_get()
690 if (mic_ctlr->mute_handle == 0) { in bt_micp_mic_ctlr_mute_get()
693 } else if (atomic_test_and_set_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY)) { in bt_micp_mic_ctlr_mute_get()
699 mic_ctlr->read_params.func = micp_mic_ctlr_read_mute_cb; in bt_micp_mic_ctlr_mute_get()
700 mic_ctlr->read_params.handle_count = 1; in bt_micp_mic_ctlr_mute_get()
701 mic_ctlr->read_params.single.handle = mic_ctlr->mute_handle; in bt_micp_mic_ctlr_mute_get()
702 mic_ctlr->read_params.single.offset = 0U; in bt_micp_mic_ctlr_mute_get()
704 err = bt_gatt_read(mic_ctlr->conn, &mic_ctlr->read_params); in bt_micp_mic_ctlr_mute_get()
706 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in bt_micp_mic_ctlr_mute_get()
712 static int bt_micp_mic_ctlr_write_mute(struct bt_micp_mic_ctlr *mic_ctlr, bool mute) in bt_micp_mic_ctlr_write_mute() argument
716 CHECKIF(mic_ctlr == NULL) { in bt_micp_mic_ctlr_write_mute()
721 if (mic_ctlr->mute_handle == 0) { in bt_micp_mic_ctlr_write_mute()
724 } else if (atomic_test_and_set_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY)) { in bt_micp_mic_ctlr_write_mute()
730 mic_ctlr->mute_val_buf[0] = mute; in bt_micp_mic_ctlr_write_mute()
731 mic_ctlr->write_params.offset = 0; in bt_micp_mic_ctlr_write_mute()
732 mic_ctlr->write_params.data = mic_ctlr->mute_val_buf; in bt_micp_mic_ctlr_write_mute()
733 mic_ctlr->write_params.length = sizeof(mute); in bt_micp_mic_ctlr_write_mute()
734 mic_ctlr->write_params.handle = mic_ctlr->mute_handle; in bt_micp_mic_ctlr_write_mute()
735 mic_ctlr->write_params.func = micp_mic_ctlr_write_mics_mute_cb; in bt_micp_mic_ctlr_write_mute()
737 err = bt_gatt_write(mic_ctlr->conn, &mic_ctlr->write_params); in bt_micp_mic_ctlr_write_mute()
739 atomic_clear_bit(mic_ctlr->flags, BT_MICP_MIC_CTLR_FLAG_BUSY); in bt_micp_mic_ctlr_write_mute()
745 int bt_micp_mic_ctlr_mute(struct bt_micp_mic_ctlr *mic_ctlr) in bt_micp_mic_ctlr_mute() argument
747 return bt_micp_mic_ctlr_write_mute(mic_ctlr, true); in bt_micp_mic_ctlr_mute()
750 int bt_micp_mic_ctlr_unmute(struct bt_micp_mic_ctlr *mic_ctlr) in bt_micp_mic_ctlr_unmute() argument
752 return bt_micp_mic_ctlr_write_mute(mic_ctlr, false); in bt_micp_mic_ctlr_unmute()