SoapySDRInputSettings:
  description: SoapySDR
  properties:
    title:
      type: string
    centerFrequency:
      type: integer
      format: int64
    LOppmTenths:
      type: integer
    devSampleRate:
      type: integer
    log2Decim:
      type: integer
    fcPos:
      type: integer
    softDCCorrection:
      description: boolean not zero for true
      type: integer
    softIQCorrection:
      description: boolean not zero for true
      type: integer
    transverterMode:
      description: boolean not zero for true
      type: integer
    transverterDeltaFrequency:
      type: integer
      format: int64
    iqOrder:
      type: integer
      description: >
        IQ samples order
          * 0 - Q then I (swapped)
          * 1 - I then Q (straight)
    antenna:
      type: string
    bandwidth:
      type: integer
    tunableElements:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    globalGain:
      type: integer
    individualGains:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    autoGain:
      description: boolean not zero for true
      type: integer
    autoDCCorrection:
      description: boolean not zero for true
      type: integer
    autoIQCorrection:
      description: boolean not zero for true
      type: integer
    dcCorrection:
      $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/Complex"
    iqCorrection:
      $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/Complex"
    streamArgSettings:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    deviceArgSettings:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    useReverseAPI:
      description: Synchronize with reverse API (1 for yes, 0 for no)
      type: integer
    reverseAPIAddress:
      type: string
    reverseAPIPort:
      type: integer
    reverseAPIDeviceIndex:
      type: integer

SoapySDROutputSettings:
  description: SoapySDR
  properties:
    title:
      type: string
    centerFrequency:
      type: integer
      format: int64
    LOppmTenths:
      type: integer
    devSampleRate:
      type: integer
    log2Interp:
      type: integer
    transverterMode:
      description: boolean not zero for true
      type: integer
    transverterDeltaFrequency:
      type: integer
      format: int64
    antenna:
      type: string
    bandwidth:
      type: integer
    tunableElements:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    globalGain:
      type: integer
    individualGains:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    autoGain:
      description: boolean not zero for true
      type: integer
    autoDCCorrection:
      description: boolean not zero for true
      type: integer
    autoIQCorrection:
      description: boolean not zero for true
      type: integer
    dcCorrection:
      $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/Complex"
    iqCorrection:
      $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/Complex"
    streamArgSettings:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    deviceArgSettings:
      type: array
      items:
        $ref: "#/definitions/ArgValue"
    useReverseAPI:
      description: Synchronize with reverse API (1 for yes, 0 for no)
      type: integer
    reverseAPIAddress:
      type: string
    reverseAPIPort:
      type: integer
    reverseAPIDeviceIndex:
      type: integer

SoapySDRReport:
  description: SoapySDR
  properties:
    deviceSettingsArgs:
      type: array
      items:
        $ref: "#/definitions/ArgInfo"
    streamSettingsArgs:
      type: array
      items:
        $ref: "#/definitions/ArgInfo"
    hasDCAutoCorrection:
      description: boolean not zero for true
      type: integer
    hasDCOffsetValue:
      description: boolean not zero for true
      type: integer
    hasIQBalanceValue:
      description: boolean not zero for true
      type: integer
    hasFrequencyCorrectionValue:
      description: boolean not zero for true
      type: integer
    antennas:
      type: array
      items:
        type: string
    hasAGC:
      description: boolean not zero for true
      type: integer
    gainRange:
      $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"
    gainSettings:
      type: array
      items:
        $ref: "#/definitions/SoapySDRGainSetting"
    frequencySettings:
      type: array
      items:
        $ref: "#/definitions/SoapySDRFrequencySetting"
    frequencySettingsArgs:
      type: array
      items:
        $ref: "#/definitions/ArgInfo"
    ratesRanges:
      type: array
      items:
        $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"
    bandwidthsRanges:
      type: array
      items:
        $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"

definitions:

  SoapySDRGainSetting:
    description: A named gain setting specified by its range
    properties:
      name:
        type: string
      range:
        $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"

  SoapySDRFrequencySetting:
    description: A named frequency setting specified by a range list
    properties:
      name:
        type: string
      ranges:
        type: array
        items:
          $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"

  ArgValue:
    description: Generic argument value
    properties:
      key:
        type: string
      valueType:
        type: string
        enum: [bool, int, float, string]
      valueString:
        type: string

  ArgInfo:
    description: Generic argument information
    properties:
      key:
        type: string
      valueType:
        type: string
        enum: [bool, int, float, string]
      valueString:
        type: string
      name:
        type: string
      description:
        type: string
      units:
        type: string
      range:
        $ref: "http://swgserver:8081/api/swagger/include/Structs.yaml#/RangeFloat"
      valueOptions:
        type: array
        items:
          type: string
      optionNames:
        type: array
        items:
          type: string
