repo time
Dependencies: mbed MAX14720 MAX30205 USBDevice
Diff: HspGuiSourceV301/GuiDLLs/RPCSupport/RPCClient.cs
- Revision:
- 20:6d2af70c92ab
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/HspGuiSourceV301/GuiDLLs/RPCSupport/RPCClient.cs Tue Apr 06 06:41:40 2021 +0000 @@ -0,0 +1,340 @@ +/******************************************************************************* +* Copyright (C) 2016 Maxim Integrated Products, Inc., All rights Reserved. +* +* This software is protected by copyright laws of the United States and +* of foreign countries. This material may also be protected by patent laws +* and technology transfer regulations of the United States and of foreign +* countries. This software is furnished under a license agreement and/or a +* nondisclosure agreement and may only be used or reproduced in accordance +* with the terms of those agreements. Dissemination of this information to +* any party or parties not specified in the license agreement and/or +* nondisclosure agreement is expressly prohibited. +* +* The above copyright notice and this permission notice shall be included +* in all copies or substantial portions of the Software. +* +* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +* OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +* MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +* IN NO EVENT SHALL MAXIM INTEGRATED BE LIABLE FOR ANY CLAIM, DAMAGES +* OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +* ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +* OTHER DEALINGS IN THE SOFTWARE. +* +* Except as contained in this notice, the name of Maxim Integrated +* Products, Inc. shall not be used except as stated in the Maxim Integrated +* Products, Inc. Branding Policy. +* +* The mere transfer of this software does not imply any licenses +* of trade secrets, proprietary technology, copyrights, patents, +* trademarks, maskwork rights, or any other form of intellectual +* property whatsoever. Maxim Integrated Products, Inc. retains all +* ownership rights. +******************************************************************************* +*/ + +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using RPCSupport.Pipelines; +using RPCSupport.Devices; +using RPCSupport.Dialogs; + +namespace RPCSupport +{ + public class RPCClient + { + public enum ePipeline + { + eHid, + eSerial, + eHttp, + eSerialWrap + } + + //SerialPipeline serialPipeline; + const string SPINAME = "Spi"; + I2cDevice i2cDevice; + SpiDevice spiDevice; + bool rpcLogShown = false; + public RPCSupport.Streaming.Streaming streaming; + + public Pipeline pipeline; + + public Pipeline Pipeline + { + get { return pipeline; } + } + + LIS2HD lis2hd; + public LIS2HD LIS2HD + { + get { return lis2hd; } + set { lis2hd = value; } + } + + public I2cDevice I2cDevice + { + get { return i2cDevice; } + set { i2cDevice = value; } + } + public SpiDevice SpiDevice + { + get { return spiDevice; } + set { spiDevice = value; } + } + + MAX30101 max30101; + public MAX30101 MAX30101 + { + get { return max30101; } + set { max30101 = value; } + } + + MAX30001 max30001; + public MAX30001 MAX30001 + { + get { return max30001; } + set { max30001 = value; } + } + + MAX30205 max30205; + public MAX30205 MAX30205 + { + get { return max30205; } + set { max30205 = value; } + } + + DataLogging.DataLogging dataLogging; + public DataLogging.DataLogging DataLogging + { + get { return dataLogging; } + set { dataLogging = value; } + } + + Devices.Led led; + public Devices.Led Led + { + get { return led; } + set { led = value; } + } + + Devices.Testing testing; + public Devices.Testing Testing + { + get { return testing; } + set { testing = value; } + } + + Devices.S25FS512 s25FS512; + public Devices.S25FS512 S25FS512 + { + get { return s25FS512; } + set { s25FS512 = value; } + } + + public RPCClient(ePipeline pipelineType) + { + switch (pipelineType) + { + case ePipeline.eHid: + pipeline = new HidPipeline(); + break; + case ePipeline.eSerial: + pipeline = new SerialPipeline(); + break; + case ePipeline.eHttp: + break; + case ePipeline.eSerialWrap: + pipeline = new SerialWrapPipeline(); + break; + } + ShowRpcLog(false); + LogCallback(new RPCSupport.Pipelines.Pipeline.RawRpcRequest(LogRpcRequest), new RPCSupport.Pipelines.Pipeline.RawRpcReply(LogRpcReply), new RPCSupport.Pipelines.Pipeline.RawRpcStream(LogRpcStream)); + streaming = new Streaming.Streaming(); + } + + void LogRpcRequest(string request) + { + rpcLog.LogRpcRequest(request); + } + + void LogRpcReply(string reply) + { + rpcLog.LogRpcReply(reply); + } + + void LogRpcStream(string stream) + { + rpcLog.LogRpcStream(stream); + } + + public void LogCallback(RPCSupport.Pipelines.Pipeline.RawRpcRequest request, RPCSupport.Pipelines.Pipeline.RawRpcReply reply, RPCSupport.Pipelines.Pipeline.RawRpcStream stream) + { + pipeline.LogCallback(request, reply, stream); + } + + public void Connect(string param) { + pipeline.Connect(param); + } + + public void Disconnect() + { + pipeline.Disconnect(); + } + + public string[] ScanAvailablePortNames() { + return pipeline.ScanAvailablePortNames(); + } + + public bool InitPipeline() + { + bool ret = pipeline.Init(); + return ret; + } + + public bool IsConnected() + { + return pipeline.IsConnected(); + } + + public String RawRpcCall(String request, bool reply) + { + return pipeline.RawRpcCall(request, reply); + } + + public Devices.MAX30101 Init_MAX30101(int slaveAddress) + { + MAX30101 = new RPCSupport.Devices.MAX30101(this, slaveAddress); + return MAX30101; + } + + public Devices.MAX30001 Init_MAX30001() + { + MAX30001 = new RPCSupport.Devices.MAX30001(this); + return MAX30001; + } + + public Devices.MAX30205 Init_MAX30205(int slaveAddress) + { + MAX30205 = new RPCSupport.Devices.MAX30205(this, slaveAddress); + return MAX30205; + } + + public Devices.LIS2HD Init_LIS2HD(int slaveAddress) + { + LIS2HD = new RPCSupport.Devices.LIS2HD(this, slaveAddress); + return LIS2HD; + } + + public Devices.I2cDevice Init_I2cDevice() + { + I2cDevice = new RPCSupport.Devices.I2cDevice(this); + return I2cDevice; + } + + public Devices.SpiDevice Init_SpiDevice() + { + SpiDevice = new RPCSupport.Devices.SpiDevice(this); + return SpiDevice; + } + + public DataLogging.DataLogging Init_Logging() + { + dataLogging = new RPCSupport.DataLogging.DataLogging(this); + return dataLogging; + } + + public RPCSupport.Devices.Led Init_Led() + { + led = new RPCSupport.Devices.Led(this); + return led; + } + + public RPCSupport.Devices.Testing Init_Testing() + { + testing = new RPCSupport.Devices.Testing(this); + return testing; + } + + public RPCSupport.Devices.S25FS512 Init_S25FS512() + { + s25FS512 = new RPCSupport.Devices.S25FS512(this); + return s25FS512; + } + + + public void ReadRegister(DeviceSupport.DeviceDetails deviceDetails, DeviceSupport.RegisterInfo reg) + { + int hex; + + switch (deviceDetails.type) + { + case DeviceSupport.DeviceDetails.eType.eI2c: + i2cDevice.ReadReg(deviceDetails, reg); + break; + case DeviceSupport.DeviceDetails.eType.eSpi: + spiDevice.ReadReg(deviceDetails, reg); + break; + case DeviceSupport.DeviceDetails.eType.eMAX30001: + //reg.data[0] = max30001.ReadReg((byte)reg.address); + hex = max30001.ReadReg((byte)reg.address); + reg.data[0] = (hex >> 16) & 0xFF; + reg.data[1] = (hex >> 8) & 0xFF; + reg.data[2] = hex & 0xFF; + break; + case DeviceSupport.DeviceDetails.eType.eMAX30205: + //reg.data[0] = max30001.ReadReg((byte)reg.address); + hex = max30205.ReadReg((byte)reg.address); + reg.data[0] = (hex >> 8) & 0xFF; + reg.data[1] = hex & 0xFF; + break; + } + } + + public void WriteRegister(DeviceSupport.DeviceDetails deviceDetails, DeviceSupport.RegisterInfo reg) + { + switch (deviceDetails.type) + { + case DeviceSupport.DeviceDetails.eType.eI2c: + i2cDevice.WriteReg(deviceDetails, reg); + break; + case DeviceSupport.DeviceDetails.eType.eSpi: + spiDevice.WriteReg(deviceDetails, reg); + break; + case DeviceSupport.DeviceDetails.eType.eMAX30001: + //max30001.WriteReg((byte)reg.address, reg.data[0]); + max30001.WriteReg((byte)reg.address, reg.data[2] | reg.data[1] << 8 | reg.data[0] << 16); + break; + case DeviceSupport.DeviceDetails.eType.eMAX30205: + max30001.WriteReg((byte)reg.address, reg.data[1] | reg.data[0] << 8); + break; + } + } + + RpcLog rpcLog; + public void ShowRpcLog(bool state) + { + if (rpcLog == null) + { + rpcLog = new RpcLog(); + } + rpcLogShown = state; + if (state == true) + rpcLog.Show(); + else + rpcLog.Hide(); + } + + public bool IsRpcLogShown() + { + return rpcLogShown; + } + + public string Version() + { + return RawRpcCall("/System/ReadVer\r\n", true); + } + } +}