Beispiel #1
0
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;
}
Beispiel #2
0
/*!
 * 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;
      
    }
  }
}
Beispiel #3
0
Datei: main.c Projekt: x893/WDS
/**
 *  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;
        }
    }
}