From 1445ed860cd41e90f39a6a78b3be24e96d470144 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 1 Mar 2021 09:51:24 +0000 Subject: [PATCH 1/4] Update missed swagger files in sdrbase/resources/webapi/doc/swagger --- sdrbase/resources/webapi/doc/html2/index.html | 339 +++++++++++++++++- .../webapi/doc/swagger/include/APTDemod.yaml | 86 +++++ .../doc/swagger/include/ChannelActions.yaml | 2 + .../doc/swagger/include/ChannelSettings.yaml | 2 + .../doc/swagger/include/FeatureSettings.yaml | 2 + .../doc/swagger/include/GS232Controller.yaml | 12 + .../webapi/doc/swagger/include/Map.yaml | 24 ++ .../doc/swagger/include/SatelliteTracker.yaml | 109 ++++++ swagger/sdrangel/code/html2/index.html | 2 +- 9 files changed, 576 insertions(+), 2 deletions(-) create mode 100644 sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml create mode 100644 sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml diff --git a/sdrbase/resources/webapi/doc/html2/index.html b/sdrbase/resources/webapi/doc/html2/index.html index e7bd6038b..2b28c539c 100644 --- a/sdrbase/resources/webapi/doc/html2/index.html +++ b/sdrbase/resources/webapi/doc/html2/index.html @@ -1107,6 +1107,127 @@ margin-bottom: 20px; } }, "description" : "APRS settings" +}; + defs.APTDemodActions = { + "properties" : { + "aos" : { + "$ref" : "#/definitions/APTDemodActions_aos" + }, + "los" : { + "$ref" : "#/definitions/APTDemodActions_los" + } + }, + "description" : "APTDemod" +}; + defs.APTDemodActions_aos = { + "properties" : { + "satelliteName" : { + "type" : "string", + "description" : "Name of the satellite" + }, + "northToSouthPass" : { + "type" : "integer", + "description" : "Satellite is passing from the North to the South (1) or South to North (0)" + } + }, + "description" : "Acquisition of signal" +}; + defs.APTDemodActions_los = { + "properties" : { + "satelliteName" : { + "type" : "string", + "description" : "Name of the satellite" + } + }, + "description" : "Loss of signal" +}; + defs.APTDemodSettings = { + "properties" : { + "inputFrequencyOffset" : { + "type" : "integer", + "format" : "int64", + "description" : "channel center frequency shift from baseband center in Hz" + }, + "rfBandwidth" : { + "type" : "number", + "format" : "float", + "description" : "channel RF bandwidth in Hz" + }, + "fmDeviation" : { + "type" : "integer", + "description" : "frequency deviation in Hz" + }, + "cropNoise" : { + "type" : "integer", + "description" : "crop noise from top and bottom of image" + }, + "denoise" : { + "type" : "integer", + "description" : "apply denoise filter to image" + }, + "linearEqualise" : { + "type" : "integer", + "description" : "apply linear equalisation to image" + }, + "histogramEqualise" : { + "type" : "integer", + "description" : "apply histogram equalisation to image" + }, + "precipitationOverlay" : { + "type" : "integer", + "description" : "create colour overlay of precipitation" + }, + "flip" : { + "type" : "integer", + "description" : "flip image for South to North passes" + }, + "channels" : { + "type" : "integer", + "description" : "which channel to display (0=both, 1=A, 2=B)" + }, + "decodeEnabled" : { + "type" : "integer", + "description" : "controls whether the decoder is enabled" + }, + "autoSave" : { + "type" : "integer", + "description" : "automatically save images when acquisition is stopped" + }, + "autoSavePath" : { + "type" : "string", + "description" : "directory to automatically save images in" + }, + "autoSaveMinScanLines" : { + "type" : "integer" + }, + "rgbColor" : { + "type" : "integer" + }, + "title" : { + "type" : "string" + }, + "streamIndex" : { + "type" : "integer", + "description" : "MIMO channel. Not relevant when connected to SI (single Rx)." + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "APTDemod" }; defs.ATVDemodSettings = { "properties" : { @@ -2411,6 +2532,9 @@ margin-bottom: 20px; "type" : "integer", "description" : "Optional for reverse API. This is the channel index from where the message comes from." }, + "APTDemodActions" : { + "$ref" : "#/definitions/APTDemodActions" + }, "FileSinkActions" : { "$ref" : "#/definitions/FileSinkActions" }, @@ -2659,6 +2783,9 @@ margin-bottom: 20px; "AMModSettings" : { "$ref" : "#/definitions/AMModSettings" }, + "APTDemodSettings" : { + "$ref" : "#/definitions/APTDemodSettings" + }, "ATVDemodSettings" : { "$ref" : "#/definitions/ATVDemodSettings" }, @@ -4188,6 +4315,9 @@ margin-bottom: 20px; "RigCtlServerSettings" : { "$ref" : "#/definitions/RigCtlServerSettings" }, + "SatelliteTrackerSettings" : { + "$ref" : "#/definitions/SatelliteTrackerSettings" + }, "StarTrackerSettings" : { "$ref" : "#/definitions/StarTrackerSettings" }, @@ -4946,6 +5076,22 @@ margin-bottom: 20px; "type" : "integer", "description" : "Elevation offset in degrees" }, + "azimuthMin" : { + "type" : "integer", + "description" : "Minimum azimuth the controller will output" + }, + "azimuthMax" : { + "type" : "integer", + "description" : "Maximum azimuth the controller will output" + }, + "elevationMin" : { + "type" : "integer", + "description" : "Minimum elevation the controller will output" + }, + "elevationMax" : { + "type" : "integer", + "description" : "Maximum elevation the controller will output" + }, "title" : { "type" : "string" }, @@ -6266,6 +6412,23 @@ margin-bottom: 20px; } }, "description" : "Map" +}; + defs.MapCoordinate = { + "properties" : { + "latitude" : { + "type" : "number", + "format" : "float" + }, + "longitude" : { + "type" : "number", + "format" : "float" + }, + "altitude" : { + "type" : "number", + "format" : "float" + } + }, + "description" : "A map coordinate" }; defs.MapItem = { "required" : [ "name" ], @@ -6303,6 +6466,20 @@ margin-bottom: 20px; "type" : "number", "format" : "float", "description" : "Altitude / height above sea level in metres" + }, + "track" : { + "type" : "array", + "description" : "Track/path the item has taken", + "items" : { + "$ref" : "#/definitions/MapCoordinate" + } + }, + "predictedTrack" : { + "type" : "array", + "description" : "Track/path the item is predicted to take", + "items" : { + "$ref" : "#/definitions/MapCoordinate" + } } }, "description" : "An item to draw on the map. Set image to an empty string to remove item from the map." @@ -6343,6 +6520,20 @@ margin-bottom: 20px; "type" : "number", "format" : "float", "description" : "Altitude / height above sea level in metres" + }, + "track" : { + "type" : "array", + "description" : "Track/path the item has taken", + "items" : { + "$ref" : "#/definitions/MapCoordinate" + } + }, + "predictedTrack" : { + "type" : "array", + "description" : "Track/path the item is predicted to take", + "items" : { + "$ref" : "#/definitions/MapCoordinate" + } } }, "description" : "An item to draw on the map. Set image to an empty string to remove item from the map." @@ -8360,6 +8551,152 @@ margin-bottom: 20px; } }, "description" : "Information about a logical device available from an attached hardware device that can be used as a sampling device" +}; + defs.SatelliteTrackerSettings = { + "properties" : { + "latitude" : { + "type" : "number", + "format" : "float", + "description" : "Latitude in decimal degrees (North positive) of antenna location" + }, + "longitude" : { + "type" : "number", + "format" : "float", + "description" : "Longitude in decimal degrees (East positive) of antenna location" + }, + "heightAboveSeaLevel" : { + "type" : "number", + "format" : "float", + "description" : "Height above sea level in metres of antenna location" + }, + "target" : { + "type" : "string", + "description" : "Target satellite" + }, + "satellites" : { + "type" : "array", + "description" : "Satellites to track", + "items" : { + "type" : "string" + } + }, + "tles" : { + "type" : "array", + "description" : "Two line element files", + "items" : { + "type" : "string" + } + }, + "dateTime" : { + "type" : "string", + "description" : "Date and time of observation. ISO 8601 extended format: yyyy-MM-ddTHH:mm:ss with Z suffix for UTC. Empty string for current time." + }, + "minAOSElevation" : { + "type" : "integer", + "description" : "Minimum elevation in degrees for AOS" + }, + "minPassElevation" : { + "type" : "integer", + "description" : "Minimum elevation in degrees for a pass" + }, + "rotatorMaxAzimuth" : { + "type" : "integer", + "description" : "Maximum azimuth in degrees for the rotator" + }, + "rotatorMaxElevation" : { + "type" : "integer", + "description" : "Maximum elevation in degrees for elevation" + }, + "azElUnits" : { + "type" : "integer", + "description" : "DMS (0) DM (1) D (2) Decimal (3)" + }, + "groundTrackPoints" : { + "type" : "integer", + "description" : "Number of points used to draw ground tracks" + }, + "dateFormat" : { + "type" : "string" + }, + "utc" : { + "type" : "integer", + "description" : "Times are UTC (1) or local (0)" + }, + "updatePeriod" : { + "type" : "number", + "format" : "float", + "description" : "Time in seconds between each calculation of the target's position" + }, + "dopplerPeriod" : { + "type" : "number", + "format" : "float", + "description" : "Time in seconds between each Doppler correction" + }, + "predictionPeriod" : { + "type" : "integer", + "description" : "How many days ahead to predict passes in" + }, + "passStartTime" : { + "type" : "string", + "description" : "Time after which a pass must start" + }, + "passFinishTime" : { + "type" : "string", + "description" : "Time before which a pass must finish" + }, + "defaultFrequency" : { + "type" : "number", + "format" : "float", + "description" : "Frequency to use for Doppler and free space path loss calculations in Satellite data table" + }, + "drawOnMap" : { + "type" : "integer", + "description" : "Draw satellites on the Map (1 for yes, 0 for no)" + }, + "autoTarget" : { + "type" : "integer", + "description" : "Automatically select target on AOS (1 for yes, 0 for no)" + }, + "aosSpeech" : { + "type" : "string", + "description" : "Speech warning on AOS" + }, + "losSpeech" : { + "type" : "string", + "description" : "Speech warning on LOS" + }, + "aosCommand" : { + "type" : "string", + "description" : "Command to execute on AOS for all satellites" + }, + "losCommand" : { + "type" : "string", + "description" : "Command to execute on LOS for all satellites" + }, + "title" : { + "type" : "string" + }, + "rgbColor" : { + "type" : "integer" + }, + "useReverseAPI" : { + "type" : "integer", + "description" : "Synchronize with reverse API (1 for yes, 0 for no)" + }, + "reverseAPIAddress" : { + "type" : "string" + }, + "reverseAPIPort" : { + "type" : "integer" + }, + "reverseAPIDeviceIndex" : { + "type" : "integer" + }, + "reverseAPIChannelIndex" : { + "type" : "integer" + } + }, + "description" : "Satellite Tracker settings" }; defs.SigMFFileInputActions = { "properties" : { @@ -45286,7 +45623,7 @@ except ApiException as e:
- Generated 2021-02-11T23:51:16.152+01:00 + Generated 2021-03-01T10:47:56.898+01:00
diff --git a/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml b/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml new file mode 100644 index 000000000..01a7a4059 --- /dev/null +++ b/sdrbase/resources/webapi/doc/swagger/include/APTDemod.yaml @@ -0,0 +1,86 @@ +APTDemodSettings: + description: APTDemod + properties: + inputFrequencyOffset: + description: channel center frequency shift from baseband center in Hz + type: integer + format: int64 + rfBandwidth: + description: channel RF bandwidth in Hz + type: number + format: float + fmDeviation: + description: frequency deviation in Hz + type: integer + cropNoise: + description: crop noise from top and bottom of image + type: integer + denoise: + description: apply denoise filter to image + type: integer + linearEqualise: + description: apply linear equalisation to image + type: integer + histogramEqualise: + description: apply histogram equalisation to image + type: integer + precipitationOverlay: + description: create colour overlay of precipitation + type: integer + flip: + description: flip image for South to North passes + type: integer + channels: + description: which channel to display (0=both, 1=A, 2=B) + type: integer + decodeEnabled: + description: controls whether the decoder is enabled + type: integer + autoSave: + description: automatically save images when acquisition is stopped + type: integer + autoSavePath: + description: directory to automatically save images in + type: string + autoSaveMinScanLines: + desciption: minimum number of scanlines (after cropping) for an image to be automatically saved + type: integer + rgbColor: + type: integer + title: + type: string + streamIndex: + description: MIMO channel. Not relevant when connected to SI (single Rx). + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer + +APTDemodActions: + description: APTDemod + properties: + aos: + description: "Acquisition of signal" + type: object + properties: + satelliteName: + description: "Name of the satellite" + type: string + northToSouthPass: + description: "Satellite is passing from the North to the South (1) or South to North (0)" + type: integer + los: + description: "Loss of signal" + type: object + properties: + satelliteName: + description: "Name of the satellite" + type: string diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChannelActions.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChannelActions.yaml index a5d7005e5..3332bb9fb 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChannelActions.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChannelActions.yaml @@ -17,6 +17,8 @@ ChannelActions: originatorChannelIndex: description: Optional for reverse API. This is the channel index from where the message comes from. type: integer + APTDemodActions: + $ref: "/doc/swagger/include/APTDemod.yaml#/APTDemodActions" FileSinkActions: $ref: "/doc/swagger/include/FileSink.yaml#/FileSinkActions" FileSourceActions: diff --git a/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml b/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml index 9f914cd10..9287e0b2c 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/ChannelSettings.yaml @@ -23,6 +23,8 @@ ChannelSettings: $ref: "/doc/swagger/include/AMDemod.yaml#/AMDemodSettings" AMModSettings: $ref: "/doc/swagger/include/AMMod.yaml#/AMModSettings" + APTDemodSettings: + $ref: "/doc/swagger/include/APTDemod.yaml#/APTDemodSettings" ATVDemodSettings: $ref: "/doc/swagger/include/ATVDemod.yaml#/ATVDemodSettings" ATVModSettings: diff --git a/sdrbase/resources/webapi/doc/swagger/include/FeatureSettings.yaml b/sdrbase/resources/webapi/doc/swagger/include/FeatureSettings.yaml index 7da04ce4f..8e09c3e26 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/FeatureSettings.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/FeatureSettings.yaml @@ -25,6 +25,8 @@ FeatureSettings: $ref: "/doc/swagger/include/Map.yaml#/MapSettings" RigCtlServerSettings: $ref: "/doc/swagger/include/RigCtlServer.yaml#/RigCtlServerSettings" + SatelliteTrackerSettings: + $ref: "/doc/swagger/include/SatelliteTracker.yaml#/SatelliteTrackerSettings" StarTrackerSettings: $ref: "/doc/swagger/include/StarTracker.yaml#/StarTrackerSettings" SimplePTTSettings: diff --git a/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml b/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml index 3ffbbad48..347fa5239 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/GS232Controller.yaml @@ -25,6 +25,18 @@ GS232ControllerSettings: elevationOffset: description: Elevation offset in degrees type: integer + azimuthMin: + description: Minimum azimuth the controller will output + type: integer + azimuthMax: + description: Maximum azimuth the controller will output + type: integer + elevationMin: + description: Minimum elevation the controller will output + type: integer + elevationMax: + description: Maximum elevation the controller will output + type: integer title: type: string rgbColor: diff --git a/sdrbase/resources/webapi/doc/swagger/include/Map.yaml b/sdrbase/resources/webapi/doc/swagger/include/Map.yaml index 19ff43c16..5981fa380 100644 --- a/sdrbase/resources/webapi/doc/swagger/include/Map.yaml +++ b/sdrbase/resources/webapi/doc/swagger/include/Map.yaml @@ -61,3 +61,27 @@ MapItem: description: "Altitude / height above sea level in metres" type: number format: float + track: + description: "Track/path the item has taken" + type: array + items: + $ref: "/doc/swagger/include/Map.yaml#/MapCoordinate" + predictedTrack: + description: "Track/path the item is predicted to take" + type: array + items: + $ref: "/doc/swagger/include/Map.yaml#/MapCoordinate" + +MapCoordinate: + description: "A map coordinate" + properties: + latitude: + type: number + format: float + longitude: + type: number + format: float + altitude: + type: number + format: float + diff --git a/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml b/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml new file mode 100644 index 000000000..6d7636b2d --- /dev/null +++ b/sdrbase/resources/webapi/doc/swagger/include/SatelliteTracker.yaml @@ -0,0 +1,109 @@ +SatelliteTrackerSettings: + description: "Satellite Tracker settings" + properties: + latitude: + description: "Latitude in decimal degrees (North positive) of antenna location" + type: number + format: float + longitude: + description: "Longitude in decimal degrees (East positive) of antenna location" + type: number + format: float + heightAboveSeaLevel: + description: "Height above sea level in metres of antenna location" + type: number + format: float + target: + description: "Target satellite" + type: string + satellites: + description: "Satellites to track" + type: array + items: + type: string + tles: + description: "Two line element files" + type: array + items: + type: string + dateTime: + description: "Date and time of observation. ISO 8601 extended format: yyyy-MM-ddTHH:mm:ss with Z suffix for UTC. Empty string for current time." + type: string + minAOSElevation: + description: "Minimum elevation in degrees for AOS" + type: integer + minPassElevation: + description: "Minimum elevation in degrees for a pass" + type: integer + rotatorMaxAzimuth: + description: "Maximum azimuth in degrees for the rotator" + type: integer + rotatorMaxElevation: + description: "Maximum elevation in degrees for elevation" + type: integer + azElUnits: + description: "DMS (0) DM (1) D (2) Decimal (3)" + type: integer + groundTrackPoints: + description: "Number of points used to draw ground tracks" + type: integer + dateFormat: + desciption: "Format for dates in the GUI (E.g: yy/MM/dd)" + type: string + utc: + description: "Times are UTC (1) or local (0)" + type: integer + updatePeriod: + description: "Time in seconds between each calculation of the target's position" + type: number + format: float + dopplerPeriod: + description: "Time in seconds between each Doppler correction" + type: number + format: float + predictionPeriod: + description: "How many days ahead to predict passes in" + type: integer + passStartTime: + description: "Time after which a pass must start" + type: string + passFinishTime: + description: "Time before which a pass must finish" + type: string + defaultFrequency: + description: "Frequency to use for Doppler and free space path loss calculations in Satellite data table" + type: number + format: float + drawOnMap: + description: "Draw satellites on the Map (1 for yes, 0 for no)" + type: integer + autoTarget: + description: "Automatically select target on AOS (1 for yes, 0 for no)" + type: integer + aosSpeech: + description: "Speech warning on AOS" + type: string + losSpeech: + description: "Speech warning on LOS" + type: string + aosCommand: + description: "Command to execute on AOS for all satellites" + type: string + losCommand: + description: "Command to execute on LOS for all satellites" + type: string + title: + type: string + rgbColor: + type: integer + useReverseAPI: + description: Synchronize with reverse API (1 for yes, 0 for no) + type: integer + reverseAPIAddress: + type: string + reverseAPIPort: + type: integer + reverseAPIDeviceIndex: + type: integer + reverseAPIChannelIndex: + type: integer diff --git a/swagger/sdrangel/code/html2/index.html b/swagger/sdrangel/code/html2/index.html index 016942a69..2b28c539c 100644 --- a/swagger/sdrangel/code/html2/index.html +++ b/swagger/sdrangel/code/html2/index.html @@ -45623,7 +45623,7 @@ except ApiException as e:
- Generated 2021-02-26T21:05:20.434+01:00 + Generated 2021-03-01T10:47:56.898+01:00
From 45c55e0ba600ca3e307c35efc3c5f49f5ebb3367 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 1 Mar 2021 16:02:16 +0000 Subject: [PATCH 2/4] Fix spelling in readme and add numbers to settings image --- doc/img/SatelliteTracker_plugin.xcf | Bin 0 -> 56658 bytes doc/img/SatelliteTracker_plugin_settings.png | Bin 13352 -> 37314 bytes plugins/feature/satellitetracker/readme.md | 42 +++++++++---------- 3 files changed, 21 insertions(+), 21 deletions(-) create mode 100644 doc/img/SatelliteTracker_plugin.xcf diff --git a/doc/img/SatelliteTracker_plugin.xcf b/doc/img/SatelliteTracker_plugin.xcf new file mode 100644 index 0000000000000000000000000000000000000000..3608d53b3d0904df5c2a9a8057f8d00ac4203ad3 GIT binary patch literal 56658 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

YuO87SY5qvYxy^Owk|}74IJ~SRII9M-m5Hi zV=VTQw3eFqjm2u0tPZVGs{^ZgmcpLx#qr0|RrkEB-dW<0eK>$E-a+TSmwR*8Ebh6-vwO2<&7O_w#Qaskm~XakR@%9H ze^zem-^>)VobG6cZk{&DW;6Amo(CwiLJH&?Gn2r@6G_#9}{`wrRIZ zY;~F|Gfr$TW+t5T5!WnI_i~Zi3)3eu-?WK$JDV4XE$^&0r@7|hEEe&cd(9L#W{$6#pnem10W9>a~TPvdxneB$C_^dimLqmk+uPXt92jn`us zUYEwP3XK4JF73(;4%DgzCHLcHCv>ZcHcKX|Yb@e}wd(%hFV+1aH$E$d4qpqSLpAC? z|1Z^jCFpl2bv+&Ksw6;3b@skr+*gW@ccRTo!#Kp2#?;MaF>f4+v8A1HV?5!aTliWe zxGIhF3~oEjPU8%Nu2wOzg?+Jjda;<;GEW5*5nFm_5nY9W z6kUa3w&?PP)>Gb)A+}aqa(QE6O4U|65wztPz`U`&unbC7aNgM~xx6qL z&WdOpWs`U%mlvo&aur6|lB+Ph9FnUrOeB{#(C&We;k*wLiRpRU3(C;mlH|t{IX>88 z9FOb*86w=3UGBHYF3%@rm*o5dS%LGK)s@CC1+d$X+&4A z%(%Re9?4|`QgZdmgv$U97F+^q1Xr)jw+v`8xh23xZuQD^%LN`JwrpUEtzMaJ8DK57 zp7c((1lCBc-d;|&3~UjhC9p&;Y4LwjUauS~UEltCiP#-PaRm6?_S zE+(-A*hs8CPP7bcF@YtpMqu^IJj(!k<&^*pl2-%v6ENOcmIF$0WkXO}Nd%-7PIU;; z8DS;C6jtf$8cc+iRT4p2m2S8|M@ℜcGVfwH$pHHs86?QVHjlq08|TL#CWtc0ajc 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 d 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 CZAC!< diff --git a/plugins/feature/satellitetracker/readme.md b/plugins/feature/satellitetracker/readme.md index e85408553..789297875 100644 --- a/plugins/feature/satellitetracker/readme.md +++ b/plugins/feature/satellitetracker/readme.md @@ -5,7 +5,7 @@ The Satellite Tracker feature plugin can be used to: * Track satellites, pointing antennas at them via SDRangel's Rotator Controller Features -* Control SDRangel by loading presets, starting/stopping acqusition and setting center frequenies on AOS (Acquisition of Signal) for each satellite +* Control SDRangel by loading presets, starting/stopping acquisition and setting center frequencies on AOS (Acquisition of Signal) for each satellite * Adjust channels' input frequency offset to account for Doppler shift * Display polar and elevation/azimuth vs time plots for satellite passes * Display the overhead position of satellites on the Map Feature, along with the ground track of the satellites @@ -32,9 +32,9 @@ Priority is determined by the order the satellites appear in the Satellite Selec

4: Update satellite data

-When clicked, the TLE (two line element) files selected in the Settings dialog are downloaded as well as the latest SatNogs satellite database, containing details of satellite's transmitter and receiver frequencies. While downloading, this button will appear green. +When clicked, the TLE (two line element) files selected in the Settings dialog are downloaded, as well as the latest SatNogs satellite database, containing details of satellites' transmitter and receiver frequencies. While downloading, this button will appear green. -Satellite positions can only be predicted with limited accuracy, so without the TLEs need to be updated frequently for accurate positioning. This could be daily, weekly or monthly depending upon the individual satellite. This downloads around 1MB of data. +Satellite positions can only be predicted with limited accuracy, so the TLEs need to be updated frequently for accurate positioning. This could be daily, weekly or monthly depending upon the individual satellite. This downloads around 1MB of data.

5: Show SDRangel Control dialog

@@ -42,16 +42,16 @@ Pressing this button displays the SDRangel Control dialog. ![SDRangel Control dialog](../../../doc/img/SatelliteTracker_plugin_control.png) -This dialog determines the actions the Satellite Tracker will take when AOS or LOS occurs for a satellite. First, select a satellite from the dropdown box. Information about the satellites transmit and receive modes should appear in the field at the bottom of the dialog, if available in the SatNogs database. +This dialog determines the actions the Satellite Tracker will take when AOS or LOS occurs for a satellite. First, select a satellite from the dropdown box. Information about the satellite's transmit and receive modes should appear in the field at the bottom of the dialog, if available in the SatNogs database. To perform an action on an SDRangel device set on AOS or LOS, press the + button. This will add a row in the table, allowing you to select: * The device set that will be controlled. This will list all currently open device sets. You can also type the name of a new device set. * The preset to load on AOS. This allows preset device settings (E.g. centre frequency) and demodulators to be opened when the satellite becomes visible. -* Which channels Doppler correction should be applied to. The list of channels is taken from the selected preset. Check a channel to enable Doppler correct for that channel. The Doppler correction is applied to the channel's input frequency offset. -* Whether to start acquisition (i.e. start the DDR device) on AOS. -* Whether to start acquisition on LOS. -* Whether and file sinks in the preset should be started on AOS and stopped on LOS. This allows the baseband signal received from the satellite to be recorded to a file. +* Which channels Doppler correction should be applied to. The list of channels is taken from the selected preset. Check a channel to enable Doppler correction for that channel. The Doppler correction is applied to the channel's input frequency offset. +* Whether to start acquisition (i.e. start the SDR device) on AOS. +* Whether to stop acquisition on LOS. +* Whether any file sinks in the preset should be started on AOS and stopped on LOS. This allows the baseband signal received from the satellite to be recorded to a file. * Whether to override the centre frequency in the preset. This allows a single preset to be used with multiple satellites. * A command or script to execute on AOS. * A command or script to execute on LOS. @@ -86,15 +86,15 @@ Pressing this button displays the Settings dialog. On the Settings tab, you can set: -* Height above sea level in metres of the anntenna. -* The prediciton period in days. This limits the maximum number of days ahead for which satellite passes are predicted until. -* The minimum elevation in degrees from the antenna location, which a satellite much reach in order for AOS to be indicated. +* Height above sea level in metres of the antenna. +* The prediction period in days. This limits the maximum number of days ahead for which satellite passes are predicted until. +* The elevation in degrees from the antenna location, which a satellite much reach in order for AOS to be indicated. * The minimum elevation in degrees from the antenna location, which a satellite much reach in order for a pass to be indicated. * A time window for which passes must start and end between, to be displayed or acted upon. For example, for day time passes, you could set "must start after" to 8:00 and "must end before" to 18:00. For night time passes, set "must start after" to 20:00 and "must end before" to 6:00. * The maximum azimuth angle in degrees supported by your rotator. 450 degree support is beneficial for passes that pass through 360/0 degrees, to avoid the rotator having to do a complete rotation mid pass. * The maximum elevation angle in degrees supported by your rotator. 180 degree support is beneficial for passes that pass through 360/0 degrees, to avoid the rotator having to do a complete rotation mid pass. -* A speech warning to be given on AOS. ${name} will be subsitited with the name of the satellite, ${duration} the pass duration and ${elevation} the maximum elevation of the pass. -* A speech warning to be given on LOS. ${name} will be subsitited with the name of the satellite. +* A speech warning to be given on AOS. ${name} will be substituted with the name of the satellite, ${duration} the pass duration and ${elevation} the maximum elevation of the pass. +* A speech warning to be given on LOS. ${name} will be substituted with the name of the satellite. * A command/script to be executed on AOS. This applies to all satellites. It is also possible to set a per-satellite command in the SDRangel Control dialog. * A command/script to be executed on LOS. This applies to all satellites. It is also possible to set a per-satellite command in the SDRangel Control dialog. * The Doppler correction period in seconds, which controls how frequently Doppler correction is applied. Which channels have Doppler correction applied is set on a per-channel basis in the SDRangel Control dialog. @@ -112,7 +112,7 @@ On the display tab, you can set: * The default frequency in MHz that is used for calculating Doppler and free space path loss in the Satellite Data table. * The units used to display azimuth and elevation to the target satellite. This can be in degrees, minutes and seconds or decimal degrees. * The number of points used for ground tracks on the map. More points result in smoother tracks, but require more processing. -* Whether times are display in the local time zone or UTC. +* Whether times are displayrf in the local time zone or UTC. * Whether to draw the satellites on the map.

9: Latitude

@@ -149,7 +149,7 @@ Pass charts can be plotted showing the azimuth and elevation of the target satel ![Satellite tracker settings dialog](../../../doc/img/SatelliteTracker_plugin_passchart.png) -The arrows next to the chart combobox, allow the pass number to be selected. Pass 0 is the next pass, with higher numbered passes occuring later in time. +The arrows next to the chart combobox, allow the pass number to be selected. Pass 0 is the next pass, with higher numbered passes occurring later in time. The amount of passes is determined by the prediction period, which can be set in the Settings dialog.

Satellite Data

@@ -162,18 +162,18 @@ The table contains: * The satellite name. * The azimuth in degrees to the satellite from the antenna location. -* The elevation in degress to the satellite from the antenna location. -* The time of the next AOS. If time is some days in the future, the number of days will be displayed as +days. E.g. +1 for tomorrow. +* The elevation in degrees to the satellite from the antenna location. +* The time of the next AOS. If this time is some days in the future, the number of days will be displayed as +days. E.g. +1 for tomorrow. * The time of the next LOS. * The maximum elevation in degrees that the satellite will be from the antenna location in the next pass. -* Whether the satellite will be heading South to North (up addow) or North to South (down arrow) in the next pass. +* Whether the satellite will be heading South to North (up arrow) or North to South (down arrow) in the next pass. * The altitude of the satellite in kilometres. -* The range to the satellite from the antenna location in kilometers. -* The range range (i.e. speed the satellite is moving away from the antenna location) in kilometres per second. +* The range to the satellite from the antenna location in kilometres. +* The rate range (i.e. speed the satellite is moving away from the antenna location) in kilometres per second. * The Doppler shift due to the satellite's motion that would be observed on a signal at the default frequency (which can be set in the Settings dialog). * The free space path loss to the satellite, at the default frequency. * The one-way propagation delay to the satellite from the antenna location in milliseconds. -* The NORAD catalog identifier for the satellite. +* The NORAD catalogue identifier for the satellite. Rows can be ordered by left clicking column headers. Columns can be hidden by right clicking on the header and unchecking them. From ce69c06586e2728abf9297042629d62de69245ae Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 1 Mar 2021 16:02:48 +0000 Subject: [PATCH 3/4] Fix Satellite Tracker build on Mac --- plugins/feature/satellitetracker/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/plugins/feature/satellitetracker/CMakeLists.txt b/plugins/feature/satellitetracker/CMakeLists.txt index ccf56fd06..84b2f3ea8 100644 --- a/plugins/feature/satellitetracker/CMakeLists.txt +++ b/plugins/feature/satellitetracker/CMakeLists.txt @@ -53,7 +53,7 @@ if(NOT SERVER_MODE) set(INSTALL_FOLDER ${INSTALL_PLUGINS_DIR}) else() set(TARGET_NAME featuresatellitetrackersrv) - set(TARGET_LIB Qt5::Positioning) + set(TARGET_LIB Qt5::Positioning Qt5::Charts) set(TARGET_LIB_GUI "") set(INSTALL_FOLDER ${INSTALL_PLUGINSSRV_DIR}) endif() From 30a8dd00eafe2f2657ba969b1bbe281b77a2da79 Mon Sep 17 00:00:00 2001 From: Jon Beniston Date: Mon, 1 Mar 2021 16:03:10 +0000 Subject: [PATCH 4/4] Add ERC-M controller support in GS-232 Controller --- plugins/feature/gs232controller/gs232controllerworker.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/plugins/feature/gs232controller/gs232controllerworker.cpp b/plugins/feature/gs232controller/gs232controllerworker.cpp index 5bfdaa6a4..f6d2391be 100644 --- a/plugins/feature/gs232controller/gs232controllerworker.cpp +++ b/plugins/feature/gs232controller/gs232controllerworker.cpp @@ -197,7 +197,7 @@ void GS232ControllerWorker::readSerialData() if (len != -1) { QString response = QString::fromUtf8(buf, len); - QRegularExpression re("AZ=(\\d\\d\\d)EL=(\\d\\d\\d)"); + QRegularExpression re("AZ=(\\d\\d\\d) *EL=(\\d\\d\\d)"); QRegularExpressionMatch match = re.match(response); if (match.hasMatch()) { @@ -213,7 +213,7 @@ void GS232ControllerWorker::readSerialData() } else { - qDebug() << "GS232ControllerWorker::readSerialData - unexpected response " << response; + qDebug() << "GS232ControllerWorker::readSerialData - unexpected response \"" << response << "\""; if (m_msgQueueToFeature) m_msgQueueToFeature->push(GS232Controller::MsgReportWorker::create(QString("Unexpected GS-232 serial response: %1").arg(response))); }