RUI3 (RAK Unified Interface 3) - RAK4631
atcmd.h
Go to the documentation of this file.
1 #ifndef _ATCMD_H_
2 #define _ATCMD_H_
3 
4 #ifdef __cplusplus
5 extern "C" {
6 #endif
7 
8 #include <stdio.h>
9 #include <udrv_serial.h>
10 #include "atcmd_queue.h"
11 #include "atcmd_permission.h"
12 #ifdef RUI_BOOTLOADER
13 #include "app_uart.h"
14 extern int is_dfu_mode;
15 #endif
16 
17 
18 #ifdef RUI_BOOTLOADER
19 static void atcmd_printf(const char *fmt, ...) {
20  char print_buf[512];
21  va_list aptr;
22  va_start (aptr, fmt);
23  vsprintf (print_buf, fmt, aptr);
24  va_end (aptr);
25  for (int i = 0 ; i < strlen(print_buf); i++) {
26  while (app_uart_put(print_buf[i]) != NRF_SUCCESS);
27  }
28 }
29 #else
30 #define atcmd_printf(fmt, ...) udrv_serial_log_printf(fmt, ##__VA_ARGS__)
31 #endif
32 
33 #define MAX_CMD_LEN (32)
34 #define MAX_ARGUMENT 25
35 /* ATCMD PERMISSION */
36 typedef enum AT_PERM_{
37  ATCMD_PERM_WRITE = 1 << 0,
38  ATCMD_PERM_READ = 1 << 1,
43 
44 
45 /* Error code definition */
46 typedef enum AT_ERRNO_E_{
47  AT_OK = 0,
57 }AT_ERRNO_E;
58 
59 typedef struct _stParam
60 {
62  int argc;
63 } stParam;
64 
65 typedef int (*PF_handle) (SERIAL_PORT port, char* cmd, stParam *param);
66 typedef struct _at_cmd_info
67 {
68  char* atCmd;
70  uint8_t maxargu;
71  const char *CmdUsage;
72  uint8_t permission;
73 } at_cmd_info;
74 
75 typedef struct _at_cmd_cust_info
76 {
77  char* atCmd;
78  char* title;
80  uint8_t maxargu;
81  const char *CmdUsage;
82  uint8_t permission;
84 
85 uint32_t At_CmdGetTotalNum (void);
86 int At_Parser (SERIAL_PORT port, char *buff, int len);
87 void At_RespOK (char* pStr);
88 void StrToHex(uint8_t *pbDest, const char *pbSrc, int nLen);
89 uint8_t at_separate_param(const char *param, char **argv, uint32_t *argc);
90 uint8_t at_check_hex_param(const char *p_str, uint32_t str_len, uint8_t *p_hex);
91 uint8_t at_check_alphanumeric_param(const char *p_str, uint32_t str_len);
92 uint8_t at_check_hex_uint16(const char *p_str, uint16_t *value);
93 uint8_t at_check_hex_uint32(const char *p_str, uint32_t *value);
94 uint8_t at_check_digital_uint32_t(const char *p_str, uint32_t *value);
95 void update_permission();
96 uint8_t at_error_code_form_udrv(int8_t udrv_code);
97 #ifdef __cplusplus
98 }
99 #endif
100 
101 #endif
Definition: atcmd.h:38
Definition: atcmd.h:40
Definition: atcmd.h:59
char * atCmd
Definition: atcmd.h:77
struct _at_cmd_cust_info at_cmd_cust_info
char * title
Definition: atcmd.h:78
uint8_t permission
Definition: atcmd.h:82
enum AT_ERRNO_E_ AT_ERRNO_E
void StrToHex(uint8_t *pbDest, const char *pbSrc, int nLen)
char * atCmd
Definition: atcmd.h:68
Definition: atcmd.h:54
uint32_t At_CmdGetTotalNum(void)
PF_handle pfHandle
Definition: atcmd.h:79
uint8_t permission
Definition: atcmd.h:72
#define MAX_ARGUMENT
Definition: atcmd.h:34
uint8_t at_error_code_form_udrv(int8_t udrv_code)
uint8_t at_check_alphanumeric_param(const char *p_str, uint32_t str_len)
Definition: atcmd.h:51
int At_Parser(SERIAL_PORT port, char *buff, int len)
#define atcmd_printf(fmt,...)
Definition: atcmd.h:30
Definition: atcmd.h:48
uint8_t at_check_hex_uint32(const char *p_str, uint32_t *value)
Definition: atcmd.h:56
struct _stParam stParam
uint8_t maxargu
Definition: atcmd.h:70
Definition: atcmd.h:66
uint8_t at_check_digital_uint32_t(const char *p_str, uint32_t *value)
Provide a hardware independent serial driver layer for API layer to use.
const char * CmdUsage
Definition: atcmd.h:81
uint8_t at_separate_param(const char *param, char **argv, uint32_t *argc)
uint8_t maxargu
Definition: atcmd.h:80
Definition: atcmd.h:50
void update_permission()
int(* PF_handle)(SERIAL_PORT port, char *cmd, stParam *param)
Definition: atcmd.h:65
Definition: atcmd.h:37
Definition: atcmd.h:47
Definition: atcmd.h:75
uint8_t at_check_hex_uint16(const char *p_str, uint16_t *value)
Definition: atcmd.h:53
uint8_t at_check_hex_param(const char *p_str, uint32_t str_len, uint8_t *p_hex)
int argc
Definition: atcmd.h:62
Definition: atcmd.h:52
AT_ERRNO_E_
Definition: atcmd.h:46
Definition: atcmd.h:55
Definition: atcmd.h:41
struct _at_cmd_info at_cmd_info
AT_PERM_
Definition: atcmd.h:36
const char * CmdUsage
Definition: atcmd.h:71
PF_handle pfHandle
Definition: atcmd.h:69
enum _SERIAL_PORT SERIAL_PORT
char * argv[MAX_ARGUMENT]
Definition: atcmd.h:61
Definition: atcmd.h:49
enum AT_PERM_ AT_PERMISSION
void At_RespOK(char *pStr)
Definition: atcmd.h:39