Skip to content

Commit affb874

Browse files
committed
Fix AVR examples to safe RAM memory and allows build for tiny targets
1 parent a584df1 commit affb874

4 files changed

Lines changed: 43 additions & 35 deletions

File tree

examples/avr/basic_usage/build/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ build: $(PRJ).bin
156156
# Target: make clean (remove all previously builds)
157157
clean:
158158
rm -rf $(BUILDDIR)/obj
159+
rm -rf $(BUILDDIR)/*.o
159160
rm -f $(BUILDDIR)/*.su
160161
rm -f $(BUILDDIR)/$(PRJ).elf
161162
rm -f $(BUILDDIR)/$(PRJ).hex

examples/avr/basic_usage/src/main.cpp

Lines changed: 24 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
// Device/Framework Headers
4141
#include <avr/io.h>
42+
#include <avr/pgmspace.h>
4243

4344
// Project Headers
4445
#include "constants.h"
@@ -87,7 +88,7 @@ int main(void)
8788

8889
// CLI init to use Serial as interface
8990
Cli.setup(&Serial);
90-
Cli.printf("\nCommand Line Interface is ready\n\n");
91+
Cli.printf(PSTR("\nCommand Line Interface is ready\n\n"));
9192

9293
while (1)
9394
{
@@ -97,19 +98,20 @@ int main(void)
9798
if(Cli.manage(&cli_read))
9899
{
99100
// Show read result element
100-
Cli.printf("Command received: %s\n", cli_read.cmd);
101-
Cli.printf("Number of arguments: %d\n", (int)(cli_read.argc));
101+
Cli.printf(PSTR("Command received: %s\n"), cli_read.cmd);
102+
Cli.printf(PSTR("Number of arguments: %d\n"), (int)(cli_read.argc));
102103
for(int i = 0; i < cli_read.argc; i++)
103-
Cli.printf(" Argument %d: %s", i, cli_read.argv[i]);
104-
Cli.printf("\n");
104+
Cli.printf(PSTR(" Argument %d: %s"), i, cli_read.argv[i]);
105+
Cli.printf(PSTR("\n"));
105106

106107
// Handle Commands
107108
if(strcmp(cli_read.cmd, "help") == 0)
108109
{
109-
Cli.printf("Available Commands:\n");
110-
Cli.printf(" help - Current info.\n");
111-
Cli.printf(" led [on/off] - Turn LED ON or OFF.\n");
112-
Cli.printf(" version - Shows current firmware version.\n");
110+
Cli.printf(PSTR("Available Commands:\n"));
111+
Cli.printf(PSTR(" help - Current info.\n"));
112+
Cli.printf(PSTR(" led [on/off] - Turn LED ON or OFF.\n"));
113+
Cli.printf( \
114+
PSTR(" version - Shows current firmware version.\n"));
113115
}
114116
else if(strcmp(cli_read.cmd, "led") == 0)
115117
{
@@ -124,29 +126,32 @@ int main(void)
124126
led_mode = cli_read.argv[0];
125127
if(strcmp(led_mode, "on") == 0)
126128
{
127-
Cli.printf("Turning LED ON.\n");
129+
Cli.printf(PSTR("Turning LED ON.\n"));
128130
led_on();
129131
}
130132
else if(strcmp(led_mode, "off") == 0)
131133
{
132-
Cli.printf("Turning LED OFF.\n");
134+
Cli.printf(PSTR("Turning LED OFF.\n"));
133135
led_off();
134136
}
135137
else
136138
invalid_argv = true;
137139
}
138140

139141
if(invalid_argv)
140-
Cli.printf("led command needs \"on\" or \"off\" arg.\n");
142+
{
143+
Cli.printf( \
144+
PSTR("led command needs \"on\" or \"off\" arg.\n"));
145+
}
141146
}
142-
else if(strcmp(cli_read.cmd, "version") == 0)
147+
else if(strcmp(cli_read.cmd, PSTR("version")) == 0)
143148
{
144-
Cli.printf("FW App Version: %s\n", FW_APP_VERSION);
149+
Cli.printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
145150
}
146151
// ...
147152
else
148-
Cli.printf("Unkown command.\n");
149-
Cli.printf("\n");
153+
Cli.printf(PSTR("Unkown command.\n"));
154+
Cli.printf(PSTR("\n"));
150155
}
151156
}
152157
}
@@ -156,17 +161,17 @@ int main(void)
156161
/* LED Functions */
157162

158163
// Set LED Pin as digital Output
159-
static void led_init(void)
164+
void led_init(void)
160165
{
161166
DDR(COMMAND_LED_PORT) |= (1 << COMMAND_LED_PIN);
162167
}
163168

164-
static void led_on(void)
169+
void led_on(void)
165170
{
166171
COMMAND_LED_PORT |= (1 << COMMAND_LED_PIN);
167172
}
168173

169-
static void led_off(void)
174+
void led_off(void)
170175
{
171176
COMMAND_LED_PORT &= ~(1 << COMMAND_LED_PIN);
172177
}

examples/avr/basic_usage_callbacks/build/Makefile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,7 @@ build: $(PRJ).bin
156156
# Target: make clean (remove all previously builds)
157157
clean:
158158
rm -rf $(BUILDDIR)/obj
159+
rm -rf $(BUILDDIR)/*.o
159160
rm -f $(BUILDDIR)/*.su
160161
rm -f $(BUILDDIR)/$(PRJ).elf
161162
rm -f $(BUILDDIR)/$(PRJ).hex

examples/avr/basic_usage_callbacks/src/main.cpp

Lines changed: 17 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939

4040
// Device/Framework Headers
4141
#include <avr/io.h>
42+
#include <avr/pgmspace.h>
4243

4344
// Project Headers
4445
#include "constants.h"
@@ -80,8 +81,8 @@ void led_off(void);
8081
// CLI command "help" callback function
8182
void cmd_help(int argc, char* argv[]);
8283

83-
// CLI command "test" callback function
84-
void cmd_test(int argc, char* argv[]);
84+
// CLI command "led" callback function
85+
void cmd_led(int argc, char* argv[]);
8586

8687
// CLI command "version" callback function
8788
void cmd_version(int argc, char* argv[]);
@@ -105,14 +106,14 @@ int main(void)
105106
Cli.setup(&Serial);
106107

107108
// Add commands and bind callbacks to them
108-
Cli.add_cmd("led", &cmd_test, "led [on/off], Turn LED ON or OFF..");
109-
Cli.add_cmd("version", &cmd_version, "Shows current firmware version.");
109+
Cli.add_cmd("led", &cmd_led, PSTR("led [on/off], Turn LED ON or OFF.."));
110+
Cli.add_cmd("version", &cmd_version, PSTR("Shows current firmware version."));
110111

111112
// The "help" command is already builtin and available from the CLI, and it
112113
// will shows added command descriptions, but you can setup a custom one
113-
Cli.add_cmd("help", &cmd_help, "Shows program help information.");
114+
Cli.add_cmd("help", &cmd_help, PSTR("Shows program help information."));
114115

115-
Cli.printf("\nCommand Line Interface is ready\n\n");
116+
Cli.printf(PSTR("\nCommand Line Interface is ready\n\n"));
116117

117118
while (1)
118119
{
@@ -128,8 +129,8 @@ int main(void)
128129
void cmd_help(int argc, char* argv[])
129130
{
130131
// Show some Info text
131-
Cli.printf("\nCustom Help Command\n");
132-
Cli.printf("MINBASECLI basic_usage_callbacks %s\n", FW_APP_VERSION);
132+
Cli.printf(PSTR("\nCustom Help Command\n"));
133+
Cli.printf(PSTR("MINBASECLI basic_usage_callbacks %s\n"), FW_APP_VERSION);
133134

134135
// Call the builtin "help" function to show added command descriptions
135136
Cli.cmd_help(argc, argv);
@@ -146,27 +147,27 @@ void cmd_led(int argc, char* argv[])
146147
char* test_mode = argv[0];
147148
if(strcmp(test_mode, "on") == 0)
148149
{
149-
Cli.printf("Turning LED ON.\n");
150+
Cli.printf(PSTR("Turning LED ON.\n"));
150151
led_on();
151152
}
152153
else if(strcmp(test_mode, "off") == 0)
153154
{
154-
Cli.printf("Turning LED OFF.\n");
155+
Cli.printf(PSTR("Turning LED OFF.\n"));
155156
led_off();
156157
}
157158
else
158159
invalid_argv = true;
159160
}
160161

161162
if(invalid_argv)
162-
Cli.printf("led command needs \"on\" or \"off\" arg.\n");
163+
Cli.printf(PSTR("led command needs \"on\" or \"off\" arg.\n"));
163164

164-
Cli.printf("\n");
165+
Cli.printf(PSTR("\n"));
165166
}
166167

167168
void cmd_version(int argc, char* argv[])
168169
{
169-
Cli.printf("FW App Version: %s\n", FW_APP_VERSION);
170+
Cli.printf(PSTR("FW App Version: %s\n"), FW_APP_VERSION);
170171
}
171172

172173

@@ -175,17 +176,17 @@ void cmd_version(int argc, char* argv[])
175176
/* LED Functions */
176177

177178
// Set LED Pin as digital Output
178-
static void led_init(void)
179+
void led_init(void)
179180
{
180181
DDR(COMMAND_LED_PORT) |= (1 << COMMAND_LED_PIN);
181182
}
182183

183-
static void led_on(void)
184+
void led_on(void)
184185
{
185186
COMMAND_LED_PORT |= (1 << COMMAND_LED_PIN);
186187
}
187188

188-
static void led_off(void)
189+
void led_off(void)
189190
{
190191
COMMAND_LED_PORT &= ~(1 << COMMAND_LED_PIN);
191192
}

0 commit comments

Comments
 (0)