uint8 gRadio_CheckReceived(void) { /* Read ITs, clear pending ones */ si446x_get_int_status(0u, 0u, 0u); si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEW_STATE_ENUM_READY); /* check the reason for the IT */ if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PACKET_RX_PEND_BIT) { RfRxDataX[0]=0; si446x_fifo_info(0u); si446x_read_rx_fifo(1, &RfRxDataX[0]); //si446x_read_rx_fifo(RxBuffer[0], &RxBuffer[1]); //RxBuff2FrameBuff(RxBuffer,&FrameBuffToUart); RfRxFlag=RfRxData; /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_RX_BIT); si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEW_STATE_ENUM_RX); return TRUE; } /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_RX_BIT); si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEW_STATE_ENUM_RX); return FALSE; }
/*! * Check if Packet received IT flag is pending. * * @return TRUE - Packet successfully received / FALSE - No packet pending. * * @note * */ BIT gRadio_CheckReceived(void) { U8 lCnt; if (RF_NIRQ == FALSE) { /* Read ITs, clear pending ones */ si446x_get_int_status(0u, 0u, 0u); /* check the reason for the IT */ if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PACKET_RX_PEND_BIT) { /* Packet RX */ si446x_read_rx_fifo(RadioConfiguration.Radio_PacketLength, (U8 *) &fixRadioPacket[0u]); /* Send it to UART */ for (lCnt = 0u; lCnt < RadioConfiguration.Radio_PacketLength; lCnt++) { Comm_IF_SendUART(*((U8 *) &fixRadioPacket[0u] + lCnt)); } Comm_IF_SendUART('\n'); return TRUE; } /* Reset FIFO */ si446x_fifo_info(0x02); } return FALSE; }
/*! * Check if Packet received IT flag is pending. * * @return TRUE - Packet successfully received / FALSE - No packet pending. * * @note * */ uint8 gRadio_CheckReceived_VariablePacket(void) { uint8 nirq_recv_var= SI4463_NIRQ_Bit(); if (nirq_recv_var == FALSE) { /* Read ITs, clear pending ones */ si446x_get_int_status(0u, 0u, 0u); if (Si446xCmd.GET_INT_STATUS.CHIP_PEND & SI446X_CMD_GET_CHIP_STATUS_REP_CMD_ERROR_PEND_BIT) { /* State change to */ si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEW_STATE_ENUM_SLEEP); /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_RX_BIT); /* State change to */ si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEW_STATE_ENUM_RX); } /* check the reason for the IT */ if (Si446xCmd.GET_INT_STATUS.MODEM_PEND & SI446X_CMD_GET_INT_STATUS_REP_SYNC_DETECT_BIT) { /* Blink once LED2 to show Sync Word detected */ //vHmi_ChangeLedState(eHmi_Led2_c, eHmi_LedBlinkOnce_c); } if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PACKET_RX_PEND_BIT) { /* Blink once LED3 as CRC OK or not enabled */ // vHmi_ChangeLedState(eHmi_Led3_c, eHmi_LedBlinkOnce_c); /* Read the length of RX_FIFO */ si446x_fifo_info(0u); /* Packet RX */ si446x_read_rx_fifo(Si446xCmd.FIFO_INFO.RX_FIFO_COUNT, &fixRadioPacket[0]); /* Do not use UART in case of direct firmware load */ #ifdef UART_LOGGING_SUPPORT { /* Send it to UART */ UartSendByte(fixRadioPacket,RadioConfiguration.Radio_PacketLength); } #endif return TRUE; } if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_CRC_ERROR_BIT) { /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_RX_BIT); } } return FALSE; }
/*! * Check if Packet sent IT flag or Packet Received IT is pending. * * @return SI4455_CMD_GET_INT_STATUS_REP_PACKET_SENT_PEND_BIT / SI4455_CMD_GET_INT_STATUS_REP_PACKET_RX_PEND_BIT * * @note * */ U8 bRadio_Check_Tx_RX(void) { if (RF_NIRQ == FALSE) { /* Read ITs, clear pending ones */ si446x_get_int_status(0u, 0u, 0u); if (Si446xCmd.GET_INT_STATUS.CHIP_PEND & SI446X_CMD_GET_CHIP_STATUS_REP_CHIP_PEND_CMD_ERROR_PEND_BIT) { /* State change to */ si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEXT_STATE1_NEW_STATE_ENUM_SLEEP); /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_FIFO_RX_BIT); /* State change to */ si446x_change_state(SI446X_CMD_CHANGE_STATE_ARG_NEXT_STATE1_NEW_STATE_ENUM_RX); } if(Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_SENT_PEND_BIT) { return SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_SENT_PEND_BIT; } if(Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_RX_PEND_BIT) { /* Packet RX */ /* Get payload length */ si446x_fifo_info(0x00); si446x_read_rx_fifo(Si446xCmd.FIFO_INFO.RX_FIFO_COUNT, &customRadioPacket[0]); return SI446X_CMD_GET_INT_STATUS_REP_PH_PEND_PACKET_RX_PEND_BIT; } if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PH_STATUS_CRC_ERROR_BIT) { /* Reset FIFO */ si446x_fifo_info(SI446X_CMD_FIFO_INFO_ARG_FIFO_RX_BIT); } } return 0; }
void RXHandlerInGDO0_SI4463(void) { /* Read ITs, clear pending ones */ si446x_get_int_status(0u, 0u, 0u); /* check the reason for the IT */ if (Si446xCmd.GET_INT_STATUS.PH_PEND & SI446X_CMD_GET_INT_STATUS_REP_PACKET_RX_PEND_BIT) { /* Packet RX */ si446x_read_rx_fifo(RadioConfiguration.Radio_PacketLength, (U8 *) &fixRadioPacket[0u]); /* Send it to UART */ // for (lCnt = 0u; lCnt < RadioConfiguration.Radio_PacketLength; lCnt++) // { // Comm_IF_SendUART(*((U8 *) &fixRadioPacket[0u] + lCnt)); // } // Comm_IF_SendUART('\n'); } /* Reset FIFO */ si446x_fifo_info(0x02); }