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

Establish Smart Phone Data Link from Mesh Proxy

Hi, 

Here I met a problem, please help.

I am using proxy.c to establish an data link with smartphone via mesh_GATT.

What I am doing is like this:

For TX ,

it is actually a service notification

1. I created a function to use proxy_connection,  I understand, only one connection permited.

static void send_data_to_smartphone(proxy_connection_t * p_connection)
{

__LOG(LOG_SRC_BEARER, LOG_LEVEL_INFO, "START TX\n");

proxy_enable();
if (packet_alloc(p_connection, MESH_GATT_PDU_TYPE_NETWORK_PDU, SEAT_BELT_PACKET_SIZE, NRF_MESH_SERVICE_BORDER_TOKEN) ==
NRF_SUCCESS)

{
memcpy(p_connection->p_alloc_packet, seat_belt_data.tx_data, sizeof(seat_belt_data.tx_data));
// memset(seat_belt_data.tx_data,0xFF,SEAT_BELT_PACKET_SIZE);
}

packet_send(p_connection);

}

2. I  called this function  in

" static void gatt_evt_handler(const mesh_gatt_evt_t * p_evt, void * p_context)"

at  position:

  case MESH_GATT_EVT_TYPE_TX_READY:
__LOG(LOG_SRC_BEARER, LOG_LEVEL_INFO, "TX ready\n");

send_data_to_smartphone(p_connection);
beacon_cycle_send(p_connection);
break;

3. Smartphone side: start nRF Connect

Result:   1)  from smartphone I can see data keep coming ,but it is not my data;

                2)  in debug process, 
__LOG(LOG_SRC_BEARER, LOG_LEVEL_INFO, "START TX\n");

     do not show up?


for RX

I follow  rx_handle function , 

case MESH_GATT_EVT_TYPE_RX:
__LOG(LOG_SRC_BEARER, LOG_LEVEL_INFO, "RX\n");
rx_handle(p_connection,
p_evt->params.rx.pdu_type,
p_evt->params.rx.p_data,
p_evt->params.rx.length);

to file "network .c", inside

uint32_t network_packet_in(const uint8_t * p_packet, uint32_t net_packet_len, const nrf_mesh_rx_metadata_t * p_rx_metadata)

I put :


#if GATT_PROXY
if(p_rx_metadata->source==NRF_MESH_RX_SOURCE_GATT)
{
__LOG(LOG_SRC_BEARER, LOG_LEVEL_INFO, "RX2_Start\n");
memcpy(seat_belt_data.rx_data,&net_decrypted_packet,sizeof(net_decrypted_packet));
}

try to memcopy the pocket arrive from  mesh GATT.

Result. 

1. smartphone side:  when I try to write data, the connection terminated immediately,.

2. in debug process,  I can not see any reaction , even log info.

Please help how to move at this point.

Thanks a lot.

Brent

Related