diff --git a/components.d.ts b/components.d.ts index 20e9056..dca5943 100644 --- a/components.d.ts +++ b/components.d.ts @@ -13,6 +13,7 @@ declare module 'vue' { BaseBoard: typeof import('./src/components/equipments/BaseBoard.vue')['default'] BaseInputField: typeof import('./src/components/InputField/BaseInputField.vue')['default'] Canvas: typeof import('./src/components/Canvas.vue')['default'] + ChannelConfig: typeof import('./src/components/LogicAnalyzer/ChannelConfig.vue')['default'] CollapsibleSection: typeof import('./src/components/CollapsibleSection.vue')['default'] ComponentSelector: typeof import('./src/components/LabCanvas/ComponentSelector.vue')['default'] DDR: typeof import('./src/components/equipments/DDR.vue')['default'] @@ -67,6 +68,7 @@ declare module 'vue' { TabsTrigger: typeof import('reka-ui')['TabsTrigger'] ThemeControlButton: typeof import('./src/components/ThemeControlButton.vue')['default'] ThemeControlToggle: typeof import('./src/components/ThemeControlToggle.vue')['default'] + TriggerSettings: typeof import('./src/components/LogicAnalyzer/TriggerSettings.vue')['default'] TutorialCarousel: typeof import('./src/components/TutorialCarousel.vue')['default'] UploadCard: typeof import('./src/components/UploadCard.vue')['default'] WaveformDisplay: typeof import('./src/components/Oscilloscope/WaveformDisplay.vue')['default'] diff --git a/server/src/UdpServer.cs b/server/src/UdpServer.cs index 1c89e01..3f4e915 100644 --- a/server/src/UdpServer.cs +++ b/server/src/UdpServer.cs @@ -346,25 +346,28 @@ public class UDPServer return retPack.Value; } - private void ReceiveHandler(byte[] data, IPEndPoint endPoint) + private async Task ReceiveHandler(byte[] data, IPEndPoint endPoint, DateTime time) { - // Handle RemoteEP - if (endPoint is null) + // 异步锁保护 udpData + await Task.Run(() => { - logger.Debug($"Receive Data from Unknown at {DateTime.Now.ToString()}:"); - logger.Debug($" Original Data : {BitConverter.ToString(data).Replace("-", " ")}"); - return; - } + lock (udpData) + { + // Handle RemoteEP + if (endPoint is null) + { + logger.Debug($"Receive Data from Unknown at {DateTime.Now.ToString()}:"); + logger.Debug($" Original Data : {BitConverter.ToString(data).Replace("-", " ")}"); + return; + } - // 异步处理数据包 - Task.Run(() => - { - var udpData = RecordUDPData(data, endPoint, Convert.ToInt32(data[1])); - PrintData(udpData); + var udpDataObj = RecordUDPData(data, endPoint, time, Convert.ToInt32(data[1])); + PrintData(udpDataObj); + } }); } - private UDPData RecordUDPData(byte[] bytes, IPEndPoint remoteEP, int taskID) + private UDPData RecordUDPData(byte[] bytes, IPEndPoint remoteEP, DateTime time, int taskID) { var remoteAddress = remoteEP.Address.ToString(); var remotePort = remoteEP.Port; @@ -374,7 +377,7 @@ public class UDPServer Port = remotePort, TaskID = taskID, Data = bytes, - DateTime = DateTime.Now, + DateTime = time, HasRead = false, }; @@ -482,7 +485,7 @@ public class UDPServer try { UdpReceiveResult result = await client.ReceiveAsync(); - ReceiveHandler(result.Buffer, result.RemoteEndPoint); + ReceiveHandler(result.Buffer, result.RemoteEndPoint, DateTime.Now); } catch (Exception ex) { @@ -510,6 +513,7 @@ public class UDPServer item.Close(); } this.isRunning = false; + } } diff --git a/src/APIClient.ts b/src/APIClient.ts index 2bd17a3..8c88e3b 100644 --- a/src/APIClient.ts +++ b/src/APIClient.ts @@ -1,3470 +1,4147 @@ -//---------------------- -// -// Generated using the NSwag toolchain v14.3.0.0 (NJsonSchema v11.2.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) -// -//---------------------- - -/* tslint:disable */ -/* eslint-disable */ -// ReSharper disable InconsistentNaming - -export class VideoStreamClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 获取 HTTP 视频流服务状态 - * @return 服务状态信息 - */ - getStatus(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/Status"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetStatus(_response); - }); - } - - protected processGetStatus(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取 HTTP 视频流信息 - * @return 流信息 - */ - getStreamInfo(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/StreamInfo"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetStreamInfo(_response); - }); - } - - protected processGetStreamInfo(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 配置摄像头连接参数 - * @param config 摄像头配置 - * @return 配置结果 - */ - configureCamera(config: CameraConfigRequest): Promise { - let url_ = this.baseUrl + "/api/VideoStream/ConfigureCamera"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = JSON.stringify(config); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Content-Type": "application/json", - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processConfigureCamera(_response); - }); - } - - protected processConfigureCamera(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = resultData400 !== undefined ? resultData400 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取当前摄像头配置 - * @return 摄像头配置信息 - */ - getCameraConfig(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/CameraConfig"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetCameraConfig(_response); - }); - } - - protected processGetCameraConfig(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 控制 HTTP 视频流服务开关 - * @param enabled (optional) 是否启用服务 - * @return 操作结果 - */ - setEnabled(enabled: boolean | undefined): Promise { - let url_ = this.baseUrl + "/api/VideoStream/SetEnabled?"; - if (enabled === null) - throw new Error("The parameter 'enabled' cannot be null."); - else if (enabled !== undefined) - url_ += "enabled=" + encodeURIComponent("" + enabled) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetEnabled(_response); - }); - } - - protected processSetEnabled(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 测试 HTTP 视频流连接 - * @return 连接测试结果 - */ - testConnection(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/TestConnection"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processTestConnection(_response); - }); - } - - protected processTestConnection(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 设置视频流分辨率 - * @param request 分辨率配置请求 - * @return 设置结果 - */ - setResolution(request: ResolutionConfigRequest): Promise { - let url_ = this.baseUrl + "/api/VideoStream/Resolution"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = JSON.stringify(request); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Content-Type": "application/json", - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetResolution(_response); - }); - } - - protected processSetResolution(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = resultData400 !== undefined ? resultData400 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = resultData500 !== undefined ? resultData500 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取当前分辨率 - * @return 当前分辨率信息 - */ - getCurrentResolution(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/Resolution"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetCurrentResolution(_response); - }); - } - - protected processGetCurrentResolution(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = resultData500 !== undefined ? resultData500 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取支持的分辨率列表 - * @return 支持的分辨率列表 - */ - getSupportedResolutions(): Promise { - let url_ = this.baseUrl + "/api/VideoStream/SupportedResolutions"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetSupportedResolutions(_response); - }); - } - - protected processGetSupportedResolutions(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = resultData500 !== undefined ? resultData500 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class BsdlParserClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * [TODO:description] - * @return [TODO:return] - */ - getBoundaryLogicalPorts(): Promise { - let url_ = this.baseUrl + "/api/BsdlParser/GetBoundaryLogicalPorts"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/octet-stream" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetBoundaryLogicalPorts(_response); - }); - } - - protected processGetBoundaryLogicalPorts(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200 || status === 206) { - const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; - let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; - let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; - if (fileName) { - fileName = decodeURIComponent(fileName); - } else { - fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; - fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; - } - return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class DataClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 用户登录,获取 JWT 令牌 - * @param name (optional) 用户名 - * @param password (optional) 用户密码 - * @return JWT 令牌字符串 - */ - login(name: string | undefined, password: string | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/Login?"; - if (name === null) - throw new Error("The parameter 'name' cannot be null."); - else if (name !== undefined) - url_ += "name=" + encodeURIComponent("" + name) + "&"; - if (password === null) - throw new Error("The parameter 'password' cannot be null."); - else if (password !== undefined) - url_ += "password=" + encodeURIComponent("" + password) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processLogin(_response); - }); - } - - protected processLogin(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 测试用户认证,需携带有效 JWT - * @return 认证成功信息 - */ - testAuth(): Promise { - let url_ = this.baseUrl + "/api/Data/TestAuth"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processTestAuth(_response); - }); - } - - protected processTestAuth(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 测试管理员用户认证,需携带有效 JWT - * @return 认证成功信息 - */ - testAdminAuth(): Promise { - let url_ = this.baseUrl + "/api/Data/TestAdminAuth"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processTestAdminAuth(_response); - }); - } - - protected processTestAdminAuth(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取当前用户信息 - * @return 用户信息,包括ID、用户名、邮箱和板卡ID - */ - getUserInfo(): Promise { - let url_ = this.baseUrl + "/api/Data/GetUserInfo"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetUserInfo(_response); - }); - } - - protected processGetUserInfo(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = UserInfo.fromJS(resultData200); - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 注册新用户 - * @param name (optional) 用户名(不超过255个字符) - * @param email (optional) 邮箱地址 - * @param password (optional) 用户密码 - * @return 操作结果,成功返回 true,失败返回错误信息 - */ - signUpUser(name: string | undefined, email: string | undefined, password: string | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/SignUpUser?"; - if (name === null) - throw new Error("The parameter 'name' cannot be null."); - else if (name !== undefined) - url_ += "name=" + encodeURIComponent("" + name) + "&"; - if (email === null) - throw new Error("The parameter 'email' cannot be null."); - else if (email !== undefined) - url_ += "email=" + encodeURIComponent("" + email) + "&"; - if (password === null) - throw new Error("The parameter 'password' cannot be null."); - else if (password !== undefined) - url_ += "password=" + encodeURIComponent("" + password) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSignUpUser(_response); - }); - } - - protected processSignUpUser(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取一个空闲的实验板(普通用户权限) - * @param durationHours (optional) 绑定持续时间(小时),默认为1小时 - */ - getAvailableBoard(durationHours: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/GetAvailableBoard?"; - if (durationHours === null) - throw new Error("The parameter 'durationHours' cannot be null."); - else if (durationHours !== undefined) - url_ += "durationHours=" + encodeURIComponent("" + durationHours) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetAvailableBoard(_response); - }); - } - - protected processGetAvailableBoard(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = Board.fromJS(resultData200); - return result200; - }); - } else if (status === 404) { - return response.text().then((_responseText) => { - let result404: any = null; - let resultData404 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result404 = ProblemDetails.fromJS(resultData404); - return throwException("A server side error occurred.", status, _responseText, _headers, result404); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 解除当前用户绑定的实验板(普通用户权限) - */ - unbindBoard(): Promise { - let url_ = this.baseUrl + "/api/Data/UnbindBoard"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processUnbindBoard(_response); - }); - } - - protected processUnbindBoard(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 用户根据实验板ID获取实验板信息(普通用户权限) - * @param id (optional) - */ - getBoardByID(id: string | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/GetBoardByID?"; - if (id === null) - throw new Error("The parameter 'id' cannot be null."); - else if (id !== undefined) - url_ += "id=" + encodeURIComponent("" + id) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetBoardByID(_response); - }); - } - - protected processGetBoardByID(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = Board.fromJS(resultData200); - return result200; - }); - } else if (status === 404) { - return response.text().then((_responseText) => { - let result404: any = null; - let resultData404 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result404 = ProblemDetails.fromJS(resultData404); - return throwException("A server side error occurred.", status, _responseText, _headers, result404); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 新增板子(管理员权限) - * @param name (optional) - * @param ipAddr (optional) - * @param port (optional) - */ - addBoard(name: string | undefined, ipAddr: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/AddBoard?"; - if (name === null) - throw new Error("The parameter 'name' cannot be null."); - else if (name !== undefined) - url_ += "name=" + encodeURIComponent("" + name) + "&"; - if (ipAddr === null) - throw new Error("The parameter 'ipAddr' cannot be null."); - else if (ipAddr !== undefined) - url_ += "ipAddr=" + encodeURIComponent("" + ipAddr) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processAddBoard(_response); - }); - } - - protected processAddBoard(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 删除板子(管理员权限) - * @param id (optional) - */ - deleteBoard(id: string | undefined): Promise { - let url_ = this.baseUrl + "/api/Data/DeleteBoard?"; - if (id === null) - throw new Error("The parameter 'id' cannot be null."); - else if (id !== undefined) - url_ += "id=" + encodeURIComponent("" + id) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "DELETE", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processDeleteBoard(_response); - }); - } - - protected processDeleteBoard(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ProblemDetails.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取全部板子(管理员权限) - */ - getAllBoards(): Promise { - let url_ = this.baseUrl + "/api/Data/GetAllBoards"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetAllBoards(_response); - }); - } - - protected processGetAllBoards(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - if (Array.isArray(resultData200)) { - result200 = [] as any; - for (let item of resultData200) - result200!.push(Board.fromJS(item)); - } - else { - result200 = null; - } - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class DDSClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * [TODO:description] - * @param address (optional) [TODO:parameter] - * @param port (optional) [TODO:parameter] - * @param channelNum (optional) [TODO:parameter] - * @param waveNum (optional) [TODO:parameter] - * @return [TODO:return] - */ - setWaveNum(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined): Promise { - let url_ = this.baseUrl + "/api/DDS/SetWaveNum?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (channelNum === null) - throw new Error("The parameter 'channelNum' cannot be null."); - else if (channelNum !== undefined) - url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; - if (waveNum === null) - throw new Error("The parameter 'waveNum' cannot be null."); - else if (waveNum !== undefined) - url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetWaveNum(_response); - }); - } - - protected processSetWaveNum(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * [TODO:description] - * @param address (optional) [TODO:parameter] - * @param port (optional) [TODO:parameter] - * @param channelNum (optional) [TODO:parameter] - * @param waveNum (optional) [TODO:parameter] - * @param step (optional) [TODO:parameter] - * @return [TODO:return] - */ - setFreq(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined, step: number | undefined): Promise { - let url_ = this.baseUrl + "/api/DDS/SetFreq?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (channelNum === null) - throw new Error("The parameter 'channelNum' cannot be null."); - else if (channelNum !== undefined) - url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; - if (waveNum === null) - throw new Error("The parameter 'waveNum' cannot be null."); - else if (waveNum !== undefined) - url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; - if (step === null) - throw new Error("The parameter 'step' cannot be null."); - else if (step !== undefined) - url_ += "step=" + encodeURIComponent("" + step) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetFreq(_response); - }); - } - - protected processSetFreq(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * [TODO:description] - * @param address (optional) [TODO:parameter] - * @param port (optional) [TODO:parameter] - * @param channelNum (optional) [TODO:parameter] - * @param waveNum (optional) [TODO:parameter] - * @param phase (optional) [TODO:parameter] - * @return [TODO:return] - */ - setPhase(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined, phase: number | undefined): Promise { - let url_ = this.baseUrl + "/api/DDS/SetPhase?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (channelNum === null) - throw new Error("The parameter 'channelNum' cannot be null."); - else if (channelNum !== undefined) - url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; - if (waveNum === null) - throw new Error("The parameter 'waveNum' cannot be null."); - else if (waveNum !== undefined) - url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; - if (phase === null) - throw new Error("The parameter 'phase' cannot be null."); - else if (phase !== undefined) - url_ += "phase=" + encodeURIComponent("" + phase) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetPhase(_response); - }); - } - - protected processSetPhase(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class JtagClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 控制器首页信息 - * @return 控制器描述信息 - */ - index(): Promise { - let url_ = this.baseUrl + "/api/Jtag"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processIndex(_response); - }); - } - - protected processIndex(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取 JTAG 设备的 ID Code - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @return 设备的 ID Code - */ - getDeviceIDCode(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/GetDeviceIDCode?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetDeviceIDCode(_response); - }); - } - - protected processGetDeviceIDCode(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 读取 JTAG 设备的状态寄存器 - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @return 状态寄存器的原始值、二进制表示和解码值 - */ - readStatusReg(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/ReadStatusReg?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processReadStatusReg(_response); - }); - } - - protected processReadStatusReg(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 上传比特流文件到服务器 - * @param address (optional) 目标设备地址 - * @param file (optional) 比特流文件 - * @return 上传结果 - */ - uploadBitstream(address: string | undefined, file: FileParameter | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/UploadBitstream?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = new FormData(); - if (file === null || file === undefined) - throw new Error("The parameter 'file' cannot be null."); - else - content_.append("file", file.data, file.fileName ? file.fileName : "file"); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processUploadBitstream(_response); - }); - } - - protected processUploadBitstream(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = resultData400 !== undefined ? resultData400 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 通过 JTAG 下载比特流文件到 FPGA 设备 - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @return 下载结果 - */ - downloadBitstream(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/DownloadBitstream?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processDownloadBitstream(_response); - }); - } - - protected processDownloadBitstream(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = resultData400 !== undefined ? resultData400 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 执行边界扫描,获取所有端口状态 - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @return 边界扫描结果 - */ - boundaryScanAllPorts(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/BoundaryScanAllPorts?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processBoundaryScanAllPorts(_response); - }); - } - - protected processBoundaryScanAllPorts(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = resultData400 !== undefined ? resultData400 : null; - - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 执行逻辑端口边界扫描 - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @return 逻辑端口状态字典 - */ - boundaryScanLogicalPorts(address: string | undefined, port: number | undefined): Promise<{ [key: string]: boolean; }> { - let url_ = this.baseUrl + "/api/Jtag/BoundaryScanLogicalPorts?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processBoundaryScanLogicalPorts(_response); - }); - } - - protected processBoundaryScanLogicalPorts(response: Response): Promise<{ [key: string]: boolean; }> { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - if (resultData200) { - result200 = {} as any; - for (let key in resultData200) { - if (resultData200.hasOwnProperty(key)) - (result200)![key] = resultData200[key] !== undefined ? resultData200[key] : null; - } - } - else { - result200 = null; - } - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve<{ [key: string]: boolean; }>(null as any); - } - - /** - * 设置 JTAG 时钟速度 - * @param address (optional) JTAG 设备地址 - * @param port (optional) JTAG 设备端口 - * @param speed (optional) 时钟速度 (Hz) - * @return 设置结果 - */ - setSpeed(address: string | undefined, port: number | undefined, speed: number | undefined): Promise { - let url_ = this.baseUrl + "/api/Jtag/SetSpeed?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (speed === null) - throw new Error("The parameter 'speed' cannot be null."); - else if (speed !== undefined) - url_ += "speed=" + encodeURIComponent("" + speed) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetSpeed(_response); - }); - } - - protected processSetSpeed(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status === 401) { - return response.text().then((_responseText) => { - let result401: any = null; - let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result401 = ProblemDetails.fromJS(resultData401); - return throwException("A server side error occurred.", status, _responseText, _headers, result401); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class MatrixKeyClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 启用矩阵键控制。 - * @param address (optional) 设备的IP地址 - * @param port (optional) 设备的端口号 - * @return 返回操作结果的状态码 - */ - enabelMatrixKey(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/MatrixKey/EnabelMatrixKey?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processEnabelMatrixKey(_response); - }); - } - - protected processEnabelMatrixKey(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 禁用矩阵键控制。 - * @param address (optional) 设备的IP地址 - * @param port (optional) 设备的端口号 - * @return 返回操作结果的状态码 - */ - disableMatrixKey(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/MatrixKey/DisableMatrixKey?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processDisableMatrixKey(_response); - }); - } - - protected processDisableMatrixKey(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 设置矩阵键的状态。 - * @param address (optional) 设备的IP地址 - * @param port (optional) 设备的端口号 - * @param keyStates 矩阵键的状态数组,长度应为16 - * @return 返回操作结果的状态码 - */ - setMatrixKeyStatus(address: string | undefined, port: number | undefined, keyStates: boolean[]): Promise { - let url_ = this.baseUrl + "/api/MatrixKey/SetMatrixKeyStatus?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = JSON.stringify(keyStates); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Content-Type": "application/json", - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetMatrixKeyStatus(_response); - }); - } - - protected processSetMatrixKeyStatus(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class PowerClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * [TODO:description] - * @param address (optional) [TODO:parameter] - * @param port (optional) [TODO:parameter] - * @param enable (optional) [TODO:parameter] - * @return [TODO:return] - */ - setPowerOnOff(address: string | undefined, port: number | undefined, enable: boolean | undefined): Promise { - let url_ = this.baseUrl + "/api/Power/SetPowerOnOff?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (enable === null) - throw new Error("The parameter 'enable' cannot be null."); - else if (enable !== undefined) - url_ += "enable=" + encodeURIComponent("" + enable) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSetPowerOnOff(_response); - }); - } - - protected processSetPowerOnOff(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class RemoteUpdateClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 上传远程更新比特流文件 - * @param address (optional) 设备地址 - * @param goldenBitream (optional) 黄金比特流文件 - * @param bitstream1 (optional) 比特流文件1 - * @param bitstream2 (optional) 比特流文件2 - * @param bitstream3 (optional) 比特流文件3 - * @return 上传结果 - */ - uploadBitstreams(address: string | undefined, goldenBitream: FileParameter | null | undefined, bitstream1: FileParameter | null | undefined, bitstream2: FileParameter | null | undefined, bitstream3: FileParameter | null | undefined): Promise { - let url_ = this.baseUrl + "/api/RemoteUpdate/UploadBitstream?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = new FormData(); - if (goldenBitream !== null && goldenBitream !== undefined) - content_.append("goldenBitream", goldenBitream.data, goldenBitream.fileName ? goldenBitream.fileName : "goldenBitream"); - if (bitstream1 !== null && bitstream1 !== undefined) - content_.append("bitstream1", bitstream1.data, bitstream1.fileName ? bitstream1.fileName : "bitstream1"); - if (bitstream2 !== null && bitstream2 !== undefined) - content_.append("bitstream2", bitstream2.data, bitstream2.fileName ? bitstream2.fileName : "bitstream2"); - if (bitstream3 !== null && bitstream3 !== undefined) - content_.append("bitstream3", bitstream3.data, bitstream3.fileName ? bitstream3.fileName : "bitstream3"); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processUploadBitstreams(_response); - }); - } - - protected processUploadBitstreams(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 远程更新单个比特流文件 - * @param address (optional) 设备地址 - * @param port (optional) 设备端口 - * @param bitstreamNum (optional) 比特流位号 - */ - updateBitstream(address: string | undefined, port: number | undefined, bitstreamNum: number | undefined): Promise { - let url_ = this.baseUrl + "/api/RemoteUpdate/DownloadBitstream?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (bitstreamNum === null) - throw new Error("The parameter 'bitstreamNum' cannot be null."); - else if (bitstreamNum !== undefined) - url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processUpdateBitstream(_response); - }); - } - - protected processUpdateBitstream(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 下载多个比特流文件 - * @param address (optional) 设备地址 - * @param port (optional) 设备端口 - * @param bitstreamNum (optional) 比特流编号 - * @return 总共上传比特流的数量 - */ - downloadMultiBitstreams(address: string | undefined, port: number | undefined, bitstreamNum: number | null | undefined): Promise { - let url_ = this.baseUrl + "/api/RemoteUpdate/DownloadMultiBitstreams?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (bitstreamNum !== undefined && bitstreamNum !== null) - url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processDownloadMultiBitstreams(_response); - }); - } - - protected processDownloadMultiBitstreams(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 热复位比特流文件 - * @param address (optional) 设备地址 - * @param port (optional) 设备端口 - * @param bitstreamNum (optional) 比特流编号 - * @return 操作结果 - */ - hotResetBitstream(address: string | undefined, port: number | undefined, bitstreamNum: number | undefined): Promise { - let url_ = this.baseUrl + "/api/RemoteUpdate/HotResetBitstream?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (bitstreamNum === null) - throw new Error("The parameter 'bitstreamNum' cannot be null."); - else if (bitstreamNum !== undefined) - url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processHotResetBitstream(_response); - }); - } - - protected processHotResetBitstream(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * [TODO:description] - * @param address (optional) [TODO:parameter] - * @param port (optional) [TODO:parameter] - * @return [TODO:return] - */ - getFirmwareVersion(address: string | undefined, port: number | undefined): Promise { - let url_ = this.baseUrl + "/api/RemoteUpdate/GetFirmwareVersion?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetFirmwareVersion(_response); - }); - } - - protected processGetFirmwareVersion(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status === 400) { - return response.text().then((_responseText) => { - let result400: any = null; - let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result400 = ArgumentException.fromJS(resultData400); - return throwException("A server side error occurred.", status, _responseText, _headers, result400); - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - let result500: any = null; - let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result500 = Exception.fromJS(resultData500); - return throwException("A server side error occurred.", status, _responseText, _headers, result500); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class TutorialClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 获取所有可用的教程目录 - * @return 教程目录列表 - */ - getTutorials(): Promise { - let url_ = this.baseUrl + "/api/Tutorial"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetTutorials(_response); - }); - } - - protected processGetTutorials(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class UDPClient { - private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; - private baseUrl: string; - protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; - - constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { - this.http = http ? http : window as any; - this.baseUrl = baseUrl ?? "http://localhost:5000"; - } - - /** - * 页面 - */ - index(): Promise { - let url_ = this.baseUrl + "/api/UDP"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processIndex(_response); - }); - } - - protected processIndex(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - result200 = resultData200 !== undefined ? resultData200 : null; - - return result200; - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 发送字符串 - * @param address (optional) IPV4 或者 IPV6 地址 - * @param port (optional) 设备端口号 - * @param text (optional) 发送的文本 - * @return 发送成功 - */ - sendString(address: string | undefined, port: number | undefined, text: string | undefined): Promise { - let url_ = this.baseUrl + "/api/UDP/SendString?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (text === null) - throw new Error("The parameter 'text' cannot be null."); - else if (text !== undefined) - url_ += "text=" + encodeURIComponent("" + text) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSendString(_response); - }); - } - - protected processSendString(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("\u53d1\u9001\u5931\u8d25", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 发送二进制数据 - * @param address (optional) IPV4 或者 IPV6 地址 - * @param port (optional) 设备端口号 - * @param bytes (optional) 16进制文本 - */ - sendBytes(address: string | undefined, port: number | undefined, bytes: string | undefined): Promise { - let url_ = this.baseUrl + "/api/UDP/SendBytes?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (bytes === null) - throw new Error("The parameter 'bytes' cannot be null."); - else if (bytes !== undefined) - url_ += "bytes=" + encodeURIComponent("" + bytes) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSendBytes(_response); - }); - } - - protected processSendBytes(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 发送地址包 - * @param address (optional) IP地址 - * @param port (optional) UDP 端口号 - * @param opts 地址包选项 - */ - sendAddrPackage(address: string | undefined, port: number | undefined, opts: SendAddrPackOptions): Promise { - let url_ = this.baseUrl + "/api/UDP/SendAddrPackage?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - const content_ = JSON.stringify(opts); - - let options_: RequestInit = { - body: content_, - method: "POST", - headers: { - "Content-Type": "application/json", - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSendAddrPackage(_response); - }); - } - - protected processSendAddrPackage(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 发送数据包 - * @param address (optional) IP地址 - * @param port (optional) UDP 端口号 - * @param data (optional) 16进制数据 - */ - sendDataPackage(address: string | undefined, port: number | undefined, data: string | undefined): Promise { - let url_ = this.baseUrl + "/api/UDP/SendDataPackage?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (port === null) - throw new Error("The parameter 'port' cannot be null."); - else if (port !== undefined) - url_ += "port=" + encodeURIComponent("" + port) + "&"; - if (data === null) - throw new Error("The parameter 'data' cannot be null."); - else if (data !== undefined) - url_ += "data=" + encodeURIComponent("" + data) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "POST", - headers: { - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processSendDataPackage(_response); - }); - } - - protected processSendDataPackage(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - return; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } - - /** - * 获取指定IP地址接收的数据列表 - * @param address (optional) IP地址 - * @param taskID (optional) 任务ID - */ - getRecvDataArray(address: string | undefined, taskID: number | undefined): Promise { - let url_ = this.baseUrl + "/api/UDP/GetRecvDataArray?"; - if (address === null) - throw new Error("The parameter 'address' cannot be null."); - else if (address !== undefined) - url_ += "address=" + encodeURIComponent("" + address) + "&"; - if (taskID === null) - throw new Error("The parameter 'taskID' cannot be null."); - else if (taskID !== undefined) - url_ += "taskID=" + encodeURIComponent("" + taskID) + "&"; - url_ = url_.replace(/[?&]$/, ""); - - let options_: RequestInit = { - method: "GET", - headers: { - "Accept": "application/json" - } - }; - - return this.http.fetch(url_, options_).then((_response: Response) => { - return this.processGetRecvDataArray(_response); - }); - } - - protected processGetRecvDataArray(response: Response): Promise { - const status = response.status; - let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; - if (status === 200) { - return response.text().then((_responseText) => { - let result200: any = null; - let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); - if (Array.isArray(resultData200)) { - result200 = [] as any; - for (let item of resultData200) - result200!.push(UDPData.fromJS(item)); - } - else { - result200 = null; - } - return result200; - }); - } else if (status === 500) { - return response.text().then((_responseText) => { - return throwException("A server side error occurred.", status, _responseText, _headers); - }); - } else if (status !== 200 && status !== 204) { - return response.text().then((_responseText) => { - return throwException("An unexpected server error occurred.", status, _responseText, _headers); - }); - } - return Promise.resolve(null as any); - } -} - -export class Exception implements IException { - message!: string; - innerException?: Exception | undefined; - source?: string | undefined; - stackTrace?: string | undefined; - - constructor(data?: IException) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.message = _data["Message"]; - this.innerException = _data["InnerException"] ? Exception.fromJS(_data["InnerException"]) : undefined; - this.source = _data["Source"]; - this.stackTrace = _data["StackTrace"]; - } - } - - static fromJS(data: any): Exception { - data = typeof data === 'object' ? data : {}; - let result = new Exception(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["Message"] = this.message; - data["InnerException"] = this.innerException ? this.innerException.toJSON() : undefined; - data["Source"] = this.source; - data["StackTrace"] = this.stackTrace; - return data; - } -} - -export interface IException { - message: string; - innerException?: Exception | undefined; - source?: string | undefined; - stackTrace?: string | undefined; -} - -/** 摄像头配置请求模型 */ -export class CameraConfigRequest implements ICameraConfigRequest { - /** 摄像头地址 */ - address!: string; - /** 摄像头端口 */ - port!: number; - - constructor(data?: ICameraConfigRequest) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.address = _data["address"]; - this.port = _data["port"]; - } - } - - static fromJS(data: any): CameraConfigRequest { - data = typeof data === 'object' ? data : {}; - let result = new CameraConfigRequest(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["address"] = this.address; - data["port"] = this.port; - return data; - } -} - -/** 摄像头配置请求模型 */ -export interface ICameraConfigRequest { - /** 摄像头地址 */ - address: string; - /** 摄像头端口 */ - port: number; -} - -/** 分辨率配置请求模型 */ -export class ResolutionConfigRequest implements IResolutionConfigRequest { - /** 宽度 */ - width!: number; - /** 高度 */ - height!: number; - - constructor(data?: IResolutionConfigRequest) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.width = _data["width"]; - this.height = _data["height"]; - } - } - - static fromJS(data: any): ResolutionConfigRequest { - data = typeof data === 'object' ? data : {}; - let result = new ResolutionConfigRequest(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["width"] = this.width; - data["height"] = this.height; - return data; - } -} - -/** 分辨率配置请求模型 */ -export interface IResolutionConfigRequest { - /** 宽度 */ - width: number; - /** 高度 */ - height: number; -} - -export class ProblemDetails implements IProblemDetails { - type?: string | undefined; - title?: string | undefined; - status?: number | undefined; - detail?: string | undefined; - instance?: string | undefined; - extensions!: { [key: string]: any; }; - - [key: string]: any; - - constructor(data?: IProblemDetails) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - if (!data) { - this.extensions = {}; - } - } - - init(_data?: any) { - if (_data) { - for (var property in _data) { - if (_data.hasOwnProperty(property)) - this[property] = _data[property]; - } - this.type = _data["type"]; - this.title = _data["title"]; - this.status = _data["status"]; - this.detail = _data["detail"]; - this.instance = _data["instance"]; - if (_data["extensions"]) { - this.extensions = {} as any; - for (let key in _data["extensions"]) { - if (_data["extensions"].hasOwnProperty(key)) - (this.extensions)![key] = _data["extensions"][key]; - } - } - } - } - - static fromJS(data: any): ProblemDetails { - data = typeof data === 'object' ? data : {}; - let result = new ProblemDetails(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - for (var property in this) { - if (this.hasOwnProperty(property)) - data[property] = this[property]; - } - data["type"] = this.type; - data["title"] = this.title; - data["status"] = this.status; - data["detail"] = this.detail; - data["instance"] = this.instance; - if (this.extensions) { - data["extensions"] = {}; - for (let key in this.extensions) { - if (this.extensions.hasOwnProperty(key)) - (data["extensions"])[key] = (this.extensions)[key]; - } - } - return data; - } -} - -export interface IProblemDetails { - type?: string | undefined; - title?: string | undefined; - status?: number | undefined; - detail?: string | undefined; - instance?: string | undefined; - extensions: { [key: string]: any; }; - - [key: string]: any; -} - -/** [TODO:description] */ -export class UserInfo implements IUserInfo { - /** 用户的唯一标识符 */ - id!: string; - /** 用户的名称 */ - name!: string; - /** 用户的电子邮箱 */ - eMail!: string; - /** 用户关联的板卡ID */ - boardID!: string; - /** 用户绑定板子的过期时间 */ - boardExpireTime?: Date | undefined; - - constructor(data?: IUserInfo) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.id = _data["id"]; - this.name = _data["name"]; - this.eMail = _data["eMail"]; - this.boardID = _data["boardID"]; - this.boardExpireTime = _data["boardExpireTime"] ? new Date(_data["boardExpireTime"].toString()) : undefined; - } - } - - static fromJS(data: any): UserInfo { - data = typeof data === 'object' ? data : {}; - let result = new UserInfo(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["id"] = this.id; - data["name"] = this.name; - data["eMail"] = this.eMail; - data["boardID"] = this.boardID; - data["boardExpireTime"] = this.boardExpireTime ? this.boardExpireTime.toISOString() : undefined; - return data; - } -} - -/** [TODO:description] */ -export interface IUserInfo { - /** 用户的唯一标识符 */ - id: string; - /** 用户的名称 */ - name: string; - /** 用户的电子邮箱 */ - eMail: string; - /** 用户关联的板卡ID */ - boardID: string; - /** 用户绑定板子的过期时间 */ - boardExpireTime?: Date | undefined; -} - -/** FPGA 板子类,表示板子信息 */ -export class Board implements IBoard { - /** FPGA 板子的唯一标识符 */ - id!: string; - /** FPGA 板子的名称 */ - boardName!: string; - /** FPGA 板子的IP地址 */ - ipAddr!: string; - /** FPGA 板子的通信端口 */ - port!: number; - /** FPGA 板子的当前状态 */ - status!: BoardStatus; - /** 占用该板子的用户的唯一标识符 */ - occupiedUserID!: string; - /** 占用该板子的用户的用户名 */ - occupiedUserName?: string | undefined; - /** FPGA 板子的固件版本号 */ - firmVersion!: string; - - constructor(data?: IBoard) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.id = _data["id"]; - this.boardName = _data["boardName"]; - this.ipAddr = _data["ipAddr"]; - this.port = _data["port"]; - this.status = _data["status"]; - this.occupiedUserID = _data["occupiedUserID"]; - this.occupiedUserName = _data["occupiedUserName"]; - this.firmVersion = _data["firmVersion"]; - } - } - - static fromJS(data: any): Board { - data = typeof data === 'object' ? data : {}; - let result = new Board(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["id"] = this.id; - data["boardName"] = this.boardName; - data["ipAddr"] = this.ipAddr; - data["port"] = this.port; - data["status"] = this.status; - data["occupiedUserID"] = this.occupiedUserID; - data["occupiedUserName"] = this.occupiedUserName; - data["firmVersion"] = this.firmVersion; - return data; - } -} - -/** FPGA 板子类,表示板子信息 */ -export interface IBoard { - /** FPGA 板子的唯一标识符 */ - id: string; - /** FPGA 板子的名称 */ - boardName: string; - /** FPGA 板子的IP地址 */ - ipAddr: string; - /** FPGA 板子的通信端口 */ - port: number; - /** FPGA 板子的当前状态 */ - status: BoardStatus; - /** 占用该板子的用户的唯一标识符 */ - occupiedUserID: string; - /** 占用该板子的用户的用户名 */ - occupiedUserName?: string | undefined; - /** FPGA 板子的固件版本号 */ - firmVersion: string; -} - -/** FPGA 板子状态枚举 */ -export enum BoardStatus { - Busy = 0, - Available = 1, -} - -export class SystemException extends Exception implements ISystemException { - - constructor(data?: ISystemException) { - super(data); - } - - init(_data?: any) { - super.init(_data); - } - - static fromJS(data: any): SystemException { - data = typeof data === 'object' ? data : {}; - let result = new SystemException(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - super.toJSON(data); - return data; - } -} - -export interface ISystemException extends IException { -} - -export class ArgumentException extends SystemException implements IArgumentException { - declare message: string; - paramName?: string | undefined; - - constructor(data?: IArgumentException) { - super(data); - } - - init(_data?: any) { - super.init(_data); - if (_data) { - this.message = _data["Message"]; - this.paramName = _data["ParamName"]; - } - } - - static fromJS(data: any): ArgumentException { - data = typeof data === 'object' ? data : {}; - let result = new ArgumentException(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["Message"] = this.message; - data["ParamName"] = this.paramName; - super.toJSON(data); - return data; - } -} - -export interface IArgumentException extends ISystemException { - message: string; - paramName?: string | undefined; -} - -/** Package options which to send address to read or write */ -export class SendAddrPackOptions implements ISendAddrPackOptions { - /** 突发类型 */ - burstType!: BurstType; - /** 任务ID */ - commandID!: number; - /** 标识写入还是读取 */ - isWrite!: boolean; - /** 突发长度:0是32bits,255是32bits x 256 */ - burstLength!: number; - /** 目标地址 */ - address!: number; - - constructor(data?: ISendAddrPackOptions) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.burstType = _data["burstType"]; - this.commandID = _data["commandID"]; - this.isWrite = _data["isWrite"]; - this.burstLength = _data["burstLength"]; - this.address = _data["address"]; - } - } - - static fromJS(data: any): SendAddrPackOptions { - data = typeof data === 'object' ? data : {}; - let result = new SendAddrPackOptions(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["burstType"] = this.burstType; - data["commandID"] = this.commandID; - data["isWrite"] = this.isWrite; - data["burstLength"] = this.burstLength; - data["address"] = this.address; - return data; - } -} - -/** Package options which to send address to read or write */ -export interface ISendAddrPackOptions { - /** 突发类型 */ - burstType: BurstType; - /** 任务ID */ - commandID: number; - /** 标识写入还是读取 */ - isWrite: boolean; - /** 突发长度:0是32bits,255是32bits x 256 */ - burstLength: number; - /** 目标地址 */ - address: number; -} - -/** Package Burst Type */ -export enum BurstType { - FixedBurst = 0, - ExtendBurst = 1, -} - -/** UDP接受数据包格式 */ -export class UDPData implements IUDPData { - /** 接受到的时间 */ - dateTime!: Date; - /** 发送来源的IP地址 */ - address!: string; - /** 发送来源的端口号 */ - port!: number; - /** 任务ID */ - taskID!: number; - /** 接受到的数据 */ - data!: string; - /** 是否被读取过 */ - hasRead!: boolean; - - constructor(data?: IUDPData) { - if (data) { - for (var property in data) { - if (data.hasOwnProperty(property)) - (this)[property] = (data)[property]; - } - } - } - - init(_data?: any) { - if (_data) { - this.dateTime = _data["dateTime"] ? new Date(_data["dateTime"].toString()) : undefined; - this.address = _data["address"]; - this.port = _data["port"]; - this.taskID = _data["taskID"]; - this.data = _data["data"]; - this.hasRead = _data["hasRead"]; - } - } - - static fromJS(data: any): UDPData { - data = typeof data === 'object' ? data : {}; - let result = new UDPData(); - result.init(data); - return result; - } - - toJSON(data?: any) { - data = typeof data === 'object' ? data : {}; - data["dateTime"] = this.dateTime ? this.dateTime.toISOString() : undefined; - data["address"] = this.address; - data["port"] = this.port; - data["taskID"] = this.taskID; - data["data"] = this.data; - data["hasRead"] = this.hasRead; - return data; - } -} - -/** UDP接受数据包格式 */ -export interface IUDPData { - /** 接受到的时间 */ - dateTime: Date; - /** 发送来源的IP地址 */ - address: string; - /** 发送来源的端口号 */ - port: number; - /** 任务ID */ - taskID: number; - /** 接受到的数据 */ - data: string; - /** 是否被读取过 */ - hasRead: boolean; -} - -export interface FileParameter { - data: any; - fileName: string; -} - -export interface FileResponse { - data: Blob; - status: number; - fileName?: string; - headers?: { [name: string]: any }; -} - -export class ApiException extends Error { - message: string; - status: number; - response: string; - headers: { [key: string]: any; }; - result: any; - - constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) { - super(); - - this.message = message; - this.status = status; - this.response = response; - this.headers = headers; - this.result = result; - } - - protected isApiException = true; - - static isApiException(obj: any): obj is ApiException { - return obj.isApiException === true; - } -} - -function throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any { - if (result !== null && result !== undefined) - throw result; - else - throw new ApiException(message, status, response, headers, null); +//---------------------- +// +// Generated using the NSwag toolchain v14.3.0.0 (NJsonSchema v11.2.0.0 (Newtonsoft.Json v13.0.0.0)) (http://NSwag.org) +// +//---------------------- + +/* tslint:disable */ +/* eslint-disable */ +// ReSharper disable InconsistentNaming + +export class VideoStreamClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 获取 HTTP 视频流服务状态 + * @return 服务状态信息 + */ + getStatus(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/Status"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetStatus(_response); + }); + } + + protected processGetStatus(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取 HTTP 视频流信息 + * @return 流信息 + */ + getStreamInfo(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/StreamInfo"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetStreamInfo(_response); + }); + } + + protected processGetStreamInfo(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 配置摄像头连接参数 + * @param config 摄像头配置 + * @return 配置结果 + */ + configureCamera(config: CameraConfigRequest): Promise { + let url_ = this.baseUrl + "/api/VideoStream/ConfigureCamera"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(config); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processConfigureCamera(_response); + }); + } + + protected processConfigureCamera(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = resultData400 !== undefined ? resultData400 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取当前摄像头配置 + * @return 摄像头配置信息 + */ + getCameraConfig(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/CameraConfig"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCameraConfig(_response); + }); + } + + protected processGetCameraConfig(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 控制 HTTP 视频流服务开关 + * @param enabled (optional) 是否启用服务 + * @return 操作结果 + */ + setEnabled(enabled: boolean | undefined): Promise { + let url_ = this.baseUrl + "/api/VideoStream/SetEnabled?"; + if (enabled === null) + throw new Error("The parameter 'enabled' cannot be null."); + else if (enabled !== undefined) + url_ += "enabled=" + encodeURIComponent("" + enabled) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetEnabled(_response); + }); + } + + protected processSetEnabled(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 测试 HTTP 视频流连接 + * @return 连接测试结果 + */ + testConnection(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/TestConnection"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processTestConnection(_response); + }); + } + + protected processTestConnection(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 设置视频流分辨率 + * @param request 分辨率配置请求 + * @return 设置结果 + */ + setResolution(request: ResolutionConfigRequest): Promise { + let url_ = this.baseUrl + "/api/VideoStream/Resolution"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(request); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetResolution(_response); + }); + } + + protected processSetResolution(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = resultData400 !== undefined ? resultData400 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = resultData500 !== undefined ? resultData500 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取当前分辨率 + * @return 当前分辨率信息 + */ + getCurrentResolution(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/Resolution"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCurrentResolution(_response); + }); + } + + protected processGetCurrentResolution(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = resultData500 !== undefined ? resultData500 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取支持的分辨率列表 + * @return 支持的分辨率列表 + */ + getSupportedResolutions(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/SupportedResolutions"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetSupportedResolutions(_response); + }); + } + + protected processGetSupportedResolutions(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = resultData500 !== undefined ? resultData500 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 初始化摄像头自动对焦功能 + * @return 初始化结果 + */ + initAutoFocus(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/InitAutoFocus"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/octet-stream" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processInitAutoFocus(_response); + }); + } + + protected processInitAutoFocus(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200 || status === 206) { + const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; + let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; + let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; + if (fileName) { + fileName = decodeURIComponent(fileName); + } else { + fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; + fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; + } + return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 执行自动对焦 + * @return 对焦结果 + */ + autoFocus(): Promise { + let url_ = this.baseUrl + "/api/VideoStream/AutoFocus"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/octet-stream" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processAutoFocus(_response); + }); + } + + protected processAutoFocus(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200 || status === 206) { + const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; + let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; + let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; + if (fileName) { + fileName = decodeURIComponent(fileName); + } else { + fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; + fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; + } + return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class BsdlParserClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * [TODO:description] + * @return [TODO:return] + */ + getBoundaryLogicalPorts(): Promise { + let url_ = this.baseUrl + "/api/BsdlParser/GetBoundaryLogicalPorts"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/octet-stream" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetBoundaryLogicalPorts(_response); + }); + } + + protected processGetBoundaryLogicalPorts(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200 || status === 206) { + const contentDisposition = response.headers ? response.headers.get("content-disposition") : undefined; + let fileNameMatch = contentDisposition ? /filename\*=(?:(\\?['"])(.*?)\1|(?:[^\s]+'.*?')?([^;\n]*))/g.exec(contentDisposition) : undefined; + let fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[3] || fileNameMatch[2] : undefined; + if (fileName) { + fileName = decodeURIComponent(fileName); + } else { + fileNameMatch = contentDisposition ? /filename="?([^"]*?)"?(;|$)/g.exec(contentDisposition) : undefined; + fileName = fileNameMatch && fileNameMatch.length > 1 ? fileNameMatch[1] : undefined; + } + return response.blob().then(blob => { return { fileName: fileName, data: blob, status: status, headers: _headers }; }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class DataClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 用户登录,获取 JWT 令牌 + * @param name (optional) 用户名 + * @param password (optional) 用户密码 + * @return JWT 令牌字符串 + */ + login(name: string | undefined, password: string | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/Login?"; + if (name === null) + throw new Error("The parameter 'name' cannot be null."); + else if (name !== undefined) + url_ += "name=" + encodeURIComponent("" + name) + "&"; + if (password === null) + throw new Error("The parameter 'password' cannot be null."); + else if (password !== undefined) + url_ += "password=" + encodeURIComponent("" + password) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processLogin(_response); + }); + } + + protected processLogin(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 测试用户认证,需携带有效 JWT + * @return 认证成功信息 + */ + testAuth(): Promise { + let url_ = this.baseUrl + "/api/Data/TestAuth"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processTestAuth(_response); + }); + } + + protected processTestAuth(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 测试管理员用户认证,需携带有效 JWT + * @return 认证成功信息 + */ + testAdminAuth(): Promise { + let url_ = this.baseUrl + "/api/Data/TestAdminAuth"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processTestAdminAuth(_response); + }); + } + + protected processTestAdminAuth(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取当前用户信息 + * @return 用户信息,包括ID、用户名、邮箱和板卡ID + */ + getUserInfo(): Promise { + let url_ = this.baseUrl + "/api/Data/GetUserInfo"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetUserInfo(_response); + }); + } + + protected processGetUserInfo(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = UserInfo.fromJS(resultData200); + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 注册新用户 + * @param name (optional) 用户名(不超过255个字符) + * @param email (optional) 邮箱地址 + * @param password (optional) 用户密码 + * @return 操作结果,成功返回 true,失败返回错误信息 + */ + signUpUser(name: string | undefined, email: string | undefined, password: string | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/SignUpUser?"; + if (name === null) + throw new Error("The parameter 'name' cannot be null."); + else if (name !== undefined) + url_ += "name=" + encodeURIComponent("" + name) + "&"; + if (email === null) + throw new Error("The parameter 'email' cannot be null."); + else if (email !== undefined) + url_ += "email=" + encodeURIComponent("" + email) + "&"; + if (password === null) + throw new Error("The parameter 'password' cannot be null."); + else if (password !== undefined) + url_ += "password=" + encodeURIComponent("" + password) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSignUpUser(_response); + }); + } + + protected processSignUpUser(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取一个空闲的实验板(普通用户权限) + * @param durationHours (optional) 绑定持续时间(小时),默认为1小时 + */ + getAvailableBoard(durationHours: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/GetAvailableBoard?"; + if (durationHours === null) + throw new Error("The parameter 'durationHours' cannot be null."); + else if (durationHours !== undefined) + url_ += "durationHours=" + encodeURIComponent("" + durationHours) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetAvailableBoard(_response); + }); + } + + protected processGetAvailableBoard(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = Board.fromJS(resultData200); + return result200; + }); + } else if (status === 404) { + return response.text().then((_responseText) => { + let result404: any = null; + let resultData404 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result404 = ProblemDetails.fromJS(resultData404); + return throwException("A server side error occurred.", status, _responseText, _headers, result404); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 解除当前用户绑定的实验板(普通用户权限) + */ + unbindBoard(): Promise { + let url_ = this.baseUrl + "/api/Data/UnbindBoard"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processUnbindBoard(_response); + }); + } + + protected processUnbindBoard(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 用户根据实验板ID获取实验板信息(普通用户权限) + * @param id (optional) + */ + getBoardByID(id: string | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/GetBoardByID?"; + if (id === null) + throw new Error("The parameter 'id' cannot be null."); + else if (id !== undefined) + url_ += "id=" + encodeURIComponent("" + id) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetBoardByID(_response); + }); + } + + protected processGetBoardByID(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = Board.fromJS(resultData200); + return result200; + }); + } else if (status === 404) { + return response.text().then((_responseText) => { + let result404: any = null; + let resultData404 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result404 = ProblemDetails.fromJS(resultData404); + return throwException("A server side error occurred.", status, _responseText, _headers, result404); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 新增板子(管理员权限) + * @param name (optional) + * @param ipAddr (optional) + * @param port (optional) + */ + addBoard(name: string | undefined, ipAddr: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/AddBoard?"; + if (name === null) + throw new Error("The parameter 'name' cannot be null."); + else if (name !== undefined) + url_ += "name=" + encodeURIComponent("" + name) + "&"; + if (ipAddr === null) + throw new Error("The parameter 'ipAddr' cannot be null."); + else if (ipAddr !== undefined) + url_ += "ipAddr=" + encodeURIComponent("" + ipAddr) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processAddBoard(_response); + }); + } + + protected processAddBoard(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 删除板子(管理员权限) + * @param id (optional) + */ + deleteBoard(id: string | undefined): Promise { + let url_ = this.baseUrl + "/api/Data/DeleteBoard?"; + if (id === null) + throw new Error("The parameter 'id' cannot be null."); + else if (id !== undefined) + url_ += "id=" + encodeURIComponent("" + id) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "DELETE", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDeleteBoard(_response); + }); + } + + protected processDeleteBoard(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取全部板子(管理员权限) + */ + getAllBoards(): Promise { + let url_ = this.baseUrl + "/api/Data/GetAllBoards"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetAllBoards(_response); + }); + } + + protected processGetAllBoards(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + if (Array.isArray(resultData200)) { + result200 = [] as any; + for (let item of resultData200) + result200!.push(Board.fromJS(item)); + } + else { + result200 = null; + } + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class DDSClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * [TODO:description] + * @param address (optional) [TODO:parameter] + * @param port (optional) [TODO:parameter] + * @param channelNum (optional) [TODO:parameter] + * @param waveNum (optional) [TODO:parameter] + * @return [TODO:return] + */ + setWaveNum(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined): Promise { + let url_ = this.baseUrl + "/api/DDS/SetWaveNum?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (channelNum === null) + throw new Error("The parameter 'channelNum' cannot be null."); + else if (channelNum !== undefined) + url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; + if (waveNum === null) + throw new Error("The parameter 'waveNum' cannot be null."); + else if (waveNum !== undefined) + url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetWaveNum(_response); + }); + } + + protected processSetWaveNum(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * [TODO:description] + * @param address (optional) [TODO:parameter] + * @param port (optional) [TODO:parameter] + * @param channelNum (optional) [TODO:parameter] + * @param waveNum (optional) [TODO:parameter] + * @param step (optional) [TODO:parameter] + * @return [TODO:return] + */ + setFreq(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined, step: number | undefined): Promise { + let url_ = this.baseUrl + "/api/DDS/SetFreq?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (channelNum === null) + throw new Error("The parameter 'channelNum' cannot be null."); + else if (channelNum !== undefined) + url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; + if (waveNum === null) + throw new Error("The parameter 'waveNum' cannot be null."); + else if (waveNum !== undefined) + url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; + if (step === null) + throw new Error("The parameter 'step' cannot be null."); + else if (step !== undefined) + url_ += "step=" + encodeURIComponent("" + step) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetFreq(_response); + }); + } + + protected processSetFreq(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * [TODO:description] + * @param address (optional) [TODO:parameter] + * @param port (optional) [TODO:parameter] + * @param channelNum (optional) [TODO:parameter] + * @param waveNum (optional) [TODO:parameter] + * @param phase (optional) [TODO:parameter] + * @return [TODO:return] + */ + setPhase(address: string | undefined, port: number | undefined, channelNum: number | undefined, waveNum: number | undefined, phase: number | undefined): Promise { + let url_ = this.baseUrl + "/api/DDS/SetPhase?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (channelNum === null) + throw new Error("The parameter 'channelNum' cannot be null."); + else if (channelNum !== undefined) + url_ += "channelNum=" + encodeURIComponent("" + channelNum) + "&"; + if (waveNum === null) + throw new Error("The parameter 'waveNum' cannot be null."); + else if (waveNum !== undefined) + url_ += "waveNum=" + encodeURIComponent("" + waveNum) + "&"; + if (phase === null) + throw new Error("The parameter 'phase' cannot be null."); + else if (phase !== undefined) + url_ += "phase=" + encodeURIComponent("" + phase) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetPhase(_response); + }); + } + + protected processSetPhase(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class JtagClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 控制器首页信息 + * @return 控制器描述信息 + */ + index(): Promise { + let url_ = this.baseUrl + "/api/Jtag"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processIndex(_response); + }); + } + + protected processIndex(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取 JTAG 设备的 ID Code + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @return 设备的 ID Code + */ + getDeviceIDCode(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/GetDeviceIDCode?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetDeviceIDCode(_response); + }); + } + + protected processGetDeviceIDCode(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 读取 JTAG 设备的状态寄存器 + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @return 状态寄存器的原始值、二进制表示和解码值 + */ + readStatusReg(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/ReadStatusReg?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processReadStatusReg(_response); + }); + } + + protected processReadStatusReg(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 上传比特流文件到服务器 + * @param address (optional) 目标设备地址 + * @param file (optional) 比特流文件 + * @return 上传结果 + */ + uploadBitstream(address: string | undefined, file: FileParameter | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/UploadBitstream?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = new FormData(); + if (file === null || file === undefined) + throw new Error("The parameter 'file' cannot be null."); + else + content_.append("file", file.data, file.fileName ? file.fileName : "file"); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processUploadBitstream(_response); + }); + } + + protected processUploadBitstream(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = resultData400 !== undefined ? resultData400 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 通过 JTAG 下载比特流文件到 FPGA 设备 + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @return 下载结果 + */ + downloadBitstream(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/DownloadBitstream?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDownloadBitstream(_response); + }); + } + + protected processDownloadBitstream(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = resultData400 !== undefined ? resultData400 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 执行边界扫描,获取所有端口状态 + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @return 边界扫描结果 + */ + boundaryScanAllPorts(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/BoundaryScanAllPorts?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processBoundaryScanAllPorts(_response); + }); + } + + protected processBoundaryScanAllPorts(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = resultData400 !== undefined ? resultData400 : null; + + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 执行逻辑端口边界扫描 + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @return 逻辑端口状态字典 + */ + boundaryScanLogicalPorts(address: string | undefined, port: number | undefined): Promise<{ [key: string]: boolean; }> { + let url_ = this.baseUrl + "/api/Jtag/BoundaryScanLogicalPorts?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processBoundaryScanLogicalPorts(_response); + }); + } + + protected processBoundaryScanLogicalPorts(response: Response): Promise<{ [key: string]: boolean; }> { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + if (resultData200) { + result200 = {} as any; + for (let key in resultData200) { + if (resultData200.hasOwnProperty(key)) + (result200)![key] = resultData200[key] !== undefined ? resultData200[key] : null; + } + } + else { + result200 = null; + } + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve<{ [key: string]: boolean; }>(null as any); + } + + /** + * 设置 JTAG 时钟速度 + * @param address (optional) JTAG 设备地址 + * @param port (optional) JTAG 设备端口 + * @param speed (optional) 时钟速度 (Hz) + * @return 设置结果 + */ + setSpeed(address: string | undefined, port: number | undefined, speed: number | undefined): Promise { + let url_ = this.baseUrl + "/api/Jtag/SetSpeed?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (speed === null) + throw new Error("The parameter 'speed' cannot be null."); + else if (speed !== undefined) + url_ += "speed=" + encodeURIComponent("" + speed) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetSpeed(_response); + }); + } + + protected processSetSpeed(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class LogicAnalyzerClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 设置捕获模式 + * @param captureOn (optional) 是否开始捕获 + * @param force (optional) 是否强制捕获 + * @return 操作结果 + */ + setCaptureMode(captureOn: boolean | undefined, force: boolean | undefined): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/SetCaptureMode?"; + if (captureOn === null) + throw new Error("The parameter 'captureOn' cannot be null."); + else if (captureOn !== undefined) + url_ += "captureOn=" + encodeURIComponent("" + captureOn) + "&"; + if (force === null) + throw new Error("The parameter 'force' cannot be null."); + else if (force !== undefined) + url_ += "force=" + encodeURIComponent("" + force) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetCaptureMode(_response); + }); + } + + protected processSetCaptureMode(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 读取捕获状态 + * @return 捕获状态 + */ + getCaptureStatus(): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/GetCaptureStatus"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCaptureStatus(_response); + }); + } + + protected processGetCaptureStatus(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 设置全局触发模式 + * @param mode (optional) 全局触发模式 + * @return 操作结果 + */ + setGlobalTrigMode(mode: GlobalCaptureMode | undefined): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/SetGlobalTrigMode?"; + if (mode === null) + throw new Error("The parameter 'mode' cannot be null."); + else if (mode !== undefined) + url_ += "mode=" + encodeURIComponent("" + mode) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetGlobalTrigMode(_response); + }); + } + + protected processSetGlobalTrigMode(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 设置信号触发模式 + * @param signalIndex (optional) 信号索引 (0-7) + * @param op (optional) 操作符 + * @param val (optional) 信号值 + * @return 操作结果 + */ + setSignalTrigMode(signalIndex: number | undefined, op: SignalOperator | undefined, val: SignalValue | undefined): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/SetSignalTrigMode?"; + if (signalIndex === null) + throw new Error("The parameter 'signalIndex' cannot be null."); + else if (signalIndex !== undefined) + url_ += "signalIndex=" + encodeURIComponent("" + signalIndex) + "&"; + if (op === null) + throw new Error("The parameter 'op' cannot be null."); + else if (op !== undefined) + url_ += "op=" + encodeURIComponent("" + op) + "&"; + if (val === null) + throw new Error("The parameter 'val' cannot be null."); + else if (val !== undefined) + url_ += "val=" + encodeURIComponent("" + val) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetSignalTrigMode(_response); + }); + } + + protected processSetSignalTrigMode(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 批量配置捕获参数 + * @param config 捕获配置 + * @return 操作结果 + */ + configureCapture(config: CaptureConfig): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/ConfigureCapture"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(config); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processConfigureCapture(_response); + }); + } + + protected processConfigureCapture(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 强制捕获 + * @return 操作结果 + */ + forceCapture(): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/ForceCapture"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processForceCapture(_response); + }); + } + + protected processForceCapture(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 读取捕获数据 + * @return 捕获的波形数据(Base64编码) + */ + getCaptureData(): Promise { + let url_ = this.baseUrl + "/api/LogicAnalyzer/GetCaptureData"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetCaptureData(_response); + }); + } + + protected processGetCaptureData(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ProblemDetails.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status === 401) { + return response.text().then((_responseText) => { + let result401: any = null; + let resultData401 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result401 = ProblemDetails.fromJS(resultData401); + return throwException("A server side error occurred.", status, _responseText, _headers, result401); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class MatrixKeyClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 启用矩阵键控制。 + * @param address (optional) 设备的IP地址 + * @param port (optional) 设备的端口号 + * @return 返回操作结果的状态码 + */ + enabelMatrixKey(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/MatrixKey/EnabelMatrixKey?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processEnabelMatrixKey(_response); + }); + } + + protected processEnabelMatrixKey(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 禁用矩阵键控制。 + * @param address (optional) 设备的IP地址 + * @param port (optional) 设备的端口号 + * @return 返回操作结果的状态码 + */ + disableMatrixKey(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/MatrixKey/DisableMatrixKey?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDisableMatrixKey(_response); + }); + } + + protected processDisableMatrixKey(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 设置矩阵键的状态。 + * @param address (optional) 设备的IP地址 + * @param port (optional) 设备的端口号 + * @param keyStates 矩阵键的状态数组,长度应为16 + * @return 返回操作结果的状态码 + */ + setMatrixKeyStatus(address: string | undefined, port: number | undefined, keyStates: boolean[]): Promise { + let url_ = this.baseUrl + "/api/MatrixKey/SetMatrixKeyStatus?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(keyStates); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetMatrixKeyStatus(_response); + }); + } + + protected processSetMatrixKeyStatus(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class PowerClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * [TODO:description] + * @param address (optional) [TODO:parameter] + * @param port (optional) [TODO:parameter] + * @param enable (optional) [TODO:parameter] + * @return [TODO:return] + */ + setPowerOnOff(address: string | undefined, port: number | undefined, enable: boolean | undefined): Promise { + let url_ = this.baseUrl + "/api/Power/SetPowerOnOff?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (enable === null) + throw new Error("The parameter 'enable' cannot be null."); + else if (enable !== undefined) + url_ += "enable=" + encodeURIComponent("" + enable) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSetPowerOnOff(_response); + }); + } + + protected processSetPowerOnOff(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class RemoteUpdateClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 上传远程更新比特流文件 + * @param address (optional) 设备地址 + * @param goldenBitream (optional) 黄金比特流文件 + * @param bitstream1 (optional) 比特流文件1 + * @param bitstream2 (optional) 比特流文件2 + * @param bitstream3 (optional) 比特流文件3 + * @return 上传结果 + */ + uploadBitstreams(address: string | undefined, goldenBitream: FileParameter | null | undefined, bitstream1: FileParameter | null | undefined, bitstream2: FileParameter | null | undefined, bitstream3: FileParameter | null | undefined): Promise { + let url_ = this.baseUrl + "/api/RemoteUpdate/UploadBitstream?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = new FormData(); + if (goldenBitream !== null && goldenBitream !== undefined) + content_.append("goldenBitream", goldenBitream.data, goldenBitream.fileName ? goldenBitream.fileName : "goldenBitream"); + if (bitstream1 !== null && bitstream1 !== undefined) + content_.append("bitstream1", bitstream1.data, bitstream1.fileName ? bitstream1.fileName : "bitstream1"); + if (bitstream2 !== null && bitstream2 !== undefined) + content_.append("bitstream2", bitstream2.data, bitstream2.fileName ? bitstream2.fileName : "bitstream2"); + if (bitstream3 !== null && bitstream3 !== undefined) + content_.append("bitstream3", bitstream3.data, bitstream3.fileName ? bitstream3.fileName : "bitstream3"); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processUploadBitstreams(_response); + }); + } + + protected processUploadBitstreams(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 远程更新单个比特流文件 + * @param address (optional) 设备地址 + * @param port (optional) 设备端口 + * @param bitstreamNum (optional) 比特流位号 + */ + updateBitstream(address: string | undefined, port: number | undefined, bitstreamNum: number | undefined): Promise { + let url_ = this.baseUrl + "/api/RemoteUpdate/DownloadBitstream?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (bitstreamNum === null) + throw new Error("The parameter 'bitstreamNum' cannot be null."); + else if (bitstreamNum !== undefined) + url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processUpdateBitstream(_response); + }); + } + + protected processUpdateBitstream(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 下载多个比特流文件 + * @param address (optional) 设备地址 + * @param port (optional) 设备端口 + * @param bitstreamNum (optional) 比特流编号 + * @return 总共上传比特流的数量 + */ + downloadMultiBitstreams(address: string | undefined, port: number | undefined, bitstreamNum: number | null | undefined): Promise { + let url_ = this.baseUrl + "/api/RemoteUpdate/DownloadMultiBitstreams?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (bitstreamNum !== undefined && bitstreamNum !== null) + url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processDownloadMultiBitstreams(_response); + }); + } + + protected processDownloadMultiBitstreams(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 热复位比特流文件 + * @param address (optional) 设备地址 + * @param port (optional) 设备端口 + * @param bitstreamNum (optional) 比特流编号 + * @return 操作结果 + */ + hotResetBitstream(address: string | undefined, port: number | undefined, bitstreamNum: number | undefined): Promise { + let url_ = this.baseUrl + "/api/RemoteUpdate/HotResetBitstream?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (bitstreamNum === null) + throw new Error("The parameter 'bitstreamNum' cannot be null."); + else if (bitstreamNum !== undefined) + url_ += "bitstreamNum=" + encodeURIComponent("" + bitstreamNum) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processHotResetBitstream(_response); + }); + } + + protected processHotResetBitstream(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * [TODO:description] + * @param address (optional) [TODO:parameter] + * @param port (optional) [TODO:parameter] + * @return [TODO:return] + */ + getFirmwareVersion(address: string | undefined, port: number | undefined): Promise { + let url_ = this.baseUrl + "/api/RemoteUpdate/GetFirmwareVersion?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetFirmwareVersion(_response); + }); + } + + protected processGetFirmwareVersion(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status === 400) { + return response.text().then((_responseText) => { + let result400: any = null; + let resultData400 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result400 = ArgumentException.fromJS(resultData400); + return throwException("A server side error occurred.", status, _responseText, _headers, result400); + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + let result500: any = null; + let resultData500 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result500 = Exception.fromJS(resultData500); + return throwException("A server side error occurred.", status, _responseText, _headers, result500); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class TutorialClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 获取所有可用的教程目录 + * @return 教程目录列表 + */ + getTutorials(): Promise { + let url_ = this.baseUrl + "/api/Tutorial"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetTutorials(_response); + }); + } + + protected processGetTutorials(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class UDPClient { + private http: { fetch(url: RequestInfo, init?: RequestInit): Promise }; + private baseUrl: string; + protected jsonParseReviver: ((key: string, value: any) => any) | undefined = undefined; + + constructor(baseUrl?: string, http?: { fetch(url: RequestInfo, init?: RequestInit): Promise }) { + this.http = http ? http : window as any; + this.baseUrl = baseUrl ?? "http://localhost:5000"; + } + + /** + * 页面 + */ + index(): Promise { + let url_ = this.baseUrl + "/api/UDP"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processIndex(_response); + }); + } + + protected processIndex(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + result200 = resultData200 !== undefined ? resultData200 : null; + + return result200; + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 发送字符串 + * @param address (optional) IPV4 或者 IPV6 地址 + * @param port (optional) 设备端口号 + * @param text (optional) 发送的文本 + * @return 发送成功 + */ + sendString(address: string | undefined, port: number | undefined, text: string | undefined): Promise { + let url_ = this.baseUrl + "/api/UDP/SendString?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (text === null) + throw new Error("The parameter 'text' cannot be null."); + else if (text !== undefined) + url_ += "text=" + encodeURIComponent("" + text) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSendString(_response); + }); + } + + protected processSendString(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("\u53d1\u9001\u5931\u8d25", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 发送二进制数据 + * @param address (optional) IPV4 或者 IPV6 地址 + * @param port (optional) 设备端口号 + * @param bytes (optional) 16进制文本 + */ + sendBytes(address: string | undefined, port: number | undefined, bytes: string | undefined): Promise { + let url_ = this.baseUrl + "/api/UDP/SendBytes?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (bytes === null) + throw new Error("The parameter 'bytes' cannot be null."); + else if (bytes !== undefined) + url_ += "bytes=" + encodeURIComponent("" + bytes) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSendBytes(_response); + }); + } + + protected processSendBytes(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 发送地址包 + * @param address (optional) IP地址 + * @param port (optional) UDP 端口号 + * @param opts 地址包选项 + */ + sendAddrPackage(address: string | undefined, port: number | undefined, opts: SendAddrPackOptions): Promise { + let url_ = this.baseUrl + "/api/UDP/SendAddrPackage?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + const content_ = JSON.stringify(opts); + + let options_: RequestInit = { + body: content_, + method: "POST", + headers: { + "Content-Type": "application/json", + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSendAddrPackage(_response); + }); + } + + protected processSendAddrPackage(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 发送数据包 + * @param address (optional) IP地址 + * @param port (optional) UDP 端口号 + * @param data (optional) 16进制数据 + */ + sendDataPackage(address: string | undefined, port: number | undefined, data: string | undefined): Promise { + let url_ = this.baseUrl + "/api/UDP/SendDataPackage?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (port === null) + throw new Error("The parameter 'port' cannot be null."); + else if (port !== undefined) + url_ += "port=" + encodeURIComponent("" + port) + "&"; + if (data === null) + throw new Error("The parameter 'data' cannot be null."); + else if (data !== undefined) + url_ += "data=" + encodeURIComponent("" + data) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "POST", + headers: { + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processSendDataPackage(_response); + }); + } + + protected processSendDataPackage(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + return; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } + + /** + * 获取指定IP地址接收的数据列表 + * @param address (optional) IP地址 + * @param taskID (optional) 任务ID + */ + getRecvDataArray(address: string | undefined, taskID: number | undefined): Promise { + let url_ = this.baseUrl + "/api/UDP/GetRecvDataArray?"; + if (address === null) + throw new Error("The parameter 'address' cannot be null."); + else if (address !== undefined) + url_ += "address=" + encodeURIComponent("" + address) + "&"; + if (taskID === null) + throw new Error("The parameter 'taskID' cannot be null."); + else if (taskID !== undefined) + url_ += "taskID=" + encodeURIComponent("" + taskID) + "&"; + url_ = url_.replace(/[?&]$/, ""); + + let options_: RequestInit = { + method: "GET", + headers: { + "Accept": "application/json" + } + }; + + return this.http.fetch(url_, options_).then((_response: Response) => { + return this.processGetRecvDataArray(_response); + }); + } + + protected processGetRecvDataArray(response: Response): Promise { + const status = response.status; + let _headers: any = {}; if (response.headers && response.headers.forEach) { response.headers.forEach((v: any, k: any) => _headers[k] = v); }; + if (status === 200) { + return response.text().then((_responseText) => { + let result200: any = null; + let resultData200 = _responseText === "" ? null : JSON.parse(_responseText, this.jsonParseReviver); + if (Array.isArray(resultData200)) { + result200 = [] as any; + for (let item of resultData200) + result200!.push(UDPData.fromJS(item)); + } + else { + result200 = null; + } + return result200; + }); + } else if (status === 500) { + return response.text().then((_responseText) => { + return throwException("A server side error occurred.", status, _responseText, _headers); + }); + } else if (status !== 200 && status !== 204) { + return response.text().then((_responseText) => { + return throwException("An unexpected server error occurred.", status, _responseText, _headers); + }); + } + return Promise.resolve(null as any); + } +} + +export class Exception implements IException { + message!: string; + innerException?: Exception | undefined; + source?: string | undefined; + stackTrace?: string | undefined; + + constructor(data?: IException) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.message = _data["Message"]; + this.innerException = _data["InnerException"] ? Exception.fromJS(_data["InnerException"]) : undefined; + this.source = _data["Source"]; + this.stackTrace = _data["StackTrace"]; + } + } + + static fromJS(data: any): Exception { + data = typeof data === 'object' ? data : {}; + let result = new Exception(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["Message"] = this.message; + data["InnerException"] = this.innerException ? this.innerException.toJSON() : undefined; + data["Source"] = this.source; + data["StackTrace"] = this.stackTrace; + return data; + } +} + +export interface IException { + message: string; + innerException?: Exception | undefined; + source?: string | undefined; + stackTrace?: string | undefined; +} + +/** 摄像头配置请求模型 */ +export class CameraConfigRequest implements ICameraConfigRequest { + /** 摄像头地址 */ + address!: string; + /** 摄像头端口 */ + port!: number; + + constructor(data?: ICameraConfigRequest) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.address = _data["address"]; + this.port = _data["port"]; + } + } + + static fromJS(data: any): CameraConfigRequest { + data = typeof data === 'object' ? data : {}; + let result = new CameraConfigRequest(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["address"] = this.address; + data["port"] = this.port; + return data; + } +} + +/** 摄像头配置请求模型 */ +export interface ICameraConfigRequest { + /** 摄像头地址 */ + address: string; + /** 摄像头端口 */ + port: number; +} + +/** 分辨率配置请求模型 */ +export class ResolutionConfigRequest implements IResolutionConfigRequest { + /** 宽度 */ + width!: number; + /** 高度 */ + height!: number; + + constructor(data?: IResolutionConfigRequest) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.width = _data["width"]; + this.height = _data["height"]; + } + } + + static fromJS(data: any): ResolutionConfigRequest { + data = typeof data === 'object' ? data : {}; + let result = new ResolutionConfigRequest(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["width"] = this.width; + data["height"] = this.height; + return data; + } +} + +/** 分辨率配置请求模型 */ +export interface IResolutionConfigRequest { + /** 宽度 */ + width: number; + /** 高度 */ + height: number; +} + +export class ProblemDetails implements IProblemDetails { + type?: string | undefined; + title?: string | undefined; + status?: number | undefined; + detail?: string | undefined; + instance?: string | undefined; + extensions!: { [key: string]: any; }; + + [key: string]: any; + + constructor(data?: IProblemDetails) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + if (!data) { + this.extensions = {}; + } + } + + init(_data?: any) { + if (_data) { + for (var property in _data) { + if (_data.hasOwnProperty(property)) + this[property] = _data[property]; + } + this.type = _data["type"]; + this.title = _data["title"]; + this.status = _data["status"]; + this.detail = _data["detail"]; + this.instance = _data["instance"]; + if (_data["extensions"]) { + this.extensions = {} as any; + for (let key in _data["extensions"]) { + if (_data["extensions"].hasOwnProperty(key)) + (this.extensions)![key] = _data["extensions"][key]; + } + } + } + } + + static fromJS(data: any): ProblemDetails { + data = typeof data === 'object' ? data : {}; + let result = new ProblemDetails(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + for (var property in this) { + if (this.hasOwnProperty(property)) + data[property] = this[property]; + } + data["type"] = this.type; + data["title"] = this.title; + data["status"] = this.status; + data["detail"] = this.detail; + data["instance"] = this.instance; + if (this.extensions) { + data["extensions"] = {}; + for (let key in this.extensions) { + if (this.extensions.hasOwnProperty(key)) + (data["extensions"])[key] = (this.extensions)[key]; + } + } + return data; + } +} + +export interface IProblemDetails { + type?: string | undefined; + title?: string | undefined; + status?: number | undefined; + detail?: string | undefined; + instance?: string | undefined; + extensions: { [key: string]: any; }; + + [key: string]: any; +} + +/** [TODO:description] */ +export class UserInfo implements IUserInfo { + /** 用户的唯一标识符 */ + id!: string; + /** 用户的名称 */ + name!: string; + /** 用户的电子邮箱 */ + eMail!: string; + /** 用户关联的板卡ID */ + boardID!: string; + /** 用户绑定板子的过期时间 */ + boardExpireTime?: Date | undefined; + + constructor(data?: IUserInfo) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.id = _data["id"]; + this.name = _data["name"]; + this.eMail = _data["eMail"]; + this.boardID = _data["boardID"]; + this.boardExpireTime = _data["boardExpireTime"] ? new Date(_data["boardExpireTime"].toString()) : undefined; + } + } + + static fromJS(data: any): UserInfo { + data = typeof data === 'object' ? data : {}; + let result = new UserInfo(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["id"] = this.id; + data["name"] = this.name; + data["eMail"] = this.eMail; + data["boardID"] = this.boardID; + data["boardExpireTime"] = this.boardExpireTime ? this.boardExpireTime.toISOString() : undefined; + return data; + } +} + +/** [TODO:description] */ +export interface IUserInfo { + /** 用户的唯一标识符 */ + id: string; + /** 用户的名称 */ + name: string; + /** 用户的电子邮箱 */ + eMail: string; + /** 用户关联的板卡ID */ + boardID: string; + /** 用户绑定板子的过期时间 */ + boardExpireTime?: Date | undefined; +} + +/** FPGA 板子类,表示板子信息 */ +export class Board implements IBoard { + /** FPGA 板子的唯一标识符 */ + id!: string; + /** FPGA 板子的名称 */ + boardName!: string; + /** FPGA 板子的IP地址 */ + ipAddr!: string; + /** FPGA 板子的通信端口 */ + port!: number; + /** FPGA 板子的当前状态 */ + status!: BoardStatus; + /** 占用该板子的用户的唯一标识符 */ + occupiedUserID!: string; + /** 占用该板子的用户的用户名 */ + occupiedUserName?: string | undefined; + /** FPGA 板子的固件版本号 */ + firmVersion!: string; + + constructor(data?: IBoard) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.id = _data["id"]; + this.boardName = _data["boardName"]; + this.ipAddr = _data["ipAddr"]; + this.port = _data["port"]; + this.status = _data["status"]; + this.occupiedUserID = _data["occupiedUserID"]; + this.occupiedUserName = _data["occupiedUserName"]; + this.firmVersion = _data["firmVersion"]; + } + } + + static fromJS(data: any): Board { + data = typeof data === 'object' ? data : {}; + let result = new Board(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["id"] = this.id; + data["boardName"] = this.boardName; + data["ipAddr"] = this.ipAddr; + data["port"] = this.port; + data["status"] = this.status; + data["occupiedUserID"] = this.occupiedUserID; + data["occupiedUserName"] = this.occupiedUserName; + data["firmVersion"] = this.firmVersion; + return data; + } +} + +/** FPGA 板子类,表示板子信息 */ +export interface IBoard { + /** FPGA 板子的唯一标识符 */ + id: string; + /** FPGA 板子的名称 */ + boardName: string; + /** FPGA 板子的IP地址 */ + ipAddr: string; + /** FPGA 板子的通信端口 */ + port: number; + /** FPGA 板子的当前状态 */ + status: BoardStatus; + /** 占用该板子的用户的唯一标识符 */ + occupiedUserID: string; + /** 占用该板子的用户的用户名 */ + occupiedUserName?: string | undefined; + /** FPGA 板子的固件版本号 */ + firmVersion: string; +} + +/** FPGA 板子状态枚举 */ +export enum BoardStatus { + Busy = 0, + Available = 1, +} + +export class SystemException extends Exception implements ISystemException { + + constructor(data?: ISystemException) { + super(data); + } + + init(_data?: any) { + super.init(_data); + } + + static fromJS(data: any): SystemException { + data = typeof data === 'object' ? data : {}; + let result = new SystemException(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + super.toJSON(data); + return data; + } +} + +export interface ISystemException extends IException { +} + +export class ArgumentException extends SystemException implements IArgumentException { + declare message: string; + paramName?: string | undefined; + + constructor(data?: IArgumentException) { + super(data); + } + + init(_data?: any) { + super.init(_data); + if (_data) { + this.message = _data["Message"]; + this.paramName = _data["ParamName"]; + } + } + + static fromJS(data: any): ArgumentException { + data = typeof data === 'object' ? data : {}; + let result = new ArgumentException(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["Message"] = this.message; + data["ParamName"] = this.paramName; + super.toJSON(data); + return data; + } +} + +export interface IArgumentException extends ISystemException { + message: string; + paramName?: string | undefined; +} + +/** 逻辑分析仪运行状态枚举 */ +export enum CaptureStatus { + None = 0, + CaptureOn = 1, + CaptureForce = 256, + CaptureBusy = 65536, + CaptureDone = 16777216, +} + +/** 全局触发模式枚举,定义多路信号触发条件的逻辑组合方式 */ +export enum GlobalCaptureMode { + AND = 0, + OR = 1, + NAND = 2, + NOR = 3, +} + +/** 信号M的操作符枚举 */ +export enum SignalOperator { + Equal = 0, + NotEqual = 1, + LessThan = 2, + LessThanOrEqual = 3, + GreaterThan = 4, + GreaterThanOrEqual = 5, +} + +/** 信号M的值枚举 */ +export enum SignalValue { + Logic0 = 0, + Logic1 = 1, + NotCare = 2, + Rise = 3, + Fall = 4, + RiseOrFall = 5, + NoChange = 6, + SomeNumber = 7, +} + +/** 捕获配置 */ +export class CaptureConfig implements ICaptureConfig { + /** 全局触发模式 */ + globalMode!: GlobalCaptureMode; + /** 信号触发配置列表 */ + signalConfigs!: SignalTriggerConfig[]; + + constructor(data?: ICaptureConfig) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + if (!data) { + this.signalConfigs = []; + } + } + + init(_data?: any) { + if (_data) { + this.globalMode = _data["globalMode"]; + if (Array.isArray(_data["signalConfigs"])) { + this.signalConfigs = [] as any; + for (let item of _data["signalConfigs"]) + this.signalConfigs!.push(SignalTriggerConfig.fromJS(item)); + } + } + } + + static fromJS(data: any): CaptureConfig { + data = typeof data === 'object' ? data : {}; + let result = new CaptureConfig(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["globalMode"] = this.globalMode; + if (Array.isArray(this.signalConfigs)) { + data["signalConfigs"] = []; + for (let item of this.signalConfigs) + data["signalConfigs"].push(item.toJSON()); + } + return data; + } +} + +/** 捕获配置 */ +export interface ICaptureConfig { + /** 全局触发模式 */ + globalMode: GlobalCaptureMode; + /** 信号触发配置列表 */ + signalConfigs: SignalTriggerConfig[]; +} + +/** 信号触发配置 */ +export class SignalTriggerConfig implements ISignalTriggerConfig { + /** 信号索引 (0-7) */ + signalIndex!: number; + /** 操作符 */ + operator!: SignalOperator; + /** 信号值 */ + value!: SignalValue; + + constructor(data?: ISignalTriggerConfig) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.signalIndex = _data["signalIndex"]; + this.operator = _data["operator"]; + this.value = _data["value"]; + } + } + + static fromJS(data: any): SignalTriggerConfig { + data = typeof data === 'object' ? data : {}; + let result = new SignalTriggerConfig(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["signalIndex"] = this.signalIndex; + data["operator"] = this.operator; + data["value"] = this.value; + return data; + } +} + +/** 信号触发配置 */ +export interface ISignalTriggerConfig { + /** 信号索引 (0-7) */ + signalIndex: number; + /** 操作符 */ + operator: SignalOperator; + /** 信号值 */ + value: SignalValue; +} + +/** Package options which to send address to read or write */ +export class SendAddrPackOptions implements ISendAddrPackOptions { + /** 突发类型 */ + burstType!: BurstType; + /** 任务ID */ + commandID!: number; + /** 标识写入还是读取 */ + isWrite!: boolean; + /** 突发长度:0是32bits,255是32bits x 256 */ + burstLength!: number; + /** 目标地址 */ + address!: number; + + constructor(data?: ISendAddrPackOptions) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.burstType = _data["burstType"]; + this.commandID = _data["commandID"]; + this.isWrite = _data["isWrite"]; + this.burstLength = _data["burstLength"]; + this.address = _data["address"]; + } + } + + static fromJS(data: any): SendAddrPackOptions { + data = typeof data === 'object' ? data : {}; + let result = new SendAddrPackOptions(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["burstType"] = this.burstType; + data["commandID"] = this.commandID; + data["isWrite"] = this.isWrite; + data["burstLength"] = this.burstLength; + data["address"] = this.address; + return data; + } +} + +/** Package options which to send address to read or write */ +export interface ISendAddrPackOptions { + /** 突发类型 */ + burstType: BurstType; + /** 任务ID */ + commandID: number; + /** 标识写入还是读取 */ + isWrite: boolean; + /** 突发长度:0是32bits,255是32bits x 256 */ + burstLength: number; + /** 目标地址 */ + address: number; +} + +/** Package Burst Type */ +export enum BurstType { + FixedBurst = 0, + ExtendBurst = 1, +} + +/** UDP接受数据包格式 */ +export class UDPData implements IUDPData { + /** 接受到的时间 */ + dateTime!: Date; + /** 发送来源的IP地址 */ + address!: string; + /** 发送来源的端口号 */ + port!: number; + /** 任务ID */ + taskID!: number; + /** 接受到的数据 */ + data!: string; + /** 是否被读取过 */ + hasRead!: boolean; + + constructor(data?: IUDPData) { + if (data) { + for (var property in data) { + if (data.hasOwnProperty(property)) + (this)[property] = (data)[property]; + } + } + } + + init(_data?: any) { + if (_data) { + this.dateTime = _data["dateTime"] ? new Date(_data["dateTime"].toString()) : undefined; + this.address = _data["address"]; + this.port = _data["port"]; + this.taskID = _data["taskID"]; + this.data = _data["data"]; + this.hasRead = _data["hasRead"]; + } + } + + static fromJS(data: any): UDPData { + data = typeof data === 'object' ? data : {}; + let result = new UDPData(); + result.init(data); + return result; + } + + toJSON(data?: any) { + data = typeof data === 'object' ? data : {}; + data["dateTime"] = this.dateTime ? this.dateTime.toISOString() : undefined; + data["address"] = this.address; + data["port"] = this.port; + data["taskID"] = this.taskID; + data["data"] = this.data; + data["hasRead"] = this.hasRead; + return data; + } +} + +/** UDP接受数据包格式 */ +export interface IUDPData { + /** 接受到的时间 */ + dateTime: Date; + /** 发送来源的IP地址 */ + address: string; + /** 发送来源的端口号 */ + port: number; + /** 任务ID */ + taskID: number; + /** 接受到的数据 */ + data: string; + /** 是否被读取过 */ + hasRead: boolean; +} + +export interface FileParameter { + data: any; + fileName: string; +} + +export interface FileResponse { + data: Blob; + status: number; + fileName?: string; + headers?: { [name: string]: any }; +} + +export class ApiException extends Error { + message: string; + status: number; + response: string; + headers: { [key: string]: any; }; + result: any; + + constructor(message: string, status: number, response: string, headers: { [key: string]: any; }, result: any) { + super(); + + this.message = message; + this.status = status; + this.response = response; + this.headers = headers; + this.result = result; + } + + protected isApiException = true; + + static isApiException(obj: any): obj is ApiException { + return obj.isApiException === true; + } +} + +function throwException(message: string, status: number, response: string, headers: { [key: string]: any; }, result?: any): any { + if (result !== null && result !== undefined) + throw result; + else + throw new ApiException(message, status, response, headers, null); } \ No newline at end of file diff --git a/src/components/LogicAnalyzer/ChannelConfig.vue b/src/components/LogicAnalyzer/ChannelConfig.vue new file mode 100644 index 0000000..785f340 --- /dev/null +++ b/src/components/LogicAnalyzer/ChannelConfig.vue @@ -0,0 +1,174 @@ + + + diff --git a/src/components/LogicAnalyzer/LogicalWaveFormDisplay.vue b/src/components/LogicAnalyzer/LogicalWaveFormDisplay.vue index 317a6eb..ae2780e 100644 --- a/src/components/LogicAnalyzer/LogicalWaveFormDisplay.vue +++ b/src/components/LogicAnalyzer/LogicalWaveFormDisplay.vue @@ -1,6 +1,12 @@