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

fds_file_delete sdk14.1

Hi,i have some problems at fds in sdk14.1 ble_app_buttonless project.

1,fds_register() & fds_init();

2,fds_record_write();

3,fds_record_find();

4,printf the record.

5,fds_file_delete();

6,fds_gc();

7,fds_record_find();

8,printf the record.

int main(void)
{
bool erase_bonds;

// Initialize.
log_init();

#ifdef DEBUG_BY_LUOGF
NRF_LOG_INFO_LUOGF("log_init OK!\r\n");//DEBUG_BY_LUOGF
#endif

timers_init();
power_management_init();
buttons_leds_init(&erase_bonds);
ble_stack_init();
#ifdef DEBUG_BY_LUOGF
//NRF_LOG_PROCESS();
get_mac_addr(m_addl_adv_manuf_data);
NRF_LOG_INFO_LUOGF("Mac Address:%x %x %x %x %x %x!\r\n",m_addl_adv_manuf_data[0],m_addl_adv_manuf_data[1],m_addl_adv_manuf_data[2],m_addl_adv_manuf_data[3],m_addl_adv_manuf_data[4],m_addl_adv_manuf_data[5]);//DEBUG_BY_LUOGF
//NRF_LOG_PROCESS();
register_all_products();
NRF_LOG_INFO_LUOGF("register_all_products OK!\r\n");
//NRF_LOG_PROCESS();
data_handler_init(&m_mpbledemo2_handler,PRODUCT_TYPE_MPBLEDEMO2);
NRF_LOG_INFO_LUOGF("data_handler_init OK!\r\n");
//NRF_LOG_PROCESS();
APP_ERROR_CHECK(m_mpbledemo2_handler->m_data_init_func());
NRF_LOG_INFO_LUOGF("APP_ERROR_CHECK OK!\r\n");
//NRF_LOG_PROCESS();
#endif
peer_manager_init();
gap_params_init();
gatt_init();
advertising_init();
services_init();
#ifdef DEBUG_BY_LUOGF
wechat_services_init();
NRF_LOG_INFO_LUOGF("wechat_services_init OK!\r\n");
#endif
conn_params_init();

NRF_LOG_INFO("Application started\n");

// Start execution.
application_timers_start();
advertising_start(erase_bonds);

#ifdef DEBUG_BY_LUOGF
    user_rtc2_init();
    //NRF_LOG_PROCESS();
    user_rtc2_enable();
    //NRF_LOG_PROCESS();
    user_rtc2_disable();
    //NRF_LOG_PROCESS();

    user_fds_register();
    //NRF_LOG_PROCESS();
    user_fds_init();
    
    //NRF_LOG_PROCESS();
    //user_fds_record_find();
    //while(user_fds_init_flag == false);
    nrf_delay_ms(1000);

    user_fds_record_write_test_1();
    nrf_delay_ms(1000);
    user_fds_record_write_test_2();

    nrf_delay_ms(1000);
    //NRF_LOG_PROCESS();
#endif
// Enter main loop.
for (;;)
{
    if (NRF_LOG_PROCESS() == false)
    {
        #ifdef DEBUG_BY_LUOGF
        #else
        nrf_pwr_mgmt_run();
        #endif

    }
    #ifdef DEBUG_BY_LUOGF
    m_mpbledemo2_handler->m_data_main_process_func(&m_ble_wechat);
    if(record_find_flag == true)
    {
        //NRF_LOG_INFO_LUOGF("[1][uwf1 = %d][uwf2 = %d]",user_write_flag_1,user_write_flag_2);
        //while(!((user_write_flag_1 == true)&&(user_write_flag_1 == true)));
        //NRF_LOG_INFO_LUOGF("[2][uwf1 = %d][uwf2 = %d]",user_write_flag_1,user_write_flag_2);

        user_fds_record_find();
        #if 1
        for(uint8_t i=0;i<sizeof(user_fds_record_test_1);i++)
        {
            NRF_LOG_PROCESS();
            NRF_LOG_INFO_LUOGF("ut1[%d]= 0x%x]",i,user_fds_record_test_1[i]);
        }
        for(uint8_t i=0;i<sizeof(user_fds_record_test_2);i++)
        {
            NRF_LOG_PROCESS();
            NRF_LOG_INFO_LUOGF("ut2[%d]= 0x%x]",i,user_fds_record_test_2[i]);
        }
        #endif

        //user_fds_record_delete();
        user_fds_file_delete();
        nrf_delay_ms(5000);
        user_fds_gc();
        nrf_delay_ms(5000);
        //while(user_delete_flag == false);

        user_fds_record_find();
        nrf_delay_ms(1000);
        #if 1
        for(uint8_t i=0;i<sizeof(user_fds_record_test_1);i++)
        {
            NRF_LOG_PROCESS();
            NRF_LOG_INFO_LUOGF("ut1[%d]= 0x%x]",i,user_fds_record_test_1[i]);
        }
        for(uint8_t i=0;i<sizeof(user_fds_record_test_2);i++)
        {
            NRF_LOG_PROCESS();
            NRF_LOG_INFO_LUOGF("ut2[%d]= 0x%x]",i,user_fds_record_test_2[i]);
        }
        #endif
        record_find_flag = false;
    }
    
    #endif
}
}

void user_fds_init(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	ret_code_t ret = fds_init();
	if(ret != FDS_SUCCESS)
	{
		NRF_LOG_INFO_LUOGF("[%s][error]",__func__,ret);	
	}
	NRF_LOG_INFO_LUOGF("<<[%s][ret = 0x%x]",__func__,ret);
}

bool user_fds_init_flag = false;
bool user_write_flag_1 = false;
bool user_write_flag_2 = false;
bool user_delete_flag = false;

void user_fds_evt_handler(fds_evt_t const *p_fds_evt)
{
	NRF_LOG_INFO_LUOGF(">>[%s][p_fds_evt->id = 0x%x]",__func__,p_fds_evt->id);
	switch (p_fds_evt->id)
    {
        case FDS_EVT_INIT:
        NRF_LOG_INFO_LUOGF("[>>>>FDS_EVT_INIT]");
        if(p_fds_evt->result == FDS_SUCCESS)
        {
        	user_fds_init_flag = true;
        	NRF_LOG_INFO_LUOGF("[>>>>>>FDS_EVT_INIT]");
        }
        if (p_fds_evt->result != FDS_SUCCESS)
        {
        	// Initialization failed.
        	NRF_LOG_INFO_LUOGF("[%s][error = 0x%x]",__func__,p_fds_evt->result);
        }
        break;
        case FDS_EVT_WRITE:
        NRF_LOG_INFO_LUOGF(">>>>[FDS_EVT_WRITE]");
        if (p_fds_evt->result == FDS_SUCCESS)
        {
        	user_write_flag_1 = true;
        	user_write_flag_2 = true;
        	NRF_LOG_INFO_LUOGF(">>>>>>[FDS_EVT_WRITE]");
        }
        break;
        case FDS_EVT_UPDATE:
        NRF_LOG_INFO_LUOGF(">>>>[FDS_EVT_UPDATE]");
        break;
        case FDS_EVT_DEL_FILE:
        NRF_LOG_INFO_LUOGF(">>>>[FDS_EVT_DEL_FILE]");
        if (p_fds_evt->result == FDS_SUCCESS)
        {
        	// Initialization failed.
        	user_delete_flag = true;
        	NRF_LOG_INFO_LUOGF(">>>>>>[FDS_EVT_DEL_FILE]");
        }
        break;
        case FDS_EVT_GC:
        NRF_LOG_INFO_LUOGF(">>>>[FDS_EVT_GC]");
        break;
       	default:
        break;
    }
    NRF_LOG_INFO_LUOGF("<<[%s][p_fds_evt->id = 0x%x]",__func__,p_fds_evt->id);
}

void user_fds_register(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	ret_code_t ret = fds_register(user_fds_evt_handler);
	if(ret != FDS_SUCCESS)
	{
		NRF_LOG_INFO_LUOGF("[%s][error = 0x%x]",__func__,ret);	
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);

}



#define FILE_ID_1       0x0001  /* The ID of the file to write the records into. */
#define FILE_ID_2       0x0002
#define RECORD_KEY_1    0x1111  /* A key for the first record. */
#define RECORD_KEY_2    0x2222  /* A key for the second record. */
static uint32_t   const m_deadbeef = 0xDEADBEEF;
static char       const m_hello[]  = "Hello, world!";
fds_record_t        record;
fds_record_desc_t   record_desc;


void user_fds_record_write_test_1(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	// Set up record.
	record.file_id           = FILE_ID_1;
	record.key               = RECORD_KEY_1;
	record.data.p_data       = &m_deadbeef;
	record.data.length_words = 1;   /* one word is four bytes. */
	ret_code_t ret;
	ret = fds_record_write(&record_desc, &record);
	if (ret != FDS_SUCCESS)
	{
	    /* Handle error. */
	    NRF_LOG_INFO_LUOGF("[%s][error = 0x%x]",__func__,ret);
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);
}
void user_fds_record_write_test_2(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	// Set up record.
	record.file_id           = FILE_ID_2;
	record.key               = RECORD_KEY_2;
	record.data.p_data       = &m_hello;
	/* The following calculation takes into account any eventual remainder of the division. */
	record.data.length_words = (sizeof(m_hello) + 3) / 4;
	ret_code_t ret;
	ret = fds_record_write(&record_desc, &record);
	if (ret != FDS_SUCCESS)
	{
	    /* Handle error. */
	    NRF_LOG_INFO_LUOGF("[%s][error = 0x%x]",__func__,ret);
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);

}

//#define FILE_ID     0x1111
#define RECORD_KEY  0x1111//0x2222
fds_flash_record_t  flash_record;
fds_record_desc_t   record_desc_1;
fds_record_desc_t   record_desc_2;
fds_find_token_t    ftok_1;
fds_find_token_t    ftok_2;

uint8_t user_fds_record_test_1[64] = {0};
uint8_t user_fds_record_test_2[64] = {0};
void user_fds_record_find(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);	
	/* It is required to zero the token before first use. */
	memset(&ftok_1, 0x00, sizeof(fds_find_token_t));
	/* Loop until all records with the given key and file ID have been found. */
	while (fds_record_find(FILE_ID_1, RECORD_KEY_1, &record_desc_1, &ftok_1) == FDS_SUCCESS)
	{
	    if (fds_record_open(&record_desc_1, &flash_record) != FDS_SUCCESS)
	    {
	        /* Handle error. */
	        NRF_LOG_INFO_LUOGF("[%s][error_1]",__func__);
	    }
	    /* Access the record through the flash_record structure. */
	    
	    memset(user_fds_record_test_1,0,sizeof(user_fds_record_test_1));
	    memcpy(user_fds_record_test_1,flash_record.p_data,(flash_record.p_header->length_words * 4));

	    #if 0
	    for(uint8_t i=0;i<sizeof(user_fds_record_test);i++)
	    {
	    	NRF_LOG_PROCESS();
	    	NRF_LOG_INFO_LUOGF("ut[%d]= 0x%x]",i,user_fds_record_test[i]);
	    }
	    #endif
	    /* Close the record when done. */
	    if (fds_record_close(&record_desc_1) != FDS_SUCCESS)
	    {
	        /* Handle error. */
	        NRF_LOG_INFO_LUOGF("[%s][error_2]",__func__);
	    }
	}

	/* It is required to zero the token before first use. */
	memset(&ftok_2, 0x00, sizeof(fds_find_token_t));
	/* Loop until all records with the given key and file ID have been found. */
	while (fds_record_find(FILE_ID_2, RECORD_KEY_2, &record_desc_2, &ftok_2) == FDS_SUCCESS)
	{
	    if (fds_record_open(&record_desc_2, &flash_record) != FDS_SUCCESS)
	    {
	        /* Handle error. */
	        NRF_LOG_INFO_LUOGF("[%s][error_1]",__func__);
	    }
	    /* Access the record through the flash_record structure. */
	    
	    memset(user_fds_record_test_2,0,sizeof(user_fds_record_test_2));
	    memcpy(user_fds_record_test_2,flash_record.p_data,(flash_record.p_header->length_words * 4));

	    #if 0
	    for(uint8_t i=0;i<sizeof(user_fds_record_test);i++)
	    {
	    	NRF_LOG_PROCESS();
	    	NRF_LOG_INFO_LUOGF("ut[%d]= 0x%x]",i,user_fds_record_test[i]);
	    }
	    #endif
	    /* Close the record when done. */
	    if (fds_record_close(&record_desc_2) != FDS_SUCCESS)
	    {
	        /* Handle error. */
	        NRF_LOG_INFO_LUOGF("[%s][error_2]",__func__);
	    }
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);
}

fds_record_desc_t descriptor;
void user_fds_record_delete(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	/* Assume a descriptor returned by a call to fds_record_write() or fds_record_find(),
   	as shown in the previous example. */
   	descriptor = record_desc_1;
	ret_code_t ret = fds_record_delete(&descriptor);
	if (ret != FDS_SUCCESS)
	{
	    /* Error. */
	    NRF_LOG_INFO_LUOGF("[%s][error1 = 0x%x]",__func__,ret);
	}

	descriptor = record_desc_2;

	ret = fds_record_delete(&descriptor);
	if (ret != FDS_SUCCESS)
	{
	    /* Error. */
	    NRF_LOG_INFO_LUOGF("[%s][error2 = 0x%x]",__func__,ret);
	}
	//nrf_delay_ms(5000);
	user_fds_gc();
	//nrf_delay_ms(5000);
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);
}

void user_fds_file_delete(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	ret_code_t ret = fds_file_delete(FILE_ID_1);
	if (ret != FDS_SUCCESS)
	{
	    /* Error. */
	    NRF_LOG_INFO_LUOGF("[%s][error1 = 0x%x]",__func__,ret);
	}

	ret = fds_file_delete(FILE_ID_2);
	if (ret != FDS_SUCCESS)
	{
	    /* Error. */
	    NRF_LOG_INFO_LUOGF("[%s][error2 = 0x%x]",__func__,ret);
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);
}

void user_fds_gc(void)
{
	NRF_LOG_INFO_LUOGF(">>[%s]",__func__);
	ret_code_t ret = fds_gc();
	if(ret != FDS_SUCCESS)
	{
		NRF_LOG_INFO_LUOGF("[%s][error = 0x%x]",__func__,ret);	
	}
	NRF_LOG_INFO_LUOGF("<<[%s]",__func__);
}

Log shows the record in 4.after fds_file_delete() & fds_gc(), log also shows the record in 8. I do not know whether the record have been removed from flash ?

all the logs here:

    Process: JLinkExe
   <info> app: log_init OK!

   <warning> nrf_sdh_ble: RAM starts at 0x20002180, can be adjusted to 0x200020F0.
   <warning> nrf_sdh_ble: RAM size can be adjusted to 0xDF10.
   <info> app: Mac Address:CB 24 BD 37 BC 6C!

   <info> app: register_all_products OK!

   <info> app: data_handler_init OK!

   <info> app: APP_ERROR_CHECK OK!

   <info> app: wechat_services_init OK!

   <info> app: Application started

   <info> app: >>[user_rtc2_init][err_code = 0x0]
   <info> app: <<[user_rtc2_init][err_code = 0x0]
   <info> app: >>[user_rtc2_enable]
   <info> app: <<[user_rtc2_enable]
   <info> app: >>[user_rtc2_disable]
   <info> app: <<[user_rtc2_disable]
   <info> app: >>[user_fds_register]
   <info> app: <<[user_fds_register]
   <info> app: >>[user_fds_init]
   <info> app: <<[user_fds_init][ret = 0x0]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x0]
   <info> app: [>>>>FDS_EVT_INIT]
   <info> app: [>>>>>>FDS_EVT_INIT]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x0]
   <info> app: >>[user_fds_record_write_test_1]
   <info> app: <<[user_fds_record_write_test_1]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x1]
   <info> app: >>>>[FDS_EVT_WRITE]
   <info> app: >>>>>>[FDS_EVT_WRITE]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x1]
   <info> app: >>[user_fds_record_write_test_2]
   <info> app: <<[user_fds_record_write_test_2]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x1]
   <info> app: >>>>[FDS_EVT_WRITE]
   <info> app: >>>>>>[FDS_EVT_WRITE]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x1]
   <info> app: >>[user_fds_record_find]
   <info> app: <<[user_fds_record_find]
   <info> app: ut1[0]= 0xEF]
   <info> app: ut1[1]= 0xBE]
   <info> app: ut1[2]= 0xAD]
   <info> app: ut1[3]= 0xDE]
   <info> app: ut1[4]= 0x0]
   <info> app: ut1[5]= 0x0]
   <info> app: ut1[6]= 0x0]
   <info> app: ut1[7]= 0x0]
   <info> app: ut1[8]= 0x0]
   <info> app: ut1[9]= 0x0]
   <info> app: ut1[10]= 0x0]
   <info> app: ut1[11]= 0x0]
   <info> app: ut1[12]= 0x0]
   <info> app: ut1[13]= 0x0]
   <info> app: ut1[14]= 0x0]
   <info> app: ut1[15]= 0x0]
   <info> app: ut1[16]= 0x0]
   <info> app: ut1[17]= 0x0]
   <info> app: ut1[18]= 0x0]
   <info> app: ut1[19]= 0x0]
   <info> app: ut1[20]= 0x0]
   <info> app: ut1[21]= 0x0]
   <info> app: ut1[22]= 0x0]
   <info> app: ut1[23]= 0x0]
   <info> app: ut1[24]= 0x0]
   <info> app: ut1[25]= 0x0]
   <info> app: ut1[26]= 0x0]
   <info> app: ut1[27]= 0x0]
   <info> app: ut1[28]= 0x0]
   <info> app: ut1[29]= 0x0]
   <info> app: ut1[30]= 0x0]
   <info> app: ut1[31]= 0x0]
   <info> app: ut1[32]= 0x0]
   <info> app: ut1[33]= 0x0]
   <info> app: ut1[34]= 0x0]
   <info> app: ut1[35]= 0x0]
   <info> app: ut1[36]= 0x0]
   <info> app: ut1[37]= 0x0]
   <info> app: ut1[38]= 0x0]
   <info> app: ut1[39]= 0x0]
   <info> app: ut1[40]= 0x0]
   <info> app: ut1[41]= 0x0]
   <info> app: ut1[42]= 0x0]
   <info> app: ut1[43]= 0x0]
   <info> app: ut1[44]= 0x0]
   <info> app: ut1[45]= 0x0]
   <info> app: ut1[46]= 0x0]
   <info> app: ut1[47]= 0x0]
   <info> app: ut1[48]= 0x0]
   <info> app: ut1[49]= 0x0]
   <info> app: ut1[50]= 0x0]
   <info> app: ut1[51]= 0x0]
   <info> app: ut1[52]= 0x0]
   <info> app: ut1[53]= 0x0]
   <info> app: ut1[54]= 0x0]
   <info> app: ut1[55]= 0x0]
   <info> app: ut1[56]= 0x0]
   <info> app: ut1[57]= 0x0]
   <info> app: ut1[58]= 0x0]
   <info> app: ut1[59]= 0x0]
   <info> app: ut1[60]= 0x0]
   <info> app: ut1[61]= 0x0]
   <info> app: ut1[62]= 0x0]
   <info> app: ut1[63]= 0x0]
   <info> app: ut2[0]= 0x48]
   <info> app: ut2[1]= 0x65]
   <info> app: ut2[2]= 0x6C]
   <info> app: ut2[3]= 0x6C]
   <info> app: ut2[4]= 0x6F]
   <info> app: ut2[5]= 0x2C]
   <info> app: ut2[6]= 0x20]
   <info> app: ut2[7]= 0x77]
   <info> app: ut2[8]= 0x6F]
   <info> app: ut2[9]= 0x72]
   <info> app: ut2[10]= 0x6C]
   <info> app: ut2[11]= 0x64]
   <info> app: ut2[12]= 0x21]
   <info> app: ut2[13]= 0x0]
   <info> app: ut2[14]= 0x0]
   <info> app: ut2[15]= 0x0]
   <info> app: ut2[16]= 0x0]
   <info> app: ut2[17]= 0x0]
   <info> app: ut2[18]= 0x0]
   <info> app: ut2[19]= 0x0]
   <info> app: ut2[20]= 0x0]
   <info> app: ut2[21]= 0x0]
   <info> app: ut2[22]= 0x0]
   <info> app: ut2[23]= 0x0]
   <info> app: ut2[24]= 0x0]
   <info> app: ut2[25]= 0x0]
   <info> app: ut2[26]= 0x0]
   <info> app: ut2[27]= 0x0]
   <info> app: ut2[28]= 0x0]
   <info> app: ut2[29]= 0x0]
   <info> app: ut2[30]= 0x0]
   <info> app: ut2[31]= 0x0]
   <info> app: ut2[32]= 0x0]
   <info> app: ut2[33]= 0x0]
   <info> app: ut2[34]= 0x0]
   <info> app: ut2[35]= 0x0]
   <info> app: ut2[36]= 0x0]
   <info> app: ut2[37]= 0x0]
   <info> app: ut2[38]= 0x0]
   <info> app: ut2[39]= 0x0]
   <info> app: ut2[40]= 0x0]
   <info> app: ut2[41]= 0x0]
   <info> app: ut2[42]= 0x0]
   <info> app: ut2[43]= 0x0]
   <info> app: ut2[44]= 0x0]
   <info> app: ut2[45]= 0x0]
   <info> app: ut2[46]= 0x0]
   <info> app: ut2[47]= 0x0]
   <info> app: ut2[48]= 0x0]
   <info> app: ut2[49]= 0x0]
   <info> app: ut2[50]= 0x0]
   <info> app: ut2[51]= 0x0]
   <info> app: ut2[52]= 0x0]
   <info> app: ut2[53]= 0x0]
   <info> app: ut2[54]= 0x0]
   <info> app: ut2[55]= 0x0]
   <info> app: ut2[56]= 0x0]
   <info> app: ut2[57]= 0x0]
   <info> app: ut2[58]= 0x0]
   <info> app: ut2[59]= 0x0]
   <info> app: ut2[60]= 0x0]
   <info> app: ut2[61]= 0x0]
   <info> app: ut2[62]= 0x0]
   <info> app: ut2[63]= 0x0]

   <info> app: >>[user_fds_file_delete]
   <info> app: <<[user_fds_file_delete]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x4]
   <info> app: >>>>[FDS_EVT_DEL_FILE]
   <info> app: >>>>>>[FDS_EVT_DEL_FILE]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x4]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x4]
   <info> app: >>>>[FDS_EVT_DEL_FILE]
   <info> app: >>>>>>[FDS_EVT_DEL_FILE]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x4]
   <info> app: >>[user_fds_gc]
   <info> app: <<[user_fds_gc]
   <info> app: >>[user_fds_evt_handler][p_fds_evt->id = 0x5]
   <info> app: >>>>[FDS_EVT_GC]
   <info> app: <<[user_fds_evt_handler][p_fds_evt->id = 0x5]
   <info> app: >>[user_fds_record_find]
   <info> app: <<[user_fds_record_find]
   <info> app: ut1[0]= 0xEF]
   <info> app: ut1[1]= 0xBE]
   <info> app: ut1[2]= 0xAD]
   <info> app: ut1[3]= 0xDE]
   <info> app: ut1[4]= 0x0]
   <info> app: ut1[5]= 0x0]
   <info> app: ut1[6]= 0x0]
   <info> app: ut1[7]= 0x0]
   <info> app: ut1[8]= 0x0]
   <info> app: ut1[9]= 0x0]
   <info> app: ut1[10]= 0x0]
   <info> app: ut1[11]= 0x0]
   <info> app: ut1[12]= 0x0]
   <info> app: ut1[13]= 0x0]
   <info> app: ut1[14]= 0x0]
   <info> app: ut1[15]= 0x0]
   <info> app: ut1[16]= 0x0]
   <info> app: ut1[17]= 0x0]
   <info> app: ut1[18]= 0x0]
   <info> app: ut1[19]= 0x0]
   <info> app: ut1[20]= 0x0]
   <info> app: ut1[21]= 0x0]
   <info> app: ut1[22]= 0x0]
   <info> app: ut1[23]= 0x0]
   <info> app: ut1[24]= 0x0]
   <info> app: ut1[25]= 0x0]
   <info> app: ut1[26]= 0x0]
   <info> app: ut1[27]= 0x0]
   <info> app: ut1[28]= 0x0]
   <info> app: ut1[29]= 0x0]
   <info> app: ut1[30]= 0x0]
   <info> app: ut1[31]= 0x0]
   <info> app: ut1[32]= 0x0]
   <info> app: ut1[33]= 0x0]
   <info> app: ut1[34]= 0x0]
   <info> app: ut1[35]= 0x0]
   <info> app: ut1[36]= 0x0]
   <info> app: ut1[37]= 0x0]
   <info> app: ut1[38]= 0x0]
   <info> app: ut1[39]= 0x0]
   <info> app: ut1[40]= 0x0]
   <info> app: ut1[41]= 0x0]
   <info> app: ut1[42]= 0x0]
   <info> app: ut1[43]= 0x0]
   <info> app: ut1[44]= 0x0]
   <info> app: ut1[45]= 0x0]
   <info> app: ut1[46]= 0x0]
   <info> app: ut1[47]= 0x0]
   <info> app: ut1[48]= 0x0]
   <info> app: ut1[49]= 0x0]
   <info> app: ut1[50]= 0x0]
   <info> app: ut1[51]= 0x0]
   <info> app: ut1[52]= 0x0]
   <info> app: ut1[53]= 0x0]
   <info> app: ut1[54]= 0x0]
   <info> app: ut1[55]= 0x0]
   <info> app: ut1[56]= 0x0]
   <info> app: ut1[57]= 0x0]
   <info> app: ut1[58]= 0x0]
   <info> app: ut1[59]= 0x0]
   <info> app: ut1[60]= 0x0]
   <info> app: ut1[61]= 0x0]
   <info> app: ut1[62]= 0x0]
   <info> app: ut1[63]= 0x0]
   <info> app: ut2[0]= 0x48]
   <info> app: ut2[1]= 0x65]
   <info> app: ut2[2]= 0x6C]
   <info> app: ut2[3]= 0x6C]
   <info> app: ut2[4]= 0x6F]
   <info> app: ut2[5]= 0x2C]
   <info> app: ut2[6]= 0x20]
   <info> app: ut2[7]= 0x77]
   <info> app: ut2[8]= 0x6F]
   <info> app: ut2[9]= 0x72]
   <info> app: ut2[10]= 0x6C]
   <info> app: ut2[11]= 0x64]
   <info> app: ut2[12]= 0x21]
   <info> app: ut2[13]= 0x0]
   <info> app: ut2[14]= 0x0]
   <info> app: ut2[15]= 0x0]
   <info> app: ut2[16]= 0x0]
   <info> app: ut2[17]= 0x0]
   <info> app: ut2[18]= 0x0]
   <info> app: ut2[19]= 0x0]
   <info> app: ut2[20]= 0x0]
   <info> app: ut2[21]= 0x0]
   <info> app: ut2[22]= 0x0]
   <info> app: ut2[23]= 0x0]
   <info> app: ut2[24]= 0x0]
   <info> app: ut2[25]= 0x0]
   <info> app: ut2[26]= 0x0]
   <info> app: ut2[27]= 0x0]
   <info> app: ut2[28]= 0x0]
   <info> app: ut2[29]= 0x0]
   <info> app: ut2[30]= 0x0]
   <info> app: ut2[31]= 0x0]
   <info> app: ut2[32]= 0x0]
   <info> app: ut2[33]= 0x0]
   <info> app: ut2[34]= 0x0]
   <info> app: ut2[35]= 0x0]
   <info> app: ut2[36]= 0x0]
   <info> app: ut2[37]= 0x0]
   <info> app: ut2[38]= 0x0]
   <info> app: ut2[39]= 0x0]
   <info> app: ut2[40]= 0x0]
   <info> app: ut2[41]= 0x0]
   <info> app: ut2[42]= 0x0]
   <info> app: ut2[43]= 0x0]
   <info> app: ut2[44]= 0x0]
   <info> app: ut2[45]= 0x0]
   <info> app: ut2[46]= 0x0]
   <info> app: ut2[47]= 0x0]
   <info> app: ut2[48]= 0x0]
   <info> app: ut2[49]= 0x0]
   <info> app: ut2[50]= 0x0]
   <info> app: ut2[51]= 0x0]
   <info> app: ut2[52]= 0x0]
   <info> app: ut2[53]= 0x0]
   <info> app: ut2[54]= 0x0]
   <info> app: ut2[55]= 0x0]
   <info> app: ut2[56]= 0x0]
   <info> app: ut2[57]= 0x0]
   <info> app: ut2[58]= 0x0]
   <info> app: ut2[59]= 0x0]
   <info> app: ut2[60]= 0x0]
   <info> app: ut2[61]= 0x0]
   <info> app: ut2[62]= 0x0]
   <info> app: ut2[63]= 0x0]
Related