573蓝牙会卡死,如何防攻击

RT,

void RF_2G4StatusCallBack( uint8 sta , uint8 crc, uint8 *rxBuf )
{
    switch( sta )
    {
    case RX_MODE_RX_DATA:
        RF_Shut();
        if( crc == 1 )
        {
            //PRINT("crc error\n");
        }
        else if( crc == 2 )
        {
            //PRINT("match type error\n");
        }
        else
        {
            if(l_rf_read_cb != NULL){
                l_rf_read_cb(rxBuf);
            }
        }
        RF_Rx( NULL,0, l_package_type, 0xFF );
      break;
  }
  //PRINT("STA: %x\n",sta);
}

void rf_read_cb(uint8_t* ptData){
#ifdef  DEBUG_ME
    /*int i = 0;
    PRINT("read data:");
    for(i=0;i 245){
        PRINT("data > 245\n");
        return;
    }
    
    /*if(queue_can_write_len(&g_bt_queue) >= ptData[1]+2){
        queue_put(&g_bt_queue,ptData[1]);
        queue_put_buff(&g_bt_queue,ptData+2,ptData[1]);//data
    }else{
        PRINT("queue full\n");
    }
    tmos_set_event(l_task_id, SBP_MAIN_RF_EVT);
    PRINT("end\n");*/


    memcpy(uart_send_buff,ptData+2,ptData[1]);
    UART0_SendString( uart_send_buff, ptData[1]);

    //PRINT("e\n");
}


一块板子在收,并打印,一块板子在发,当发送的板子使用while(1) tx的时候,接收的板子可能出现卡死,TMOS set event后再也进不了

RF_2G4StatusCallBack

,只要把发送的板子关闭,那接收的板子立马就正常了。

如果发送的板子,发送的时候加上延时,而非while(1) tx,那么接收的板子就没事

在接收的回调函数里,不要立刻开启接收,而是设置一个event,然后在event里面进行接收。

这个原因是 :

发送比较快,导致接收中断来的太快,你又在接收回调里面把接收打开了,而tmos状态机轮询需要一定时间。



只有登录才能回复,可以选择微信账号登录