#! /usr/bin/env python3 import SoapySDR as soapy from flask import Flask, request, jsonify from flasgger import Swagger app = Flask(__name__) swag = Swagger(app) sdrs = {} @app.route('/radio/report') def report(): """List radio devices available to the system. --- responses: 200: description: A list of radio devices. """ devices = [dict(device) for device in soapy.Device.enumerate()] return jsonify(devices) @app.route('/radio//connect') def connect(radio): """Connect to a radio device, by driver name or serial number. --- parameters: - name: radio description: Radio device driver name, or serial number. in: path type: string required: true responses: 200: description: Successfully connected to a radio. 400: description: No radio device by that name is available. 500: description: Failed to connect to radio. """ if radio in sdrs: return "Radio device already connected", 400 devices = [dict(device) for device in soapy.Device.enumerate()] for device in devices: if radio in device.values(): sdrs[radio] = {'device': soapy.Device(device)} if sdrs[radio]['device'] is None: sdrs.pop(radio) return "Failed to open device", 500 else: return "", 200 return "Radio device not found", 400 @app.route('/radio//disconnect') def disconnect(radio): """Disconnect from a radio device. --- parameters: - name: radio description: Radio device driver name, or serial number. in: path type: string required: true responses: 200: description: Successfully connected to a radio. 400: description: No radio device by that name is available. 500: description: An unknown error occurred. """ if radio in sdrs: if 'stream' in sdrs[radio] and sdrs[radio]['stream'] is not None: return "Radio is currently streaming, cannot disconnect", 400 else: sdrs.pop(radio) return "", 200 else: return "Radio not connected", 400 ''' @app.route('/radio//configure/') def configure(radio): pass @app.route('/radio//start') def start_stream(radio): pass @app.route('/radio//end') def end_stream(radio): pass ''' if __name__ == '__main__': app.run(debug=True)