Skip to content

Commit 246d0ee

Browse files
authored
Merge pull request #8 from J-Rios/callbacks-this
Pointer to CLI in Command Callbacks
2 parents 2bf1842 + bea18a5 commit 246d0ee

28 files changed

Lines changed: 294 additions & 248 deletions

File tree

.gitignore

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,3 +9,7 @@
99
**/*.hex
1010
**/memory_ram.txt
1111
**/memory_program.txt
12+
13+
build/
14+
src/main.cpp
15+
src/main.c

.vscode/settings.json

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
{
2+
"editor.rulers": [ 79 ]
3+
}

examples/arduino/basic_usage/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ void setup()
7575
Serial.begin(SERIAL_BAUDS);
7676

7777
// CLI init to use Serial as interface
78-
Cli.setup(&Serial);
78+
Cli.setup(&Serial, SERIAL_BAUDS);
7979
Cli.printf(PSTR("\nCommand Line Interface is ready\n\n"));
8080
}
8181

examples/arduino/basic_usage_callbacks/src/main.cpp

Lines changed: 19 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -66,13 +66,13 @@ MINBASECLI Cli;
6666
/* Function Prototypes */
6767

6868
// CLI command "help" callback function
69-
void cmd_help(int argc, char* argv[]);
69+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[]);
7070

7171
// CLI command "led" callback function
72-
void cmd_led(int argc, char* argv[]);
72+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[]);
7373

7474
// CLI command "version" callback function
75-
void cmd_version(int argc, char* argv[]);
75+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[]);
7676

7777
/*****************************************************************************/
7878

@@ -88,12 +88,11 @@ void setup()
8888
Serial.begin(SERIAL_BAUDS);
8989

9090
// CLI init to use Serial as interface
91-
Cli.setup(&Serial);
91+
Cli.setup(&Serial, SERIAL_BAUDS);
9292

9393
// Add commands and bind callbacks to them
94-
Cli.add_cmd("led", &cmd_led, PSTR("led [on/off], Turn LED ON or OFF.."));
95-
Cli.add_cmd("version", &cmd_version,
96-
PSTR("Shows current firmware version."));
94+
Cli.add_cmd("led", &cmd_led, PSTR("led [on/off], Turn LED ON/OFF."));
95+
Cli.add_cmd("version", &cmd_version, PSTR("Shows firmware version."));
9796

9897
// The "help" command is already builtin and available from the CLI, and it
9998
// will shows added command descriptions, but you can setup a custom one
@@ -115,46 +114,46 @@ void loop()
115114

116115
/* CLI Commands Callbacks */
117116

118-
void cmd_help(int argc, char* argv[])
117+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[])
119118
{
120119
// Show some Info text
121-
Cli.printf(PSTR("\nCustom Help Command\n"));
122-
Cli.printf(PSTR("MINBASECLI basic_usage_callbacks %s\n"), FW_APP_VERSION);
120+
Cli->printf(PSTR("\nCustom Help Command\n"));
121+
Cli->printf(PSTR("MINBASECLI basic_usage_callbacks %s\n"), FW_APP_VERSION);
123122

124123
// Call the builtin "help" function to show added command descriptions
125-
Cli.cmd_help(argc, argv);
124+
Cli->cmd_help(argc, argv);
126125
}
127126

128-
void cmd_led(int argc, char* argv[])
127+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[])
129128
{
130129
bool invalid_argv = false;
131130

132131
if(argc == 0)
133-
invalid_argv = true;
132+
{ invalid_argv = true; }
134133
else
135134
{
136135
char* test_mode = argv[0];
137136
if(strcmp(test_mode, "on") == 0)
138137
{
139-
Cli.printf(PSTR("Turning LED ON.\n"));
138+
Cli->printf(PSTR("Turning LED ON.\n"));
140139
digitalWrite(COMMAND_LED, HIGH);
141140
}
142141
else if(strcmp(test_mode, "off") == 0)
143142
{
144-
Cli.printf(PSTR("Turning LED OFF.\n"));
143+
Cli->printf(PSTR("Turning LED OFF.\n"));
145144
digitalWrite(COMMAND_LED, LOW);
146145
}
147146
else
148-
invalid_argv = true;
147+
{ invalid_argv = true; }
149148
}
150149

151150
if(invalid_argv)
152-
Cli.printf(PSTR("led command needs \"on\" or \"off\" arg.\n"));
151+
{ Cli->printf(PSTR("led command needs \"on\" or \"off\" arg.\n")); }
153152

154-
Cli.printf(PSTR("\n"));
153+
Cli->printf(PSTR("\n"));
155154
}
156155

157-
void cmd_version(int argc, char* argv[])
156+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[])
158157
{
159-
Cli.printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
158+
Cli->printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
160159
}

examples/avr/basic_usage_callbacks/src/main.cpp

Lines changed: 16 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -60,14 +60,6 @@
6060

6161
/*****************************************************************************/
6262

63-
/* Global Elements */
64-
65-
AvrUart Serial(UART0, F_CPU);
66-
67-
MINBASECLI Cli;
68-
69-
/*****************************************************************************/
70-
7163
/* Function Prototypes */
7264

7365
// Initialize the LED (GPIO)
@@ -80,22 +72,22 @@ void led_on(void);
8072
void led_off(void);
8173

8274
// CLI command "help" callback function
83-
void cmd_help(int argc, char* argv[]);
75+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[]);
8476

8577
// CLI command "led" callback function
86-
void cmd_led(int argc, char* argv[]);
78+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[]);
8779

8880
// CLI command "version" callback function
89-
void cmd_version(int argc, char* argv[]);
81+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[]);
9082

9183
/*****************************************************************************/
9284

9385
/* Main Function */
9486

9587
int main(void)
9688
{
97-
// Command Line Interface
98-
MINBASECLI Cli;
89+
static AvrUart Serial(UART0, F_CPU);
90+
static MINBASECLI Cli;
9991

10092
// Set LED Pin as digital Output
10193
led_init();
@@ -127,17 +119,17 @@ int main(void)
127119

128120
/* CLI Commands Callbacks */
129121

130-
void cmd_help(int argc, char* argv[])
122+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[])
131123
{
132124
// Show some Info text
133-
Cli.printf(PSTR("\nCustom Help Command\n"));
134-
Cli.printf(PSTR("MINBASECLI basic_usage_callbacks %s\n"), FW_APP_VERSION);
125+
Cli->printf(PSTR("\nCustom Help Command\n"));
126+
Cli->printf(PSTR("MINBASECLI basic_usage_callbacks %s\n"), FW_APP_VERSION);
135127

136128
// Call the builtin "help" function to show added command descriptions
137-
Cli.cmd_help(argc, argv);
129+
Cli->cmd_help(argc, argv);
138130
}
139131

140-
void cmd_led(int argc, char* argv[])
132+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[])
141133
{
142134
bool invalid_argv = false;
143135

@@ -148,30 +140,29 @@ void cmd_led(int argc, char* argv[])
148140
char* test_mode = argv[0];
149141
if(strcmp(test_mode, "on") == 0)
150142
{
151-
Cli.printf(PSTR("Turning LED ON.\n"));
143+
Cli->printf(PSTR("Turning LED ON.\n"));
152144
led_on();
153145
}
154146
else if(strcmp(test_mode, "off") == 0)
155147
{
156-
Cli.printf(PSTR("Turning LED OFF.\n"));
148+
Cli->printf(PSTR("Turning LED OFF.\n"));
157149
led_off();
158150
}
159151
else
160152
invalid_argv = true;
161153
}
162154

163155
if(invalid_argv)
164-
Cli.printf(PSTR("led command needs \"on\" or \"off\" arg.\n"));
156+
Cli->printf(PSTR("led command needs \"on\" or \"off\" arg.\n"));
165157

166-
Cli.printf(PSTR("\n"));
158+
Cli->printf(PSTR("\n"));
167159
}
168160

169-
void cmd_version(int argc, char* argv[])
161+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[])
170162
{
171-
Cli.printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
163+
Cli->printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
172164
}
173165

174-
175166
/*****************************************************************************/
176167

177168
/* LED Functions */

examples/espidf/basic_usage/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ void th_cli_interpreter(void* arg)
157157
bool command_received = false;
158158

159159
// Setup Command Line Interface
160-
Cli.setup(MINBASECLI_DEFAULT_IFACE, MINBASECLI_DEFAULT_BAUDS);
160+
Cli.setup();
161161
ESP_LOGI(TAG, "Command Line Interface is ready");
162162
printf("\n\n");
163163

examples/espidf/basic_usage_callbacks/src/main.cpp

Lines changed: 32 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -68,12 +68,6 @@ static const char TAG[] = "Main";
6868

6969
/*****************************************************************************/
7070

71-
/* Global Elements */
72-
73-
static MINBASECLI Cli;
74-
75-
/*****************************************************************************/
76-
7771
/* Functions Prototypes */
7872

7973
// Main Function
@@ -88,12 +82,12 @@ void th_cli_interpreter(void* arg);
8882
void cli_interpreter(t_cli_result* cli_read);
8983

9084
// CLI command callback functions
91-
void cmd_help(int argc, char* argv[]);
92-
void cmd_heap(int argc, char* argv[]);
93-
void cmd_led(int argc, char* argv[]);
94-
void cmd_mac(int argc, char* argv[]);
95-
void cmd_reboot(int argc, char* argv[]);
96-
void cmd_version(int argc, char* argv[]);
85+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[]);
86+
void cmd_heap(MINBASECLI* Cli, int argc, char* argv[]);
87+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[]);
88+
void cmd_mac(MINBASECLI* Cli, int argc, char* argv[]);
89+
void cmd_reboot(MINBASECLI* Cli, int argc, char* argv[]);
90+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[]);
9791

9892
/*****************************************************************************/
9993

@@ -167,8 +161,10 @@ bool launch_threads(void)
167161
*/
168162
void th_cli_interpreter(void* arg)
169163
{
164+
MINBASECLI Cli;
165+
170166
// Setup Command Line Interface
171-
Cli.setup(MINBASECLI_DEFAULT_IFACE, MINBASECLI_DEFAULT_BAUDS);
167+
Cli.setup();
172168

173169
// Add commands and bind callbacks to them
174170
Cli.add_cmd("heap", &cmd_heap, "Show available HEAP memory.");
@@ -197,29 +193,29 @@ void th_cli_interpreter(void* arg)
197193

198194
/* CLI Commands Callbacks */
199195

200-
void cmd_help(int argc, char* argv[])
196+
void cmd_help(MINBASECLI* Cli, int argc, char* argv[])
201197
{
202198
// Show some Info text
203-
Cli.printf("\nCustom Help Command\n");
204-
Cli.printf("MINBASECLI basic_usage_callbacks %s\n", FW_APP_VERSION);
199+
Cli->printf("\nCustom Help Command\n");
200+
Cli->printf("MINBASECLI basic_usage_callbacks %s\n", FW_APP_VERSION);
205201

206202
// Call the builtin "help" function to show added command descriptions
207-
Cli.cmd_help(argc, argv);
203+
Cli->cmd_help(argc, argv);
208204
}
209205

210-
void cmd_heap(int argc, char* argv[])
206+
void cmd_heap(MINBASECLI* Cli, int argc, char* argv[])
211207
{
212208
uint32_t heap_available = esp_get_free_heap_size();
213209
uint32_t heap_in_available = esp_get_free_internal_heap_size();
214210
uint32_t heap_min_available = esp_get_minimum_free_heap_size();
215-
Cli.printf("Available heap: %" PRIu32 " bytes\n", heap_available);
216-
Cli.printf("Available internal heap: %" PRIu32 " bytes\n",
211+
Cli->printf("Available heap: %" PRIu32 " bytes\n", heap_available);
212+
Cli->printf("Available internal heap: %" PRIu32 " bytes\n",
217213
heap_in_available);
218-
Cli.printf("Minimum heap that has ever been available: " \
214+
Cli->printf("Minimum heap that has ever been available: " \
219215
"%" PRIu32 " bytes\n", heap_min_available);
220216
}
221217

222-
void cmd_led(int argc, char* argv[])
218+
void cmd_led(MINBASECLI* Cli, int argc, char* argv[])
223219
{
224220
bool invalid_argv = false;
225221

@@ -231,49 +227,49 @@ void cmd_led(int argc, char* argv[])
231227
char* test_mode = argv[0];
232228
if(strcmp(test_mode, "on") == 0)
233229
{
234-
Cli.printf("LED (pin %" PRIu8 "), ON\n", IO_LED);
230+
Cli->printf("LED (pin %" PRIu8 "), ON\n", IO_LED);
235231
gpio_set_level(IO_LED, 1);
236232
}
237233
else if(strcmp(test_mode, "off") == 0)
238234
{
239-
Cli.printf("LED (pin %" PRIu8 "), OFF\n", IO_LED);
235+
Cli->printf("LED (pin %" PRIu8 "), OFF\n", IO_LED);
240236
gpio_set_level(IO_LED, 0);
241237
}
242238
else
243239
invalid_argv = true;
244240
}
245241

246242
if(invalid_argv)
247-
Cli.printf("LED command needs \"on\" or \"off\" arg.");
243+
Cli->printf("LED command needs \"on\" or \"off\" arg.");
248244
}
249245

250-
void cmd_mac(int argc, char* argv[])
246+
void cmd_mac(MINBASECLI* Cli, int argc, char* argv[])
251247
{
252248
uint8_t mac_addr[6] = { 0 };
253249
ESP_ERROR_CHECK(esp_read_mac(mac_addr, ESP_MAC_WIFI_STA));
254-
Cli.printf("WiFi Station MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
250+
Cli->printf("WiFi Station MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
255251
mac_addr[0], mac_addr[1], mac_addr[2],
256252
mac_addr[3], mac_addr[4], mac_addr[5]);
257-
Cli.printf("WiFi SoftAP MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
253+
Cli->printf("WiFi SoftAP MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
258254
mac_addr[0], mac_addr[1], mac_addr[2],
259255
mac_addr[3], mac_addr[4], mac_addr[5]+1);
260-
Cli.printf("Bluetooth MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
256+
Cli->printf("Bluetooth MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
261257
mac_addr[0], mac_addr[1], mac_addr[2],
262258
mac_addr[3], mac_addr[4], mac_addr[5]+2);
263-
Cli.printf("Ethernet MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
259+
Cli->printf("Ethernet MAC: %02X:%02X:%02X:%02X:%02X:%02X\n",
264260
mac_addr[0], mac_addr[1], mac_addr[2],
265261
mac_addr[3], mac_addr[4], mac_addr[5]+3);
266262
}
267263

268-
void cmd_reboot(int argc, char* argv[])
264+
void cmd_reboot(MINBASECLI* Cli, int argc, char* argv[])
269265
{
270-
Cli.printf("Rebooting...\n");
271-
Cli.printf("\n--------------------------------\n\n");
266+
Cli->printf("Rebooting...\n");
267+
Cli->printf("\n--------------------------------\n\n");
272268
esp_restart();
273269
}
274270

275-
void cmd_version(int argc, char* argv[])
271+
void cmd_version(MINBASECLI* Cli, int argc, char* argv[])
276272
{
277-
Cli.printf("ESP-IDF Version: %s\n", esp_get_idf_version());
278-
Cli.printf("FW App Version: %s\n", FW_APP_VERSION);
273+
Cli->printf("ESP-IDF Version: %s\n", esp_get_idf_version());
274+
Cli->printf("FW App Version: %s\n", FW_APP_VERSION);
279275
}

examples/linux/basic_usage/src/main.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ int main()
6262
bool exit = false;
6363

6464
// Setup Command Line Interface
65-
Cli.setup(MINBASECLI_DEFAULT_IFACE, MINBASECLI_DEFAULT_BAUDS);
65+
Cli.setup();
6666
Cli.printf("\nCommand Line Interface is ready\n\n");
6767

6868
while(1)

0 commit comments

Comments
 (0)