uint8 New_SI4463_Transmit(U8 * pSrc,U8 len) { SI4463_Enable_NIRQ_TX(); /* Check if the radio is already in TX state */ si446x_request_device_state(); if (SI446X_CMD_REQUEST_DEVICE_STATE_REP_MAIN_STATE_ENUM_TX == \ (Si446xCmd.REQUEST_DEVICE_STATE.CURR_STATE & 0x0F)) { /* Still transmitting */ return FALSE; } /* Reset TX FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_TX_BIT); /* Fill the TX FIFO with data */ si446x_write_tx_fifo(len, pSrc); /* Start sending packet, channel 0, START immediately, * Packet length according to 'len', go READY when done */ si446x_start_tx(0u, 0x30, len); uint32 counter = 0; StatTime = tmpGlobalTime; while(TRUE != gRadio_CheckTransmitted()) { asm("nop"); counter++; if(counter >= 0xFFFFFFFF) { SI4463_Enable_NIRQ_RX(); EXTILineNIRQ_Config(); return FALSE; } } StopTime = tmpGlobalTime-StatTime; SI4463_Enable_NIRQ_RX(); EXTILineNIRQ_Config(); return TRUE; }
/*! * This function is used to transmit data * * */ void SI4463_Transmit(U8 * Packet,U8 length) { static SEGMENT_VARIABLE(lPktSending, U8) = 0u; uint8 temp; // Check if the radio packet sent successfully if (TRUE == gRadio_CheckTransmitted()) { /* Clear Packet Sending flag */ temp = 2; UartSendByte(&temp,1); lPktSending = 0u; } else { temp = 3; UartSendByte(&temp,1); } //lPktSending = 0; if ((0u == lPktSending)) { uint8 flag=vSampleCode_SendFixPacket((U8 *)Packet,length); UartSendByte(&flag,1); if (TRUE == flag) { //lPer_SecCntr = 0u; /* Set Packet Sending flag */ lPktSending = 1u; } } }
/** * Demo Application Poll-Handler * * @note This function must be called periodically. * */ void DemoApp_Pollhandler() { static SEGMENT_VARIABLE(lPktSending, U8, SEG_XDATA) = 0u; // Check if the radio packet sent successfully if (TRUE == gRadio_CheckTransmitted()) { switch (fixRadioPacket[6u]) { case '1': vHmi_ChangeLedState(eHmi_Led1_c, eHmi_LedBlinkOnce_c); break; case '2': vHmi_ChangeLedState(eHmi_Led2_c, eHmi_LedBlinkOnce_c); break; case '3': vHmi_ChangeLedState(eHmi_Led3_c, eHmi_LedBlinkOnce_c); break; case '4': vHmi_ChangeLedState(eHmi_Led4_c, eHmi_LedBlinkOnce_c); break; } /* Clear Packet Sending flag */ lPktSending = 0u; } if ((lPer_SecCntr >= PACKET_SEND_INTERVAL) && (0u == lPktSending)) { if (TRUE == vSampleCode_SendFixPacket()) { lPer_SecCntr = 0u; /* Set Packet Sending flag */ lPktSending = 1u; } } }