|
@@ -254,6 +254,21 @@ void enquecommand(const char *cmd)
|
254
|
254
|
}
|
255
|
255
|
}
|
256
|
256
|
|
|
257
|
+void enquecommand_P(const char *cmd)
|
|
258
|
+{
|
|
259
|
+ if(buflen < BUFSIZE)
|
|
260
|
+ {
|
|
261
|
+ //this is dangerous if a mixing of serial and this happsens
|
|
262
|
+ strcpy_P(&(cmdbuffer[bufindw][0]),cmd);
|
|
263
|
+ SERIAL_ECHO_START;
|
|
264
|
+ SERIAL_ECHOPGM("enqueing \"");
|
|
265
|
+ SERIAL_ECHO(cmdbuffer[bufindw]);
|
|
266
|
+ SERIAL_ECHOLNPGM("\"");
|
|
267
|
+ bufindw= (bufindw + 1)%BUFSIZE;
|
|
268
|
+ buflen += 1;
|
|
269
|
+ }
|
|
270
|
+}
|
|
271
|
+
|
257
|
272
|
void setup_killpin()
|
258
|
273
|
{
|
259
|
274
|
#if( KILL_PIN>-1 )
|
|
@@ -362,7 +377,7 @@ void loop()
|
362
|
377
|
#ifdef SDSUPPORT
|
363
|
378
|
if(card.saving)
|
364
|
379
|
{
|
365
|
|
- if(strstr(cmdbuffer[bufindr],"M29") == NULL)
|
|
380
|
+ if(strstr_P(cmdbuffer[bufindr], PSTR("M29")) == NULL)
|
366
|
381
|
{
|
367
|
382
|
card.write_command(cmdbuffer[bufindr]);
|
368
|
383
|
SERIAL_PROTOCOLLNPGM(MSG_OK);
|
|
@@ -407,11 +422,11 @@ void get_command()
|
407
|
422
|
if(!comment_mode){
|
408
|
423
|
comment_mode = false; //for new command
|
409
|
424
|
fromsd[bufindw] = false;
|
410
|
|
- if(strstr(cmdbuffer[bufindw], "N") != NULL)
|
|
425
|
+ if(strchr(cmdbuffer[bufindw], 'N') != NULL)
|
411
|
426
|
{
|
412
|
427
|
strchr_pointer = strchr(cmdbuffer[bufindw], 'N');
|
413
|
428
|
gcode_N = (strtol(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL, 10));
|
414
|
|
- if(gcode_N != gcode_LastN+1 && (strstr(cmdbuffer[bufindw], "M110") == NULL) ) {
|
|
429
|
+ if(gcode_N != gcode_LastN+1 && (strstr_P(cmdbuffer[bufindw], PSTR("M110")) == NULL) ) {
|
415
|
430
|
SERIAL_ERROR_START;
|
416
|
431
|
SERIAL_ERRORPGM(MSG_ERR_LINE_NO);
|
417
|
432
|
SERIAL_ERRORLN(gcode_LastN);
|
|
@@ -421,7 +436,7 @@ void get_command()
|
421
|
436
|
return;
|
422
|
437
|
}
|
423
|
438
|
|
424
|
|
- if(strstr(cmdbuffer[bufindw], "*") != NULL)
|
|
439
|
+ if(strchr(cmdbuffer[bufindw], '*') != NULL)
|
425
|
440
|
{
|
426
|
441
|
byte checksum = 0;
|
427
|
442
|
byte count = 0;
|
|
@@ -453,7 +468,7 @@ void get_command()
|
453
|
468
|
}
|
454
|
469
|
else // if we don't receive 'N' but still see '*'
|
455
|
470
|
{
|
456
|
|
- if((strstr(cmdbuffer[bufindw], "*") != NULL))
|
|
471
|
+ if((strchr(cmdbuffer[bufindw], '*') != NULL))
|
457
|
472
|
{
|
458
|
473
|
SERIAL_ERROR_START;
|
459
|
474
|
SERIAL_ERRORPGM(MSG_ERR_NO_LINENUMBER_WITH_CHECKSUM);
|
|
@@ -462,7 +477,7 @@ void get_command()
|
462
|
477
|
return;
|
463
|
478
|
}
|
464
|
479
|
}
|
465
|
|
- if((strstr(cmdbuffer[bufindw], "G") != NULL)){
|
|
480
|
+ if((strchr(cmdbuffer[bufindw], 'G') != NULL)){
|
466
|
481
|
strchr_pointer = strchr(cmdbuffer[bufindw], 'G');
|
467
|
482
|
switch((int)((strtod(&cmdbuffer[bufindw][strchr_pointer - cmdbuffer[bufindw] + 1], NULL)))){
|
468
|
483
|
case 0:
|
|
@@ -517,7 +532,7 @@ void get_command()
|
517
|
532
|
int sec,min;
|
518
|
533
|
min=t/60;
|
519
|
534
|
sec=t%60;
|
520
|
|
- sprintf(time,"%i min, %i sec",min,sec);
|
|
535
|
+ sprintf_P(time, PSTR("%i min, %i sec"),min,sec);
|
521
|
536
|
SERIAL_ECHO_START;
|
522
|
537
|
SERIAL_ECHOLN(time);
|
523
|
538
|
LCD_MESSAGE(time);
|
|
@@ -561,11 +576,6 @@ long code_value_long()
|
561
|
576
|
return (strtol(&cmdbuffer[bufindr][strchr_pointer - cmdbuffer[bufindr] + 1], NULL, 10));
|
562
|
577
|
}
|
563
|
578
|
|
564
|
|
-bool code_seen(char code_string[]) //Return True if the string was found
|
565
|
|
-{
|
566
|
|
- return (strstr(cmdbuffer[bufindr], code_string) != NULL);
|
567
|
|
-}
|
568
|
|
-
|
569
|
579
|
bool code_seen(char code)
|
570
|
580
|
{
|
571
|
581
|
strchr_pointer = strchr(cmdbuffer[bufindr], code);
|
|
@@ -935,7 +945,7 @@ void process_commands()
|
935
|
945
|
int sec,min;
|
936
|
946
|
min=t/60;
|
937
|
947
|
sec=t%60;
|
938
|
|
- sprintf(time,"%i min, %i sec",min,sec);
|
|
948
|
+ sprintf_P(time, PSTR("%i min, %i sec"), min, sec);
|
939
|
949
|
SERIAL_ECHO_START;
|
940
|
950
|
SERIAL_ECHOLN(time);
|
941
|
951
|
LCD_MESSAGE(time);
|