00001 #ifndef _GCODE_PARSE_H
00002 #define _GCODE_PARSE_H
00003
00004 #include <stdint.h>
00005
00006 #include "dda.h"
00007
00008
00009
00010
00011
00012
00013
00014
00018 typedef struct {
00019 uint32_t mantissa;
00020 uint8_t exponent :7;
00021 uint8_t sign :1;
00022 } decfloat;
00023
00025 typedef struct {
00026 union {
00027 struct {
00028 uint8_t seen_G :1;
00029 uint8_t seen_M :1;
00030 uint8_t seen_X :1;
00031 uint8_t seen_Y :1;
00032 uint8_t seen_Z :1;
00033 uint8_t seen_E :1;
00034 uint8_t seen_F :1;
00035 uint8_t seen_S :1;
00036
00037 uint8_t seen_P :1;
00038 uint8_t seen_T :1;
00039 uint8_t seen_N :1;
00040 uint8_t seen_checksum :1;
00041 uint8_t seen_semi_comment :1;
00042 uint8_t seen_parens_comment :1;
00043 uint8_t option_relative :1;
00044 uint8_t option_inches :1;
00045 };
00046 uint16_t flags;
00047 };
00048
00049 uint8_t G;
00050 uint8_t M;
00051 TARGET target;
00052
00053 int16_t S;
00054 uint16_t P;
00055
00056 uint8_t T;
00057
00058 uint32_t N;
00059 uint32_t N_expected;
00060
00061 uint8_t checksum_read;
00062 uint8_t checksum_calculated;
00063 } GCODE_COMMAND;
00064
00066 extern GCODE_COMMAND next_target;
00067
00069 void gcode_parse_char(uint8_t c);
00070
00071
00072 void request_resend(void);
00073
00074 #endif