/// <summary> /// "set DEVICE-ID propName value" /// </summary> public Hashtable SetDeviceProp(String deviceId, String propName, String propValue) { Hashtable ret = new Hashtable(); ret["status"] = "FAILED"; DataType type = DataType.UNDEF; MtpDevicePropCode code = KeyToPropCode(propName, ref type); byte[] val = MtpHelperUtils.StringToBytes(propValue, type); Connect(deviceId, () => { MtpResponse res = command.Execute(MtpOperationCode.SetDevicePropValue, new uint[1] { (uint)code }, val); if (res.ResponseCode == WpdMtpLib.MtpResponseCode.OK) { ret["status"] = "OK"; } else { ret["status"] = String.Format("FAILED({0:X4})", (UInt16)res.ResponseCode); } }); return(ret); }
static MtpDevicePropCode KeyToPropCode(String propName, ref DataType type) { type = DataType.UNDEF; try { MtpDevicePropCode code = (MtpDevicePropCode)_properties[propName][0]; type = (DataType)_properties[propName][1]; return(code); } catch (System.Collections.Generic.KeyNotFoundException) { throw new MtpHelperRuntimeException(String.Format("Invalid property key({0})", propName)); } }
/// <summary> /// "desc DEVICE-ID propName" /// </summary> public Hashtable GetDevicePropDesc(String deviceId, String propName) { Hashtable ret = new Hashtable(); ret["status"] = "FAILED"; DataType type = DataType.UNDEF; MtpDevicePropCode code = KeyToPropCode(propName, ref type); Connect(deviceId, () => { MtpResponse res = command.Execute(MtpOperationCode.GetDevicePropDesc, new uint[1] { (uint)code }, null); if (res.ResponseCode == WpdMtpLib.MtpResponseCode.OK) { DevicePropDesc dpd = new DevicePropDesc(res.Data); ret["current"] = dpd.CurrentValue; ret["factory_default_value"] = dpd.FactoryDefaultValue; ret["get_set"] = dpd.GetSet; if (dpd.FormFlag == 0x01) { // 範囲 ret["min"] = dpd.Form[0]; ret["max"] = dpd.Form[1]; ret["step"] = dpd.Form[2]; } else if (dpd.FormFlag == 0x02) { // 配列 ret["values"] = dpd.Form; } else { ret["values"] = null; } ret["status"] = "OK"; } else { ret["status"] = String.Format("FAILED({0:X4})", (UInt16)res.ResponseCode); } }); return(ret); }