2 This file is part of Smoothie (http://smoothieware.org/). The motion control part is heavily based on Grbl (https://github.com/simen/grbl).
3 Smoothie is free software: you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version.
4 Smoothie is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
5 You should have received a copy of the GNU General Public License along with Smoothie. If not, see <http://www.gnu.org/licenses/>.
8 #include "libs/Kernel.h"
9 #include "modules/tools/laser/Laser.h"
10 #include "modules/tools/extruder/Extruder.h"
11 #include "modules/tools/temperaturecontrol/TemperatureControlPool.h"
12 #include "modules/tools/endstops/Endstops.h"
13 #include "modules/tools/switch/SwitchPool.h"
14 #include "modules/robot/Conveyor.h"
15 #include "modules/utils/button/ButtonPool.h"
16 #include "modules/utils/simpleshell/SimpleShell.h"
17 #include "modules/utils/configurator/Configurator.h"
18 #include "modules/utils/currentcontrol/CurrentControl.h"
19 #include "modules/utils/player/Player.h"
20 #include "modules/utils/pausebutton/PauseButton.h"
21 #include "modules/utils/PlayLed/PlayLed.h"
22 // #include "libs/ChaNFSSD/SDFileSystem.h"
23 #include "libs/Config.h"
24 #include "libs/nuts_bolts.h"
25 #include "libs/utils.h"
28 #include "libs/SerialMessage.h"
30 #include "libs/USBDevice/USB.h"
31 #include "libs/USBDevice/USBMSD/USBMSD.h"
32 #include "libs/USBDevice/USBMSD/SDCard.h"
33 #include "libs/USBDevice/USBSerial/USBSerial.h"
34 #include "libs/USBDevice/DFU.h"
36 #include "libs/SDFAT.h"
38 #include "libs/Watchdog.h"
40 #define second_usb_serial_enable_checksum CHECKSUM("second_usb_serial_enable")
42 // Watchdog wd(5000000, WDT_MRI);
44 // #include "libs/USBCDCMSC/USBCDCMSC.h"
45 // SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC17xx specific : comment if you are not using a SD card ( for example with a mBed ).
46 SDCard
sd(P0_9
, P0_8
, P0_7
, P0_6
);
47 //LocalFileSystem local("local"); // LPC17xx specific : comment if you are not running a mBed
48 // USBCDCMSC cdcmsc(&sd); // LPC17xx specific : Composite serial + msc USB device
52 USBSerial
usbserial(&u
);
56 SDFAT
mounter("sd", &sd
);
70 // Default pins to low status
71 for (int i
= 0; i
< 5; i
++){
73 leds
[i
] = (i
& 1) ^ 1;
78 Kernel
* kernel
= new Kernel();
80 kernel
->streams
->printf("Smoothie ( grbl port ) version 0.7.2 \r\n");
82 // Create and add main modules
83 kernel
->add_module( new Laser() );
84 kernel
->add_module( new Extruder() );
85 kernel
->add_module( new SimpleShell() );
86 kernel
->add_module( new Configurator() );
87 kernel
->add_module( new CurrentControl() );
88 kernel
->add_module( new TemperatureControlPool() );
89 kernel
->add_module( new SwitchPool() );
90 kernel
->add_module( new ButtonPool() );
91 kernel
->add_module( new PauseButton() );
92 kernel
->add_module( new PlayLed() );
93 kernel
->add_module( new Endstops() );
94 kernel
->add_module( new Player() );
96 // Create and initialize USB stuff
98 kernel
->add_module( &msc
);
99 kernel
->add_module( &usbserial
);
100 if( kernel
->config
->value( second_usb_serial_enable_checksum
)->by_default(false)->as_bool() ){
101 kernel
->add_module( new USBSerial(&u
) );
103 kernel
->add_module( &dfu
);
104 kernel
->add_module( &u
);
108 kernel
->call_event(ON_MAIN_LOOP
);
109 kernel
->call_event(ON_IDLE
);