diff --git a/_locales/en/messages.json b/_locales/en/messages.json index 20c10653..14d554e8 100755 --- a/_locales/en/messages.json +++ b/_locales/en/messages.json @@ -139,8 +139,124 @@ "tabAuxiliary": { "message": "Modes" }, - - "serialPortOpened": { + "tabSitl": { + "message" : "SITL" + }, + "sitlDemoMode": { + "message": "Demo Mode" + }, + "sitlResetDemoModeData": { + "message": "Reset Demo Mode" + }, + "sitlOSNotSupported": { + "message": "SITL is not supported on this operating system." + }, + "sitlOptions": { + "message": "SITL Options" + }, + "sitlEnableSim": { + "message": "Enable simulator" + }, + "sitlSimulator": { + "message": "Simulator" + }, + "sitlUseImu": { + "message": "Use IMU" + }, + "sitlSimIP": { + "message" : "Simulator IP" + }, + "sitlPort": { + "message" : "Simulator Port" + }, + "sitlChannelMap": { + "message": "Channel Mapping" + }, + "sitlSimInput": { + "message": "Simulator Input" + }, + "sitlInavOutput": { + "message": "INAV Output" + }, + "sitlLog": { + "message": "Log" + }, + "sitlStart": { + "message": "Start" + }, + "sitlStop": { + "message": "Stop" + }, + "sitlStopped": { + "message": "SITL stopped\n" + }, + "sitlProfiles": { + "message": "SITL Profiles" + }, + "sitlNew": { + "message": "New" + }, + "sitlSave": { + "message": "Save" + }, + "sitlDelete": { + "message": "Delete" + }, + "sitlNewProfile": { + "message": "New SITL Profile" + }, + "sitlEnterName": { + "message": "(Profile name)" + }, + "sitlProfileExists": { + "message": "A profile with this name already exists." + }, + "sitlStdProfileCantDeleted": { + "message": "SITL standard profile can't be deleted." + }, + "sitlSerialToTCP": { + "message": "Serial to TCP (UART)" + }, + "sitlSerialProtocoll": { + "message": "Preset for RX Protocoll" + }, + "sitlSerialStopbits": { + "message": "Stopbits" + }, + "sitlSerialPort": { + "message": "Serial port" + }, + "sitlSerialTCPPort": { + "message": "TCP port" + }, + "sitlSerialParity": { + "message": "Parity" + }, + "sitlSerialTcpEnable": { + "message": "Enable" + }, + "sitlHelp": { + "message": "SITL (Software in the loop) allows to run INAV completely in software on the PC without using a flight controller and simulate complete FPV flights. For this, INAV is compiled with a normal PC compiler. The sensors are replaced by data provided by a simulator.
Currently supported are:
" + }, + "sitlProfilesHelp": { + "message": "Profiles are saved locally. The profiles contain not only all data of this tab, but also the configuration file (\"EEPROM\") of INAV itself." + }, + "sitlEnableSimulatorHelp": { + "message": "If this option is deactivated, only the Configurator can be used. Useful to configure INAV without having to start the simulator." + }, + "sitlUseImuHelp": { + "message": "Use IMU sensor data from the simulator instead of using attitude data from the simulator directly (Experimental, not recommended)." + }, + "sitlIpHelp": { + "message": "IP address of the computer on which the simulator is running. If the simulator is running on the same computer, leave it at \"127.0.0.1" + }, + "sitlPortHelp": { + "message": "Port number of the interface of the simulator. Note: The RealFlight port is fixed and cannot be changed." + }, + "sitlSer2TcpHelp": { + "message": "Devices with a UART interface can be used with SITL via a serial to USB interface. Especially intended for serial receivers to use the full number of channels. " + }, + "serialPortOpened": { "message": "MSP connection successfully opened with ID: $1" }, "serialPortOpenFail": { diff --git a/gulpfile.js b/gulpfile.js index 473a4d26..1f6e807d 100644 --- a/gulpfile.js +++ b/gulpfile.js @@ -136,6 +136,7 @@ sources.js = [ './js/waypoint.js', './node_modules/openlayers/dist/ol.js', './js/libraries/plotly-latest.min.js', + './js/sitl.js', ]; sources.receiverCss = [ @@ -252,6 +253,8 @@ gulp.task('dist-build', gulp.series('build', function() { './resources/models/*', './resources/osd/analogue/*.mcm', './resources/motor_order/*.svg', + './resources/sitl/windows/*', + './resources/sitl/linux/*' ]; return gulp.src(distSources, { base: '.' }) .pipe(gulp.dest(distDir)); @@ -268,7 +271,8 @@ gulp.task('apps', gulp.series('dist', function(done) { flavor: 'normal', macIcns: './images/inav.icns', winIco: './images/inav.ico', - version: get_nw_version() + version: get_nw_version(), + zip: false }); builder.on('log', console.log); builder.build(function (err) { diff --git a/images/icons/cf_icon_setup_white.svg b/images/icons/cf_icon_setup_white.svg index d79669da..7501a9f0 100644 --- a/images/icons/cf_icon_setup_white.svg +++ b/images/icons/cf_icon_setup_white.svg @@ -1,12 +1,16 @@ - + + + width="283.46px" height="141.73px" viewBox="0 0 283.46 141.73" enable-background="new 0 0 283.46 141.73" xml:space="preserve"> - + + + diff --git a/images/icons/cf_icon_sitl_grey.svg b/images/icons/cf_icon_sitl_grey.svg new file mode 100644 index 00000000..94072aca --- /dev/null +++ b/images/icons/cf_icon_sitl_grey.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/images/icons/cf_icon_sitl_white.svg b/images/icons/cf_icon_sitl_white.svg new file mode 100644 index 00000000..018a59f7 --- /dev/null +++ b/images/icons/cf_icon_sitl_white.svg @@ -0,0 +1,16 @@ + + + + + + + + + + diff --git a/images/inav.ico b/images/inav.ico index e180941b..24501afe 100644 Binary files a/images/inav.ico and b/images/inav.ico differ diff --git a/js/fc.js b/js/fc.js index be888d28..0deb5e8f 100644 --- a/js/fc.js +++ b/js/fc.js @@ -596,7 +596,8 @@ var FC = { 'NMEA', 'UBLOX', 'UBLOX7', - 'MSP' + 'MSP', + 'FAKE' ]; }, getGpsBaudRates: function () { diff --git a/js/gui.js b/js/gui.js index 94cbabe6..a2b8fa99 100644 --- a/js/gui.js +++ b/js/gui.js @@ -14,6 +14,7 @@ var GUI_control = function () { 'landing', 'firmware_flasher', 'mission_control', + 'sitl', 'help' ]; this.defaultAllowedTabsWhenConnected = [ diff --git a/js/port_handler.js b/js/port_handler.js index 58e464fd..26dd20d6 100755 --- a/js/port_handler.js +++ b/js/port_handler.js @@ -66,7 +66,7 @@ PortHandler.check = function () { chrome.storage.local.get('last_used_port', function (result) { // if last_used_port was set, we try to select it if (result.last_used_port) { - if (result.last_used_port == "ble" || result.last_used_port == "tcp" || result.last_used_port == "udp") { + if (result.last_used_port == "ble" || result.last_used_port == "tcp" || result.last_used_port == "udp" || result.last_used_port == "sitl" || result.last_used_port == "sitl-demo") { $('#port').val(result.last_used_port); } else { current_ports.forEach(function(port) { @@ -181,6 +181,8 @@ PortHandler.update_port_select = function (ports) { $('div#port-picker #port').append($("