f4exb
7688f187bc
REST API: config: use specialized ChannelWebAPIAdapter class similar to what has been done for devices
2019-08-05 00:10:56 +02:00
f4exb
a4007b762e
REST API: config: (6): config preset channel Rx adapters
2019-08-03 01:05:16 +02:00
f4exb
2274d20856
REST API: config: GET (5): all API supported channels refactoring to use static methods for settings GET. PUT. PATCH
2019-08-03 01:05:16 +02:00
f4exb
ef82b89182
REST API: config: GET (4): optimize channel settings API management and generally improve constedness
2019-08-03 01:05:16 +02:00
Martin Hauke
a1548333a7
Fix some typos
2019-07-22 23:14:23 +02:00
Davide Gerhard
2e04d2fe9d
fix windows code to build with MSVC
...
- remove __attribute__((unused)) not supported on MSVC
- remove __attribute((unused)) not supported on MSVC
- add symbol exports to RemoteDataReadQueue and RemoteDataQueue
- add export symbols to sdrsrv
2019-05-28 15:19:19 +02:00
Davide Gerhard
94d03f9004
remove useless CMAKE_CURRENT_BINARY_DIR
2019-05-21 20:19:30 +02:00
Davide Gerhard
23498ab24b
manage "correctly" plugins/pluginssrv folders
2019-05-21 20:19:25 +02:00
Davide Gerhard
dcfb7f6c97
cmake: full refactor to remove qmake and use cmake on all platforms
2019-05-21 20:19:25 +02:00
Davide Gerhard
fd642496b8
remove qmake project files
...
move to cmake only building system
2019-05-21 20:19:18 +02:00
f4exb
7e128335f1
Propagate change to channel UIs
2019-05-09 21:07:05 +02:00
f4exb
a5e9f251ef
Single channel API
2019-05-09 17:27:12 +02:00
f4exb
9e628917dc
Removed all obsolete references to devicesourceapi.h and devicesinkapi.h
2019-05-09 12:10:27 +02:00
f4exb
89e53cf179
Single DeviceAPI interface (1)
2019-05-08 22:11:53 +02:00
f4exb
54e46837dd
REST API: changed binary tx parameter to ternary direction parameter (0: rx, 1: tx, 2: any)
2019-05-07 14:43:38 +02:00
f4exb
d504b060f9
REST API: added missing bits in some modulators and demodulators for reverse API
2019-04-20 19:53:16 +02:00
f4exb
ef15157a50
Fixed incomplete copyright headers (1)
2019-04-11 06:39:30 +02:00
f4exb
4e4d293e01
Reverse API originator information: implemented in all channel Rx plugins
2019-03-25 13:53:48 +01:00
f4exb
66efc10006
Merge branch 'dev'
2018-12-28 11:08:44 +01:00
ZigaS
b743943c70
Update to Qt 5.12.0.
...
Project files with MacOS clang RPATH to use proper paths for shared objects.
Minor path updates in favor of loading plugin libs.
Deployment script packaging using Qt way(macdeployqt).
2018-12-27 09:48:30 +01:00
f4exb
d13fb41927
Reverse API: channels: updated plugin versions
2018-12-24 14:52:53 +01:00
f4exb
98ae61f4e0
Reverse API: BFM demod
2018-12-22 07:16:15 +01:00
f4exb
2e58818776
Reverse API: right click dialog on start/stop button. Apply to RTL-SDR
2018-12-17 00:34:14 +01:00
f4exb
0e75cc3709
Wndows builds: removed reference to now obsolete MinGW64 toolchain
2018-12-14 17:49:06 +01:00
f4exb
4a69a7d39f
Adaptation of cmake files to MSVC
2018-12-02 03:06:04 +01:00
f4exb
98a193e591
BFM demod: fixed iterator in RDS parser
2018-11-13 16:01:33 +01:00
f4exb
1dc466e604
Windows: MSVC2017: adapt channel analyzer, AM and ATV demods plugin modules
2018-11-13 16:02:26 +01:00
f4exb
dc2f25a00b
Windows: MSVC2017: fixed more attribute unused cases (1)
2018-11-13 00:45:03 +01:00
f4exb
5771ef4783
Foolproof AudioFifo to try fix issue #210 . Consequently removed useless timeout parameter on read and write methods
2018-09-12 15:30:53 +02:00
f4exb
f58cc3cc07
Renamed UDPSink to UDPSource
2018-09-11 22:36:16 +02:00
f4exb
f368c62329
Fixed power display going to floor value in some demods
2018-08-05 12:44:06 +02:00
Edouard GRIFFITHS
ea83e43d09
New Windows build
2018-07-11 18:05:05 +02:00
f4exb
d5f153ff75
Spectrum: added log/linear control
2018-07-04 23:11:28 +02:00
f4exb
5e1699c981
Bumped plugins version
2018-07-02 02:37:56 +02:00
f4exb
56e49baa3b
Spectrum averaging: fixed average (1)
2018-07-01 02:16:59 +02:00
f4exb
e9658e0346
Spectrum averaging (2): moving average
2018-06-30 22:30:42 +02:00
f4exb
1eb8716a9f
Fixes for Arch. Manual merge of pull request #183 . DATV demod: fixed some of ffmpeg deprecation warnings
2018-06-13 00:20:51 +02:00
f4exb
f76fafe826
Windows build fix
2018-06-10 12:17:26 +02:00
f4exb
1770192116
Server: added WFM demod plugin
2018-05-29 11:14:24 +02:00
f4exb
c31a34ea41
BFM demod: code cosmetic changes
2018-05-29 10:59:30 +02:00
f4exb
f11cda633d
BFM demod: fixed squelch to be compatible with server mode
2018-05-29 00:14:45 +02:00
f4exb
a8966789c0
Server: added BFM demod plugin
2018-05-28 11:52:24 +02:00
f4exb
e27ca22c86
BFM demod: fixed report mapper
2018-05-28 11:43:24 +02:00
f4exb
0c328546b0
WFM demod: implemeted WEB API
2018-05-25 10:08:47 +02:00
f4exb
c961fa368d
Web API: fixes in BFM demod and HackRF input
2018-05-25 02:02:21 +02:00
f4exb
72e58534e3
Web API: BFM and DSD demod fixes. SSB demod: change clipping limiter constants
2018-05-24 18:23:08 +02:00
f4exb
8d7b581879
BFM demod: implemeted WEB API
2018-05-23 14:56:29 +02:00
beta-tester
8dca2d7b28
uniformed date format in Broadcast FM Demod
2018-05-11 11:35:10 +02:00
f4exb
c43ecc8afe
Channel Rx plugins: use liberation font
2018-05-05 18:12:05 +02:00
f4exb
e206d65283
Merge pull request #162 from jigpu/spelling-fixes
...
Spelling fixes
2018-04-22 07:45:20 +02:00
f4exb
a099b05fb6
Merge pull request #164 from jigpu/memleak-fixes
...
Memleak fixes
2018-04-22 07:40:58 +02:00
Jason Gerecke
1eaae0de30
BFM demod: Delete the SpectrumVis when destroying BFMDemodGUI
...
Take care of a pair of memory leaks that occur when the BFM demod GUI
is closed.
==786== 19,952 (24 direct, 19,928 indirect) bytes in 1 blocks are definitely lost in loss record 7,065 of 7,081
==786== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==786== by 0x54C82ED: allocate (new_allocator.h:111)
==786== by 0x54C82ED: allocate (alloc_traits.h:436)
==786== by 0x54C82ED: _M_get_node (stl_list.h:383)
==786== by 0x54C82ED: _M_create_node<FFTWEngine::Plan* const&> (stl_list.h:572)
==786== by 0x54C82ED: _M_insert<FFTWEngine::Plan* const&> (stl_list.h:1801)
==786== by 0x54C82ED: push_back (stl_list.h:1118)
==786== by 0x54C82ED: FFTWEngine::configure(int, bool) (fftwengine.cpp:35)
==786== by 0x4F4590B: SpectrumVis::handleConfigure(int, int, FFTWindow::Function) (spectrumvis.cpp:206)
==786== by 0x4F459EE: SpectrumVis::handleMessage(Message const&) (spectrumvis.cpp:170)
==786== by 0x548346C: BasebandSampleSink::handleInputMessages() (basebandsamplesink.cpp:21)
==786== by 0x69E1615: QMetaObject::activate(QObject*, int, int, void**) (in /usr/lib/libQt5Core.so.5.10.1)
==786== by 0x5497D4B: MessageQueue::push(Message*, bool) (messagequeue.cpp:52)
==786== by 0x33F9D61A: BFMDemodGUI::BFMDemodGUI(PluginAPI*, DeviceUISet*, BasebandSampleSink*, QWidget*) (bfmdemodgui.cpp:352)
==786== by 0x33F9D985: BFMDemodGUI::create(PluginAPI*, DeviceUISet*, BasebandSampleSink*) (bfmdemodgui.cpp:50)
==786== by 0x33FB035D: non-virtual thunk to BFMPlugin::createRxChannelGUI(DeviceUISet*, BasebandSampleSink*) (bfmplugin.cpp:57)
==786== by 0x4F47F19: DeviceUISet::loadRxChannelSettings(Preset const*, PluginAPI*) (deviceuiset.cpp:201)
==786== by 0x4EA51EA: MainWindow::loadPresetSettings(Preset const*, int) (mainwindow.cpp:575)
==786== by 0x4EAC81B: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:176)
==786== by 0x10A49B: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==786== by 0x109B38: main (main.cpp:131)
==786==
==786== 54,096 (112 direct, 53,984 indirect) bytes in 1 blocks are definitely lost in loss record 7,075 of 7,081
==786== at 0x4C2D54F: operator new(unsigned long) (vg_replace_malloc.c:334)
==786== by 0x69E9162: QObject::QObject(QObject*) (in /usr/lib/libQt5Core.so.5.10.1)
==786== by 0x5497BEE: MessageQueue::MessageQueue(QObject*) (messagequeue.cpp:26)
==786== by 0x54834FF: BasebandSampleSink::BasebandSampleSink() (basebandsamplesink.cpp:6)
==786== by 0x4F45A29: SpectrumVis::SpectrumVis(float, GLSpectrum*) (spectrumvis.cpp:26)
==786== by 0x33F9D53C: BFMDemodGUI::BFMDemodGUI(PluginAPI*, DeviceUISet*, BasebandSampleSink*, QWidget*) (bfmdemodgui.cpp:342)
==786== by 0x33F9D985: BFMDemodGUI::create(PluginAPI*, DeviceUISet*, BasebandSampleSink*) (bfmdemodgui.cpp:50)
==786== by 0x33FB035D: non-virtual thunk to BFMPlugin::createRxChannelGUI(DeviceUISet*, BasebandSampleSink*) (bfmplugin.cpp:57)
==786== by 0x4F47F19: DeviceUISet::loadRxChannelSettings(Preset const*, PluginAPI*) (deviceuiset.cpp:201)
==786== by 0x4EA51EA: MainWindow::loadPresetSettings(Preset const*, int) (mainwindow.cpp:575)
==786== by 0x4EAC81B: MainWindow::MainWindow(qtwebapp::LoggerWithFile*, MainParser const&, QWidget*) (mainwindow.cpp:176)
==786== by 0x10A49B: runQtApplication(int, char**, qtwebapp::LoggerWithFile*) (main.cpp:120)
==786== by 0x109B38: main (main.cpp:131)
2018-04-21 18:56:21 -07:00
Jason Gerecke
141997475c
BFM demod: RDS demod: Initialize RDSDemod array elements
...
The m_parms.tot_errs array is not initialized prior to its first use
in the RDSDemod::biphase function. ASAN does not pick up on this
directly, but instead reports it as follows (note that ASAN fills
memory with 0xBE and -1094795586 is 0xBEBEBEBE):
./plugins/channelrx/demodbfm/rdsdemod.cpp:159:95: runtime error: signed
integer overflow: -1094795586 + -1094795586 cannot be represented in type
'int'
The m_parms.subcarr_bb array does not appear to be read prior to
initialization, but we initialize it to zero anyway for the sake
of good hygiene.
2018-04-21 18:54:19 -07:00
Jason Gerecke
f6ea7b216e
Fix spelling errors present in UI files
2018-04-21 18:44:54 -07:00
f4exb
5c51297717
Moved FFT filter destruction at end of the mod or demod destructor
2018-04-18 22:20:47 +02:00
f4exb
01798c9d15
BFM demod: RDS parser: fixed compiler warning
2018-04-15 22:03:31 +02:00
f4exb
a37443fe58
BFM demod: bumped version
2018-04-12 00:13:40 +02:00
f4exb
2d0e0290a0
BFM demod: fixed RDS parser bug when processing optional content (issue #157 )
2018-04-12 00:12:51 +02:00
f4exb
8dfdc1086c
PVS-Studio static analysis corrections (4)
2018-04-04 23:39:31 +02:00
f4exb
53beb8a92d
Removed UDP address and port from Channel marker
2018-03-30 19:06:27 +02:00
f4exb
3b882e78b4
BFM demod: removed UDP/RTP copy audio entirely
2018-03-28 09:43:33 +02:00
f4exb
44b4b3cc85
Multiple audio support: WFM demodulator
2018-03-28 07:44:54 +02:00
f4exb
ae0470218c
Multiple audio support: BFM demodulator
2018-03-27 23:57:29 +02:00
f4exb
ebf3b1fc4b
RTP fixes
2018-03-27 09:04:10 +02:00
f4exb
6f8d546ab7
BFM demod: removed copy to UDP/RTP
2018-03-27 00:30:21 +02:00
f4exb
745e187e2b
Multiple audio support: extend audio output information to UDP/RTP information. New audio preferences dialog
2018-03-25 11:50:34 +02:00
f4exb
7aaa230eb4
Multiple audio support: added ability to manage more than one audio output
2018-03-24 23:50:28 +01:00
f4exb
15e62814de
Multiple audio support: removed audio methods from DSP engine and use AudioDeviceManager instead
2018-03-24 03:36:49 +01:00
f4exb
170c59de43
Channel Rx demods: in constructor make sure the thread is launched when all members have been properly initialized (i.e. do it last)
2018-03-16 10:24:19 +01:00
f4exb
b2e446afcc
Windows build: new location for export header
2018-03-10 20:32:46 +01:00
f4exb
dc9cb0463f
BFM demod: implement RTP over UDP for audio copy
2018-03-10 07:03:11 +01:00
f4exb
28e9df5fe8
Clang clean compile
2018-03-04 01:47:51 +01:00
f4exb
2e5cfcafee
PVS-Studio static analysis corrections (3) issue #137
2018-02-24 10:29:27 +01:00
f4exb
2b846f5d28
PVS-Studio static analysis corrections (2) issue #137
2018-02-22 03:04:42 +01:00
f4exb
67e664ef06
Fixed memory leak with handling of DSPSignalNotification message in modulators and demodulators. Removed reference to unused PIDController class
2018-02-14 20:11:36 +01:00
f4exb
0d2c0ca117
Revert "BFM demod: implemented use RTP protocol for audio over UDP"
...
This reverts commit d946ceffc8
.
2018-02-06 01:18:13 +01:00
f4exb
dda124f1fb
Revert "AM, BFM demods: use button switch for RTP switch"
...
This reverts commit 2ee3161b50
.
2018-02-06 01:17:52 +01:00
f4exb
2ee3161b50
AM, BFM demods: use button switch for RTP switch
2018-02-05 18:25:31 +01:00
f4exb
d946ceffc8
BFM demod: implemented use RTP protocol for audio over UDP
2018-02-05 18:19:32 +01:00
f4exb
b0a97510e2
Moving average cleanup
2018-02-03 10:33:02 +01:00
f4exb
a47587e16f
Specify Scope and Spectrum Vis floating point sample scale
2018-01-22 14:07:24 +01:00
f4exb
2ddcb8c358
Differentiate Rx and Tx DSP sample sizes
2018-01-22 08:46:05 +01:00
f4exb
491b8a6d33
Replaced hardcoded bit scaling literals by defines
2018-01-21 10:57:04 +01:00
f4exb
bde2f3447e
BFM demod: fixed pilot power GUI display
2018-01-13 04:04:34 +01:00
f4exb
6885dd1fe6
All concerned demods: call applyChannelSettings with force=true at construction and start.
2018-01-09 00:59:10 +01:00
f4exb
0c39c9dfd3
BFM demod: RDSTMC: use char* instead of std::string for constant array
2017-12-31 11:54:56 +01:00
f4exb
ffa24cde9b
BFM demod: RDSTMC: specify 0 value in array initialization
2017-12-31 11:45:47 +01:00
f4exb
723df69943
BFM and DSD demod: gcc7 warnings fixes
2017-12-31 03:16:30 +01:00
f4exb
3f96ce4187
BFM demod: set -fno-var-tracking-assignments for rdstmc.cpp as it makes compilation very busy and memory hungry for nothing. May fix compilation on RPi3
2017-12-31 02:14:46 +01:00
f4exb
d476736487
Demods : use specific method to apply channelizer sample rate and frequency offset changes. Separate this data from settings
2017-12-29 11:04:47 +01:00
f4exb
e39e080cc0
Channel source/sink APIs: removed useless getDeltaFrequency pure virtual method
2017-12-29 05:22:26 +01:00
f4exb
324aaa86b6
Plugins: cppcheck corrections
2017-12-29 03:22:04 +01:00
f4exb
31aacc9571
Plugin interface: simplify createRxChannelGUI
2017-12-23 10:32:02 +01:00
f4exb
703aa21159
Plugin interface: simplify createRxChannel
2017-12-23 09:54:42 +01:00
f4exb
514e408aac
Server: Web API: /sdrangel/deviceset/{deviceSetIndex}/channel POST implementation and rework in the PluginInterface
2017-12-23 05:56:40 +01:00
f4exb
9dd707896d
Use a name field in channels to be used in headless version to replace the GUI object name that was used as the name field
2017-12-20 23:57:06 +01:00
f4exb
e1ad61d692
Bumped version of all channel plugins
2017-12-18 00:06:01 +01:00
f4exb
6d12443100
Server: changes to support DeviceSet
2017-12-17 23:15:42 +01:00
f4exb
02e0945368
Web API: implemented /sdrangel/channels: Get a list of channel plugins available in this instance
2017-11-23 01:19:32 +01:00
f4exb
dc50ba1249
Web API: report Rx channel info summary
2017-11-19 18:18:17 +01:00
f4exb
b91ad7c4b7
Web API: added channel enumeration in /sdrangel GET. Partial implementation in channel plugins
2017-11-19 03:38:07 +01:00
f4exb
3db655fe61
Highlight demod frame when the marker is highlighted on the spectrum
2017-11-14 22:58:35 +01:00
f4exb
f6337e4597
Bumped version to 3.8.4
2017-11-14 01:50:14 +01:00
f4exb
a182656294
BFM Demod: applied new channel marker signal handling
2017-11-14 01:23:01 +01:00
f4exb
8958edd4be
BFM demod: fixed spectrum gui update when channel sample rate changes
2017-11-12 14:58:52 +01:00
f4exb
c4e26bf66d
Rx channel plugins: use the demodulator constructor separated from the demodulator GUI constructor
2017-11-09 01:03:05 +01:00
f4exb
4ad038ed9d
Created demod constructor method in all Rx channel plugins
2017-11-08 14:23:49 +01:00
f4exb
76bf0ad104
Rx plugins: removed useless create method in private slot
2017-11-08 00:03:12 +01:00
f4exb
9ff05baa70
Renamed createRxChannel to createRxChannelGUI to described only the GUI will be created there in the future
2017-11-07 23:49:27 +01:00
f4exb
95f9df8396
Moved m_deviceAPI->addThreadedSource at the end of the constructor sequence in all channel plugins
2017-11-06 01:39:44 +01:00
f4exb
7370eba0f7
Bumped version to v3.8.0
2017-11-01 14:58:36 +01:00
f4exb
e206fc84a8
Create channel registration methods for the Tx part in DeviceUISet
2017-10-31 22:37:57 +01:00
f4exb
a61bb04dac
Rx Channel plugins now handled via DeviceUISet
2017-10-31 08:24:05 +01:00
f4exb
a106deeaf7
Make a static getter of Main Window reference as it is de facto a singleton. Use it in place of plugin API getter
2017-10-24 13:45:10 +02:00
f4exb
fa77ca3fb6
Code re-organization in two libraries sdrbase and sdrgui in view of core / GUI split
2017-10-22 19:12:43 +02:00
f4exb
e36a6a0eb7
BFM demod: bumped version
2017-10-21 10:35:49 +02:00
f4exb
32f284a0de
BFM demod: fixed missing channel configuration message handling
2017-10-21 10:35:03 +02:00
f4exb
8c2483a850
Demod GUI corrections
2017-10-12 01:21:30 +02:00
f4exb
f19572ed0e
BFM plugin: fixed channel marker save to settings
2017-10-08 03:47:18 +02:00
f4exb
6095cf549c
BFM demod: use settings in the demod
2017-10-01 20:17:20 +02:00
f4exb
5192d7fe59
BFM demod: use settings in the GUI only
2017-10-01 19:20:56 +02:00
f4exb
edd0adde3b
BFM demod: created a settings class
2017-10-01 17:54:48 +02:00
f4exb
f10d486b28
BFM demod: fixed segfault
2017-10-01 16:02:34 +02:00
f4exb
b646d0c89f
BFM demod: GUI and demod separation
2017-10-01 12:48:31 +02:00
f4exb
a9d1b2ef65
BFM demod: moved RDS parser in the demod
2017-10-01 11:50:16 +02:00
f4exb
0b6eb2129a
Reset PluginInstanceGUI to its original name
2017-09-26 00:22:08 +02:00
f4exb
da8857e0e1
Windows build fixes
2017-09-23 17:19:58 +02:00
f4exb
a9a514993b
Windows build: corrections for the new tool chain
2017-09-18 13:41:08 +02:00
f4exb
2b4f8a0f55
Implemented GUI input message queue and interface
2017-09-16 22:23:31 +02:00
f4exb
1d4cb21bb5
Separate construction/destruction for the source input plugin core and the GUI
2017-09-16 10:45:08 +02:00
f4exb
a6d6a717ae
GUI segregation: renamed PluginGUI interface to PluginInstanceUI
2017-09-03 19:55:00 +02:00
f4exb
70de05f060
DSD demodulator: use channel marker serializer/deserializer
2017-08-26 14:36:38 +02:00
f4exb
7af90583fe
BFM demodulator: use channel marker serializer/deserializer
2017-08-26 14:30:55 +02:00
f4exb
27d504e1ac
AM demod: implement copy audio to UDP and basic channel settings dialog
2017-08-26 05:32:01 +02:00
f4exb
3b03da44b9
BFM demod: serialize/deserialize all channel marker parameters
2017-08-26 03:56:03 +02:00
f4exb
d84b69633c
DSD and BFM demods: fixed UDP copy button tooltip when port changes
2017-08-25 18:58:53 +02:00
f4exb
8a60af3e52
BFM demod: added basic channel settings dialog and copy audio to UDP option
2017-08-25 18:56:43 +02:00
f4exb
511686f820
Use new audio fifo based on audio sample type
2017-08-25 00:02:49 +02:00
f4exb
d98d8757b0
Moved audio sample definitions to dsp types definitions
2017-08-24 15:24:28 +02:00
f4exb
3a3d8e3dcb
activated compiler warnings
2017-05-25 20:13:34 +02:00
f4exb
1899ca788c
BFM demod: use ValueDialZ for channel delta frequency value dial
2017-05-17 23:52:10 +02:00
f4exb
579c05cfe5
Use doubles for all power calculations
2017-05-16 23:39:49 +02:00
f4exb
dafad384c8
Merged Sigysmund changes for Mac OS Sierra on v3.4.5
2017-05-16 23:01:44 +02:00
f4exb
bb849623bd
updated value dials with Windows compatible font and pointing hand
2017-05-16 22:35:44 +02:00
f4exb
007ea19e36
Bumped version to 3.5.0
2017-05-16 18:38:39 +02:00
f4exb
6f9ef0eaf9
New value dial color schemes: propagate to all active plugins
2017-05-16 18:27:36 +02:00
f4exb
416817d0b8
Mods and demods: prevent returning null or infinite values for squared magnitude
2017-05-16 17:46:44 +02:00
f4exb
c9368a4dc0
Unixify some files
2017-05-16 16:16:05 +02:00
ZigaS
27aab58d92
MacOS(sierra) development environment.
...
Updated qmake project configs.
Deploy & Run script.
For now only hardware supported is HackRF.
2017-05-15 12:32:16 +02:00
f4exb
ffb6ad3009
Use double storage type for all moving average instances
2017-05-12 00:03:56 +02:00