Lines Matching refs:drv_data

305 	struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data;  in drv_power_down()  local
307 (void)RF_yield(drv_data->rf_handle); in drv_power_down()
316 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in cmd_prop_tx_adv_callback() local
321 op->commandNo, op->status, drv_data->cmd_prop_tx_adv.status, e); in cmd_prop_tx_adv_callback()
324 static void drv_rx_done(struct ieee802154_cc13xx_cc26xx_subg_data *drv_data) in drv_rx_done() argument
337 if (drv_data->rx_entry[i].status == DATA_ENTRY_FINISHED) { in drv_rx_done()
338 len = drv_data->rx_data[i][0]; in drv_rx_done()
339 sdu = drv_data->rx_data[i] + 1; in drv_rx_done()
340 status = drv_data->rx_data[i][len--]; in drv_rx_done()
341 rssi = drv_data->rx_data[i][len--]; in drv_rx_done()
356 drv_data->iface, len, AF_UNSPEC, 0, K_NO_WAIT); in drv_rx_done()
368 drv_data->rx_entry[i].status = DATA_ENTRY_PENDING; in drv_rx_done()
377 if (ieee802154_handle_ack(drv_data->iface, pkt) == NET_OK) { in drv_rx_done()
382 if (net_recv_data(drv_data->iface, pkt)) { in drv_rx_done()
387 } else if (drv_data->rx_entry[i].status == in drv_rx_done()
390 drv_data->rx_entry[i].status = DATA_ENTRY_PENDING; in drv_rx_done()
399 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in cmd_prop_rx_adv_callback() local
410 drv_rx_done(drv_data); in cmd_prop_rx_adv_callback()
419 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in cmd_prop_rx_adv_callback()
424 k_sem_give(&drv_data->lock); in cmd_prop_rx_adv_callback()
452 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_cca() local
457 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in ieee802154_cc13xx_cc26xx_subg_cca()
461 if (!drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_cca()
466 drv_data->cmd_prop_cs.status = IDLE; in ieee802154_cc13xx_cc26xx_subg_cca()
468 was_rx_on = drv_data->cmd_prop_rx_adv.status == ACTIVE; in ieee802154_cc13xx_cc26xx_subg_cca()
477 events = RF_runCmd(drv_data->rf_handle, (RF_Op *)&drv_data->cmd_prop_cs, RF_PriorityNormal, in ieee802154_cc13xx_cc26xx_subg_cca()
485 switch (drv_data->cmd_prop_cs.status) { in ieee802154_cc13xx_cc26xx_subg_cca()
512 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_cca()
519 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in drv_start_rx() local
522 if (drv_data->cmd_prop_rx_adv.status == ACTIVE) { in drv_start_rx()
530 __ASSERT_NO_MSG(drv_data->rx_entry[i].pNextEntry != NULL); in drv_start_rx()
531 __ASSERT_NO_MSG(drv_data->rx_entry[i].status == DATA_ENTRY_PENDING); in drv_start_rx()
536 drv_data->cmd_prop_rx_adv.status = IDLE; in drv_start_rx()
537 cmd_handle = RF_postCmd(drv_data->rf_handle, in drv_start_rx()
538 (RF_Op *)&drv_data->cmd_prop_rx_adv, RF_PriorityNormal, in drv_start_rx()
545 drv_data->rx_cmd_handle = cmd_handle; in drv_start_rx()
553 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in drv_stop_rx() local
556 if (drv_data->cmd_prop_rx_adv.status != ACTIVE) { in drv_stop_rx()
561 status = RF_cancelCmd(drv_data->rf_handle, drv_data->rx_cmd_handle, RF_ABORT_GRACEFULLY); in drv_stop_rx()
574 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_set_channel() local
585 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in ieee802154_cc13xx_cc26xx_subg_set_channel()
589 was_rx_on = drv_data->cmd_prop_rx_adv.status == ACTIVE; in ieee802154_cc13xx_cc26xx_subg_set_channel()
599 drv_data->cmd_fs.status = IDLE; in ieee802154_cc13xx_cc26xx_subg_set_channel()
600 drv_data->cmd_fs.frequency = freq; in ieee802154_cc13xx_cc26xx_subg_set_channel()
601 drv_data->cmd_fs.fractFreq = fract; in ieee802154_cc13xx_cc26xx_subg_set_channel()
602 events = RF_runCmd(drv_data->rf_handle, (RF_Op *)&drv_data->cmd_fs, in ieee802154_cc13xx_cc26xx_subg_set_channel()
604 if (events != RF_EventLastCmdDone || drv_data->cmd_fs.status != DONE_OK) { in ieee802154_cc13xx_cc26xx_subg_set_channel()
613 } else if (!drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_set_channel()
617 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_set_channel()
637 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_set_txpower() local
650 status = RF_setTxPower(drv_data->rf_handle, power_table_value); in ieee802154_cc13xx_cc26xx_subg_set_txpower()
656 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in ieee802154_cc13xx_cc26xx_subg_set_txpower()
660 if (!drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_set_txpower()
664 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_set_txpower()
675 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_tx() local
688 if (k_sem_take(&drv_data->lock, K_FOREVER)) { in ieee802154_cc13xx_cc26xx_subg_tx()
692 if (!drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_tx()
697 if (drv_data->cmd_prop_rx_adv.status == ACTIVE) { in ieee802154_cc13xx_cc26xx_subg_tx()
706 drv_data->tx_data[0] = buf->len + IEEE802154_FCS_LENGTH; in ieee802154_cc13xx_cc26xx_subg_tx()
712 memcpy(&drv_data->tx_data[IEEE802154_PHY_SUN_FSK_PHR_LEN], buf->data, buf->len); in ieee802154_cc13xx_cc26xx_subg_tx()
713 drv_data->cmd_prop_tx_adv.pktLen = buf->len + IEEE802154_PHY_SUN_FSK_PHR_LEN; in ieee802154_cc13xx_cc26xx_subg_tx()
715 drv_data->cmd_prop_tx_adv.status = IDLE; in ieee802154_cc13xx_cc26xx_subg_tx()
716 events = RF_runCmd(drv_data->rf_handle, (RF_Op *)&drv_data->cmd_prop_tx_adv, in ieee802154_cc13xx_cc26xx_subg_tx()
724 if (drv_data->cmd_prop_tx_adv.status != PROP_DONE_OK) { in ieee802154_cc13xx_cc26xx_subg_tx()
725 LOG_DBG("Transmit failed (0x%x)", drv_data->cmd_prop_tx_adv.status); in ieee802154_cc13xx_cc26xx_subg_tx()
732 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_tx()
756 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_start() local
759 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in ieee802154_cc13xx_cc26xx_subg_start()
763 if (drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_start()
773 drv_data->is_up = true; in ieee802154_cc13xx_cc26xx_subg_start()
776 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_start()
783 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in drv_abort_commands() local
786 status = RF_flushCmd(drv_data->rf_handle, RF_CMDHANDLE_FLUSH_ALL, 0); in drv_abort_commands()
804 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_stop_if() local
807 if (k_sem_take(&drv_data->lock, LOCK_TIMEOUT)) { in ieee802154_cc13xx_cc26xx_subg_stop_if()
811 if (!drv_data->is_up) { in ieee802154_cc13xx_cc26xx_subg_stop_if()
826 drv_data->is_up = false; in ieee802154_cc13xx_cc26xx_subg_stop_if()
829 k_sem_give(&drv_data->lock); in ieee802154_cc13xx_cc26xx_subg_stop_if()
841 static void drv_setup_rx_buffers(struct ieee802154_cc13xx_cc26xx_subg_data *drv_data) in drv_setup_rx_buffers() argument
849 drv_data->rx_entry[i].pNextEntry = in drv_setup_rx_buffers()
850 (uint8_t *) &drv_data->rx_entry[i + 1]; in drv_setup_rx_buffers()
852 drv_data->rx_entry[i].pNextEntry = in drv_setup_rx_buffers()
853 (uint8_t *) &drv_data->rx_entry[0]; in drv_setup_rx_buffers()
856 drv_data->rx_entry[i].config.type = DATA_ENTRY_TYPE_PTR; in drv_setup_rx_buffers()
857 drv_data->rx_entry[i].config.lenSz = 1; in drv_setup_rx_buffers()
858 drv_data->rx_entry[i].length = sizeof(drv_data->rx_data[0]); in drv_setup_rx_buffers()
859 drv_data->rx_entry[i].pData = drv_data->rx_data[i]; in drv_setup_rx_buffers()
862 drv_data->rx_queue.pCurrEntry = (uint8_t *)&drv_data->rx_entry[0]; in drv_setup_rx_buffers()
863 drv_data->rx_queue.pLastEntry = NULL; in drv_setup_rx_buffers()
866 static void drv_setup_tx_buffer(struct ieee802154_cc13xx_cc26xx_subg_data *drv_data) in drv_setup_tx_buffer() argument
873 drv_data->tx_data[1] = BIT(3) | /* FCS Type: 2-octet FCS */ in drv_setup_tx_buffer()
876 drv_data->cmd_prop_tx_adv.pPkt = drv_data->tx_data; in drv_setup_tx_buffer()
879 static void drv_data_init(struct ieee802154_cc13xx_cc26xx_subg_data *drv_data) in drv_data_init() argument
891 sys_memcpy_swap(&drv_data->mac, mac, sizeof(drv_data->mac)); in drv_data_init()
894 drv_setup_rx_buffers(drv_data); in drv_data_init()
897 drv_setup_tx_buffer(drv_data); in drv_data_init()
899 k_sem_init(&drv_data->lock, 1, 1); in drv_data_init()
905 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_iface_init() local
907 net_if_set_link_addr(iface, drv_data->mac, sizeof(drv_data->mac), in ieee802154_cc13xx_cc26xx_subg_iface_init()
910 drv_data->iface = iface; in ieee802154_cc13xx_cc26xx_subg_iface_init()
933 struct ieee802154_cc13xx_cc26xx_subg_data *drv_data = dev->data; in ieee802154_cc13xx_cc26xx_subg_init() local
941 drv_data_init(drv_data); in ieee802154_cc13xx_cc26xx_subg_init()
948 drv_data->rf_handle = RF_open(&drv_data->rf_object, in ieee802154_cc13xx_cc26xx_subg_init()
951 if (drv_data->rf_handle == NULL) { in ieee802154_cc13xx_cc26xx_subg_init()
960 drv_data->cmd_fs.status = IDLE; in ieee802154_cc13xx_cc26xx_subg_init()
961 drv_data->cmd_fs.frequency = freq; in ieee802154_cc13xx_cc26xx_subg_init()
962 drv_data->cmd_fs.fractFreq = fract; in ieee802154_cc13xx_cc26xx_subg_init()
963 events = RF_runCmd(drv_data->rf_handle, (RF_Op *)&drv_data->cmd_fs, in ieee802154_cc13xx_cc26xx_subg_init()
965 if (events != RF_EventLastCmdDone || drv_data->cmd_fs.status != DONE_OK) { in ieee802154_cc13xx_cc26xx_subg_init()