Quick Search:

Mode

Context

Displaying 3 lines of context. None | Less | More | Full

Other Diffs

Ignore

Blank Lines Whitespace:

Diff

298
 
299
 
299
 
MainForm.cs
_>4848         private MenuItem menuUpload;
 4949 
 5050         // Server url to send data
<>51 -        private string _uploadServer = "";
  51+        //private string _uploadServer = "";
5252 
 5353         // Timer delegate that points to the calling menu handler
 5454         //private Delegate _delegateMenus; // NMP: Waste
     
 !
6161         private Delegate _delegateUploadUpdate;
 6262                           
 6363         // The main sensor manager that takes care of data collection and upload to server
<>64 -        private SensorDataManager _sensorDataManager;
  64+        //private SensorDataManager _sensorDataManager;
  65+        private List<SensorDataManager> manualSensorDataManagers = new List<SensorDataManager>(1);
  66+        private List<SensorDataManager> automaticSensorDataManagers = new List<SensorDataManager>(1);
6567 
 6668         private FeedbackManager _feedbackManager;
 6769         // Points to procedure to thread
     
 !
7779         // Lock object used for controlling access to multithreaded function resources
 7880         private object _lock = new object();
 7981 
<>80 -        private bool _manualCapture = false;
  82+        //private bool manual = false;
  83+        //private bool automatic = false;
8184 
<>82 -        private UploadManager _uploadManager;
  85+        //private UploadManager _uploadManager;
8386 
 8487         private string _campaignname = "";
<>85 -        private Boolean _uploadOnStart = false;
  88+        private Boolean _uploadOnStart = true;
8689         private Boolean _startOnLoad = false;
 8790         private Boolean _debugModeOn = false;
 8891         private Boolean _killUploadMonitor = false;
     
 !
100103        
 101104         #region Public Delegates
 102105 
<>103 -        //! Delegate used to call MainForm functions from worker thread
  106+        // Delegate used to call MainForm functions from worker thread
104107         public delegate void DelegateMenus(object sender, EventArgs args);
<>105 -        //! Delegate used to call MainForm functions from worker thread
  108+        // Delegate used to call MainForm functions from worker thread
106109         public delegate void DelegateStatusUpdate(Label ctrl, Object val);
<>107 -        //! Delegate used to call MainForm functions from worker thread
  110+        // Delegate used to call MainForm functions from worker thread
108111         public delegate void DelegateFeedbackUpdate(Label ctrl, Object val);
<>109 -        //! Delegate used to call MainForm functions from worker thread
  112+        // Delegate used to call MainForm functions from worker thread
110113         public delegate void DelegateUploadUpdate(Label ctrl, Object val);
 111114 
 112115         #endregion
     
 !
148151             _delegateFeedbackUpdate = new DelegateFeedbackUpdate(FeedbackUpdate);
 149152             _delegateUploadUpdate = new DelegateUploadUpdate(UploadUpdate);
 150153 
<>151 -            _sensorDataManager = new SensorDataManager();
  154+            //_sensorDataManager = new SensorDataManager();
152155             _feedbackManager = new FeedbackManager();
 153156 
 154157             // Set the folder where campaignr will save the file (deprecated)
     
 !
432435         // What do do when the exit menu item is selected
 433436         private void exitMenuItem_Click(object sender, EventArgs e)
 434437         {
<>435 -            if (_sensorDataManager != null)
  438+            if (manualSensorDataManagers.Count > 0 || automaticSensorDataManagers.Count > 0)
436439             {
 437440                 DatabaseManager.MessageQueue.PostItem(new Message("Closing Campaignr", MessageType.Status));
<>438 -                _sensorDataManager.Log = false; // make sure we turn off the log
  441+
  442+                foreach(SensorDataManager manager in manualSensorDataManagers)
  443+                    manager.Log = false; // make sure we turn off the log
  444+                foreach (SensorDataManager manager in automaticSensorDataManagers)
  445+                    manager.Log = false; // make sure we turn off the log
439446             }
 440447 
 441448             try
     
 !
482489                 _killUploadMonitor = true;
 483490                 _uploadMonitorTimer.Dispose();
 484491             }
<>485 -            _sensorDataManager.CloseSensors();
  492+
  493+            foreach (SensorDataManager manager in manualSensorDataManagers)
  494+            {
  495+                manager.CloseSensors();
  496+            }
  497+            foreach (SensorDataManager manager in automaticSensorDataManagers)
  498+            {
  499+                manager.CloseSensors();
  500+            }
486501         }
 487502 
 488503         private OperationModes _operationMode;
     
 !
496511                 _operationMode = value;
 497512 
 498513                 // Interrupt sensors and monitor while changing mode
<>499 -                closeSensors();
  514+                //closeSensors();
500515 
 501516                 bool activityOn = false;
 502517 
     
 !
508523 
 509524                         activityOn = menuUpload.Checked = !menuUpload.Checked;
 510525 
<>511 -                        if(activityOn)
 512 -                            _sensorDataManager.UploadOnly();
  526+                        if (activityOn)
  527+                        {
  528+                            foreach (SensorDataManager manager in manualSensorDataManagers)
  529+                            {
  530+                                manager.UploadOnly();
  531+                            }
  532+                            foreach (SensorDataManager manager in automaticSensorDataManagers)
  533+                            {
  534+                                manager.UploadOnly();
  535+                            }
  536+                        }
513537 
 514538                         break;
 515539                     case OperationModes.Collect:
     
 !
518542 
 519543                         activityOn = menuCollect.Checked = !menuCollect.Checked;
 520544 
<>521 -                        if(activityOn)
 522 -                            _sensorDataManager.Collect(false);
  545+                        if (activityOn)
  546+                        {
  547+                            /*foreach (SensorDataManager manager in manualSensorDataManagers)
  548+                            {
  549+                                manager.Collect(false, false);
  550+                            }*/
  551+                            foreach (SensorDataManager manager in automaticSensorDataManagers)
  552+                            {
  553+                                manager.Collect(false);
  554+                            }
  555+                        }
523556 
 524557                         break;
 525558                     case OperationModes.CollectUpload:
     
 !
528561 
 529562                         activityOn = menuCollectUpload.Checked = !menuCollectUpload.Checked;
 530563 
<>531 -                        if (activityOn && _manualCapture == false)
 532 -                            _sensorDataManager.Collect(true);
  564+                        if (activityOn && automaticSensorDataManagers.Count > 0)
  565+                        {
  566+                            foreach (SensorDataManager manager in automaticSensorDataManagers)
  567+                            {
  568+                                manager.Collect(true);
  569+                            }
  570+                        }
533571 
 534572                         break;
 535573                 }
     
 !
558596         }
 559597 
 560598         // Reads the configuration xml file for campaignr
<>561 -        private void readXMLConfig(string xmlcfgfilename)
  599+        private void ParseXMLConfiguration(string filename, string path)
562600         {
 563601             try
 564602             {
<>565 -                XmlTextReader rdr = new XmlTextReader(xmlcfgfilename);
  603+                XmlTextReader rdr = new XmlTextReader(path + filename);
566604                 SimpleDOMParser sdp = new SimpleDOMParser();
 567605                 SimpleElement se = sdp.parse(rdr);
 568606 
 569607                 bool flushDatabase = false;
 570608 
<>571 -                if(_sensorDataManager!=null)
 572 -                    _sensorDataManager.ClearSensors();
  609+                foreach (SensorDataManager manager in manualSensorDataManagers)
  610+                {
  611+                    manager.CloseSensors();
  612+                }
  613+                foreach (SensorDataManager manager in automaticSensorDataManagers)
  614+                {
  615+                    manager.CloseSensors();
  616+                }
573617 
<> 618+                manualSensorDataManagers.Clear();
  619+                automaticSensorDataManagers.Clear();
  620+
574621                 if (se.TagName.ToLower().Equals("campaign"))
 575622                 {
 576623                     _campaignname = se.Attributes["name"];
     
 !
582629                     this.Text = "Campaignr - "+ _campaignname;
 583630 
 584631                     // Whether or not to start uploading data on start
<>585 -                    _uploadOnStart = System.Convert.ToBoolean(se.Attributes["uploadOnStart"]);
  632+                    if(se.Attributes["uploadOnStart"] != null && System.Convert.ToBoolean(se.Attributes["uploadOnStart"]) == false)
  633+                        _uploadOnStart = false;
586634 
 587635                     _debugModeOn = System.Convert.ToBoolean(se.Attributes["debug"]);
 588636 
<>589 -                    if (!_debugModeOn)
 590 -                        _sensorDataManager.Log = false;
 591 -                    else
 592 -                        _sensorDataManager.Log = true;
 593 -
594637                     SimpleElements elements = se.ChildElements;
 595638 
<>596 -                    SimpleElement automatic = elements.Item("automatic");
 597 -
 598 -                    if (automatic==null)
  639+                    if (elements.Count == 0)
599640                     {
<>600 -                        automatic = elements.Item("manual");
 601 -                        _manualCapture = true;
 602 -                    }
 603 -
 604 -                    if (automatic==null)
 605 -                    {
606641                         DatabaseManager.MessageQueue.PostItem(new Message("Configuration file missing automatic or manual section", MessageType.Error));
 607642                         return;
 608643                     }
 609644 
<>610 -                    // Whether or not to start collecting data on start
 611 -                    _startOnLoad = System.Convert.ToBoolean(se.Attributes["startOnLoad"]) && !_manualCapture;
  645+                    for (int i = 0; i < elements.Count; i++)
  646+                    {
  647+                        SimpleElement collection = elements.Item(i);
612648 
<>613 -                    progressBar1.Value += 10;
 614 -                    int step = (int)Math.Floor(20 / automatic.ChildElements.Count);
  649+                        SensorDataManager manager = new SensorDataManager(flushDatabase);
  650+                        manager.CollectInterval = uploadInterval;
  651+                        manager.Log = _debugModeOn;
  652+                        manager.CampaignId = filename;
615653 
<>616 -                    foreach (SimpleElement child in automatic.ChildElements)
 617 -                    {
 618 -                        progressBar1.Value += step;
  654+                        if (collection.TagName == "automatic")
  655+                        {
  656+                            // Whether or not to start collecting data on start
  657+                            _startOnLoad = System.Convert.ToBoolean(se.Attributes["startOnLoad"]);
619658 
<>620 -                        string name = child.TagName;
 621 -                        if (name.ToLower().Equals("sensor")) // activate the appropriate sensors by parsing this element
  659+                            manager.Automatic = true;
  660+
  661+                            automaticSensorDataManagers.Add(manager);
  662+                        }
  663+                        else if (collection.TagName == "manual")
622664                         {
<>623 -                            string type = child.Attributes["type"];
  665+                            manualSensorDataManagers.Add(manager);
  666+                        }
  667+                        else
  668+                        {
  669+                            manager = null;
  670+                            continue;
  671+                        }
  672+                       
  673+                        progressBar1.Value += 10;
  674+                        int step = (int)Math.Floor(((20 / elements.Count) / collection.ChildElements.Count));
624675 
<>625 -                            if (type != null)
  676+                        foreach (SimpleElement child in collection.ChildElements)
  677+                        {
  678+                            progressBar1.Value += Math.Min(progressBar1.Maximum - progressBar1.Value, step);
  679+
  680+                            string name = child.TagName;
  681+                            if (name.ToLower().Equals("sensor")) // activate the appropriate sensors by parsing this element
626682                             {
<>627 -                                try
 628 -                                {
 629 -                                    // Get name
 630 -                                    string sensorName = child.Attributes["name"];
 631 -                                    if (sensorName == null)
 632 -                                        //throw new ArgumentException("Missing name attribute for " + type + " sensor");
 633 -                                        sensorName = type.Trim();  // make it compatible with Symbian and older xmls
 634 -                                    else
 635 -                                        sensorName = sensorName.Trim();
  683+                                string type = child.Attributes["type"];
636684 
<>637 -                                    if (type.ToLower().Equals("imei"))
  685+                                if (type != null)
  686+                                {
  687+                                    try
638688                                     {
<>639 -                                        string hashed = child.Attributes["hash"];
 640 -
 641 -                                        if(hashed!=null && hashed=="true")
 642 -                                            _sensorDataManager.assignSensors(new DeviceId("campaignrwm"), sensorName);
  689+                                        // Get name
  690+                                        string sensorName = child.Attributes["name"];
  691+                                        if (sensorName == null)
  692+                                            //throw new ArgumentException("Missing name attribute for " + type + " sensor");
  693+                                            sensorName = type.Trim();  // make it compatible with Symbian and older xmls
643694                                         else
<>644 -                                            _sensorDataManager.assignSensors(new Imei(), sensorName);
 645 -                                    }
 646 -                                    else if (type.ToLower().Equals("cellid"))
 647 -                                        _sensorDataManager.assignSensors(new CellTower(), sensorName);
 648 -                                    else if (type.ToLower().Equals("timestamp"))
 649 -                                        _sensorDataManager.assignSensors(new Timestamp(), sensorName);
 650 -                                    else if (type.ToLower().Equals("bt_stumble"))
 651 -                                    {
 652 -                                        if (child.ChildElements.Count == 0)
 653 -                                            _sensorDataManager.assignSensors(new BTStumbler(true), sensorName);
 654 -                                        else
  695+                                            sensorName = sensorName.Trim();
  696+
  697+                                        if (type.ToLower().Equals("imei"))
655698                                         {
<>656 -                                            foreach (SimpleElement btchild in child.ChildElements)
  699+                                            string hashed = child.Attributes["hash"];
  700+
  701+                                            if (hashed != null && hashed == "true")
  702+                                                manager.AssignSensor(new DeviceId("campaignrwm"), sensorName);
  703+                                            else
  704+                                                manager.AssignSensor(new Imei(), sensorName);
  705+                                        }
  706+                                        else if (type.ToLower().Equals("cellid"))
  707+                                            manager.AssignSensor(new CellTower(), sensorName);
  708+                                        else if (type.ToLower().Equals("timestamp"))
  709+                                            manager.AssignSensor(new Timestamp(), sensorName);
  710+                                        else if (type.ToLower().Equals("bt_stumble"))
  711+                                        {
  712+                                            if (child.ChildElements.Count == 0)
  713+                                                manager.AssignSensor(new BTStumbler(true), sensorName);
  714+                                            else
657715                                             {
<>658 -                                                if (btchild.TagName == "address_only")
 659 -                                                    _sensorDataManager.assignSensors(new BTStumbler(false), sensorName);
  716+                                                foreach (SimpleElement btchild in child.ChildElements)
  717+                                                {
  718+                                                    if (btchild.TagName == "address_only")
  719+                                                        manager.AssignSensor(new BTStumbler(false), sensorName);
  720+                                                }
660721                                             }
<>661 -                                        }
662722 
<>663 -                                    }
 664 -                                    else if (type.ToLower().Equals("location"))
 665 -                                    {
 666 -                                        Gps gps = new Gps();
 667 -                                        // Print GPS status to screen if running in manual mode
 668 -                                        //if (_manualCapture)
 669 -                                        //{
 670 -                                        gps.Open();
 671 -                                        gps.LocationChanged += new LocationChangedEventHandler(LocationChanged);
 672 -                                        //}
 673 -                                        _sensorDataManager.assignSensors(gps, sensorName);
 674 -                                    }
 675 -                                    else if (type.ToLower().Equals("audio"))
 676 -                                        _sensorDataManager.assignSensors(new Microphone(), sensorName);
 677 -                                    else if (type.ToLower().Equals("tag"))
 678 -                                    {
 679 -                                        SimpleElement prompt = child.ChildElements.Item("prompt");
 680 -                                        SimpleElement input = child.ChildElements.Item("text");
 681 -
 682 -                                        if (input != null)
  723+                                        }
  724+                                        else if (type.ToLower().Equals("location"))
683725                                         {
<>684 -                                            Ucla.Cens.Campaignr.Library.Sensors.TextInput text = new Ucla.Cens.Campaignr.Library.Sensors.TextInput(false);
  726+                                            Gps gps = new Gps();
  727+                                            gps.Open();
  728+                                            gps.LocationChanged += new LocationChangedEventHandler(LocationChanged);
685729 
<>686 -                                            if (prompt != null)
 687 -                                                text.Prompt = prompt.Text;
 688 -
 689 -                                            text.InputText = input.Text;
 690 -
 691 -                                            _sensorDataManager.assignSensors(text, sensorName);
  730+                                            manager.AssignSensor(gps, sensorName);
692731                                         }
<>693 -                                        else
  732+                                        else if (type.ToLower().Equals("audio"))
  733+                                            manager.AssignSensor(new Microphone(), sensorName);
  734+                                        else if (type.ToLower().Equals("tag"))
694735                                         {
<>695 -                                            Ucla.Cens.Campaignr.Library.Sensors.Tag tag = new Ucla.Cens.Campaignr.Library.Sensors.Tag();
  736+                                            SimpleElement prompt = child.ChildElements.Item("prompt");
  737+                                            SimpleElement input = child.ChildElements.Item("text");
696738 
<>697 -                                            if (child.Attribute("multiselect") == "false")
 698 -                                                tag.Multiselect = false;
  739+                                            if (input != null)
  740+                                            {
  741+                                                Ucla.Cens.Campaignr.Library.Sensors.TextInput text = new Ucla.Cens.Campaignr.Library.Sensors.TextInput(false);
699742 
<>700 -                                            if (prompt != null)
 701 -                                                tag.Prompt = prompt.Text;
  743+                                                if (prompt != null)
  744+                                                    text.Prompt = prompt.Text;
702745 
<>703 -                                            input = child.ChildElements.Item("list");
  746+                                                text.InputText = input.Text;
704747 
<>705 -                                            if (input == null)
 706 -                                                throw new ArgumentNullException("An input (text or list) element must be specified for this sensor");
 707 -
 708 -                                            foreach (SimpleElement item in input.ChildElements)
 709 -                                            {
 710 -                                                if (item.TagName == "text")
 711 -                                                    tag.AddItem(item.Text);
  748+                                                manager.AssignSensor(text, sensorName);
712749                                             }
<> 750+                                            else
  751+                                            {
  752+                                                Ucla.Cens.Campaignr.Library.Sensors.Tag tag = new Ucla.Cens.Campaignr.Library.Sensors.Tag();
713753 
<>714 -                                            _sensorDataManager.assignSensors(tag, sensorName);
 715 -                                        }
 716 -                                    }
 717 -                                    else if (type.ToLower().Equals("text"))
 718 -                                    {
 719 -                                        Ucla.Cens.Campaignr.Library.Sensors.TextInput text = new Ucla.Cens.Campaignr.Library.Sensors.TextInput(true);
  754+                                                if (child.Attribute("multiselect") == "false")
  755+                                                    tag.Multiselect = false;
720756 
<>721 -                                        SimpleElement input = child.ChildElements.Item("text");
  757+                                                if (prompt != null)
  758+                                                    tag.Prompt = prompt.Text;
722759 
<>723 -                                        if (input != null)
 724 -                                            text.InputText = input.Text;
  760+                                                input = child.ChildElements.Item("list");
725761 
<>726 -                                        _sensorDataManager.assignSensors(text, sensorName);
 727 -                                    }
 728 -                                    else if (type.ToLower().Equals("pedometer"))
 729 -                                    {
 730 -                                        string portName = (child.Attributes["port"] != null) ? child.Attributes["port"] : "com0";
 731 -                                        _sensorDataManager.assignSensors(new NikePedometer(portName), sensorName); // TODO: Must read port name from configuration file
 732 -                                    }
 733 -                                    else if (type.ToLower().Equals("video"))
 734 -                                    {
 735 -                                        SimpleElement size = child.ChildElements.Item("size");
 736 -                                        SimpleElement audio = child.ChildElements.Item("audio");
  762+                                                if (input == null)
  763+                                                    throw new ArgumentNullException("An input (text or list) element must be specified for this sensor");
737764 
<>738 -                                        Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes mode = Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes.VIDEO;
  765+                                                foreach (SimpleElement item in input.ChildElements)
  766+                                                {
  767+                                                    if (item.TagName == "text")
  768+                                                        tag.AddItem(item.Text);
  769+                                                }
739770 
<>740 -                                        if (audio != null)
 741 -                                            mode = Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes.VIDEOAUDIO;
  771+                                                manager.AssignSensor(tag, sensorName);
  772+                                            }
  773+                                        }
  774+                                        else if (type.ToLower().Equals("text"))
  775+                                        {
  776+                                            Ucla.Cens.Campaignr.Library.Sensors.TextInput text = new Ucla.Cens.Campaignr.Library.Sensors.TextInput(true);
742777 
<>743 -                                        Ucla.Cens.Campaignr.Library.Sensors.ManualCamera camera = new Ucla.Cens.Campaignr.Library.Sensors.ManualCamera(mode);
  778+                                            SimpleElement input = child.ChildElements.Item("text");
744779 
<>745 -                                        if (size != null)
 746 -                                            camera.Resolution = size.Text;
  780+                                            if (input != null)
  781+                                                text.InputText = input.Text;
747782 
<>748 -                                        _sensorDataManager.assignSensors(camera, sensorName);
 749 -                                    }
 750 -                                    else if (type.ToLower().Equals("image"))
 751 -                                    {
 752 -                                        SimpleElement size = child.ChildElements.Item("size");
 753 -                                        SimpleElement format = child.ChildElements.Item("format");
 754 -                                        string review = child.Attribute("review");
 755 -
 756 -                                        if (child.ChildElements.Item("viewfinder") != null)
  783+                                            manager.AssignSensor(text, sensorName);
  784+                                        }
  785+                                        else if (type.ToLower().Equals("pedometer"))
757786                                         {
<>758 -                                            /*ManualCamera camera = new ManualCamera();
  787+                                            string portName = (child.Attributes["port"] != null) ? child.Attributes["port"] : "com0";
  788+                                            manager.AssignSensor(new NikePedometer(portName), sensorName); // TODO: Must read port name from configuration file
  789+                                        }
  790+                                        else if (type.ToLower().Equals("video"))
  791+                                        {
  792+                                            SimpleElement size = child.ChildElements.Item("size");
  793+                                            SimpleElement audio = child.ChildElements.Item("audio");
759794 
<> 795+                                            Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes mode = Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes.VIDEO;
  796+
  797+                                            if (audio != null)
  798+                                                mode = Ucla.Cens.Campaignr.Library.Sensors.ManualCamera.Modes.VIDEOAUDIO;
  799+
  800+                                            Ucla.Cens.Campaignr.Library.Sensors.ManualCamera camera = new Ucla.Cens.Campaignr.Library.Sensors.ManualCamera(mode);
  801+
760802                                             if (size != null)
 761803                                                 camera.Resolution = size.Text;
 762804 
<>763 -                                            // Format is not supported by CameraCaptureDialog but still quality is...
 764 -                                            if (format != null)
 765 -                                                camera.Quality = format.Text;*/
  805+                                            manager.AssignSensor(camera, sensorName);
  806+                                        }
  807+                                        else if (type.ToLower().Equals("image"))
  808+                                        {
  809+                                            SimpleElement size = child.ChildElements.Item("size");
  810+                                            SimpleElement format = child.ChildElements.Item("format");
  811+                                            string review = child.Attribute("review");
766812 
<>767 -                                            NativeCamera camera = new NativeCamera();
  813+                                            if (child.ChildElements.Item("viewfinder") != null)
  814+                                            {
  815+                                                /*ManualCamera camera = new ManualCamera();
768816 
<>769 -                                            //if (size != null)
 770 -                                            //    camera.Resolution = size.Text;
  817+                                                if (size != null)
  818+                                                    camera.Resolution = size.Text;
771819 
<>772 -                                            if (review != null){
 773 -                                                if(review == "false")
 774 -                                                    camera.Review = false;
 775 -                                                else
 776 -                                                    camera.Review = true;
 777 -                                            }
  820+                                                // Format is not supported by CameraCaptureDialog but still quality is...
  821+                                                if (format != null)
  822+                                                    camera.Quality = format.Text;*/
778823 
<>779 -                                            _sensorDataManager.assignSensors(camera, sensorName);
  824+                                                NativeCamera camera = new NativeCamera();
  825+
  826+                                                //if (size != null)
  827+                                                //    camera.Resolution = size.Text;
  828+
  829+                                                if (review != null)
  830+                                                {
  831+                                                    if (review == "false")
  832+                                                        camera.Review = false;
  833+                                                    else
  834+                                                        camera.Review = true;
  835+                                                }
  836+
  837+                                                manager.AssignSensor(camera, sensorName);
  838+                                            }
  839+                                            else
  840+                                            {
  841+                                                manager.AssignSensor(new ImageSensor(), sensorName); // TODO: Must set image size
  842+                                            }
780843                                         }
 781844                                         else
 782845                                         {
<>783 -                                            _sensorDataManager.assignSensors(new ImageSensor(), sensorName); // TODO: Must set image size
 784 -                                        }
 785 -                                    }
 786 -                                    else
 787 -                                    {
 788 -                                        // TODO: Check for runtime libraries
 789 -                                        //object[] args = new object[5];
 790 -                                        List<object> args = new List<object>();
  846+                                            // TODO: Check for runtime libraries
  847+                                            //object[] args = new object[5];
  848+                                            List<object> args = new List<object>();
791849 
<>792 -                                        foreach (string key in child.Attributes.Keys)
 793 -                                        {
 794 -                                            if (key != "type")
  850+                                            foreach (string key in child.Attributes.Keys)
795851                                             {
<>796 -                                                args.Add(child.Attributes[key]);
  852+                                                if (key != "type")
  853+                                                {
  854+                                                    args.Add(child.Attributes[key]);
  855+                                                }
797856                                             }
<>798 -                                        }
 799 -                                        args.Add(DatabaseManager.MessageQueue);
  857+                                            args.Add(DatabaseManager.MessageQueue);
800858 
<>801 -                                        Sensor sensor = LookupSensor(type, args.ToArray());
  859+                                            Sensor sensor = LookupSensor(type, args.ToArray());
802860 
<>803 -                                        if (sensor == null)
 804 -                                            DatabaseManager.MessageQueue.PostItem(new Message("Sensor not supported (" + type + ")", MessageType.Warning));
 805 -                                        else
 806 -                                            _sensorDataManager.assignSensors(sensor, sensorName);
  861+                                            if (sensor == null)
  862+                                                DatabaseManager.MessageQueue.PostItem(new Message("Sensor not supported (" + type + ")", MessageType.Warning));
  863+                                            else
  864+                                                manager.AssignSensor(sensor, sensorName);
  865+                                        }
  866+
807867                                     }
<>808 -                                       
  868+                                    catch (Exception ex)
  869+                                    {
  870+                                        // Don't let a malfunctioning sensor modile bring down the xml
  871+                                        // configuration reader
  872+                                        DatabaseManager.MessageQueue.PostItem(new Message("Sensor module failed (" + type + ", " + ex.Message + ")", MessageType.Warning));
  873+                                    }
809874                                 }
<>810 -                                catch (Exception ex)
 811 -                                {
 812 -                                    // Don't let a malfunctioning sensor modile bring down the xml
 813 -                                    // configuration reader
 814 -                                    DatabaseManager.MessageQueue.PostItem(new Message("Sensor module failed (" + type + ", " + ex.Message + ")", MessageType.Warning));
 815 -                                }
 816 -                           }
 817 -                        }
 818 -                        else if (name.ToLower().Equals("upload")) // upload options
 819 -                        {
 820 -                            String dest = child.Attribute("dest");
 821 -                            String uploadType = child.Attribute("type");
 822 -
 823 -                            switch (uploadType)
  875+                            }
  876+                            else if (name.ToLower().Equals("upload")) // upload options
824877                             {
<>825 -                                //if the upload type is sensorbase, we need to get the project id, table name and
 826 -                                //senrobase record for each data
 827 -                                case "sensorbase.org":
 828 -                                    _uploadManager = new WebUploadManager();
 829 -                                    _uploadManager.UploadType = UploadManager.UploadTypes.SensorBase;
 830 -                                    _uploadServer = _uploadManager.Module.ServerUri;
  878+                                String dest = child.Attribute("dest");
  879+                                String uploadType = child.Attribute("type");
831880 
<>832 -                                    Sensorbase sensorbase = (Sensorbase)_uploadManager.Module;
  881+                                UploadManager uploadManager;
833882 
<>834 -                                    SimpleElements uploadElements = child.ChildElements;
 835 -                                    SimpleElement sensorBaseProjectElement = uploadElements.Item("project");
 836 -                                    string sensorBaseProjectID = sensorBaseProjectElement.Attributes["id"];
  883+                                switch (uploadType)
  884+                                {
  885+                                    //if the upload type is sensorbase, we need to get the project id, table name and
  886+                                    //senrobase record for each data
  887+                                    case "sensorbase.org":
  888+                                        uploadManager = new WebUploadManager();
  889+                                        uploadManager.UploadType = UploadManager.UploadTypes.SensorBase;
837890 
<>838 -                                    SimpleElement tableElement = (sensorBaseProjectElement.ChildElements).Item("table");
 839 -                                    string tableName = tableElement.Attributes["name"];
  891+                                        Sensorbase sensorbase = (Sensorbase)uploadManager.Module;
840892 
<>841 -                                    sensorbase.ProjectID = sensorBaseProjectID;
 842 -                                    sensorbase.TableName = tableName;
  893+                                        SimpleElements uploadElements = child.ChildElements;
  894+                                        SimpleElement sensorBaseProjectElement = uploadElements.Item("project");
  895+                                        string sensorBaseProjectID = sensorBaseProjectElement.Attributes["id"];
843896 
<>844 -                                    //fill up the association of sensorbase records with sensorss
 845 -                                    SimpleElements selements = (SimpleElements)tableElement.ChildElements;
 846 -                                    for (int sectr = 0; sectr < selements.Count; sectr++)
 847 -                                    {
 848 -                                        SimpleElement field = selements.Item(sectr);
 849 -                                        string fieldName = "";
 850 -                                        string sensorName = "";
 851 -                                        fieldName = field.Attributes["name"];
 852 -                                        sensorName = field.Attributes["sensor"];
  897+                                        SimpleElement tableElement = (sensorBaseProjectElement.ChildElements).Item("table");
  898+                                        string tableName = tableElement.Attributes["name"];
853899 
<>854 -                                        sensorbase.AddRecord(fieldName, sensorName);
 855 -                                    }
 856 -                                    break;
 857 -                                case "flickr":
 858 -                                    _uploadManager = new FlickrUploadManager();
 859 -                                    _uploadServer = _uploadManager.Module.ServerUri;
  900+                                        sensorbase.ProjectID = sensorBaseProjectID;
  901+                                        sensorbase.TableName = tableName;
860902 
<>861 -                                    FlickrUploadManager manager = (FlickrUploadManager)_uploadManager;
 862 -                                   
 863 -                                    // Lookup existing token in XML configuration file (perhaps this should go into Config/Global.xml)
 864 -                                    string token = ConfigurationManager.AppSettings["FlickrToken"];
  903+                                        //fill up the association of sensorbase records with sensorss
  904+                                        SimpleElements selements = (SimpleElements)tableElement.ChildElements;
  905+                                        for (int sectr = 0; sectr < selements.Count; sectr++)
  906+                                        {
  907+                                            SimpleElement field = selements.Item(sectr);
  908+                                            string fieldName = "";
  909+                                            string sensorName = "";
  910+                                            fieldName = field.Attributes["name"];
  911+                                            sensorName = field.Attributes["sensor"];
865912 
<>866 -                                    if (token != null)
 867 -                                        manager.FlickrToken = token;
  913+                                            sensorbase.AddRecord(fieldName, sensorName);
  914+                                        }
  915+                                        break;
  916+                                    case "flickr":
  917+                                        uploadManager = new FlickrUploadManager();
868918 
<>869 -                                    if (!manager.IsAuthenticated)
 870 -                                    {
 871 -                                        string url = manager.GetLoginUrl();
  919+                                        FlickrUploadManager flickrUploadManager = (FlickrUploadManager)uploadManager;
872920 
<>873 -                                        MessageBox.Show("You have not yet authenticated Campaignr to add pictures to your Flickr account. We will now redirect you to the Flicker website so you can login and approve Campaignr.", "Flickr Login", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
  921+                                        // Lookup existing token in XML configuration file (perhaps this should go into Config/Global.xml)
  922+                                        string token = ConfigurationManager.AppSettings["FlickrToken"];
874923 
<>875 -                                        WebForm web = new WebForm();
 876 -                                        web.Url = url;
 877 -                                        web.ShowDialog();
  924+                                        if (token != null)
  925+                                            flickrUploadManager.FlickrToken = token;
878926 
<>879 -                                        if (!manager.Authenticate())
  927+                                        if (!flickrUploadManager.IsAuthenticated)
880928                                         {
<>881 -                                            throw new Exception("Failed to authenticate with Flickr");
  929+                                            string url = flickrUploadManager.GetLoginUrl();
  930+
  931+                                            MessageBox.Show("You have not yet authenticated Campaignr to add pictures to your Flickr account. We will now redirect you to the Flicker website so you can login and approve Campaignr.", "Flickr Login", MessageBoxButtons.OK, MessageBoxIcon.Asterisk, MessageBoxDefaultButton.Button1);
  932+
  933+                                            WebForm web = new WebForm();
  934+                                            web.Url = url;
  935+                                            web.ShowDialog();
  936+
  937+                                            if (!flickrUploadManager.Authenticate())
  938+                                            {
  939+                                                throw new Exception("Failed to authenticate with Flickr");
  940+                                            }
  941+                                            else
  942+                                            {
  943+                                                ConfigurationManager.AppSettings["FlickrToken"] = flickrUploadManager.FlickrToken;
  944+                                                ConfigurationManager.Save();
  945+                                            }
882946                                         }
 883947                                         else
 884948                                         {
<>885 -                                            ConfigurationManager.AppSettings["FlickrToken"] = manager.FlickrToken;
 886 -                                            ConfigurationManager.Save();
  949+                                            // Authenticated with Flickr
  950+                                            DatabaseManager.MessageQueue.PostItem(new Message("Authenticated with Flickr", MessageType.Information));
887951                                         }
<>888 -                                    }
 889 -                                    else
 890 -                                    {
 891 -                                        // Authenticated with Flickr
 892 -                                        DatabaseManager.MessageQueue.PostItem(new Message("Authenticated with Flickr", MessageType.Information));
 893 -                                    }
 894 -                                   
 895 -                                    break;
 896 -                                case "twitter":
 897 -                                    GenericLogin login = new GenericLogin();
 898 -                                    login.Text = "Twitter Login";
899952 
<>900 -                                    _uploadManager = new TwitterUploadManager();
 901 -                                    _uploadServer = _uploadManager.Module.ServerUri;
  953+                                        break;
  954+                                    case "twitter":
  955+                                        GenericLogin login = new GenericLogin();
  956+                                        login.Text = "Twitter Login";
902957 
<>903 -                                    TwitterUploadManager twitter = (TwitterUploadManager) _uploadManager;
  958+                                        uploadManager = new TwitterUploadManager();
904959 
<>905 -                                    bool loginOk = false;
  960+                                        TwitterUploadManager twitterUploadManager = (TwitterUploadManager)uploadManager;
906961 
<>907 -                                    while (login.ShowDialog() == DialogResult.OK)
 908 -                                    {
 909 -                                        if (twitter.Authenticate(login.Username, login.Password))
  962+                                        bool loginOk = false;
  963+
  964+                                        while (login.ShowDialog() == DialogResult.OK)
910965                                         {
<>911 -                                            loginOk = true;
 912 -                                            break;
  966+                                            if (twitterUploadManager.Authenticate(login.Username, login.Password))
  967+                                            {
  968+                                                loginOk = true;
  969+                                                break;
  970+                                            }
  971+                                            else
  972+                                            {
  973+                                                login.LoginFailed();
  974+                                            }
913975                                         }
<>914 -                                        else
  976+
  977+                                        if (!loginOk)
915978                                         {
<>916 -                                            login.LoginFailed();
  979+                                            DatabaseManager.MessageQueue.PostItem(new Message("No username and password was entered. Unable to upload to Twitter.", MessageType.Warning));
917980                                         }
<>918 -                                    }
 919 -                                   
 920 -                                    if(!loginOk)
 921 -                                    {
 922 -                                        DatabaseManager.MessageQueue.PostItem(new Message("No username and password was entered. Unable to upload to Twitter.", MessageType.Warning));
 923 -                                    }
924981 
<>925 -                                    break;
 926 -                                //if the upload type is perff, we are pretty much done
 927 -                                case "perff":
 928 -                                default:
 929 -                                    _uploadManager = new WebUploadManager();
 930 -                                    _uploadManager.UploadType = UploadManager.UploadTypes.Perff;
 931 -                                    _uploadServer = _uploadManager.Module.ServerUri;
  982+                                        break;
  983+                                    //if the upload type is perff, we are pretty much done
  984+                                    case "perff":
  985+                                    default:
  986+                                        uploadManager = new WebUploadManager();
  987+                                        uploadManager.UploadType = UploadManager.UploadTypes.Perff;
  988+                                       
  989+                                        break;
  990+                                }
932991 
<>933 -                                    break;
 934 -                            }
  992+                                if (uploadManager != null)
  993+                                {
  994+                                    if (dest == null)
  995+                                        uploadManager.Server = uploadManager.Module.ServerUri;
  996+                                    else
  997+                                        uploadManager.Server = dest;
935998 
<>936 -                            if (dest != null)
 937 -                                _uploadServer = dest;
 938 -                        }
 939 -                        else if (name.ToLower().Equals("interval")) // upload interval
 940 -                        {
 941 -                            if (child.Text.Length > 0)
 942 -                            {
 943 -                                try
  999+                                    uploadManager.SensorDataManager = manager;
  1000+
  1001+                                    manager.UploadManager = uploadManager;
  1002+                                }
  1003+                                else
9441004                                 {
<>945 -                                    _uploadManager.UploadInterval = System.Convert.ToInt32(child.Text) * 1000;
  1005+                                    throw new Exception("Upload end-point was not defined or invalid.");
9461006                                 }
<>947 -                                catch (Exception)
  1007+
  1008+                            }
  1009+                            else if (name.ToLower().Equals("interval")) // upload interval
  1010+                            {
  1011+                                if (child.Text.Length > 0)
9481012                                 {
<> 1013+                                    try
  1014+                                    {
  1015+                                        manager.UploadManager.UploadInterval = System.Convert.ToInt32(child.Text) * 1000;
  1016+                                    }
  1017+                                    catch (Exception)
  1018+                                    {
9491019 
<> 1020+                                    }
9501021                                 }
 9511022                             }
<>952 -                        }
 953 -                        else if (name.ToLower().Equals("pipeline"))
 954 -                        {
 955 -                            string type = child.Attributes["type"];
 956 -
 957 -                            if (type.ToLower().Equals("caloriemeter"))
  1023+                            else if (name.ToLower().Equals("pipeline"))
9581024                             {
<>959 -                                int weight = 0;
  1025+                                string type = child.Attributes["type"];
9601026 
<>961 -                                if (child.Attribute("weight") != null)
 962 -                                    weight = int.Parse(child.Attribute("weight"));
  1027+                                if (type.ToLower().Equals("caloriemeter"))
  1028+                                {
  1029+                                    int weight = 0;
9631030 
<>964 -                                _sensorDataManager.addPipeline(new Ucla.Cens.Campaignr.Library.Pipelines.CalorieMeter(weight));
  1031+                                    if (child.Attribute("weight") != null)
  1032+                                        weight = int.Parse(child.Attribute("weight"));
  1033+
  1034+                                    manager.AddPipeline(new Ucla.Cens.Campaignr.Library.Pipelines.CalorieMeter(weight));
  1035+                                }
9651036                             }
 9661037                         }
 9671038                     }
     
 !
9711042             }
 9721043             catch (Exception e)
 9731044             {
<>974 -                string msg = "Error loading " + xmlcfgfilename + ", using default configuration, " + e.Message;
  1045+                string msg = "Error loading " + filename + ", using default configuration, " + e.Message;
9751046 
 9761047                 status.Text = msg + "\r\n" + status.Text;
 9771048             }
 9781049 
<>979 -            _sensorDataManager.UploadManager = _uploadManager;
  1050+            //_sensorDataManager.UploadManager = _uploadManager;
9801051         }
 9811052        
 9821053         private Sensor LookupSensor(string assemblyName, object[] args)
     
 !
10231094             try
 10241095             {
 10251096                 string dirname = Path.GetDirectoryName(Assembly.GetExecutingAssembly().GetName().CodeBase);
<>1026 -                //DirectoryInfo dirinfo = new DirectoryInfo(dirname + "\\CONFIG");
10271097 
 10281098                 // NMP, 08.08.21
 10291099                 // Introduced support for Global.xml and backwards compatability with autoload file for Symbian Campaignr
<>1030 -
10311100                 if (Directory.Exists(dirname + "\\Configurations"))
 10321101                 {
 10331102                     bool manualLoad = false;
     
 !
11051174                                 fileChooser.Close();
 11061175 
 11071176                                 fileToLoad = fileChooser.File;
<>1108 -                                readXMLConfig(dirname + "\\Configurations\\" + fileToLoad);
  1177+                                ParseXMLConfiguration(fileToLoad, dirname + "\\Configurations\\");
11091178                             }
 11101179                             else
 11111180                             {
     
 !
11161185                     }
 11171186                     else
 11181187                     {
<>1119 -                        readXMLConfig(dirname + "\\Configurations\\" + fileToLoad);
  1188+                        ParseXMLConfiguration(fileToLoad, dirname + "\\Configurations\\");
11201189                     }
 11211190                 }
 11221191             }
     
 !
11261195                 return;
 11271196             }
 11281197 
<>1129 -            progressBar1.Value += 10;
  1198+            progressBar1.Value += Math.Min((progressBar1.Maximum - progressBar1.Value), 10);
11301199 
<>1131 -            _uploadManager.Server = _uploadServer;
 1132 -            // _uploadManager.Port = _uploadPort;
 1133 -
 1134 -            if (_manualCapture == false)
  1200+            if(manualSensorDataManagers.Count > 0)
11351201             {
<>1136 -                _sensorDataManager.CollectInterval = uploadInterval;
 1137 -            }
 1138 -            else
 1139 -            {
11401202                 // Setup data capture event handler for center button
 11411203                 this.KeyPress += new KeyPressEventHandler(MainForm_KeyPress);
 11421204             }
     
 !
11511213             }
 11521214             else if (_uploadOnStart)
 11531215             {
<>1154 -                if (_manualCapture)
  1216+                if (manualSensorDataManagers.Count > 0)
11551217                 {
<>1156 -                    // The configuration expects the upload to start immediately
 1157 -                    _uploadManager.StartUpload();
  1218+                    // The configuration expects the upload to start immediately
  1219+                    foreach(SensorDataManager manager in manualSensorDataManagers)
  1220+                        manager.StartUpload();
  1221+
11581222                     startMonitor();
 11591223                 }
<>1160 -                else
  1224+
  1225+                if (automaticSensorDataManagers.Count > 0)
  1226+                {
11611227                     this.Mode = OperationModes.Upload;
<> 1228+                }
11621229             }
 11631230 
 11641231             progressBar1.Value = 100;
     
 !
11711238             {
 11721239                 _graphicalInterface = new GraphicalInterface();
 11731240                 _graphicalInterface.ParentWindow = this;
<>1174 -                _graphicalInterface.ManualMode = _manualCapture;
  1241+                _graphicalInterface.ManualMode = (manualSensorDataManagers.Count > 0) ? true : false;
11751242                 _graphicalInterface.Running = _uploadOnStart;
 11761243                 _graphicalInterface.CampaignrName = _campaignname;
 11771244 
     
 !
11861253             if (sender == null || e.KeyChar == 13)
 11871254             {
 11881255                 DatabaseManager.MessageQueue.PostItem(new Message("Packaging data for transmission", MessageType.Status));
<>1189 -                _sensorDataManager.Collect(true, false);
  1256+
  1257+                foreach (SensorDataManager manager in manualSensorDataManagers)
  1258+                    manager.Collect(true, false);
<_11901259             }
 11911260         }
 11921261 
Atlassian FishEye, Subversion, CVS & Perforce analysis. (Version:1.5.4 Build:build-307 2008-07-31 ) - Administration - Page generated 2009-11-23 15:14 -0800