| 712 | } |
| 713 | |
| 714 | static const struct at_urc *get_urc_obj(at_client_t client) |
| 715 | { |
| 716 | rt_size_t i, j, prefix_len, suffix_len; |
| 717 | rt_size_t bufsz; |
| 718 | char *buffer = RT_NULL; |
| 719 | const struct at_urc *urc = RT_NULL; |
| 720 | struct at_urc_table *urc_table = RT_NULL; |
| 721 | |
| 722 | if (client->urc_table == RT_NULL) |
| 723 | { |
| 724 | return RT_NULL; |
| 725 | } |
| 726 | |
| 727 | buffer = client->recv_line_buf; |
| 728 | bufsz = client->recv_line_len; |
| 729 | |
| 730 | for (i = 0; i < client->urc_table_size; i++) |
| 731 | { |
| 732 | for (j = 0; j < client->urc_table[i].urc_size; j++) |
| 733 | { |
| 734 | urc_table = client->urc_table + i; |
| 735 | urc = urc_table->urc + j; |
| 736 | |
| 737 | prefix_len = rt_strlen(urc->cmd_prefix); |
| 738 | suffix_len = rt_strlen(urc->cmd_suffix); |
| 739 | if (bufsz < prefix_len + suffix_len) |
| 740 | { |
| 741 | continue; |
| 742 | } |
| 743 | if ((prefix_len ? !rt_strncmp(buffer, urc->cmd_prefix, prefix_len) : 1) |
| 744 | && (suffix_len ? !rt_strncmp(buffer + bufsz - suffix_len, urc->cmd_suffix, suffix_len) : 1)) |
| 745 | { |
| 746 | return urc; |
| 747 | } |
| 748 | } |
| 749 | } |
| 750 | |
| 751 | return RT_NULL; |
| 752 | } |
| 753 | |
| 754 | static rt_err_t at_client_getchar(at_client_t client, char *ch) |
| 755 | { |
no test coverage detected