angular.module('starter.controllers', [])

.controller('configurationCtrl', function($scope, $rootScope, bluetoothBle, $ionicLoading) 
{
  // Tableau pour stocker l'historique du statut du service bluetoothBle
  $scope.statusHistory = new Array(); 
  // Pour le champ donnant le nom du module
  $scope.data = { text: bluetoothBle.getBleModuleName() };

  // Changement du nom du module sur lequel se connecter
  $scope.send = function(name)
  {
    bluetoothBle.setBleModuleName(name);
  }

  // Variable stockant l'état du choix du mode de reconnexion
  $scope.choosenMode = {value: 1};

  // Fonction associée aux boutons radios pour le mode de reconnexion
  $scope.setAutoConnectMode = function()
  {
    bluetoothBle.setAutoConnectMode($scope.choosenMode.value);
  }

  // Traitement du message indiquant un changement d'état du statut du service bluetoothBle
  $scope.$on('updateStatus', 
    function(event) 
    {
      var status = bluetoothBle.getStatus();
      while (status != null)
      {
        $scope.statusHistory.push(status);
        status = bluetoothBle.getStatus();
      }
      // On ne conserve que 5 lignes de statuts.
      while ($scope.statusHistory.length > 5) $scope.statusHistory.shift();
      // Application des changements dans la vue
      $scope.$apply();
    }
  );

  // Fonction associée au bouton de déconnexion
  $scope.disconnect = function() { bluetoothBle.disconnect(); }
  
  // Fonction associée au bouton de connexion
  $scope.connect = function() { bluetoothBle.connect(); }

  // Initialisation en mode reconnexion automatique
  bluetoothBle.setAutoConnectMode(1);
})

.controller('communicationCtrl', function($scope, $rootScope, bluetoothBle, $ionicLoading) {

  $scope.data = {}; // Pour le champ du texte à envoyer
  $scope.connectionState = bluetoothBle.getConnectionState(); // Pour l'affichage de l'état de la connexion

  // Mise à jour de l'état de la connexion. Le message est broadcasté par le service bluetoothBle
  $scope.$on('updateConnectionState',
    function(event) {
      $scope.connectionState = bluetoothBle.getConnectionState();
      $scope.$apply();
    }
  );

  // Fonction liée au bouton d'envoi du texte saisi
  $scope.send = function(text)
  {
    bluetoothBle.send(text + "\r\n");
  }

  // Prise en charge du texte reçu en traitant le message newData broadcasté par le service bluetoothBle 
  $scope.$on('newData',
    function(event)
    {
      $scope.receivedText = bluetoothBle.receive();
      $scope.$apply();
    }
  );
});
