您当前的位置:首页 > IT编程 > C++
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:C++ trx_bit_read函数代码示例

51自学网 2021-06-03 08:59:10
  C++
这篇教程C++ trx_bit_read函数代码示例写得很实用,希望能帮到您。

本文整理汇总了C++中trx_bit_read函数的典型用法代码示例。如果您正苦于以下问题:C++ trx_bit_read函数的具体用法?C++ trx_bit_read怎么用?C++ trx_bit_read使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。

在下文中一共展示了trx_bit_read函数的30个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。

示例1: rf_generate_random_seed

/* * /brief Generates a 16-bit random number used as initial seed for srand() * */static void rf_generate_random_seed(void){	uint16_t seed = 0;	uint8_t cur_random_val = 0;	/*	 * We need to disable TRX IRQs while generating random values in RX_ON,	 * we do not want to receive frames at this point of time at all.	 */	ENTER_TRX_REGION();	do	{		trx_reg_write(RF233_REG_TRX_STATE, TRXCMD_TRX_OFF);			} while (TRXCMD_TRX_OFF != rf233_status());	do	{		/* Ensure that PLL has locked and receive mode is reached. */		trx_reg_write(RF233_REG_TRX_STATE, TRXCMD_PLL_ON);			} while (TRXCMD_PLL_ON != rf233_status());	do	{		trx_reg_write(RF233_REG_TRX_STATE, TRXCMD_RX_ON);			} while (TRXCMD_RX_ON != rf233_status());	/* Ensure that register bit RX_PDT_DIS is set to 0. */	trx_bit_write(SR_RX_PDT_DIS, RX_ENABLE);	/*	 * The 16-bit random value is generated from various 2-bit random	 * values.	 */	for (uint8_t i = 0; i < 8; i++) {		/* Now we can safely read the 2-bit random number. */		cur_random_val = trx_bit_read(SR_RND_VALUE);		seed = seed << 2;		seed |= cur_random_val;		delay_us(1); /* wait that the random value gets updated */	}	do	{		/* Ensure that PLL has locked and receive mode is reached. */		trx_reg_write(RF233_REG_TRX_STATE, TRXCMD_TRX_OFF);			} while (TRXCMD_TRX_OFF != rf233_status());	/*	 * Now we need to clear potential pending TRX IRQs and	 * enable the TRX IRQs again.	 */	trx_reg_read(RF233_REG_IRQ_STATUS);	trx_irq_flag_clr();	LEAVE_TRX_REGION();	/* Set the seed for the random number generator. */	srand(seed);}
开发者ID:songjw0820,项目名称:contiki_atmel,代码行数:64,


示例2: radio_init

void radio_init(uint8_t * rxbuf, uint8_t rxbufsz){trx_regval_t status;    /* init cpu peripherals and global IRQ enable */    radiostatus.rxframe = rxbuf;    radiostatus.rxframesz = rxbufsz;    //trx_set_irq_handler(radio_irq_handler);    /* transceiver initialization */    TRX_RESET_LOW();    TRX_SLPTR_LOW();    DELAY_US(TRX_RESET_TIME_US);    #if defined(CUSTOM_RESET_TIME_MS)        DELAY_MS(CUSTOM_RESET_TIME_MS);    #endif    TRX_RESET_HIGH();    /* disable IRQ and clear any pending IRQs */    trx_reg_write(RG_IRQ_MASK, 0);    trx_reg_read(RG_IRQ_STATUS);    trx_bit_write(SR_TRX_CMD, CMD_TRX_OFF);    DELAY_US(510);    status = trx_bit_read(SR_TRX_STATUS);    if (status != TRX_OFF)    {        radio_error(STATE_SET_FAILED);    }    trx_bit_write(SR_TX_AUTO_CRC_ON, 1);    trx_reg_write(RG_IRQ_MASK, TRX_IRQ_RX_START | TRX_IRQ_RX_END | TRX_IRQ_TX_END);    radiostatus.state = STATE_OFF;    radiostatus.idle_state = STATE_OFF;}
开发者ID:erictj,项目名称:uracoli,代码行数:33,


示例3: trx_init

/** * /brief Initializes the transceiver * * This function is called to initialize the transceiver. * * /return MAC_SUCCESS  if the transceiver state is changed to TRX_OFF and the *                 current device part number and version number are correct; *         FAILURE otherwise */static retval_t trx_init(void){	tal_trx_status_t trx_status;	uint8_t poll_counter = 0;	TRX_RST_HIGH();	TRX_SLP_TR_LOW();	/* Wait typical time of timer TR1. */	pal_timer_delay(P_ON_TO_CLKM_AVAILABLE_TYP_US);	/* Apply reset pulse */	TRX_RST_LOW();	pal_timer_delay(RST_PULSE_WIDTH_US);	TRX_RST_HIGH();#if !(defined FPGA_EMULATION)	do {		/* Wait not more than max. value of TR1. */		if (poll_counter == P_ON_TO_CLKM_ATTEMPTS) {			return FAILURE;		}		/* Wait a short time interval. */		pal_timer_delay(TRX_POLL_WAIT_TIME_US);		poll_counter++;		/* Check if AT86RF233 is connected; omit manufacturer id check		**/	} while (trx_reg_read(RG_PART_NUM) != PART_NUM_AT86RF233);#endif  /* !defined FPGA_EMULATION */	/* Verify that TRX_OFF can be written */	trx_reg_write(RG_TRX_STATE, CMD_TRX_OFF);	/* Verify that the trx has reached TRX_OFF. */	poll_counter = 0;	do {		/* Wait a short time interval. */		pal_timer_delay(TRX_POLL_WAIT_TIME_US);		trx_status = /*(tal_trx_status_t)*/ trx_bit_read(SR_TRX_STATUS);		/* Wait not more than max. value of TR15. */		if (poll_counter == P_ON_TO_TRX_OFF_ATTEMPTS) {#if (_DEBUG_ > 0)			Assert(					"MAX Attempts to switch to TRX_OFF state reached" ==					0);#endif			return FAILURE;		}		poll_counter++;	} while (trx_status != TRX_OFF);	tal_trx_status = TRX_OFF;	return MAC_SUCCESS;}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:69,


示例4: radio_receive_frame

/** * @brief Frame reception * */void radio_receive_frame(void){uint8_t len, lqi, crc_fail;int8_t ed;    /* @todo add RSSI_BASE_VALUE to get a dBm value */    ed = (int8_t)trx_reg_read(RG_PHY_ED_LEVEL);    len = trx_frame_read(radiostatus.rxframe, radiostatus.rxframesz, &lqi);    len &= ~0x80;    #if defined(SR_RX_CRC_VALID)        crc_fail = trx_bit_read(SR_RX_CRC_VALID) ? 0 : 1;    #else        uint8_t *frm, i;        uint16_t crc;        crc = 0;        frm = radiostatus.rxframe;        for (i=0; i < len; i++)        {            crc = CRC_CCITT_UPDATE(crc, *frm++);        }        crc_fail = (crc == 0)? 0: 1;    #endif    radiostatus.rxframe = usr_radio_receive_frame(len, radiostatus.rxframe,                                                  lqi, ed, crc_fail);}
开发者ID:cherishyou,项目名称:ArduinoLib-SMeshlink,代码行数:31,


示例5: save_all_settings

/** * /brief Save all user settings before Start of CW transmission */void save_all_settings(void){#if (ANTENNA_DIVERSITY == 1)	tal_get_curr_trx_config(ANT_DIVERSITY, &ant_div_before_ct);	if (ANT_DIV_DISABLE == ant_div_before_ct) {		tal_get_curr_trx_config(ANT_CTRL, &ant_sel_before_ct);	}#endif#if (TAL_TYPE == AT86RF233)	cc_band_ct = trx_bit_read(SR_CC_BAND);	cc_number_ct = trx_bit_read(SR_CC_NUMBER);#endif /* End of #if(TAL_TYPE == AT86RF233) */}
开发者ID:InSoonPark,项目名称:asf,代码行数:19,


示例6: cca_start

/** * @brief Start CCA. * * @param parameter Pointer to trx_id */static void cca_start(void *parameter){	trx_id_t trx_id = *(trx_id_t *)parameter;	/* Check if trx is currently detecting a frame ota */	if (trx_state[trx_id] == RF_RX) {		uint16_t reg_offset = RF_BASE_ADDR_OFFSET * trx_id;		uint8_t agc_freeze			= trx_bit_read(reg_offset + SR_RF09_AGCC_FRZS);		if (agc_freeze) {			csma_continue(trx_id);		} else {#ifdef SUPPORT_MODE_SWITCH			if (tal_pib[trx_id].ModeSwitchEnabled) {				trigger_cca_meaurement(trx_id);			} else#endif			{				transmit_frame(trx_id, WITH_CCA);			}		}	} else {#ifdef SUPPORT_MODE_SWITCH		if (tal_pib[trx_id].ModeSwitchEnabled) {			trigger_cca_meaurement(trx_id);		} else#endif		{			transmit_frame(trx_id, WITH_CCA);		}	}}
开发者ID:thegeek82000,项目名称:asf,代码行数:37,


示例7: switch_pll_on

/** * /brief Switches the PLL on * /ingroup group_tal_state_machine_212b */static void switch_pll_on(void){	trx_irq_reason_t irq_status;	uint8_t poll_counter = 0;	/* Check if trx is in TRX_OFF; only from PLL_ON the following procedure	 * is applicable */	if (trx_bit_read(SR_TRX_STATUS) != TRX_OFF) {		Assert(				"Switch PLL_ON failed, because trx is not in TRX_OFF" ==				0);		return;	}	trx_reg_read(RG_IRQ_STATUS); /* clear PLL lock bit */	/* Switch PLL on */	trx_reg_write(RG_TRX_STATE, CMD_PLL_ON);	/* Check if PLL has been locked. */	do {		irq_status = (trx_irq_reason_t)trx_reg_read(RG_IRQ_STATUS);		if (irq_status & TRX_IRQ_0_PLL_LOCK) {			return; /* PLL is locked now */		}		/* Wait a time interval of typical value for timer TR4. */		pal_timer_delay(TRX_OFF_TO_PLL_ON_TIME_US);		poll_counter++;	} while (poll_counter < PLL_LOCK_ATTEMPTS);}
开发者ID:InSoonPark,项目名称:asf,代码行数:36,


示例8: trx_frame_read_data_crc

inline uint8_t trx_frame_read_data_crc(uint8_t *data, uint8_t datasz, uint8_t *lqi, bool *crc_ok){    if (crc_ok != NULL)    {        *crc_ok = (trx_bit_read(SR_RX_CRC_VALID) == 1);    }    return trx_frame_read(data, datasz, lqi);}
开发者ID:JennyYu01,项目名称:Microduino_Tutorials,代码行数:8,


示例9: tfa_cca_perform

/* * /brief Perform a CCA * * This function performs a CCA request. * * /return phy_enum_t PHY_IDLE or PHY_BUSY */phy_enum_t tfa_cca_perform(void){	tal_trx_status_t trx_status;	uint8_t cca_status;	uint8_t cca_done;	/* Ensure that trx is not in SLEEP for register access */	do {		trx_status = set_trx_state(CMD_TRX_OFF);	} while (trx_status != TRX_OFF);	/* no interest in receiving frames while doing CCA */	trx_bit_write(SR_RX_PDT_DIS, RX_DISABLE); /* disable frame reception	                                           * indication */	/* Set trx to rx mode. */	do {		trx_status = set_trx_state(CMD_RX_ON);	} while (trx_status != RX_ON);	/* Start CCA */	trx_bit_write(SR_CCA_REQUEST, CCA_START);	/* wait until CCA is done */	pal_timer_delay(TAL_CONVERT_SYMBOLS_TO_US(CCA_DURATION_SYM));	do {		/* poll until CCA is really done */		cca_done = trx_bit_read(SR_CCA_DONE);	} while (cca_done != CCA_DETECTION_DONE);	set_trx_state(CMD_TRX_OFF);	/* Check if channel was idle or busy. */	if (trx_bit_read(SR_CCA_STATUS) == CCA_STATUS_CHANNEL_IS_IDLE) {		cca_status = PHY_IDLE;	} else {		cca_status = PHY_BUSY;	}	/* Enable frame reception again. */	trx_bit_write(SR_RX_PDT_DIS, RX_ENABLE);	return (phy_enum_t)cca_status;}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:51,


示例10: switch_pll_on

/** * /brief Switches the PLL on * /ingroup group_tal_state_machine */static void switch_pll_on(void){	uint32_t start_time;	uint32_t current_time;	/* Check if trx is in TRX_OFF; only from PLL_ON the following procedure	 * is applicable */	if (trx_bit_read(SR_TRX_STATUS) != TRX_OFF) {		Assert(				"Switch PLL_ON failed, because trx is not in TRX_OFF" ==				0);		return;	}	/* Clear all pending trx interrupts */	trx_reg_read(RG_IRQ_STATUS);	/* Get current IRQ mask */	uint8_t trx_irq_mask = trx_reg_read(RG_IRQ_MASK);	/* Enable transceiver's PLL lock interrupt */	trx_reg_write(RG_IRQ_MASK, TRX_IRQ_0_PLL_LOCK);	ENTER_TRX_REGION(); /* Disable trx interrupt handling */	/* Switch PLL on */	trx_reg_write(RG_TRX_STATE, CMD_PLL_ON);	pal_get_current_time(&start_time);	/* Wait for transceiver interrupt: check for IRQ line */	while (TRX_IRQ_HIGH() == false) {		/* Handle errata "potential long PLL settling duration". */		pal_get_current_time(&current_time);		if (pal_sub_time_us(current_time,				start_time) > PLL_LOCK_DURATION_MAX_US) {			uint8_t reg_value;			reg_value = trx_reg_read(RG_PLL_CF);			if (reg_value & 0x01) {				reg_value &= 0xFE;			} else {				reg_value |= 0x01;			}			trx_reg_write(RG_PLL_CF, reg_value);			pal_get_current_time(&start_time);		}		/* Wait until trx line has been raised. */	}	/* Clear PLL lock interrupt at trx */	trx_reg_read(RG_IRQ_STATUS);	/* Clear MCU's interrupt flag */	pal_trx_irq_flag_clr();	LEAVE_TRX_REGION(); /* Enable trx interrupt handling again */	/* Restore transceiver's interrupt mask. */	trx_reg_write(RG_IRQ_MASK, trx_irq_mask);}
开发者ID:thegeek82000,项目名称:asf,代码行数:60,


示例11: radio_init

void radio_init(uint8_t * rxbuf, uint8_t rxbufsz){trx_regval_t status;    /* init cpu peripherals and global IRQ enable */    radiostatus.rxframe = rxbuf;    radiostatus.rxframesz = rxbufsz;    trx_io_init(DEFAULT_SPI_RATE);    trx_set_irq_handler(radio_irq_handler);    /* transceiver initialization */    TRX_RESET_LOW();    TRX_SLPTR_LOW();    DELAY_US(TRX_RESET_TIME_US);    #if defined(CUSTOM_RESET_TIME_MS)        DELAY_MS(CUSTOM_RESET_TIME_MS);    #endif    TRX_RESET_HIGH();    /* disable IRQ and clear any pending IRQs */    trx_reg_write(RG_IRQ_MASK, 0);    trx_reg_read(RG_IRQ_STATUS);#if RADIO_TYPE == RADIO_AT86RF212	trx_reg_write(RG_TRX_CTRL_0, 0x19);#ifdef CHINABAND	trx_reg_write(RG_CC_CTRL_1, CCBAND );	trx_reg_write(RG_CC_CTRL_0, CCNUMBER);//channel 0	trx_reg_write(RG_TRX_CTRL_2, TRX_OQPSK250);	/*trx_bit_write(SR_OQPSK_SUB1_RC_EN,1);	trx_bit_write(SR_BPSK_OQPSK,1);	trx_bit_write(SR_SUB_MODE,1);	trx_bit_write(SR_OQPSK_DATA_RATE,0);	trx_bit_write(SR_CC_BAND,CCBAND);	*/	DELAY_US(510);#endif	trx_reg_write(RG_TRX_STATE, CMD_FORCE_TRX_OFF);	DELAY_US(510);#else    trx_bit_write(SR_TRX_CMD, CMD_TRX_OFF);    DELAY_US(510);#endif        do    {            status = trx_bit_read(SR_TRX_STATUS);    }    while (status != TRX_OFF);    trx_bit_write(SR_TX_AUTO_CRC_ON, 1);    trx_reg_write(RG_IRQ_MASK, TRX_IRQ_RX_START | TRX_IRQ_TRX_END);    radiostatus.state = STATE_OFF;    radiostatus.idle_state = STATE_OFF;}
开发者ID:cherishyou,项目名称:ArduinoLib-SMeshlink,代码行数:54,


示例12: radio_receive_frame

/** * @brief Frame reception * */void radio_receive_frame(void){    uint8_t len, lqi, crc_fail;        crc_fail = trx_bit_read(SR_RX_CRC_VALID) ? 0 : 1;    len = trx_frame_read(radiostatus.rxframe, radiostatus.rxframesz, &lqi);    len &= ~0x80;	    radiostatus.rxframe = usr_radio_receive_frame(len, radiostatus.rxframe,                                                  lqi, crc_fail);}
开发者ID:jt0109,项目名称:wn_lab4,代码行数:15,


示例13: handle_rx_end_irq

/** * @brief Handle received frame interrupt * * This function handles transceiver interrupts for received frames. * * @param trx_id Transceiver identifier */void handle_rx_end_irq(trx_id_t trx_id){	trx_state[trx_id] = RF_TXPREP;  #if (defined RF215V1) && ((defined SUPPORT_FSK) || (defined SUPPORT_OQPSK))	stop_rpc(trx_id);  #endif	if (upload_frame(trx_id) == false) {		return;	}#ifdef RX_WHILE_BACKOFF	if (tx_state[trx_id] == TX_BACKOFF) {		/* Stop backoff timer */		stop_tal_timer(trx_id);		tx_state[trx_id] = TX_DEFER;		tal_pib[trx_id].NumRxFramesDuringBackoff++;	}#endif#ifdef SUPPORT_MODE_SWITCH	if (tal_pib[trx_id].ModeSwitchEnabled) {		if (tal_pib[trx_id].phy.modulation == FSK) {			uint16_t reg_offset = RF_BASE_ADDR_OFFSET * trx_id;			if (trx_bit_read(reg_offset + SR_BBC0_FSKPHRRX_MS) ==					0x01) {				handle_rx_ms_packet(trx_id);				return;			}		}		if (tal_state[trx_id] == TAL_NEW_MODE_RECEIVING) {			/* Restore previous PHY, i.e. CSM */			/* Stop timer waiting for incoming frame at new mode */			stop_tal_timer(trx_id);			set_csm(trx_id);			tal_state[trx_id] = TAL_IDLE;		}	}#endif#ifdef PROMISCUOUS_MODE	if (tal_pib[trx_id].PromiscuousMode) {		complete_rx_transaction(trx_id);		return;	}#endif /* #ifdef PROMISCUOUS_MODE */	handle_incoming_frame(trx_id);}
开发者ID:thegeek82000,项目名称:asf,代码行数:60,


示例14: radio_irq_handler

/** * @brief IRQ handler for radio functions. * * This function is called in the transceiver interrupt routine. * Keep the implementation of the callback functions * (usr_radio_irq, usr_radio_receive_frame) short and efficient. * * @parm cause  value of the interrupt status register * */void radio_irq_handler(uint8_t cause){    if (cause & TRX_IRQ_TRX_END)    {        if (STATE_RX == radiostatus.state ||            STATE_RXAUTO == radiostatus.state)        {            radio_receive_frame();        }        else if (STATE_TX == radiostatus.state)        {            #ifdef TRX_TX_PA_EI                TRX_TX_PA_DI();            #endif            usr_radio_tx_done(TX_OK);            radio_set_state(radiostatus.idle_state);        }        else if (STATE_TXAUTO == radiostatus.state)        {            #ifdef TRX_TX_PA_EI                TRX_TX_PA_DI();            #endif            uint8_t trac_status = trx_bit_read(SR_TRAC_STATUS);            uint8_t result;            switch (trac_status)            {            case TRAC_SUCCESS:#if defined TRAC_SUCCESS_DATA_PENDING            case TRAC_SUCCESS_DATA_PENDING:#endif#if defined TRAC_SUCCESS_WAIT_FOR_ACK            case TRAC_SUCCESS_WAIT_FOR_ACK:#endif                result = TX_OK;                break;            case TRAC_CHANNEL_ACCESS_FAILURE:                result = TX_CCA_FAIL;                break;            case TRAC_NO_ACK:                result = TX_NO_ACK;                break;            default:                result = TX_FAIL;            }            usr_radio_tx_done(result);            radio_set_state(radiostatus.idle_state);        }    }    usr_radio_irq(cause);}
开发者ID:Pinoccio,项目名称:hardware-pinoccio,代码行数:63,


示例15: tal_generate_rand_seed

/* * /brief Generates a 16-bit random number used as initial seed for srand() * * This function generates a 16-bit random number by means of using the * Random Number Generator from the transceiver. * The Random Number Generator generates 2-bit random values. These 2-bit * random values are concatenated to the required 16-bit random seed. * * The generated random 16-bit number is feed into function srand() * as initial seed. * * The transceiver state is initally set to RX_ON. * After the completion of the random seed generation, the * trancseiver is set to TRX_OFF. * * As a prerequisite the preamble detector must not be disabled. * * Also in case the function is called from a different state than TRX_OFF, * additional trx state handling is required, such as reading the original * value and restoring this state after finishing the sequence. * Since in our case the function is called from TRX_OFF, this is not required * here. */void tal_generate_rand_seed(void){	uint16_t seed = 0;	uint8_t cur_random_val = 0;	/* RPC could influence the randomness; therefore disable it here. */	uint8_t previous_RPC_value = trx_reg_read(RG_TRX_RPC);	trx_reg_write(RG_TRX_RPC, 0xC1);	/*	 * We need to disable TRX IRQs while generating random values in RX_ON,	 * we do not want to receive frames at this point of time at all.	 */	ENTER_TRX_REGION();	/* Ensure that PLL has locked and receive mode is reached. */	tal_trx_status_t trx_state;	do {		trx_state = set_trx_state(CMD_RX_ON);	} while (trx_state != RX_ON);	/* Ensure that register bit RX_PDT_DIS is set to 0. */	trx_bit_write(SR_RX_PDT_DIS, RX_ENABLE);	/*	 * The 16-bit random value is generated from various 2-bit random	 * values.	 */	for (uint8_t i = 0; i < 8; i++) {		/* Now we can safely read the 2-bit random number. */		cur_random_val = trx_bit_read(SR_RND_VALUE);		seed = seed << 2;		seed |= cur_random_val;		PAL_WAIT_1_US(); /* wait that the random value gets updated */	}	set_trx_state(CMD_FORCE_TRX_OFF);	/*	 * Now we need to clear potential pending TRX IRQs and	 * enable the TRX IRQs again.	 */	trx_reg_read(RG_IRQ_STATUS);	pal_trx_irq_flag_clr();	LEAVE_TRX_REGION();	/* Set the seed for the random number generator. */	srand(seed);	/* Restore RPC settings. */	trx_reg_write(RG_TRX_RPC, previous_RPC_value);}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:75,


示例16: radio_receive_frame

/** * @brief Frame reception * */void radio_receive_frame(void){uint8_t len, lqi, crc_fail;int8_t ed;    /* @todo add RSSI_BASE_VALUE to get a dBm value */    ed = (int8_t)trx_reg_read(RG_PHY_ED_LEVEL);    crc_fail = trx_bit_read(SR_RX_CRC_VALID) ? 0 : 1;    len = trx_frame_read(radiostatus.rxframe, radiostatus.rxframesz, &lqi);    len &= ~0x80;    radiostatus.rxframe = usr_radio_receive_frame(len, radiostatus.rxframe,                                                  lqi, ed, crc_fail);}
开发者ID:erictj,项目名称:uracoli,代码行数:18,


示例17: main

int main(void){trx_regval_t rval;    /* This will stop the application before initializing the radio transceiver     * (ISP issue with MISO pin, see FAQ)     */    trap_if_key_pressed();    /* Step 0: init MCU peripherals */    LED_INIT();    trx_io_init(SPI_RATE_1_2);    LED_SET_VALUE(LED_MAX_VALUE);    LED_SET_VALUE(0);    /* Step 1: initialize the transceiver */    TRX_RESET_LOW();    TRX_SLPTR_LOW();    DELAY_US(TRX_RESET_TIME_US);    TRX_RESET_HIGH();    trx_reg_write(RG_TRX_STATE,CMD_TRX_OFF);    DELAY_US(TRX_INIT_TIME_US);    rval = trx_bit_read(SR_TRX_STATUS);    ERR_CHECK(TRX_OFF!=rval);    LED_SET_VALUE(1);    /* Step 2: setup transmitter     * - configure radio channel     * - go into RX state,     * - enable "receive end" IRQ     */    trx_bit_write(SR_CHANNEL,CHANNEL);    trx_reg_write(RG_TRX_STATE,CMD_RX_ON);#if defined(TRX_IRQ_TRX_END)    trx_reg_write(RG_IRQ_MASK,TRX_IRQ_TRX_END);#elif defined(TRX_IRQ_RX_END)    trx_reg_write(RG_IRQ_MASK,TRX_IRQ_RX_END);#else#  error "Unknown IRQ bits"#endif    sei();    LED_SET_VALUE(2);    /* Step 3: Going to receive frames */    rxcnt = 0;    LED_SET_VALUE(0);    while(1);}
开发者ID:Pinoccio,项目名称:hardware-pinoccio,代码行数:49,


示例18: limit_tx_power_in_ch26

/* * /brief handle the tx power settings in case of External PA enabled, * and the channel changes from or to 26.This is to meet the FCC compliance * * /param Current channel and Previous channel */void limit_tx_power_in_ch26(uint8_t curr_chnl, uint8_t prev_chnl){	pib_value_t pib_value;	/* If the cuurent channel set to 26*/	if (curr_chnl == CHANNEL_26) {		/* Get last previous non 26 channel tx power  */		if (prev_chnl != CHANNEL_26) {			tal_pib_get(phyTransmitPower, &prev_non_26chn_tx_power);		}		/* If the Tx power is more than 13dBm, i.e. TX_PWR < 0x0d */		if (trx_bit_read(SR_TX_PWR) <= MAX_TX_PWR_REG_VAL_CH26) {			pib_value.pib_value_8bit = DEFAULT_TX_POWER_CH26;			tal_pib_set(phyTransmitPower, &pib_value);			curr_trx_config_params.tx_power_reg = trx_bit_read(					SR_TX_PWR);			curr_trx_config_params.tx_power_dbm				= CONV_phyTransmitPower_TO_DBM(					pib_value.pib_value_8bit);		}	} else {		/* if the channel changed from 26 to other  */		if (prev_chnl == CHANNEL_26) {			/* Set back the tx power to default value i.e. 20dBm,			 *TX_PWR 0x09 */			pib_value.pib_value_8bit = prev_non_26chn_tx_power;			tal_pib_set(phyTransmitPower, &pib_value);			curr_trx_config_params.tx_power_reg = trx_bit_read(					SR_TX_PWR);			curr_trx_config_params.tx_power_dbm				= CONV_phyTransmitPower_TO_DBM(					pib_value.pib_value_8bit);		}	}}
开发者ID:InSoonPark,项目名称:asf,代码行数:42,


示例19: cca_done_handling

/* * /brief handling of CCA result. */void cca_done_handling(void){	set_trx_state(CMD_PLL_ON); /* leave RX_ON */	/* Restore IRQ handling */	trx_irq_init((FUNC_PTR)trx_irq_handler_cb);	trx_reg_write(RG_IRQ_MASK, TRX_IRQ_DEFAULT);	trx_bit_write(SR_RX_PDT_DIS, RX_ENABLE); /* Enable frame reception.	                                         **/	/* Check if channel was idle or busy */	if (trx_bit_read(SR_CCA_STATUS) == CCA_STATUS_CHANNEL_IS_IDLE) {		tx_frame();	} else {		tal_state = TAL_CSMA_CONTINUE;	}}
开发者ID:InSoonPark,项目名称:asf,代码行数:19,


示例20: radio_do_cca

radio_cca_t radio_do_cca(void){uint8_t tmp, trxcmd, trxstatus;radio_cca_t ret = RADIO_CCA_FREE;    trxcmd = trx_reg_read(RG_TRX_STATE);    trx_reg_write(RG_TRX_STATE, CMD_RX_ON);    tmp = 130;    do    {         trxstatus = trx_bit_read(SR_TRX_STATUS);         if ((RX_ON == trxstatus) || (BUSY_RX == trxstatus))         {            break;         }         DELAY_US(32); /* wait for one octett */    }    while(--tmp);    trx_reg_write(RG_TRX_STATE, CMD_PLL_ON);    trx_reg_write(RG_TRX_STATE, CMD_RX_ON);    trx_bit_write(SR_CCA_REQUEST,1);    DELAY_US(140);    /* we need to read the whole status register     * because CCA_DONE and CCA_STATUS are valid     * only for one read, after the read they are reset     */    tmp = trx_reg_read(RG_TRX_STATUS);    if(0 == (tmp & 0x80))    {        ret = RADIO_CCA_FAIL;    }    else if (tmp & 0x40)    {        ret = RADIO_CCA_FREE;    }    else    {        ret = RADIO_CCA_BUSY;    }    trx_reg_write(RG_TRX_STATE, trxcmd);    return ret;}
开发者ID:cherishyou,项目名称:ArduinoLib-SMeshlink,代码行数:47,


示例21: trx_init

/** * /brief Initializes the transceiver * * This function is called to initialize the transceiver. * * /return MAC_SUCCESS  if the transceiver state is changed to TRX_OFF and the *                 current device part number and version number are correct; *         FAILURE otherwise */static retval_t trx_init(void){	tal_trx_status_t trx_status;	uint8_t poll_counter = 0;	sysclk_enable_peripheral_clock(&TRX_CTRL_0);	TRX_RST_HIGH();	TRX_SLP_TR_LOW();	pal_timer_delay(P_ON_TO_CLKM_AVAILABLE_TYP_US);	/* Apply reset pulse */	TRX_RST_LOW();	pal_timer_delay(RST_PULSE_WIDTH_US);	TRX_RST_HIGH();	/* Verify that the trx has reached TRX_OFF. */	poll_counter = 0;	do {		/* Wait a short time interval. */		pal_timer_delay(TRX_POLL_WAIT_TIME_US);		trx_status = (tal_trx_status_t)trx_bit_read(SR_TRX_STATUS);		/* Wait not more than max. value of TR2. */		if (poll_counter == RESET_TO_TRX_OFF_ATTEMPTS) {#if (_DEBUG_ > 0)			Assert(					"MAX Attempts to switch to TRX_OFF state reached" ==					0);#endif			return FAILURE;		}		poll_counter++;	} while (trx_status != TRX_OFF);	tal_trx_status = TRX_OFF;#if !defined(FPGA_EMULATION)	/* Check if actually running on an ATmegaRFR2 device. */	if (ATMEGARFR2_PART_NUM != trx_reg_read(RG_PART_NUM)) {		return FAILURE;	}#endif	return MAC_SUCCESS;}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:56,


示例22: handle_incoming_frame

/** * @brief Handles incoming frame from transceiver * * @param trx_id Transceiver identifier */static void handle_incoming_frame(trx_id_t trx_id){	uint16_t reg_offset = RF_BASE_ADDR_OFFSET * trx_id;	if (is_frame_an_ack(trx_id)) {		if (tx_state[trx_id] == TX_WAITING_FOR_ACK) {			if (is_ack_valid(trx_id)) {				/* Stop ACK timeout timer */				stop_tal_timer(trx_id);				/* Re-store frame filter to pass "normal" frames				 **/				/* Configure frame filter to receive all allowed				 *frame types */#ifdef SUPPORT_FRAME_FILTER_CONFIGURATION				trx_reg_write(reg_offset + RG_BBC0_AFFTM,						tal_pib[trx_id].frame_types);#else				trx_reg_write(reg_offset + RG_BBC0_AFFTM,						DEFAULT_FRAME_TYPES);#endif				tx_done_handling(trx_id, MAC_SUCCESS);			} else {				/* Continue waiting for incoming ACK */				switch_to_rx(trx_id);			}		} else {			/* No interest in ACKs */			switch_to_rx(trx_id);		}		return; /* no further processing of ACK frames */	}	/* Check if ACK transmission is done by transceiver */	bool ack_transmitting = trx_bit_read(reg_offset + SR_BBC0_AMCS_AACKFT);	if (ack_transmitting) {	} else {		complete_rx_transaction(trx_id);#ifdef RX_WHILE_BACKOFF		if (tx_state[trx_id] == TX_DEFER) {			csma_start(trx_id);		}#endif	}}
开发者ID:thegeek82000,项目名称:asf,代码行数:51,


示例23: tal_ext_pa_ctrl

retval_t  tal_ext_pa_ctrl(bool pa_ext_sw_ctrl){	bool temp;	trx_bit_write(SR_PA_EXT_EN, pa_ext_sw_ctrl);#if (TAL_TYPE == ATMEGARFA1)	CONF_REG_WRITE();#endif /* TAL_TYPE == ATMEGA128RFA1 */	/* Read the PA_EXT_EN bit to check the configuration */	temp = /*(bool)*/ trx_bit_read(SR_PA_EXT_EN);	if (pa_ext_sw_ctrl == temp) {		/* return success if the configuration is done correctly */		return MAC_SUCCESS;	} else {		/* return success if the configuration is not done correctly */		return FAILURE;	}}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:17,


示例24: rf233_transmit

/** * /brief      Transmit a frame already put in the radio with 'prepare' * /param payload_len    Length of the frame to send * /return     Returns success/fail, refer to radio.h for explanation */int rf233_transmit() {  static uint8_t status_now;  status_now = rf233_status();  PRINTF("RF233: attempting transmit, in state %s/n", state_str(status_now));  if (status_now == STATE_BUSY_RX_AACK ||      status_now == STATE_BUSY_TX_ARET) {    PRINTF("RF233: collision, was in state %s/n", state_str(status_now));    /* NOTE: to avoid loops */    return RADIO_TX_ERR;;  }    if (status_now != STATE_PLL_ON) {    trx_reg_write(RF233_REG_TRX_STATE, STATE_PLL_ON);    do { // I think this code is broken, does nothing -pal      status_now = trx_bit_read(RF233_REG_TRX_STATUS, 0x1F, 0);    } while (status_now == 0x1f);  }    if (rf233_status() != STATE_PLL_ON) {    /* failed moving into PLL_ON state, gracefully try to recover */    PRINTF("RF233: failed going to STATE_PLL_ON/n");    RF233_COMMAND(TRXCMD_PLL_ON);   /* try again */    static uint8_t state;    state = rf233_status();    if(state != STATE_PLL_ON) {      PRINTF("RF233: graceful recovery (in tx) failed, giving up. State: 0x%02X/n", rf233_status());      return RADIO_TX_ERR;    }  }    /* perform transmission */  flag_transmit = 1;  radio_tx = false;  RF233_COMMAND(TRXCMD_TX_ARET_ON);  RF233_COMMAND(TRXCMD_TX_START);  PRINTF("RF233:: Issued TX_START, wait for completion interrupt./n");  wait_for(&radio_tx);  PRINTF("RF233: tx ok/n/n");    return RADIO_TX_OK;}
开发者ID:Idolf,项目名称:tock,代码行数:49,


示例25: trx_reset

/** * /brief Reset transceiver * * /return MAC_SUCCESS  if the transceiver state is changed to TRX_OFF *         FAILURE otherwise */static retval_t trx_reset(void){	tal_trx_status_t trx_status;	uint8_t poll_counter = 0;	/* trx might sleep, so wake it up */	TRX_SLP_TR_LOW();	pal_timer_delay(SLEEP_TO_TRX_OFF_TYP_US);	/* Apply reset pulse */	TRX_RST_LOW();	pal_timer_delay(RST_PULSE_WIDTH_US);	TRX_RST_HIGH();	/* verify that trx has reached TRX_OFF */	do {		/* Wait a short time interval. */		pal_timer_delay(TRX_POLL_WAIT_TIME_US);		trx_status = (tal_trx_status_t)trx_bit_read(SR_TRX_STATUS);		/* Wait not more than max. value of TR2. */		if (poll_counter == SLEEP_TO_TRX_OFF_ATTEMPTS) {#if (_DEBUG_ > 0)			Assert(					"MAX Attempts to switch to TRX_OFF state reached" ==					0);#endif			return FAILURE;		}		poll_counter++;	} while (trx_status != TRX_OFF);	tal_trx_status = TRX_OFF;#ifdef STB_ON_SAL#if (SAL_TYPE == AT86RF2xx)	stb_restart();#endif#endif	return MAC_SUCCESS;}
开发者ID:ThucVD2704,项目名称:femto-usb-blink-example,代码行数:50,


示例26: tal_generate_rand_seed

/* * /brief Generates a 16-bit random number used as initial seed for srand() * * This function generates a 16-bit random number by means of using the * Random Number Generator from the transceiver. * The Random Number Generator generates 2-bit random values. These 2-bit * random values are concatenated to the required 16-bit random seed. * * The generated random 16-bit number is feed into function srand() * as initial seed. * * The transceiver state is initally set to RX_ON. * After the completion of the random seed generation, the * trancseiver is set to TRX_OFF. * * As a prerequisite the preamble detector must not be disabled. * * Also in case the function is called from a different state than TRX_OFF, * additional trx state handling is required, such as reading the original * value and restoring this state after finishing the sequence. * Since in our case the function is called from TRX_OFF, this is not required * here. */void tal_generate_rand_seed(void){	uint16_t seed = 0;	uint8_t cur_random_val = 0;	/* Ensure that PLL has locked and receive mode is reached. */	tal_trx_status_t trx_state;	do {		trx_state = set_trx_state(CMD_RX_ON);	} while (trx_state != RX_ON);	/* Ensure that register bit RX_PDT_DIS is set to 0. */	trx_bit_write(SR_RX_PDT_DIS, RX_ENABLE);	/*	 * We need to disable TRX IRQs while generating random values in RX_ON,	 * we do not want to receive frames at this point of time at all.	 */	trx_reg_write(RG_IRQ_MASK, TRX_IRQ_NONE);	/*	 * The 16-bit random value is generated from various 2-bit random	 * values.	 */	for (uint8_t i = 0; i < 8; i++) {		/* Now we can safely read the 2-bit random number. */		cur_random_val = trx_bit_read(SR_RND_VALUE);		seed = seed << 2;		seed |= cur_random_val;		PAL_WAIT_1_US(); /* wait that the random value gets updated */	}	set_trx_state(CMD_FORCE_TRX_OFF);	/*	 * Now we need to clear potential pending TRX IRQs and	 * enable the TRX IRQs again.	 */	trx_reg_write(RG_IRQ_STATUS, 0xFF);	trx_reg_write(RG_IRQ_MASK, TRX_IRQ_DEFAULT);	/* Set the seed for the random number generator. */	srand(seed);}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:67,


示例27: tal_set_tx_pwr

retval_t tal_set_tx_pwr(bool type, int8_t pwr_value){	uint64_t temp_var;	int8_t tx_pwr_dbm = 0;	/* modify the register for tx_pwr and set the tal_pib accordingly */	if (true == type) {		if (MAC_SUCCESS ==				tal_convert_reg_value_to_dBm(pwr_value,				&tx_pwr_dbm)) {			temp_var = CONV_DBM_TO_phyTransmitPower(tx_pwr_dbm);			tal_pib_set(phyTransmitPower, (pib_value_t *)&temp_var);			/* To make sure that TX_PWR register is updated with the			 * value whatever user povided.Otherwise lowest dBm			 * power			 * (highest reg value will be taken)			 */			trx_bit_write(SR_TX_PWR, pwr_value);#if (TAL_TYPE == ATMEGARFA1)			CONF_REG_WRITE();#endif /* TAL_TYPE == ATMEGA128RFA1 */			return MAC_SUCCESS;		} else {			/* return invalid parameter if out of range */			return MAC_INVALID_PARAMETER;		}	} else {		temp_var = CONV_DBM_TO_phyTransmitPower(pwr_value);		tal_pib_set(phyTransmitPower, (pib_value_t *)&temp_var);	}	uint8_t reg_value = convert_phyTransmitPower_to_reg_value(			tal_pib.TransmitPower);	/* check the value written in the transceiver register */	uint8_t temp = trx_bit_read(SR_TX_PWR);	if (temp == reg_value) {		return MAC_SUCCESS;	} else {		return FAILURE;	}}
开发者ID:AndreyMostovov,项目名称:asf,代码行数:41,


示例28: trx_irq_handler_cb

/* * /brief Transceiver interrupt handler * * This function handles the transceiver generated interrupts. */void trx_irq_handler_cb(void){    trx_irq_reason_t trx_irq_cause;    trx_irq_cause = (trx_irq_reason_t)trx_reg_read(RG_IRQ_STATUS);#if (defined BEACON_SUPPORT) || (defined ENABLE_TSTAMP)#if (ANTENNA_DIVERSITY == 1) || (DISABLE_TSTAMP_IRQ == 1)    if (trx_irq_cause & TRX_IRQ_RX_START) {        /*         * Get timestamp.         *         * In case Antenna diversity is used or the utilization of         * the Timestamp IRQ is disabled, the timestamp needs to be read         * now         * the "old-fashioned" way.         *         * The timestamping is generally only done for         * beaconing networks or if timestamping is explicitly enabled.         */        pal_trx_read_timestamp(&tal_rx_timestamp);    }#endif  /* #if (ANTENNA_DIVERSITY == 1) || (DISABLE_TSTAMP_IRQ == 1) */#endif  /* #if (defined BEACON_SUPPORT) || (defined ENABLE_TSTAMP) */    if (trx_irq_cause & TRX_IRQ_TRX_END) {        /*         * TRX_END reason depends on if the trx is currently used for         * transmission or reception.         */#if ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT))        if ((tal_state == TAL_TX_AUTO) || tal_beacon_transmission)#else        if (tal_state == TAL_TX_AUTO)#endif        {            /* Get the result and push it to the queue. */            if (trx_irq_cause & TRX_IRQ_TRX_UR) {                handle_tx_end_irq(true); /* see tal_tx.c */            } else {                handle_tx_end_irq(false); /* see tal_tx.c */            }        } else { /* Other tal_state than TAL_TX_... */            /* Handle rx interrupt. */            handle_received_frame_irq(); /* see tal_rx.c */#if (defined SW_CONTROLLED_CSMA) && (defined RX_WHILE_BACKOFF)            if (tal_state == TAL_BACKOFF) {                pal_timer_stop(TAL_T_BOFF);                tal_state = TAL_CSMA_CONTINUE;            }#endif        }    }#if (ANTENNA_DIVERSITY == 1)    else if (trx_irq_cause & TRX_IRQ_RX_START) {        /*         * The antenna that has been selected automatically for the         * current frame         * reception is set for the ACK transmission too.         */        if (trx_bit_read(SR_ANT_SEL) == ANT_SEL_ANTENNA_0) {            trx_bit_write(SR_ANT_CTRL, ANT_CTRL_1);        } else { /* antenna 1 is in use */            trx_bit_write(SR_ANT_CTRL, ANT_CTRL_2);        }    }#endif} /* trx_irq_handler_cb() */
开发者ID:thegeek82000,项目名称:asf,代码行数:75,


示例29: perform_cca_twice

/** * /brief Performs CCA twice */static uint8_t perform_cca_twice(void){	uint8_t cca_status;	uint8_t cca_done;	uint8_t CW = 2;	uint32_t now_time_us;	do {		pal_get_current_time(&now_time_us);	} while (pal_add_time_us(now_time_us,			(SLEEP_TO_TRX_OFF_TYP_US +			CCA_PREPARATION_DURATION_US)) <			cca_starttime_us);#if ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT))	if (tal_beacon_transmission) {#if (_DEBUG_ > 0)		Assert("Ongoing beacon transmission, slotted CSMA busy" == 0);#endif		return PHY_BUSY;	}#endif /* ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT)) */	/* Ensure that trx is at least in TRX_OFF mode at this time. */	if (tal_trx_status == TRX_SLEEP) {		set_trx_state(CMD_TRX_OFF);	}	do {		pal_get_current_time(&now_time_us);	} while (pal_add_time_us(now_time_us,			(TRX_OFF_TO_PLL_ON_TIME_US +			CCA_PREPARATION_DURATION_US)) <			cca_starttime_us);	/*	 * Set trx to PLL_ON.	 * If trx is busy and trx cannot be set to PLL_ON, assess channel as	 * busy.	 */	if (set_trx_state(CMD_PLL_ON) != PLL_ON) {		return PHY_BUSY;	}	/* no interest in receiving frames while doing CCA */	trx_bit_write(SR_RX_PDT_DIS, RX_DISABLE); /* disable frame reception	                                           * indication */	/* do CCA twice */	do {		/* wait here until 16us before backoff boundary */		/* assume TRX is in PLL_ON */		do {			pal_get_current_time(&now_time_us);		} while (pal_add_time_us(now_time_us,				CCA_PRE_START_DURATION_US) <				cca_starttime_us);		set_trx_state(CMD_RX_ON);		/* debug pin to switch on: define ENABLE_DEBUG_PINS,		 * pal_config.h */		PIN_CCA_START();		/* Start CCA */		trx_bit_write(SR_CCA_REQUEST, CCA_START);		/* wait until CCA is done and get status */		pal_timer_delay(TAL_CONVERT_SYMBOLS_TO_US(CCA_DURATION_SYM));		do {			/* poll until CCA is really done; */			cca_done = trx_bit_read(SR_CCA_DONE);		} while (cca_done != CCA_COMPLETED);		/* between both CCA switch trx to PLL_ON to reduce power		 * consumption */		set_trx_state(CMD_PLL_ON);		/* debug pin to switch on: define ENABLE_DEBUG_PINS,		 * pal_config.h */		PIN_CCA_END();		/* check if channel was idle or busy */		if (trx_bit_read(SR_CCA_STATUS) == CCA_CH_IDLE) {			/* do next CCA at next backoff boundary */			cca_starttime_us = pal_add_time_us(cca_starttime_us,					TAL_CONVERT_SYMBOLS_TO_US(					aUnitBackoffPeriod));			CW--;			cca_status = PHY_IDLE;		} else { /* PHY busy */			cca_status = PHY_BUSY;			set_trx_state(CMD_RX_AACK_ON);			break; /* if channel is busy do no do CCA for the second			        * time *///.........这里部分代码省略.........
开发者ID:InSoonPark,项目名称:asf,代码行数:101,


示例30: handle_tx_end_irq

/* * /brief Handles interrupts issued due to end of transmission */void handle_tx_end_irq(void){	/* Check if TX_END interrupt, is issued due to automatic ACK	 * transmission. */#if ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT))	if ((tal_state != TAL_TX_AUTO) && (!tal_beacon_transmission))#else	if (tal_state != TAL_TX_AUTO)#endif	{		/* Automatic ACK transmission completed -> No further		 * processing. */		return;	}#if ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT))	if (tal_beacon_transmission) {		tal_beacon_transmission = false;		if (tal_csma_state == BACKOFF_WAITING_FOR_BEACON) {			/* Slotted CSMA has been waiting for a beacon, now it			 * can continue. */			tal_csma_state = CSMA_HANDLE_BEACON;		}	} else#endif /* ((MAC_START_REQUEST_CONFIRM == 1) && (defined BEACON_SUPPORT)) */	{		/* Read trac status before enabling RX_AACK_ON. */		trx_trac_status = (trx_trac_status_t)trx_bit_read(				SR_TRAC_STATUS);#ifdef BEACON_SUPPORT		if (tal_csma_state == FRAME_SENDING) { /* Transmission was			                                * issued by slotted CSMA			                                **/			PIN_TX_END();			tal_state = TAL_SLOTTED_CSMA;			/* Map status message of transceiver to TAL constants.			**/			switch (trx_trac_status) {			case TRAC_SUCCESS_DATA_PENDING:				PIN_ACK_OK_START();				tal_csma_state = TX_DONE_FRAME_PENDING;				break;			case TRAC_SUCCESS:				PIN_ACK_OK_START();				tal_csma_state = TX_DONE_SUCCESS;				break;			case TRAC_CHANNEL_ACCESS_FAILURE:				PIN_NO_ACK_START();				tal_csma_state = CSMA_ACCESS_FAILURE;				break;			case TRAC_NO_ACK:				PIN_NO_ACK_START();				tal_csma_state = TX_DONE_NO_ACK;				break;			case TRAC_INVALID: /* Handle this in the same way as				            * default. */			default:				Assert("not handled trac status" == 0);				tal_csma_state = CSMA_ACCESS_FAILURE;				break;			}			PIN_ACK_OK_END();			PIN_ACK_WAITING_END();		} else#endif  /* BEACON_SUPPORT */		/* Trx has handled the entire transmission incl. CSMA */		{			tal_state = TAL_TX_DONE; /* Further handling is done by			                          * tx_done_handling() */		}	}	/*	 * After transmission has finished, switch receiver on again.	 * Check if receive buffer is available.	 */	if (NULL == tal_rx_buffer) {		set_trx_state(CMD_PLL_ON);		tal_rx_on_required = true;	} else {		set_trx_state(CMD_RX_AACK_ON);	}}
开发者ID:thegeek82000,项目名称:asf,代码行数:93,



注:本文中的trx_bit_read函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。


C++ trx_bit_write函数代码示例
C++ truncate_setsize函数代码示例
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。