Example #1
0
void 
sim_main(void)
{
  sim_start();

  if (insn_sample_first[sample_OFF] && !sim_sample_off(insn_sample_first[sample_OFF]))
    return;

  if (insn_sample_first[sample_WARM] && !sim_sample_warmup(insn_sample_first[sample_WARM]))
    return;

  if (insn_sample_first[sample_ON] && !sim_sample_on(insn_sample_first[sample_ON]))
    return;

  if (insn_sample[sample_OFF] || insn_sample[sample_WARM] || insn_sample[sample_ON])
    {
      for (;;)
        {
          if (insn_sample[sample_OFF] && !sim_sample_off(insn_sample[sample_OFF]))
            return;
          
          if (insn_sample[sample_WARM] && !sim_sample_warmup(insn_sample[sample_WARM]))
            return;
          
          if (insn_sample[sample_ON] && !sim_sample_on(insn_sample[sample_ON]))
            return;
        }
    }
  
  /* simulate whatever is left */
  sim_sample_on(0);
}
Example #2
0
int main (int argc, char** argv)
{
  sim_start(argc, argv);
#else
int main (void)
{
#endif
	init();

	// main loop
	for (;;)
	{
		// if queue is full, no point in reading chars- host will just have to wait
    if (queue_full() == 0) {
      if (serial_rxchars() != 0) {
        uint8_t c = serial_popchar();
        gcode_parse_char(c);
      }

      #ifdef CANNED_CYCLE
        /**
          WARNING!

          This code works on a per-character basis.

          Any data received over serial WILL be randomly distributed through
          the canned gcode, and you'll have a big mess!

          The solution is to either store gcode parser state with each source,
          or only parse a line at a time.

          This will take extra ram, and may be out of scope for the Teacup
          project.

          If ever print-from-SD card is implemented, these changes may become
          necessary.
        */
        static uint32_t canned_gcode_pos = 0;

        gcode_parse_char(pgm_read_byte(&(canned_gcode_P[canned_gcode_pos])));

        canned_gcode_pos++;
        if (pgm_read_byte(&(canned_gcode_P[canned_gcode_pos])) == 0)
          canned_gcode_pos = 0;

      #endif /* CANNED_CYCLE */
		}

		clock();
	}
}