Statistiques
| Branche: | Révision:

teotestbluetooth / TestBLE / TestBLE / ViewModels / DeviceViewModel.cs @ 60882b56

Historique | Voir | Annoter | Télécharger (2,486 ko)

1
using System;
2
using System.Collections.Generic;
3
using System.Collections.ObjectModel;
4
using System.Text;
5
using System.Threading.Tasks;
6
using System.Windows.Input;
7
using TestBLE.Models;
8
using TestBLE.Services;
9
using Xamarin.Forms;
10
using static TestBLE.Models.TeoBluetoothCommand;
11

    
12
namespace TestBLE.ViewModels
13
{
14
    public class DeviceViewModel : ViewModelBase
15
    {
16
        private bool isConnected;
17
        private string data;
18
        private BTDevice device;
19

    
20
        private bool isVisibleData;
21

    
22
        public bool IsVisibleData
23
        {
24
            get { return isVisibleData; }
25
            set { SetProperty(ref isVisibleData, value); }
26
        }
27

    
28
        public bool IsConnected
29
        {
30
            get { return isConnected; }
31
            set { SetProperty(ref isConnected, value); }
32
        }
33

    
34
        public BTDevice Device
35
        {
36
            get { return device; }
37
            set { SetProperty(ref device, value); }
38
        }
39

    
40
        public string Data
41
        {
42
            get { return data; }
43
            set { SetProperty(ref data, value); }
44
        }
45

    
46
        public IBluetoothService BluetoothService { get; set; }
47
        
48
        public ObservableCollection<CommandItemViewModel> AvailableCommandsList { get; set; }
49

    
50
        public async Task<bool> ConnectToDevice()
51
        {
52
            await BluetoothService.Connect(Device);
53
            IsConnected = true;
54
            return true;
55
        }
56
        public ICommand ConnectToDeviceCommand { private set; get; }
57

    
58
        public DeviceViewModel(BTDevice device)
59
        {
60
            Device = device;
61
            IsConnected = false;
62
            IsVisibleData = false;
63
            BluetoothService = DependencyService.Get<IBluetoothService>();
64
            BluetoothService.DataReceivedEvent += (s, args) => DataReceived(args);
65
            ConnectToDeviceCommand = new Command(async () => await ConnectToDevice());
66

    
67
            // Ajout manuel des commandes
68
            AvailableCommandsList = new ObservableCollection<CommandItemViewModel>();
69
            foreach (CommandType _cmd in Enum.GetValues(typeof(CommandType)))
70
            {
71
                AvailableCommandsList.Add(new CommandItemViewModel(_cmd));
72
            }
73
        }
74

    
75
        ~DeviceViewModel()
76
        {
77
            BluetoothService.DataReceivedEvent -= (s, args) => DataReceived(args);
78
        }
79

    
80
        private void DataReceived(string recData)
81
        {
82
            IsVisibleData = true;
83
            string cleanData = recData.Trim();
84
            Data += cleanData + "\n";
85
        }
86

    
87
    }
88
}