blob: d84fd6362e23c29821f0adfafe1c9b3a12d2457a [file] [log] [blame]
llbd9cc172022-12-30 16:36:18 +08001#ifndef _ATCI_AT_UTIL_H_
2#define _ATCI_AT_UTIL_H_
3
4#define SYS_SUCC 0
5#define SYS_FAIL -1
6
7typedef enum {
8 ATCI_SPACE = ' ',
9 ATCI_EQUAL = '=',
10 ATCI_COMMA = ',',
11 ATCI_SEMICOLON = ';',
12 ATCI_COLON = ':',
13 ATCI_AT = '@',
14 ATCI_HAT = '^',
15 ATCI_MONEY = '$',
16 ATCI_DOUBLE_QUOTE = '"',
17 ATCI_QUESTION_MARK = '?',
18 ATCI_EXCLAMATION_MARK = '!',
19 ATCI_FORWARD_SLASH = '/',
20 ATCI_L_ANGLE_BRACKET = '<',
21 ATCI_R_ANGLE_BRACKET = '>',
22 ATCI_R_BRACKET = ')',
23 ATCI_L_BRACKET = '(',
24 ATCI_L_SQ_BRACKET = '[',
25 ATCI_R_SQ_BRACKET = ']',
26 ATCI_L_CURLY_BRACKET = '{',
27 ATCI_R_CURLY_BRACKET = '}',
28 ATCI_CHAR_STAR = '*',
29 ATCI_CHAR_POUND = '#',
30 ATCI_CHAR_AMPSAND = '&',
31 ATCI_CHAR_PERCENT = '%',
32 ATCI_CHAR_PLUS = '+',
33 ATCI_CHAR_MINUS = '-',
34 ATCI_CHAR_DOT = '.',
35 ATCI_CHAR_ULINE = '_',
36 ATCI_CHAR_TILDE = '~',
37 ATCI_CHAR_REVERSE_SOLIDUS = '\\',
38 ATCI_CHAR_VERTICAL_LINE = '|',
39 ATCI_END_CHAR = '\0',
40 ATCI_CR = '\r',
41 ATCI_LF = '\n',
42 ATCI_CHAR_0 = '0',
43 ATCI_CHAR_1 = '1',
44 ATCI_CHAR_2 = '2',
45 ATCI_CHAR_3 = '3',
46 ATCI_CHAR_4 = '4',
47 ATCI_CHAR_5 = '5',
48 ATCI_CHAR_6 = '6',
49 ATCI_CHAR_7 = '7',
50 ATCI_CHAR_8 = '8',
51 ATCI_CHAR_9 = '9',
52 ATCI_CHAR_A = 'A',
53 ATCI_CHAR_B = 'B',
54 ATCI_CHAR_C = 'C',
55 ATCI_CHAR_D = 'D',
56 ATCI_CHAR_E = 'E',
57 ATCI_CHAR_F = 'F',
58 ATCI_CHAR_G = 'G',
59 ATCI_CHAR_H = 'H',
60 ATCI_CHAR_I = 'I',
61 ATCI_CHAR_J = 'J',
62 ATCI_CHAR_K = 'K',
63 ATCI_CHAR_L = 'L',
64 ATCI_CHAR_M = 'M',
65 ATCI_CHAR_N = 'N',
66 ATCI_CHAR_O = 'O',
67 ATCI_CHAR_P = 'P',
68 ATCI_CHAR_Q = 'Q',
69 ATCI_CHAR_R = 'R',
70 ATCI_CHAR_S = 'S',
71 ATCI_CHAR_T = 'T',
72 ATCI_CHAR_U = 'U',
73 ATCI_CHAR_V = 'V',
74 ATCI_CHAR_W = 'W',
75 ATCI_CHAR_X = 'X',
76 ATCI_CHAR_Y = 'Y',
77 ATCI_CHAR_Z = 'Z',
78 ATCI_CHAR_a = 'a',
79 ATCI_CHAR_b = 'b',
80 ATCI_CHAR_c = 'c',
81 ATCI_CHAR_d = 'd',
82 ATCI_CHAR_e = 'e',
83 ATCI_CHAR_f = 'f',
84 ATCI_CHAR_g = 'g',
85 ATCI_CHAR_h = 'h',
86 ATCI_CHAR_i = 'i',
87 ATCI_CHAR_j = 'j',
88 ATCI_CHAR_k = 'k',
89 ATCI_CHAR_l = 'l',
90 ATCI_CHAR_m = 'm',
91 ATCI_CHAR_n = 'n',
92 ATCI_CHAR_o = 'o',
93 ATCI_CHAR_p = 'p',
94 ATCI_CHAR_q = 'q',
95 ATCI_CHAR_r = 'r',
96 ATCI_CHAR_s = 's',
97 ATCI_CHAR_t = 't',
98 ATCI_CHAR_u = 'u',
99 ATCI_CHAR_v = 'v',
100 ATCI_CHAR_w = 'w',
101 ATCI_CHAR_x = 'x',
102 ATCI_CHAR_y = 'y',
103 ATCI_CHAR_z = 'z',
104} atci_char_enum;
105
106typedef enum {
107 AT_WRONG_MODE, AT_SET_MODE, //Ex: at+eample=xxx
108 AT_READ_MODE, //Ex: at+eample?
109 AT_TEST_MODE, //Ex: at+eample=?
110 AT_ACTIVE_MODE //Ex: at+eample
111} atci_cmd_mode_e;
112
113#define ATCI_LOWER_TO_UPPER(alpha_char) (((alpha_char >= ATCI_CHAR_a)&&(alpha_char <= ATCI_CHAR_z)) ? (alpha_char-32): (alpha_char))
114#define ATCI_UPPER_TO_LOWER(alpha_char) (((alpha_char >= ATCI_CHAR_A)&&(alpha_char <= ATCI_CHAR_Z)) ? (alpha_char+32): (alpha_char))
115#define ATCI_IS_CAHR(input ,alpha_char) ((alpha_char == input)? 1 : 0)
116
117char* atci_get_cmd_prefix(char *line);
118int atci_get_cmd_mode(char *line);
119int atci_at_skip_space(char **p_cur);
120int atci_at_hasmore(char **p_cur);
121int atci_at_to_equal(char **p_cur);
122int atci_at_to_colon(char **p_cur);
123int atci_at_skip_next_comma(char **p_cur);
124int atci_at_get_nextint_base(char **p_cur, int *p_out, int base, int uns);
125int atci_at_get_nextint(char **p_cur, int *p_out);
126int atci_at_get_nexthexint(char **p_cur, int *p_out);
127int atci_at_get_next_key(char **p_cur, char **p_out);
128#endif