int main() { // Kernel creates modules, and receives and dispatches events between them Kernel* kernel = new Kernel(); // Say hello ( TODO : Add back version and all ) kernel->streams->printf("Smoothie2 dev\n"); // Create and add main modules kernel->add_module( new Endstops() ); kernel->add_module( new Laser() ); // Create all Switch modules SwitchPool *sp= new SwitchPool(); sp->load_tools(); delete sp; // TOADDBACK // Create all TemperatureControl modules. Note order is important here must be after extruder so Tn as a parameter will get executed first // TemperatureControlPool *tp= new TemperatureControlPool(); // tp->load_tools(); // delete tp; // Clear the configuration cache as it is no longer needed kernel->config->config_cache_clear(); // Main loop while(1){ THEKERNEL->call_event(ON_MAIN_LOOP); THEKERNEL->call_event(ON_IDLE); } }
int main() { Kernel* kernel = new Kernel(); kernel->serial->printf("Smoothie ( grbl port ) version 0.6 \r\nstart\r\n"); kernel->add_module( new Laser(p21) ); kernel->add_module( new Extruder(p26,p27) ); kernel->add_module( new SimpleShell() ); kernel->add_module( new TemperatureControl() ); kernel->add_module( &cdcmsc ); while(1){ kernel->call_event(ON_MAIN_LOOP); } }
int main() { Kernel* kernel = new Kernel(); kernel->serial->printf("Smoothie ( grbl port ) version 0.6.1 \r\n"); kernel->add_module( new Laser(p21) ); kernel->add_module( new Extruder() ); kernel->add_module( new SimpleShell() ); kernel->add_module( new Configurator() ); kernel->add_module( new CurrentControl() ); kernel->add_module( new TemperatureControlPool() ); kernel->add_module( new PauseButton() ); kernel->add_module( &cdcmsc ); kernel->serial->printf("start\r\n"); while(1){ kernel->call_event(ON_MAIN_LOOP); kernel->call_event(ON_IDLE); } }
void init() { // Default pins to low status for (int i = 0; i < 5; i++){ leds[i].output(); leds[i]= 0; } #ifdef STEPTICKER_DEBUG_PIN stepticker_debug_pin.output(); stepticker_debug_pin= 0; #endif Kernel* kernel = new Kernel(); kernel->streams->printf("Smoothie Running @%ldMHz\r\n", SystemCoreClock / 1000000); Version version; kernel->streams->printf(" Build version %s, Build date %s\r\n", version.get_build(), version.get_build_date()); //some boards don't have leds.. TOO BAD! kernel->use_leds= !kernel->config->value( disable_leds_checksum )->by_default(false)->as_bool(); bool sdok= (sd.disk_initialize() == 0); if(!sdok) kernel->streams->printf("SDCard is disabled\r\n"); #ifdef DISABLEMSD // attempt to be able to disable msd in config if(sdok && !kernel->config->value( disable_msd_checksum )->by_default(false)->as_bool()){ // HACK to zero the memory USBMSD uses as it and its objects seem to not initialize properly in the ctor size_t n= sizeof(USBMSD); void *v = AHB0.alloc(n); memset(v, 0, n); // clear the allocated memory msc= new(v) USBMSD(&u, &sd); // allocate object using zeroed memory }else{ msc= NULL; kernel->streams->printf("MSD is disabled\r\n"); } #endif // Create and add main modules kernel->add_module( new SimpleShell() ); kernel->add_module( new Configurator() ); kernel->add_module( new CurrentControl() ); kernel->add_module( new PauseButton() ); kernel->add_module( new PlayLed() ); kernel->add_module( new Endstops() ); kernel->add_module( new Player() ); // these modules can be completely disabled in the Makefile by adding to EXCLUDE_MODULES #ifndef NO_TOOLS_SWITCH SwitchPool *sp= new SwitchPool(); sp->load_tools(); delete sp; #endif #ifndef NO_TOOLS_EXTRUDER // NOTE this must be done first before Temperature control so ToolManager can handle Tn before temperaturecontrol module does ExtruderMaker *em= new ExtruderMaker(); em->load_tools(); delete em; #endif #ifndef NO_TOOLS_TEMPERATURECONTROL // Note order is important here must be after extruder so Tn as a parameter will get executed first TemperatureControlPool *tp= new TemperatureControlPool(); tp->load_tools(); kernel->temperature_control_pool= tp; #else kernel->temperature_control_pool= new TemperatureControlPool(); // so we can get just an empty temperature control array #endif #ifndef NO_TOOLS_LASER kernel->add_module( new Laser() ); #endif #ifndef NO_TOOLS_SPINDLE kernel->add_module( new Spindle() ); #endif #ifndef NO_UTILS_PANEL kernel->add_module( new Panel() ); #endif #ifndef NO_TOOLS_TOUCHPROBE kernel->add_module( new Touchprobe() ); #endif #ifndef NO_TOOLS_ZPROBE kernel->add_module( new ZProbe() ); #endif #ifndef NO_TOOLS_SCARACAL kernel->add_module( new SCARAcal() ); #endif #ifndef NONETWORK kernel->add_module( new Network() ); #endif #ifndef NO_TOOLS_TEMPERATURESWITCH // Must be loaded after TemperatureControlPool kernel->add_module( new TemperatureSwitch() ); #endif #ifndef NO_TOOLS_DRILLINGCYCLES kernel->add_module( new Drillingcycles() ); #endif #ifndef NO_TOOLS_FILAMENTDETECTOR kernel->add_module( new FilamentDetector() ); #endif // Create and initialize USB stuff u.init(); #ifdef DISABLEMSD if(sdok && msc != NULL){ kernel->add_module( msc ); } #else kernel->add_module( &msc ); #endif kernel->add_module( &usbserial ); if( kernel->config->value( second_usb_serial_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new(AHB0) USBSerial(&u) ); } if( kernel->config->value( dfu_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new(AHB0) DFU(&u)); } kernel->add_module( &u ); // clear up the config cache to save some memory kernel->config->config_cache_clear(); if(kernel->use_leds) { // set some leds to indicate status... led0 init doe, led1 mainloop running, led2 idle loop running, led3 sdcard ok leds[0]= 1; // indicate we are done with init leds[3]= sdok?1:0; // 4th led inidicates sdcard is available (TODO maye should indicate config was found) } if(sdok) { // load config override file if present // NOTE only Mxxx commands that set values should be put in this file. The file is generated by M500 FILE *fp= fopen(kernel->config_override_filename(), "r"); if(fp != NULL) { char buf[132]; kernel->streams->printf("Loading config override file: %s...\n", kernel->config_override_filename()); while(fgets(buf, sizeof buf, fp) != NULL) { kernel->streams->printf(" %s", buf); if(buf[0] == ';') continue; // skip the comments struct SerialMessage message= {&(StreamOutput::NullStream), buf}; kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message); } kernel->streams->printf("config override file executed\n"); fclose(fp); } } THEKERNEL->step_ticker->start(); }
int main() { // Default pins to low status for (int i = 0; i < 5; i++){ leds[i].output(); leds[i] = (i & 1) ^ 1; } //bool sdok= (sd.disk_initialize() == 0); sd.disk_initialize(); Kernel* kernel = new Kernel(); kernel->streams->printf("Smoothie ( grbl port ) version 0.8.0-rc1 with new accel @%ldMHz\r\n", SystemCoreClock / 1000000); Version version; kernel->streams->printf(" Build version %s, Build date %s\r\n", version.get_build(), version.get_build_date()); // Create and add main modules kernel->add_module( new Laser() ); kernel->add_module( new Extruder() ); kernel->add_module( new SimpleShell() ); kernel->add_module( new Configurator() ); kernel->add_module( new CurrentControl() ); kernel->add_module( new TemperatureControlPool() ); kernel->add_module( new SwitchPool() ); kernel->add_module( new PauseButton() ); kernel->add_module( new PlayLed() ); kernel->add_module( new Endstops() ); kernel->add_module( new Player() ); kernel->add_module( new Panel() ); kernel->add_module( new Touchprobe() ); // Create and initialize USB stuff u.init(); //if(sdok) { // only do this if there is an sd disk // msc= new USBMSD(&u, &sd); // kernel->add_module( msc ); //} kernel->add_module( &msc ); kernel->add_module( &usbserial ); if( kernel->config->value( second_usb_serial_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new USBSerial(&u) ); } kernel->add_module( &dfu ); kernel->add_module( &u ); // clear up the config cache to save some memory kernel->config->config_cache_clear(); // Main loop while(1){ kernel->call_event(ON_MAIN_LOOP); kernel->call_event(ON_IDLE); } }
int main() { // Default pins to low status for (int i = 0; i < 5; i++){ leds[i].output(); leds[i] = (i & 1) ^ 1; } sd.disk_initialize(); Kernel* kernel = new Kernel(); kernel->streams->printf("Smoothie ( grbl port ) version 0.7.2 @%dMHz\r\n", SystemCoreClock / 1000000); // Create and add main modules kernel->add_module( new Laser() ); kernel->add_module( new Extruder() ); kernel->add_module( new SimpleShell() ); kernel->add_module( new Configurator() ); kernel->add_module( new CurrentControl() ); kernel->add_module( new TemperatureControlPool() ); kernel->add_module( new SwitchPool() ); kernel->add_module( new ButtonPool() ); kernel->add_module( new PauseButton() ); kernel->add_module( new PlayLed() ); kernel->add_module( new Endstops() ); kernel->add_module( new Player() ); // Create and initialize USB stuff u.init(); kernel->add_module( &msc ); kernel->add_module( &usbserial ); if( kernel->config->value( second_usb_serial_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new USBSerial(&u) ); } kernel->add_module( &dfu ); kernel->add_module( &u ); // Main loop while(1){ kernel->call_event(ON_MAIN_LOOP); kernel->call_event(ON_IDLE); } }
int main() { // Default pins to low status for (int i = 0; i < 5; i++){ leds[i].output(); leds[i]= 0; } Kernel* kernel = new Kernel(); kernel->streams->printf("Smoothie ( grbl port ) version 0.7.2 with new accel @%ldMHz\r\n", SystemCoreClock / 1000000); Version version; kernel->streams->printf(" Build version %s, Build date %s\r\n", version.get_build(), version.get_build_date()); //some boards don't have leds.. TOO BAD! kernel->use_leds= !kernel->config->value( disable_leds_checksum )->by_default(false)->as_bool(); // attempt to be able to disable msd in config // if(!kernel->config->value( disable_msd_checksum )->by_default(false)->as_bool()){ // msc= new USBMSD(&u, &sd); // }else{ // msc= NULL; // kernel->streams->printf("MSD is disabled\r\n"); // } bool sdok= (sd.disk_initialize() == 0); // Create and add main modules kernel->add_module( new Laser() ); kernel->add_module( new ExtruderMaker() ); kernel->add_module( new SimpleShell() ); kernel->add_module( new Configurator() ); kernel->add_module( new CurrentControl() ); kernel->add_module( new TemperatureControlPool() ); kernel->add_module( new SwitchPool() ); kernel->add_module( new PauseButton() ); kernel->add_module( new PlayLed() ); kernel->add_module( new Endstops() ); kernel->add_module( new Player() ); kernel->add_module( new Panel() ); kernel->add_module( new Touchprobe() ); // Create and initialize USB stuff u.init(); //if(sdok) { // only do this if there is an sd disk // msc= new USBMSD(&u, &sd); // kernel->add_module( msc ); //} // if(msc != NULL){ // kernel->add_module( msc ); // } kernel->add_module( &msc ); kernel->add_module( &usbserial ); if( kernel->config->value( second_usb_serial_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new USBSerial(&u) ); } kernel->add_module( &dfu ); kernel->add_module( &u ); // clear up the config cache to save some memory kernel->config->config_cache_clear(); if(kernel->use_leds) { // set some leds to indicate status... led0 init doe, led1 mainloop running, led2 idle loop running, led3 sdcard ok leds[0]= 1; // indicate we are done with init leds[3]= sdok?1:0; // 4th led inidicates sdcard is available (TODO maye should indicate config was found) } if(sdok) { // load config override file if present // NOTE only Mxxx commands that set values should be put in this file. The file is generated by M500 FILE *fp= fopen(kernel->config_override_filename(), "r"); if(fp != NULL) { char buf[132]; kernel->streams->printf("Loading config override file: %s...\n", kernel->config_override_filename()); while(fgets(buf, sizeof buf, fp) != NULL) { kernel->streams->printf(" %s", buf); if(buf[0] == ';') continue; // skip the comments struct SerialMessage message= {&(StreamOutput::NullStream), buf}; kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message); } kernel->streams->printf("config override file executed\n"); fclose(fp); } } uint16_t cnt= 0; // Main loop while(1){ if(kernel->use_leds) { // flash led 2 to show we are alive leds[1]= (cnt++ & 0x1000) ? 1 : 0; } kernel->call_event(ON_MAIN_LOOP); kernel->call_event(ON_IDLE); } }
void init() { // Default pins to low status for (int i = 0; i < 5; i++){ leds[i].output(); leds[i]= 0; } #ifdef STEPTICKER_DEBUG_PIN stepticker_debug_pin.output(); stepticker_debug_pin= 0; #endif Kernel* kernel = new Kernel(); kernel->streams->printf("Smoothie Running @%ldMHz\r\n", SystemCoreClock / 1000000); Version version; kernel->streams->printf(" Build version %s, Build date %s\r\n", version.get_build(), version.get_build_date()); #ifdef CNC kernel->streams->printf(" CNC Build\r\n"); #endif bool sdok= (sd.disk_initialize() == 0); if(!sdok) kernel->streams->printf("SDCard failed to initialize\r\n"); #ifdef NONETWORK kernel->streams->printf("NETWORK is disabled\r\n"); #endif #ifdef DISABLEMSD // attempt to be able to disable msd in config if(sdok && !kernel->config->value( disable_msd_checksum )->by_default(false)->as_bool()){ // HACK to zero the memory USBMSD uses as it and its objects seem to not initialize properly in the ctor size_t n= sizeof(USBMSD); void *v = AHB0.alloc(n); memset(v, 0, n); // clear the allocated memory msc= new(v) USBMSD(&u, &sd); // allocate object using zeroed memory }else{ msc= NULL; kernel->streams->printf("MSD is disabled\r\n"); } #endif // Create and add main modules kernel->add_module( new(AHB0) Player() ); kernel->add_module( new(AHB0) CurrentControl() ); kernel->add_module( new(AHB0) KillButton() ); kernel->add_module( new(AHB0) PlayLed() ); kernel->add_module( new(AHB0) Endstops() ); // these modules can be completely disabled in the Makefile by adding to EXCLUDE_MODULES #ifndef NO_TOOLS_SWITCH SwitchPool *sp= new SwitchPool(); sp->load_tools(); delete sp; #endif #ifndef NO_TOOLS_EXTRUDER // NOTE this must be done first before Temperature control so ToolManager can handle Tn before temperaturecontrol module does ExtruderMaker *em= new ExtruderMaker(); em->load_tools(); delete em; #endif #ifndef NO_TOOLS_TEMPERATURECONTROL // Note order is important here must be after extruder so Tn as a parameter will get executed first TemperatureControlPool *tp= new TemperatureControlPool(); tp->load_tools(); delete tp; #endif #ifndef NO_TOOLS_LASER kernel->add_module( new Laser() ); #endif #ifndef NO_TOOLS_SPINDLE kernel->add_module( new Spindle() ); #endif #ifndef NO_UTILS_PANEL kernel->add_module( new(AHB0) Panel() ); #endif #ifndef NO_TOOLS_ZPROBE kernel->add_module( new(AHB0) ZProbe() ); #endif #ifndef NO_TOOLS_SCARACAL kernel->add_module( new(AHB0) SCARAcal() ); #endif #ifndef NO_TOOLS_ROTARYDELTACALIBRATION kernel->add_module( new RotaryDeltaCalibration() ); #endif #ifndef NONETWORK kernel->add_module( new Network() ); #endif #ifndef NO_TOOLS_TEMPERATURESWITCH // Must be loaded after TemperatureControl kernel->add_module( new TemperatureSwitch() ); #endif #ifndef NO_TOOLS_DRILLINGCYCLES kernel->add_module( new Drillingcycles() ); #endif #ifndef NO_TOOLS_FILAMENTDETECTOR kernel->add_module( new FilamentDetector() ); #endif #ifndef NO_UTILS_MOTORDRIVERCONTROL kernel->add_module( new MotorDriverControl(0) ); #endif // Create and initialize USB stuff u.init(); #ifdef DISABLEMSD if(sdok && msc != NULL){ kernel->add_module( msc ); } #else kernel->add_module( &msc ); #endif kernel->add_module( &usbserial ); if( kernel->config->value( second_usb_serial_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new(AHB0) USBSerial(&u) ); } if( kernel->config->value( dfu_enable_checksum )->by_default(false)->as_bool() ){ kernel->add_module( new(AHB0) DFU(&u)); } // 10 second watchdog timeout (or config as seconds) float t= kernel->config->value( watchdog_timeout_checksum )->by_default(10.0F)->as_number(); if(t > 0.1F) { // NOTE setting WDT_RESET with the current bootloader would leave it in DFU mode which would be suboptimal kernel->add_module( new Watchdog(t*1000000, WDT_MRI)); // WDT_RESET)); kernel->streams->printf("Watchdog enabled for %f seconds\n", t); }else{ kernel->streams->printf("WARNING Watchdog is disabled\n"); } kernel->add_module( &u ); // memory before cache is cleared //SimpleShell::print_mem(kernel->streams); // clear up the config cache to save some memory kernel->config->config_cache_clear(); if(kernel->is_using_leds()) { // set some leds to indicate status... led0 init done, led1 mainloop running, led2 idle loop running, led3 sdcard ok leds[0]= 1; // indicate we are done with init leds[3]= sdok?1:0; // 4th led indicates sdcard is available (TODO maye should indicate config was found) } if(sdok) { // load config override file if present // NOTE only Mxxx commands that set values should be put in this file. The file is generated by M500 FILE *fp= fopen(kernel->config_override_filename(), "r"); if(fp != NULL) { char buf[132]; kernel->streams->printf("Loading config override file: %s...\n", kernel->config_override_filename()); while(fgets(buf, sizeof buf, fp) != NULL) { kernel->streams->printf(" %s", buf); if(buf[0] == ';') continue; // skip the comments struct SerialMessage message= {&(StreamOutput::NullStream), buf}; kernel->call_event(ON_CONSOLE_LINE_RECEIVED, &message); } kernel->streams->printf("config override file executed\n"); fclose(fp); } } // start the timers and interrupts THEKERNEL->step_ticker->start(); THEKERNEL->slow_ticker->start(); }