解决蓝牙设备丢失以后状态不变的问题

This commit is contained in:
suntao 2021-06-09 18:16:35 +08:00
parent 15e440715d
commit 5f7cc43593
43 changed files with 114 additions and 5363 deletions

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 9c10d8a67a9a13f46bb4f2111feb60ff
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 6d3a9f3ee7ee70e408ce98d319d0b7f4
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,71 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.Networking;
using UnityEngine.UI;
using UnityEngine.EventSystems;
using UnityEngine.SceneManagement;
public class ButtonScript : MonoBehaviour
{
[SerializeField] Button button;
[SerializeField] Text text;
[SerializeField] GUISkin skin;
[SerializeField] InputField input;
[SerializeField] Image image;
[SerializeField] RawImage rawImage;
[SerializeField] EventSystem ec;
[SerializeField] UnityEngine.UIElements.ScrollView scroll;
private string btnText = "This is a button";
// Start is called before the first frame update
private void OnGUI()
{
//GUI.skin = skin;
GUI.Label(new Rect(0, 0, 200, 100), "Hi - I'm a label looking like a box", "box");
// 创建使用"“切换键" GUIStyle 的按钮
if (Time.time % 2 < 1 && GUI.Button(new Rect(10, 140, 180, 20), btnText))
{
btnText = "hello world" + Time.time;
}
GUI.Button(new Rect(100, 100, 300, 30), "Skinned Button");
}
void Start()
{
var a = GameObject.Find("ViewportGrid");
Debug.Log($"{Screen.width},{Screen.height}");
Debug.Log(gameObject.name);
button.onClick.AddListener(() =>
{
if (SceneManager.GetActiveScene().name == "Demo1")
{
SceneManager.LoadScene("Demo2");
}
else
{
SceneManager.LoadScene("Demo1");
}
});
input.onEndEdit.AddListener((t)=>
{
Debug.Log(t);
text.text = t;
});
//image.flexibleWidth = Screen.width;
//image.flexibleHeight = Screen.height;
}
// Update is called once per frame
void Update()
{
}
void OnDestroy()
{
button.onClick.RemoveAllListeners();
input.onEndEdit.RemoveAllListeners();
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: ae92e0e9dabf0114abd73458f7733f36
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +0,0 @@
fileFormatVersion: 2
guid: 5b7f613e45c7cb44b95d09b1966102e3
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 5786aec61946927418871e60a0bc7c63
folderAsset: yes
DefaultImporter:
externalObjects: {}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,36 +0,0 @@
using System.Collections;
using System.Collections.Generic;
using System.Threading;
using UnityEngine;
using UnityEngine.UI;
public class ScrollTest : MonoBehaviour
{
// Start is called before the first frame update
private ScrollRect scroll;
void Start()
{
scroll = gameObject.GetComponent<ScrollRect>();
}
private bool dir = true;
// Update is called once per frame
void Update()
{
if (dir)
{
scroll.horizontalNormalizedPosition += 0.01f;
if (scroll.horizontalNormalizedPosition >= 1)
{
dir = false;
}
}
else
{
scroll.horizontalNormalizedPosition -= 0.01f;
if (scroll.horizontalNormalizedPosition <= 0)
{
dir = true;
}
}
}
}

View File

@ -1,11 +0,0 @@
fileFormatVersion: 2
guid: 6adf1f0c1d929374aac00f3a6a2445bf
MonoImporter:
externalObjects: {}
serializedVersion: 2
defaultReferences: []
executionOrder: 0
icon: {instanceID: 0}
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,102 +0,0 @@
Shader "Custom/ImageMask"
{
Properties
{
[PerRendererData] _MainTex ("Sprite Texture", 2D) = "white" {}
_Mask ("Base (RGB)", 2D) = "white" {}
_Color ("Tint", Color) = (1,1,1,1)
_StencilComp ("Stencil Comparison", Float) = 8
_Stencil ("Stencil ID", Float) = 0
_StencilOp ("Stencil Operation", Float) = 0
_StencilWriteMask ("Stencil Write Mask", Float) = 255
_StencilReadMask ("Stencil Read Mask", Float) = 255
_ColorMask ("Color Mask", Float) = 15
[Toggle(UNITY_UI_ALPHACLIP)] _UseUIAlphaClip ("Use Alpha Clip", Float) = 0
}
SubShader
{
Tags
{
"Queue"="Transparent" "IgnoreProjector"="True" "RenderType"="Transparent" "PreviewType"="Plane" "CanUseSpriteAtlas"="True"
}
Stencil
{
Ref [_Stencil]
Comp [_StencilComp]
Pass [_StencilOp]
ReadMask [_StencilReadMask]
WriteMask [_StencilWriteMask]
}
Cull Off
Lighting Off
ZWrite Off
ZTest [unity_GUIZTestMode]
Blend SrcAlpha OneMinusSrcAlpha
ColorMask [_ColorMask]
Pass
{
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
#include "UnityCG.cginc"
#include "UnityUI.cginc"
#pragma multi_compile __ UNITY_UI_ALPHACLIP
struct a2v
{
fixed2 uv : TEXCOORD0;
half4 vertex : POSITION;
float4 color : COLOR;
};
fixed4 _Color;
struct v2f
{
fixed2 uv : TEXCOORD0;
half4 vertex : SV_POSITION;
float4 color : COLOR;
};
sampler2D _MainTex;
sampler2D _Mask;
v2f vert (a2v i)
{
v2f o;
o.vertex = UnityObjectToClipPos(i.vertex);
o.uv = i.uv;
o.color = i.color * _Color;
return o;
}
fixed4 frag (v2f i) : COLOR
{
half4 color = tex2D(_MainTex, i.uv) * i.color;
half4 mask = tex2D(_Mask, i.uv);
color.a *= mask.a;
return color;
}
ENDCG
}
}
}

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 36c797600830d844eaec2cfe2b90bfb0
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

File diff suppressed because it is too large Load Diff

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: 85685edc9f6bc7a4388e6c542d4de93b
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,88 +0,0 @@
%YAML 1.1
%TAG !u! tag:unity3d.com,2011:
--- !u!21 &2100000
Material:
serializedVersion: 6
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_Name: New Material
m_Shader: {fileID: 4800000, guid: 36c797600830d844eaec2cfe2b90bfb0, type: 3}
m_ShaderKeywords:
m_LightmapFlags: 4
m_EnableInstancingVariants: 0
m_DoubleSidedGI: 0
m_CustomRenderQueue: -1
stringTagMap: {}
disabledShaderPasses: []
m_SavedProperties:
serializedVersion: 3
m_TexEnvs:
- _BumpMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailAlbedoMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailMask:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _DetailNormalMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _EmissionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MainTex:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _Mask:
m_Texture: {fileID: 2800000, guid: 426bc972b7c244d40b428c79111a0d76, type: 3}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _MetallicGlossMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _OcclusionMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
- _ParallaxMap:
m_Texture: {fileID: 0}
m_Scale: {x: 1, y: 1}
m_Offset: {x: 0, y: 0}
m_Floats:
- _BumpScale: 1
- _ColorMask: 15
- _Cutoff: 0.5
- _DetailNormalMapScale: 1
- _DstBlend: 0
- _GlossMapScale: 1
- _Glossiness: 0.5
- _GlossyReflections: 1
- _Metallic: 0
- _Mode: 0
- _OcclusionStrength: 1
- _Parallax: 0.02
- _SmoothnessTextureChannel: 0
- _SpecularHighlights: 1
- _SrcBlend: 1
- _Stencil: 0
- _StencilComp: 8
- _StencilOp: 0
- _StencilReadMask: 255
- _StencilWriteMask: 255
- _UVSec: 0
- _UseUIAlphaClip: 0
- _ZWrite: 1
m_Colors:
- _Color: {r: 1, g: 1, b: 1, a: 1}
- _EmissionColor: {r: 0, g: 0, b: 0, a: 1}

View File

@ -1,8 +0,0 @@
fileFormatVersion: 2
guid: dd6552bd9b1de2747aa636527513d0b8
NativeFormatImporter:
externalObjects: {}
mainObjectFileID: 2100000
userData:
assetBundleName:
assetBundleVariant:

View File

@ -1,40 +0,0 @@
Shader "Custom/RotateUVs" {
Properties {
_MainTex ("Base (RGB)", 2D) = "white" {}
_RotationSpeed ("Rotation Speed", Float) = 2.0
}
SubShader {
Tags { "RenderType"="Opaque" }
LOD 200
CGPROGRAM
#pragma surface surf Lambert vertex:vert
sampler2D _MainTex;
struct Input {
float2 uv_MainTex;
};
float _RotationSpeed;
void vert (inout appdata_full v) {
v.texcoord.xy -=0.5;
float s = sin ( _RotationSpeed * _Time );
float c = cos ( _RotationSpeed * _Time );
float2x2 rotationMatrix = float2x2( c, -s, s, c);
rotationMatrix *=0.5;
rotationMatrix +=0.5;
rotationMatrix = rotationMatrix * 2-1;
v.texcoord.xy = mul ( v.texcoord.xy, rotationMatrix );
v.texcoord.xy += 0.5;
}
void surf (Input IN, inout SurfaceOutput o) {
half4 c = tex2D (_MainTex, IN.uv_MainTex);
o.Albedo = c.rgb;
o.Alpha = c.a;
}
ENDCG
}
FallBack "Diffuse"
}

View File

@ -1,9 +0,0 @@
fileFormatVersion: 2
guid: 5a1aa2bd026c81c48bdbc2d02be7dd04
ShaderImporter:
externalObjects: {}
defaultTextures: []
nonModifiableTextures: []
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.0 KiB

View File

@ -1,108 +0,0 @@
fileFormatVersion: 2
guid: e2ea38974d9f086499bcf5a101e2e739
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline:
- - {x: 0, y: 96}
- {x: -96, y: -0.000004196293}
- {x: 0.000008392586, y: -96}
- {x: 96, y: 0.0000011447885}
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 603 B

View File

@ -1,104 +0,0 @@
fileFormatVersion: 2
guid: 62645928dbf0a324b8a1492a94593da6
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 3
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,116 +0,0 @@
fileFormatVersion: 2
guid: b880d26a12584a04ab6b96e822b9e360
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 0
wrapV: 0
wrapW: 0
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Android
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.7 KiB

View File

@ -1,256 +0,0 @@
fileFormatVersion: 2
guid: 6ab82263af6297c409a983013c26f174
TextureImporter:
internalIDToNameTable:
- first:
213: 134134969389708294
second: png-4_0
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 2
spriteExtrude: 1
spriteMeshType: 0
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: 0
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites:
- serializedVersion: 2
name: png-4_0
rect:
serializedVersion: 2
x: 0
y: 0
width: 100
height: 60
alignment: 0
pivot: {x: 0.5, y: 0.5}
border: {x: 28, y: 0, z: 25, w: 0}
outline: []
physicsShape: []
tessellationDetail: 0
bones: []
spriteID: 6047e624b0b8cd100800000000000000
internalID: 134134969389708294
vertices: []
indices:
edges: []
weights: []
outline:
- - {x: 0, y: 30}
- {x: -2.453384, y: 29.963863}
- {x: -4.900857, y: 29.855541}
- {x: -7.3365235, y: 29.675295}
- {x: -9.754517, y: 29.423557}
- {x: -12.14901, y: 29.100937}
- {x: -14.514234, y: 28.70821}
- {x: -16.844492, y: 28.246323}
- {x: -19.13417, y: 27.716387}
- {x: -21.377752, y: 27.119678}
- {x: -23.569836, y: 26.457638}
- {x: -25.705137, y: 25.731857}
- {x: -27.778513, y: 24.944088}
- {x: -29.784966, y: 24.096226}
- {x: -31.719667, y: 23.190313}
- {x: -33.57795, y: 22.22853}
- {x: -35.355343, y: 21.213202}
- {x: -37.047558, y: 20.146767}
- {x: -38.650528, y: 19.031796}
- {x: -40.16038, y: 17.870975}
- {x: -41.573486, y: 16.667103}
- {x: -42.886436, y: 15.423078}
- {x: -44.09607, y: 14.141897}
- {x: -45.19947, y: 12.826647}
- {x: -46.19398, y: 11.480496}
- {x: -47.07721, y: 10.106688}
- {x: -47.84702, y: 8.708532}
- {x: -48.501568, y: 7.2893963}
- {x: -49.03927, y: 5.8527}
- {x: -49.458828, y: 4.401904}
- {x: -49.75924, y: 2.9405036}
- {x: -49.939774, y: 1.4720187}
- {x: -50, y: -0.000012040178}
- {x: -49.939774, y: -1.4720428}
- {x: -49.75923, y: -2.9405274}
- {x: -49.458824, y: -4.401928}
- {x: -49.03926, y: -5.852724}
- {x: -48.501556, y: -7.2894197}
- {x: -47.847008, y: -8.708555}
- {x: -47.077194, y: -10.106711}
- {x: -46.193966, y: -11.480519}
- {x: -45.199455, y: -12.826665}
- {x: -44.096054, y: -14.1419115}
- {x: -42.886425, y: -15.42309}
- {x: -41.57348, y: -16.66711}
- {x: -40.160378, y: -17.870981}
- {x: -38.650524, y: -19.031797}
- {x: -37.04756, y: -20.146767}
- {x: -35.355347, y: -21.213198}
- {x: -33.57796, y: -22.228527}
- {x: -31.71968, y: -23.190306}
- {x: -29.784986, y: -24.096216}
- {x: -27.77854, y: -24.944077}
- {x: -25.705168, y: -25.731848}
- {x: -23.569874, y: -26.457626}
- {x: -21.377796, y: -27.119667}
- {x: -19.134218, y: -27.716373}
- {x: -16.844545, y: -28.246311}
- {x: -14.514293, y: -28.7082}
- {x: -12.149074, y: -29.100927}
- {x: -9.754586, y: -29.42355}
- {x: -7.3365993, y: -29.67529}
- {x: -4.9009376, y: -29.855536}
- {x: -2.4534698, y: -29.963861}
- {x: -0.00009099629, y: -30}
- {x: 2.4532878, y: -29.963867}
- {x: 4.9007564, y: -29.855547}
- {x: 7.336419, y: -29.675304}
- {x: 9.754408, y: -29.423573}
- {x: 12.148896, y: -29.100954}
- {x: 14.514118, y: -28.708231}
- {x: 16.844374, y: -28.246347}
- {x: 19.13405, y: -27.716415}
- {x: 21.377632, y: -27.119713}
- {x: 23.569714, y: -26.457678}
- {x: 25.705013, y: -25.731903}
- {x: 27.778387, y: -24.944138}
- {x: 29.78484, y: -24.096281}
- {x: 31.719542, y: -23.190374}
- {x: 33.577827, y: -22.2286}
- {x: 35.35522, y: -21.213276}
- {x: 37.04744, y: -20.146847}
- {x: 38.650417, y: -19.031878}
- {x: 40.160282, y: -17.871056}
- {x: 41.573395, y: -16.667185}
- {x: 42.886356, y: -15.423158}
- {x: 44.095997, y: -14.141976}
- {x: 45.199406, y: -12.826725}
- {x: 46.193928, y: -11.480574}
- {x: 47.077164, y: -10.106763}
- {x: 47.846985, y: -8.708605}
- {x: 48.501537, y: -7.2894673}
- {x: 49.039246, y: -5.852768}
- {x: 49.45881, y: -4.4019685}
- {x: 49.759228, y: -2.9405649}
- {x: 49.93977, y: -1.4720769}
- {x: 50, y: -0.0000425576}
- {x: 49.939774, y: 1.4719919}
- {x: 49.759243, y: 2.9404802}
- {x: 49.45883, y: 4.4018846}
- {x: 49.039272, y: 5.852684}
- {x: 48.50157, y: 7.2893844}
- {x: 47.847027, y: 8.708524}
- {x: 47.077213, y: 10.106684}
- {x: 46.19398, y: 11.4804945}
- {x: 45.19947, y: 12.826648}
- {x: 44.096066, y: 14.141901}
- {x: 42.88643, y: 15.423084}
- {x: 41.573475, y: 16.667112}
- {x: 40.160362, y: 17.870989}
- {x: 38.650505, y: 19.03181}
- {x: 37.047535, y: 20.146784}
- {x: 35.355312, y: 21.21322}
- {x: 33.57791, y: 22.228554}
- {x: 31.719622, y: 23.190334}
- {x: 29.784914, y: 24.096249}
- {x: 27.778456, y: 24.94411}
- {x: 25.705072, y: 25.731882}
- {x: 23.569765, y: 26.457663}
- {x: 21.377674, y: 27.119701}
- {x: 19.134083, y: 27.716408}
- {x: 16.844397, y: 28.246344}
- {x: 14.514129, y: 28.70823}
- {x: 12.148896, y: 29.100954}
- {x: 9.754395, y: 29.423574}
- {x: 7.3363943, y: 29.675306}
- {x: 4.90072, y: 29.85555}
- {x: 2.453239, y: 29.963867}
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 178 B

View File

@ -1,104 +0,0 @@
fileFormatVersion: 2
guid: 9ec69ed9fb1e5cf49a927dfd46451979
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

Binary file not shown.

Before

Width:  |  Height:  |  Size: 581 KiB

View File

@ -1,104 +0,0 @@
fileFormatVersion: 2
guid: f71381890422d934694a45aeabea2f98
TextureImporter:
internalIDToNameTable: []
externalObjects: {}
serializedVersion: 11
mipmaps:
mipMapMode: 0
enableMipMap: 0
sRGBTexture: 1
linearTexture: 0
fadeOut: 0
borderMipMap: 0
mipMapsPreserveCoverage: 0
alphaTestReferenceValue: 0.5
mipMapFadeDistanceStart: 1
mipMapFadeDistanceEnd: 3
bumpmap:
convertToNormalMap: 0
externalNormalMap: 0
heightScale: 0.25
normalMapFilter: 0
isReadable: 0
streamingMipmaps: 0
streamingMipmapsPriority: 0
grayScaleToAlpha: 0
generateCubemap: 6
cubemapConvolution: 0
seamlessCubemap: 0
textureFormat: 1
maxTextureSize: 2048
textureSettings:
serializedVersion: 2
filterMode: -1
aniso: -1
mipBias: -100
wrapU: 1
wrapV: 1
wrapW: -1
nPOTScale: 0
lightmap: 0
compressionQuality: 50
spriteMode: 1
spriteExtrude: 1
spriteMeshType: 1
alignment: 0
spritePivot: {x: 0.5, y: 0.5}
spritePixelsToUnits: 100
spriteBorder: {x: 0, y: 0, z: 0, w: 0}
spriteGenerateFallbackPhysicsShape: 1
alphaUsage: 1
alphaIsTransparency: 1
spriteTessellationDetail: -1
textureType: 8
textureShape: 1
singleChannelComponent: 0
maxTextureSizeSet: 0
compressionQualitySet: 0
textureFormatSet: 0
applyGammaDecoding: 0
platformSettings:
- serializedVersion: 3
buildTarget: DefaultTexturePlatform
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
- serializedVersion: 3
buildTarget: Standalone
maxTextureSize: 2048
resizeAlgorithm: 0
textureFormat: -1
textureCompression: 1
compressionQuality: 50
crunchedCompression: 0
allowsAlphaSplitting: 0
overridden: 0
androidETC2FallbackOverride: 0
forceMaximumCompressionQuality_BC6H_BC7: 0
spriteSheet:
serializedVersion: 2
sprites: []
outline: []
physicsShape: []
bones: []
spriteID: 5e97eb03825dee720800000000000000
internalID: 0
vertices: []
indices:
edges: []
weights: []
secondaryTextures: []
spritePackingTag:
pSDRemoveMatte: 0
pSDShowRemoveMatteOption: 0
userData:
assetBundleName:
assetBundleVariant:

View File

@ -323,50 +323,6 @@ CanvasRenderer:
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 273807000}
m_CullTransparentMesh: 0
--- !u!1 &508680359
GameObject:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
serializedVersion: 6
m_Component:
- component: {fileID: 508680361}
- component: {fileID: 508680360}
m_Layer: 0
m_Name: AppCenter
m_TagString: Untagged
m_Icon: {fileID: 0}
m_NavMeshLayer: 0
m_StaticEditorFlags: 0
m_IsActive: 1
--- !u!114 &508680360
MonoBehaviour:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 508680359}
m_Enabled: 1
m_EditorHideFlags: 0
m_Script: {fileID: 11500000, guid: b9a3a6a28c6a80a46adde9b4e01eeb93, type: 3}
m_Name:
m_EditorClassIdentifier:
Settings: {fileID: 11400000, guid: 060d0d087b61870459a222c8d67af46a, type: 2}
--- !u!4 &508680361
Transform:
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 508680359}
m_LocalRotation: {x: 0, y: 0, z: 0, w: 1}
m_LocalPosition: {x: 708.2801, y: 231.04446, z: 981.1338}
m_LocalScale: {x: 1, y: 1, z: 1}
m_Children: []
m_Father: {fileID: 0}
m_RootOrder: 6
m_LocalEulerAnglesHint: {x: 0, y: 0, z: 0}
--- !u!1 &724627085
GameObject:
m_ObjectHideFlags: 0

View File

@ -35,6 +35,7 @@ namespace Assets.Scripts.Devices.Ble
{
this.hwInterface = bleWinHwInterface;
this.hwInterface.BluetoothStateChangedEvent += BluetoothStateChangedEvent;
this.hwInterface.PeripheralDisconnectedEvent += HwInterface_PeripheralDisconnectedEvent;
this.peripheralInfo = peripheralInfo;
base.Sensor = sensor;
@ -48,6 +49,22 @@ namespace Assets.Scripts.Devices.Ble
Characteristics.Add(new ModelNumberCharacteristic());
}
private void HwInterface_PeripheralDisconnectedEvent(BleWinHwInterface hwInterface, BlePeripheralInfo peripheral, BleResponse response, bool manualDisconnect)
{
if (this.State != DeviceState.Disconnected)
{
//Debug.Log("111111111111111111111111111111111111111111111111111111111111");
this.State = DeviceState.Disconnected;
if (!manualDisconnect)
{
this.ConnectToPeripheralIfPossible();
}
}
//
}
private void ConnectToPeripheralIfPossible()
{
if(this.peripheralInfo == null)
@ -85,6 +102,17 @@ namespace Assets.Scripts.Devices.Ble
this.State = DeviceState.Disconnected;
}
private void Disconnect()
{
if (this.State != DeviceState.Disconnected)
{
Debug.Log("断开设备" + this.Name);
this.hwInterface.DisconnectPeripheral(this.peripheralInfo, () => {
this.State = DeviceState.Disconnected;
});
}
}
private void ServicesDiscoveredAction(BleWinHwInterface hwInterface, BlePeripheralInfo sender, BleResponse<List<BleServiceInfo>> response)
{
//Debug.Log("搜索service");
@ -196,7 +224,6 @@ namespace Assets.Scripts.Devices.Ble
// service = new CyclingPowerService(serviceInfo, this.hwInterface);
// this.AddService(service, response);
//}
}
private void AddService(BleService service, BleResponse<List<BleCharacteristicInfo>> scanCharacteristicsResponse = null)
@ -227,18 +254,7 @@ namespace Assets.Scripts.Devices.Ble
private void CheckAndSetConnectionStatus()
{
}
private void Disconnect()
{
if (this.State != DeviceState.Disconnected)
{
Debug.Log("断开设备" + this.Name);
this.hwInterface.DisconnectPeripheral(this.peripheralInfo, ()=> {
this.State = DeviceState.Disconnected;
});
}
}
}
private void BluetoothStateChangedEvent(BleWinHwInterface hwInterface, BleState state)
{

View File

@ -85,7 +85,7 @@ namespace Assets.Scripts.Devices.Ble
{
//TODO:取消注释,自动连接设备
//Debug.Log("自动连接" + device111.Id);
//device111.Connect();
device111.Connect();
}
}
@ -95,7 +95,7 @@ namespace Assets.Scripts.Devices.Ble
if (discoveredDevices.ContainsKey(device.Peripheral.Address))
{
discoveredDevices[device.Peripheral.Address].SignalStrength = device.Rssi;
Debug.Log($"设备{ device.Peripheral.Name }信号量:{ device.Rssi }");
//Debug.Log($"设备{ device.Peripheral.Name }信号量:{ device.Rssi }");
}
});
}
@ -119,5 +119,21 @@ namespace Assets.Scripts.Devices.Ble
item.Value.Dispose();
}
}
/// <summary>
/// 清除未连接的设备
/// </summary>
public void ClearDevice()
{
var list = discoveredDevices.ToList();
foreach (var item in list)
{
if(item.Value.State == Ant.DeviceState.Disconnected)
{
hwInterface.pCache.Remove(item.Key);
discoveredDevices.Remove(item.Key);
}
}
}
}
}

View File

@ -7,5 +7,5 @@ using System.Threading.Tasks;
namespace Assets.Scripts.Devices.Ble
{
public delegate void PeripheralDisconnectedCallback(BleWinHwInterface hwInterface, BlePeripheralInfo peripheral, BleResponse response);
public delegate void PeripheralDisconnectedCallback(BleWinHwInterface hwInterface, BlePeripheralInfo peripheral, BleResponse response, bool manualDisconnect);
}

View File

@ -17,7 +17,7 @@ namespace Assets.Scripts.Ble
private static BleWinHwInterface hwInterface;
private WclBleMainThread wclBleMainThread;
private readonly Dictionary<string, BleAdvertisementInfo> pCache = new Dictionary<string, BleAdvertisementInfo>();
public readonly Dictionary<string, BleAdvertisementInfo> pCache = new Dictionary<string, BleAdvertisementInfo>();
private Action<BleAdvertisementInfo> _discoveredCallback;
@ -28,6 +28,7 @@ namespace Assets.Scripts.Ble
private Dictionary<BleCharacteristicInfo, CharacteristicReadCallback> characteristicReadCallbacks = new Dictionary<BleCharacteristicInfo, CharacteristicReadCallback>();
private Dictionary<BleServiceInfo, CharacteristicsDiscoveredCallback> characteristicsDiscoveredCallbacks = new Dictionary<BleServiceInfo, CharacteristicsDiscoveredCallback>();
private Dictionary<BlePeripheralInfo, Action> disconnectedCallback = new Dictionary<BlePeripheralInfo, Action>();
private CharacteristicReadCallback characteristicReadEvent;
public event CharacteristicReadCallback CharacteristicReadEvent
@ -236,9 +237,8 @@ namespace Assets.Scripts.Ble
this.servicesCallbacks.Remove(peripheral);
this.characteristicNotificationCallbacks.Remove(peripheral);
gattThread.Discounect();
callback?.Invoke();
this.disconnectedCallback.Add(peripheral, callback);
gattThread.Discounect();
}
}
@ -272,6 +272,9 @@ namespace Assets.Scripts.Ble
if (!response.IsSuccess)
{
gattClient.Stop();
this.callbacks[gattClient.Peripheral].Invoke(this, gattClient.Peripheral, response);
this.callbacks.Remove(gattClient.Peripheral);
return;
}
this.callbacks[gattClient.Peripheral].Invoke(this, gattClient.Peripheral, response);
@ -286,6 +289,22 @@ namespace Assets.Scripts.Ble
private void GattDisconnected(WclBleGattThread gattClient, BleResponse response)
{
Debug.Log("gatt disconnected");
this.callbacks.Remove(gattClient.Peripheral);
this.servicesCallbacks.Remove(gattClient.Peripheral);
this.characteristicNotificationCallbacks.Remove(gattClient.Peripheral);
var manualDisconnect = disconnectedCallback.ContainsKey(gattClient.Peripheral);
this.peripheralDisconnectedEvent(this, gattClient.Peripheral, response, manualDisconnect);
if (disconnectedCallback.ContainsKey(gattClient.Peripheral))
{
disconnectedCallback[gattClient.Peripheral].Invoke();
disconnectedCallback.Remove(gattClient.Peripheral);
}
//this.pCache.Remove(gattClient.Peripheral.Address);
}
private void GattServicesDiscovered(WclBleGattThread gattClient, BleResponse<List<BleServiceInfo>> response)
{

View File

@ -71,5 +71,20 @@ namespace Assets.Scripts.Devices
item.Dispose();
}
}
/// <summary>
/// 清除未连接的设备
/// </summary>
public void ClearDevice()
{
foreach (var item in adapters)
{
if(item is BleDeviceAdapter)
{
(item as BleDeviceAdapter).ClearDevice();
}
}
}
}
}

View File

@ -68,13 +68,12 @@ public class MainController : MonoBehaviour
}
else
{
//UIManager.ShowHomePanel();
UIManager.ShowHomePanel();
//UIManager.ShowUserInfoPanel();
//UIManager.ShowEditUserPanel();
//UIManager.ShowBigMapPanel();
//UIManager.ShowEarthPanel();
}
UIManager.ShowDevicePanel();
}
// Update is called once per frame

View File

@ -217,6 +217,12 @@ public class ConnectDeviceModal : PFUIPanel
}
}
public override void Show()
{
base.Show();
}
public override void Close()
{
base.Close();

View File

@ -60,16 +60,18 @@ public class DeviceItem : Selectable, IEventSystemHandler, IPointerClickHandler
}
//Debug.Log(DeviceInfo.SignalStrength);
//signal.enabled = true;
var signalValue = DeviceInfo.SignalStrength * -1;
if (signalValue >= 0 && signalValue <= 30)
if (signalValue >= 0 && signalValue <= 20)
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_1");
}
else if (signalValue > 30 && signalValue <= 70)
else if (signalValue > 20 && signalValue <= 60)
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_2");
}
else if (signalValue > 70 && signalValue <= 97)
else if (signalValue > 60 && signalValue <= 97)
{
signal.sprite = Resources.Load<Sprite>("Images/Signal_3");
}

View File

@ -288,7 +288,15 @@ public class DeviceView : MonoBehaviour
logo.sprite = sprite3;
title.text = connectedDevice.Name;
noDevice.text = connectedDevice.DeviceNumber.ToString();
if (connectedDevice.Network == NetworkType.BLE)
{
noDevice.enabled = false;
}
else
{
noDevice.enabled = true;
noDevice.text = connectedDevice.DeviceNumber.ToString();
}
noDevice.color = Color.white;
if (powerValue != null)

View File

@ -190,8 +190,10 @@ public class DeviceController : PFUIPanel
var cg = this.GetComponent<CanvasGroup>();
cg.alpha = 0;
base.Show();
App.MainDeviceAdapter.ClearDevice();
cg.DOFade(1f, 0.3f);
cg.DOFade(1f, 0.3f);
}
protected override void OnDisable()

View File

@ -264,6 +264,9 @@ public class EditUserController : PFUIPanel
void SetDayDropdown()
{
Debug.Log(mDayDropdown.SelectedItem);
mDayDropdown.ClearOptions();
var year = mYearDropdown.SelectedItem;
var month = mMonthDropdown.SelectedItem;

View File

@ -111,6 +111,7 @@ namespace Assets.Scripts
{"Cadence","Cadence Sensor|Images/Devices/Cadence_3" },
{"HeartRate","Heart Rate Monitor|Images/Devices/Heart Rate_3" },
{"SpeedCadence","Speed Meter|Images/Devices/Speed_3" },
{"Speed","Speed Meter|Images/Devices/Speed_3" }
};
}
return _deviceDict;