diff --git a/swagger/sdrangel/README.md b/swagger/sdrangel/README.md index 2249faca3..59b9ca426 100644 --- a/swagger/sdrangel/README.md +++ b/swagger/sdrangel/README.md @@ -40,7 +40,9 @@ cd api/swagger/include http-server --cors . ``` -Then in start the swagger editor +To start on a different port than 8080 use the `--port` option + +Then in the directory where this README.md is start the swagger editor ```shell swagger project edit @@ -56,4 +58,43 @@ Run the server in mock mode: swagger project start -m ``` +

Generating code

+ +

Installation

+ +The code generator is delivered in the form of a jar that you execute from the console using the java command. First make sure you have a JDK or JRE version 1.7 or above. In our example it will be located in `/opt/install/jdk1.8.0_74/` + +Download the jar from [this archive](https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/). Choose the latest version ex: 2.2.3 which can be done with wget. Say you want to install the jar in `/opt/install/swagger`: + +```shell +cd /opt/install/swagger +wget https://oss.sonatype.org/content/repositories/releases/io/swagger/swagger-codegen-cli/2.2.3/swagger-codegen-cli-2.2.3.jar +``` + +Then in the same directory write a little `swagger-codegen` shell script to facilitate the invocation. For example: + +```shell +#!/bin/sh +/opt/install/jdk1.8.0_74/bin/java -jar /opt/install/swagger/swagger-codegen-cli-2.2.3.jar ${*} +``` + +Then invoke the generator with `/opt/install/swagger/swagger-codegen ` + +

Code generation

+ +Do not forget to start the http server for includes as described before for the editor. + +Eventually to generate the code for Qt5 in the code/qt5 directory do: + +```shell +/opt/install/swagger/swagger-codegen generate -i api/swagger/swagger.yaml -l qt5cpp -o code/qt5 +``` + +The language option `-l` allows to generate code or documentation in a lot of languages (invoke the command without any parameter to get a list). The most commonly used are: + + - html2: documentation as a single HTML file pretty printed. Used to document the API in code/html2 + - python: Python client + - angular2: Typescript for Angular2 client + + diff --git a/swagger/sdrangel/api/swagger/swagger.yaml b/swagger/sdrangel/api/swagger/swagger.yaml index 9451edf37..9792caacf 100644 --- a/swagger/sdrangel/api/swagger/swagger.yaml +++ b/swagger/sdrangel/api/swagger/swagger.yaml @@ -1,7 +1,11 @@ swagger: "2.0" info: + description: "This is the web API of SDRangel SDR software. SDRangel is an Open Source Qt5/OpenGL 3.0+ GUI and server Software Defined Radio and signal analyzer in software. It supports Airspy, BladeRF, HackRF, LimeSDR, PlutoSDR, RTL-SDR, SDRplay RSP1 and FunCube" version: "4.0.0" title: SDRangel + contact: + url: "https://github.com/f4exb/sdrangel" + email: "f4exb06@gmail.com" # during dev, should point to your local machine host: localhost:10010 # basePath prefixes all resource paths @@ -45,12 +49,12 @@ paths: /sdrangel/devices: x-swagger-router-controller: instance get: - description: Get a list of sampling devices + description: Get a list of sampling devices that can be used to take part in a device set operationId: instanceDevices parameters: - name: direction in: query - description: gives Rx or Tx direction + description: Gives Rx (rx or none) or Tx (tx) direction required: false type: string responses: @@ -65,12 +69,12 @@ paths: /sdrangel/channels: x-swagger-router-controller: instance get: - description: Get a list of channel plugins + description: Get a list of channel plugins available in this instance operationId: instanceChannels parameters: - name: direction in: query - description: gives Rx or Tx direction + description: gives Rx (rx or none) or Tx (tx) direction required: false type: string responses: @@ -87,37 +91,44 @@ paths: # complex objects have schema definitions definitions: InstanceSummaryResponse: + description: "Summarized information about this SDRangel instance" required: - version - devicesetcount properties: version: + description: "Current software version" type: string logging: $ref: "#/definitions/LoggingInfo" devicesetcount: + description: "Number of device sets currently opened" type: integer devicesets: type: array items: $ref: "#/definitions/DeviceSet" user: - $ref: "http://localhost:8080/User.yaml#/User" + $ref: "http://localhost:8081/User.yaml#/User" InstanceDevicesResponse: + description: "Summarized information about logical devices from hardware devices attached to this SDRangel instance" required: - devicecount properties: devicecount: + description: "Number of devices attached" type: integer devices: type: array items: $ref: "#/definitions/DeviceListItem" InstanceChannelsResponse: + description: "Summarized information about channel plugins available in this SDRangel instance" required: - channelcount properties: channelcount: + description: "Number of plugins available" type: integer channels: type: array @@ -130,20 +141,26 @@ definitions: message: type: string LoggingInfo: + description: "Logging parameters setting" required: - consoleLevel - fileLevel - dumpToFile properties: consoleLevel: + description: "Minimum level of messages printed to console: debug, info, warning, error" type: string fileLevel: + description: "Minimum level of messages written to file: debug, info, warning, error" type: string dumpToFile: + description: "True if messages are written to file else false to log to console only" type: boolean fileName: + description: "Name of the log file" type: string DeviceListItem: + description: "Summarized information about attached hardware device" required: - hwType - rx @@ -152,30 +169,44 @@ definitions: - serial properties: hwType: + description: "Key to identify the type of hardware device" type: string rx: + description: "True if this is an Rx device else false for Tx" type: boolean + nbStreams: + description: "Number of channels or streams in the device" + type: integer streamIndex: + description: "Index of the channel in the device" type: integer sequence: + description: "Sequence in the enumeration of same device types" type: integer serial: + description: "Serial number of the hardware device" type: string ChannelListItem: + description: "Summarized information about channel plugin" required: - name - id - rx properties: name: + description: "Displayable name of the channel plugin" type: string id: + description: "Key to identify the channel plugin type" type: string rx: + description: "True if this is an Rx channel else false for Tx" type: boolean version: + description: "Channel plugin version number" type: string DeviceSet: + description: "Sampling device and its associated channels" required: - samplingDevice - channelcount @@ -183,12 +214,15 @@ definitions: samplingDevice: $ref: "#/definitions/SamplingDevice" channelcount: + description: "Number of channels in the set" type: integer channels: + description: "Channels list" type: array items: $ref: "#/definitions/Channel" SamplingDevice: + description: "Information about a logical device available from an attached hardware device that can be used as a sampling device" required: - index - hwType @@ -202,28 +236,43 @@ definitions: index: type: integer hwType: + description: "Key to identify the type of hardware device" type: string rx: + description: "True if this is an Rx device else false for Tx" type: boolean + nbStreams: + description: "Number of channels or streams in the device" + type: integer streamIndex: + description: "Index of the channel in the device" type: integer sequence: + description: "Sequence in the enumeration of same device types" type: integer serial: + description: "Serial number of the hardware device" type: string centerFrequency: + description: "Center frequency in Hz at which the device is tuned possibly taking NCO into account" type: integer + format: int64 bandwidth: + description: "Bandwidth in Hz or complex S/s of baseband" type: integer Channel: + description: "Channel summarized information" required: - index - id - deltaFrequency properties: index: + description: "Index in the list of channels" type: integer id: + description: "Key to identify the type of channel" type: string deltaFrequency: + description: "Channel shift frequency in Hz from the center of baseband" type: integer