File: main.c

package info (click to toggle)
camv-rnd 1.1.6-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 3,824 kB
  • sloc: ansic: 35,928; sh: 686; makefile: 476; yacc: 110; awk: 3
file content (67 lines) | stat: -rw-r--r-- 1,450 bytes parent folder | download | duplicates (3)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#include <stdio.h>
#include "gcode_vm.h"
#include "gcode_exec.h"

gcode_prg_t prg;

static int ggetchar(gcode_prg_t *ctx)
{
	FILE *f = ctx->user_data;
	int chr = fgetc(f);
	return chr;
}

static int execute_code(gcode_prg_t *ctx, int code, double param)
{
	if (code == DO)
		printf("-- do\n");
	else
		printf("CALL %c %f\n", code, param);
	return 0;
}

static void error(gcode_prg_t *ctx, int runtime, const char *msg)
{
	fprintf(stderr, "g-code %s error:", runtime ? "runtime" : "compile");
	if (ctx->lineno >= 0) {
		fprintf(stderr, " (in N%d)\n", ctx->lineno);
		ctx->lineno = -1;
	}
	fprintf(stderr, "%s\n", msg);
}

static void travel(gcode_prg_t *prg, double x1, double y1, double z1, double x2, double y2, double z2)
{
	printf("TRAVEL %f;%f;%f -> %f;%f;%f\n", x1, y1, z1,  x2, y2, z2);
}

static void linear(gcode_prg_t *prg, double x1, double y1, double z1, double x2, double y2, double z2)
{
	printf("LINEAR %f;%f;%f -> %f;%f;%f\n", x1, y1, z1, x2, y2, z2);
}

static gcode_execute_op_t ops = {travel, linear};

int main(int argc, char *argv[])
{
	const char *fn = "a.gcode";
	FILE *fin = fopen(fn, "r");

	prg.get_char = ggetchar;
	prg.user_data = fin;
/*	prg.execute_code = execute_code;*/
	prg.error = error;
	if (gcodeparse(&prg) != 0)
		return 1;
	fclose(fin);

	printf("*** DUMP:\n");
	gcode_dump_prg("", &prg);

	printf("*** EXEC:\n");
	gcode_execute_init(&prg, &ops);
	gcode_execute(&prg);
	gcode_execute_uninit(&prg);

	return 0;
}