/**
  * @brief          Poll AT command response.
  * @return         Size of AT command response.
  * @note           RAK_RECIEVE_DATA_CMD is excluded in the polling.
  */
int rakmgr_sockdata_poll_at_resp(void)
{
    rakmgr_sockdata_poll();
    
    do {
        const uint8_t *pat_in_src = NULL;
        const uint8_t *src = uCmdRspFrame.uCmdRspBuf;
        const uint8_t *src_end = uCmdRspFrame.uCmdRspBuf + uCmdRspFrame_len;
        const uint8_t *pat = RAK_END;
        const uint8_t *pat_end = pat + strlen(RAK_END);
        unsigned disp = 0;
        
        if (uCmdRspFrame_len > 2 && strncmp((const char *) uCmdRspFrame.uCmdRspBuf, "OK", 2) == 0) {
            disp = 2;
        }
        else if (uCmdRspFrame_len > 5 && strncmp((const char *) uCmdRspFrame.uCmdRspBuf, "ERROR", 5) == 0) {
            disp = 5;
        }
        
        // Exclude RAK_RECIEVE_DATA_CMD
        if (disp) {
            pat_in_src = find_pat(uCmdRspFrame.uCmdRspBuf + disp, src_end, pat, pat_end);
            if (pat_in_src) {
                return pat_in_src - src + (pat_end - pat);
            }
        }
    }
    while (0);
    
    return 0;
}
Exemplo n.º 2
0
int main()
{
	char text[] = "BACDGABCDA";
	char pat[] = "ABCD";
	find_pat(text,pat);
	return 0;
}