====== Digilent Agent Protocol ====== ==== Command Format ==== ---- * The JSON data below is expanded for readability. All JSON should be minified (white space removed) before transmission. * Unless otherwise noted all commands are sent using the POST method when using HTTP. * All Digilent Agent Protocol commands must be a JSON object or a chunked transfer: * **JSON Object** * Must start with a '{' character and ends with a '}' character. * May be followed by one or more '\r\n'. * **Chunked Transfer** * Composed of one or more chunks. * Each chunk must begin with the number of bytes in the chunk in ASCII hexidecimal format followed by one '\r\n', the binary data, and one '\r\n'. * The chunk length does not include the '\r\n' between the chunk length and the data. * The chunk length does not include the trailing '\r\n' after the binary data. * Each chunked transfer is terminated with a zero length chunk. * Ex. 6\r\n chunk1\r\n 8\r\n somedata\r\n E\r\n in\r\n\r\nchunks.\r\n 0\r\n \r\n ===== Enumerate Devices ===== ---- Enumerate devices on the system and return a device list. **Command** * **command** - (String) - The Enumerate Devices command "enumerateDevices". **Response** * **command** - (String) - The Enumerate Devices command "enumerateDevices". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] * **devices** - (Array) - An array of device names. ===Example=== **Command** { "agent":[ { "command":"enumerateDevices" } ] } **Response** { "agent":[ { "command":"enumerateDevices", "statusCode":0, "devices":[ "COM1", "COM3", "COM6" ] } ] } \\ \\ ===== Get Agent Info ===== ---- Get information about the Digilent agent. **Command** * **command** - (String) - The Get Info command "getInfo". **Response** * **command** - (String) - The Get Info command "getInfo". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] * **version** - (Object) - An object representing the Agent version. * **major** - (Integer) - The Agent major version. * **minor** - (Integer) - The Agent minor version. * **patch** - (Integer) - The Agent patch version. ===Example=== **Command** { "agent":[ { "command":"getInfo" } ] } **Response** { "agent":[ { "command":"getInfo", "statusCode":0, "version":{ "major":1, "minor":0, "patch":0 } } ] } \\ \\ ===== Get Active Device ===== ---- //Note: Not yet implemented as of Digilent Agent 1.2.1.// Get the active device. **Command** * **command** - (String) - The Get Active Device command "getActiveDevice". **Response** * **command** - (String) - The Get Active Device command "getActiveDevice". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] * **device** - (String) - The active device name. ===Example=== **Command** { "agent":[ { "command":"getActiveDevice" } ] } **Response** { "agent":[ { "command":"getActiveDevice", "statusCode":0, "device":"COM3" } ] } \\ \\ ===== Set Active Device ===== ---- Set the active device. **Command** * **command** - (String) - The Set Active Device command "setActiveDevice". * **device** - (String) - The name of the device to set as the active device. **Response** * **command** - (String) - The Set Active Device command "setActiveDevice". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== **Command** { "agent":[ { "command":"setActiveDevice", "device":"COM3" } ] } **Response** { "agent": [ { "command": "setActiveDevice", "statusCode": 0 } ] } \\ \\ ===== Enter JSON Mode ===== ---- Put the active device in JSON command mode. **Command** * **command** - (String) - The Enter JSON Mode command "enterJsonMode". **Response** * **command** - (String) - The Enter JSON Mode command "enterJsonMode". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== **Command** { "agent":[ { "command":"enterJsonMode" } ] } **Response** { "agent":[ { "command":"enterJsonMode", "statusCode":0 } ] } \\ \\ ===== Release Active Device ===== ---- Release the active device and free the hardware resource. **Command** * **command** - (String) - The Release Active Device command "releaseActiveDevice". **Response** * **command** - (String) - The Release Active Device command "releaseActiveDevice". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== **Command** { "agent":[ { "command":"releaseActiveDevice" } ] } **Response** { "agent":[ { "command":"releaseActiveDevice", "statusCode":0 } ] } \\ \\ ===== Save To Temp File ===== ---- Save the provided binary data as the specified file in a temp directory. **Command** * **command** - (String) - The Save Temp File command "saveTempFile". * **fileName** - (String) - The file name used when saving the binary data. **Response** * **command** - (String) - The Save Temp File command "saveTempFile". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== **Command** { "agent":[ { "command":"saveTempFile", "fileName":"openscope-mz-firmware.hex" } ] } **Response** { "agent":[ { "command":"saveTempFile", "statusCode":0 } ] } \\ \\ ===== Upload Firmware ===== ---- Upload new firmware to the active device. **Command** * **command** - (String) - The Upload Firmware command "updateFirmware". * **enterBootloader** - (Boolean) - If true the Agent will attempt to put the device in bootloader mode. * **firmwarePath** - (String) - The path to the firmware file. If only the file name is provided the directory is assumed to be the temp directory. **Response** * **command** - (String) - The Upload Firmware command "updateFirmware". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== { "agent":[ { "command":"updateFirmware", "firmwarePath":"openscope-mz-firmware.hex", "enterBootloader": true } ] } **Response** { "agent": [ { "command": "updateFirmware", "statusCode": 0 } ] } \\ \\ ===== Update WaveForms Live Browser ===== ---- Update the offline browser version of WaveForms Live. **Command** * **command** - (String) - The Update WaveForms Live Browser command "updateWaveFormsLiveBrowser". * **updateZipFileName** - (String) - The path to the file name of the zip file containing the update including the .zip extension (file must be in temp directory). **Response** * **command** - (String) - The Update WaveForms Live Browser command "updateWaveFormsLiveBrowser". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] ===Example=== { "agent":[ { "command":"updateWaveFormsLiveBrowser", "updateZipFileName":"waveforms-live-0.1.0.zip" } ] } **Response** { "agent": [ { "command": "updateWaveFormsLiveBrowser", "statusCode": 0 } ] } \\ \\ ===== Get Update Firmware Status ===== ---- Get the status of the firmware update process. **Command** * **command** - (String) - The Update Firmware Get Status command "updateFirmwareGetStatus". **Response** * **command** - (String) - The Update Firmware Get Status "updateFirmwareGetStatus". * **statusCode** - (Integer) - A numeric value representing the device status. See [[software:digilent-agent:protocol-status-codes]] * **status** - (String) - The status of the firmware update process ('idle', 'uploading', 'failed'); * **progress** - (Integer) - An integer value 0-100 representing the percent complete. **Response** ===Example=== { "agent":[ { "command":"updateFirmwareGetStatus" } ] } **Response** { "agent": [ { "command": "updateFirmwareGetStatus", "statusCode": 0, "status": "uploading", "progress" 25 } ] } \\ \\