strstr failure?

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

strstr failure?

405 Views
arielablumer
Contributor III

Hi,

 

I'm working on a platform w/ K66 as MCU and a GS2K device for WiFi connectiovity. Data, events and responses to commands are received in the K66 via UART. A driver parses the received buffer and forwards to RTCS/application.

It happens that the WiFi driver fails to identify events or responds. I added some debug info and it appears that strstr fails to detect strings in the received buffer.

Please find below the received buffer which was printed to log when a response was expected but driver failed to detect it.

 

buffer size is 106

10 13 10 58 106 49 188 67 1 16 0 1 0 0 0 0 0 0 32 70 72 70 65 69 66 69 69 67 65 67 65 67 65 67 65 67 65 67 65 67 65 67 65 67 65 67 65 67 65 65 65 0 0 32 0 1 65 84 43 87 82 83 83 73 61 63 13 13 10 45 50 50 13 10 79 75 13 10 10 13 10 65 84 43 87 82 83 83 73 61 63 13 13 10 45 50 50 13 10 79 75 13 10 10 13 10

 

The string I'm looking for is in the middle of the second line:

65 84 43 87 82 83 83 73 61 63 13 13 10 45 50 50 = AT+WRSSI=?

 

and the code is:

 

// parse the response at set an integer w/ the result

p_rssi_response = strstr((const char*)cmdRspBuff,(const char*)"AT+WRSSI=?");

 

  // if we got a valid response, parse it and set a decimal result on global DB

  // otherwise, rssi is set to 0, indicating the vale is invalid.

  if (NULL != p_rssi_response)

  {

       // Expected result is AT+WRSSI=?\r\r\n-63\r\nOK\r\n

       // Jump over the command and point to the response

       p_rssi_response += 14;

 

       for(i=0;i<2;i++)

       {

            rssi = (rssi* 10) + (p_rssi_response[i]-'0');

       }

  }

  GET_CUSTOM_CXT(priv)->rssi = -rssi;

  GS_DEBUG_PRINT(1, "RSSI %d p_rssi_response 0x%x\n", rssi, p_rssi_response);

 

Any idea what might be wrong here?

 

Thanks,

Ariela

Labels (1)
0 Kudos
2 Replies

275 Views
MarekTrmac
NXP Employee
NXP Employee

Hi Ariela,

in C language, strings are terminated using zero char(0) and function strstr() does not search beyond the end of string.

Regards

Marek

0 Kudos

275 Views
arielablumer
Contributor III

Note that strstr sometimes succeeds, when it does the string I'm looking for resides at the begining of the buffer, right after carrige retrun and line feed (13 & 10).

0 Kudos