strstr failure?

取消
显示结果 
显示  仅  | 搜索替代 
您的意思是: 

strstr failure?

935 次查看
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

标签 (1)
0 项奖励
回复
2 回复数

805 次查看
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 项奖励
回复

805 次查看
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 项奖励
回复