This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

how can nrf51822 make 2.4G communication and BLE communication arbitrary switch?

how can nrf51822  make 2.4G communication and BLE communication arbitrary switch?

  • yes,I know the example of "\examples\multiprotocol\ble_app_gzll",but i have some troubles when i transplant to my project of "ble_uart_app".

     // Enter main loop.
        for (;;)
        {
    			power_manage();
    			//pinvalue = nrf_gpio_pin_read(switch_24toble);   //pinvalue = 0
    			if (pinvalue == 1)     
    			{
    				running_mode = BLE;
    			}
    			else
    			{
    				running_mode = GHZ;
    			}
    			
    			if (running_mode != previous_mode)
    			{
    				previous_mode = running_mode;
    				if (running_mode == BLE)
    				{
    						AppTx_stop(); 
    						ble_stack_init();
    						ble_app_cfg_start();
    				}
    				else if (running_mode == GHZ)
    				{
    					//ble_app_cfg_stop();
    					ble_stack_stop(); 
    					
    					esb_tx_init();		
    					ret = AppTx_Send((uint8_t *)buf,5);			
    					if (ret < 0)
    					{
    						ret = 0;
    					}
    					
    					if (TxRxPacket.TxFlage == 1) 
    					{
    							TxRxPacket.TxFlage = 0;  
    						 // Toggle one of the LEDs.
    							nrf_gpio_pin_write(LED_TXS, 1);
    							nrf_delay_us(100000);
    							nrf_gpio_pin_write(LED_TXS, 0);
    							nrf_delay_us(100000);
    					}
    				}
    			}
    			

    first,the code dehind of "power_manage()" is not running when the "power_manage();"has executed. when i put him somewhere else the softdevice is not close(sd_softdevice_disable() running will lead to program go into "while (loop);" in the "app_error.c").

  • void ble_stack_stop(void)
    {
        uint32_t err_code;
    
        err_code = softdevice_handler_sd_disable();
        APP_ERROR_CHECK(err_code);
    }

Related