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

Device is not advertising stuck at SOFTDEVICE_HANDLER_INIT Macro

I have created a customized Services according to nAN36 Document.

  1. SDK using 8.0
  2. Stack S110 8.0
  3. DEV kit PCA10028 nRF51.
  4. J-LInk RTT DEbugger

When the function ble_stack_init(void) get called from main. It stuck somewhere with MACRO

SOFTDEVICE_HANDLER_INIT(NRF_CLOCK_LFCLKSRC_XTAL_20_PPM, NULL); 

This Macro is defined softdevice_handler.h file. Now how to Proceed further to check where I am lagging...

 ble_uuid_t adv_uuids[] =
    {				
				{SOS_BLE_BAS_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN},
				{SOS_UUID_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN},
				{FIND_ME_ALERT_SERVICE, BLE_UUID_TYPE_VENDOR_BEGIN}        
    };

This is service I passed for advertising. And these are defined as

/*-------------------------------------------------------------------------------------------------------*/
#define   SOS_UUID_BASE	{0xFA,0xFF,0xBE,0x11,0xA7,0x63,0x1C,0xBB,0x7F,0x48,0x27,0x66,0x00,0x00,0x8C,0xF0}

//-----------------------SERVICES UUID VENDOR
#define   SOS_UUID_SERVICE					0x1602
#define   FIND_ME_ALERT_SERVICE			0x1604
#define	SOS_BLE_BAS_SERVICE				0x1606

//-----------------------SERVICE CHARACTERISTIC UUID
#define	  SOS_UUID_EMR_MSG_CHAR			0x1608
#define 	ALERT_UUID_FIND_ME_CHAR		0x1610
#define		SOS_BLE_BAS_CHAR					0x1612 

______________________________________________________________

Some one if suggest me the step I follow next to know the problem. And please revert on same if any other part of code require here.

Parents
  • It doesn't 'stick' somewhere, microprocessors don't just stop running. You have a debugger, hit 'break' and see where you are in the code. Most likely you are in the error handler because one of the calls inside the handler init returned an error, the error was checked and the code jumped to the error handler, where it's looping quietly waiting for you to hit break, look at the stack trace, and see what caused the error.

    If you're stuck in the softdevice init and haven't even returned from that, the advertising stuff isn't really relevant as you won't have got to that point in the code. However if those are 3 custom services with full length UUIDs, there's no way they are going to fit in the advertising packet, and that will be the source of another error later.

Reply
  • It doesn't 'stick' somewhere, microprocessors don't just stop running. You have a debugger, hit 'break' and see where you are in the code. Most likely you are in the error handler because one of the calls inside the handler init returned an error, the error was checked and the code jumped to the error handler, where it's looping quietly waiting for you to hit break, look at the stack trace, and see what caused the error.

    If you're stuck in the softdevice init and haven't even returned from that, the advertising stuff isn't really relevant as you won't have got to that point in the code. However if those are 3 custom services with full length UUIDs, there's no way they are going to fit in the advertising packet, and that will be the source of another error later.

Children
Related