Vision Apps User Guide
app_cli.h
Go to the documentation of this file.
1 /*
2  *
3  * Copyright (c) 2018 Texas Instruments Incorporated
4  *
5  * All rights reserved not granted herein.
6  *
7  * Limited License.
8  *
9  * Texas Instruments Incorporated grants a world-wide, royalty-free, non-exclusive
10  * license under copyrights and patents it now or hereafter owns or controls to make,
11  * have made, use, import, offer to sell and sell ("Utilize") this software subject to the
12  * terms herein. With respect to the foregoing patent license, such license is granted
13  * solely to the extent that any such patent is necessary to Utilize the software alone.
14  * The patent license shall not apply to any combinations which include this software,
15  * other than combinations with devices manufactured by or for TI ("TI Devices").
16  * No hardware patent is licensed hereunder.
17  *
18  * Redistributions must preserve existing copyright notices and reproduce this license
19  * (including the above copyright notice and the disclaimer and (if applicable) source
20  * code license limitations below) in the documentation and/or other materials provided
21  * with the distribution
22  *
23  * Redistribution and use in binary form, without modification, are permitted provided
24  * that the following conditions are met:
25  *
26  * * No reverse engineering, decompilation, or disassembly of this software is
27  * permitted with respect to any software provided in binary form.
28  *
29  * * any redistribution and use are licensed by TI for use only with TI Devices.
30  *
31  * * Nothing shall obligate TI to provide you with source code for the software
32  * licensed and provided to you in object code.
33  *
34  * If software source code is provided to you, modification and redistribution of the
35  * source code are permitted provided that the following conditions are met:
36  *
37  * * any redistribution and use of the source code, including any resulting derivative
38  * works, are licensed by TI for use only with TI Devices.
39  *
40  * * any redistribution and use of any object code compiled from the source code
41  * and any resulting derivative works, are licensed by TI for use only with TI Devices.
42  *
43  * Neither the name of Texas Instruments Incorporated nor the names of its suppliers
44  *
45  * may be used to endorse or promote products derived from this software without
46  * specific prior written permission.
47  *
48  * DISCLAIMER.
49  *
50  * THIS SOFTWARE IS PROVIDED BY TI AND TI'S LICENSORS "AS IS" AND ANY EXPRESS
51  * OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
52  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
53  * IN NO EVENT SHALL TI AND TI'S LICENSORS BE LIABLE FOR ANY DIRECT, INDIRECT,
54  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
55  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
56  * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
57  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE
58  * OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED
59  * OF THE POSSIBILITY OF SUCH DAMAGE.
60  *
61  */
62 
63 #ifndef APP_CLI_H
64 #define APP_CLI_H
65 
66 #ifdef __cplusplus
67 extern "C" {
68 #endif
69 
70 #include <stdint.h>
71 
72 #define APP_CLI_MAX_PROMPT_NAME (16u)
73 
74 /* command handler callback */
75 typedef int32_t (*app_cli_cmd_handler_f)(int argc, char *argv[]);
76 
77 /* callback to write string to console device */
78 typedef int (*app_cli_device_send_string_f)(char *string, uint32_t max_size);
79 
80 /* callback to read string from console device */
81 typedef int (*app_cli_device_get_string_f)(char *string, uint32_t max_size, uint32_t *string_size);
82 
83 /* CLI init parameters */
84 typedef struct {
85  app_cli_device_send_string_f device_write; /* device specific callback to write string to device, by default appUartWriteString() is used */
86  app_cli_device_get_string_f device_read; /* device specific callback to read string from device, by default appUartReadString() is used */
87  char cli_prompt_name[APP_CLI_MAX_PROMPT_NAME]; /* CLI prompt name, by default "ti" will be used */
89 
90 /* set default parameters for CLI */
92 
93 /* init CLI */
95 
96 /* de-init CLI */
97 int32_t appCliDeInit();
98 
99 /* Register a handler for system command 'cmd'
100  * A system command is a command that can be invoked at point during application invokation
101  * ex, while a application use-case is running
102  */
103 int32_t appCliRegisterSystemCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler);
104 
105 /* Register a handler for application command 'cmd'
106  * Once a application command is invoke, additional application commands
107  * cannot be invoked until this application finishes execution.
108  * System commands and "Application sub-commands" can be invoked while
109  * a application is running.
110  * An application handler should register application specific sub-commands
111  * which can be invoked while a application runs
112  */
113 int32_t appCliRegisterAppCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler);
114 
115 /* Register a handler for application sub-commands 'cmd'
116  * This are commands specific to the currently running application
117  * ex, handler to stop current application would be different for different
118  * applications.
119  *
120  * This commands can be invoked only after a application command is executed
121  */
122 int32_t appCliRegisterAppSubCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler);
123 
124 /* waits to read input from user and invokes handler based on
125  the command that is entered.
126  After handling one command, the function returns.
127  If unsupport command is entered, function returns.
128  User should call this function in a loop to get the effect of a CLI.
129  If user enters 'exit', is_exit flag is set to 1
130  User can use this flag to break out of the loop.
131  */
132 int32_t appCliShowPrompt(uint32_t *is_exit);
133 
134 /* Show Cli Bannner */
135 void appCliShowBanner(void);
136 
137 #ifdef __cplusplus
138 }
139 #endif
140 
141 #endif /* APP_CLI_H */
142 
#define APP_CLI_MAX_PROMPT_NAME
Definition: app_cli.h:72
int(* app_cli_device_send_string_f)(char *string, uint32_t max_size)
Definition: app_cli.h:78
app_cli_device_send_string_f device_write
Definition: app_cli.h:85
int32_t appCliRegisterSystemCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler)
int32_t appCliDeInit()
int32_t appCliRegisterAppSubCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler)
int32_t appCliRegisterAppCmd(char *cmd, char *desc, app_cli_cmd_handler_f cmd_handler)
Definition: app_cli.h:84
int32_t(* app_cli_cmd_handler_f)(int argc, char *argv[])
Definition: app_cli.h:75
void appCliInitPrmSetDefault(app_cli_init_prm_t *)
int32_t appCliShowPrompt(uint32_t *is_exit)
int32_t appCliInit(app_cli_init_prm_t *)
int(* app_cli_device_get_string_f)(char *string, uint32_t max_size, uint32_t *string_size)
Definition: app_cli.h:81
void appCliShowBanner(void)
app_cli_device_get_string_f device_read
Definition: app_cli.h:86