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]