]> Gitweb @ Texas Instruments - Open Source Git Repositories - git.TI.com/gitweb - iot-gateway/lighting-gateway.git/blob - client/AndroidClients/LightingController/src/com/lightingcontroller/bindSelect.java
add support for control bridge FW
[iot-gateway/lighting-gateway.git] / client / AndroidClients / LightingController / src / com / lightingcontroller / bindSelect.java
1 /**************************************************************************************************
2   Filename:       sceneSelect.java
3   Revised:        $$
4   Revision:       $$
6   Description:    ZLL UI
8   Copyright (C) {2012} Texas Instruments Incorporated - http://www.ti.com/
11    Redistribution and use in source and binary forms, with or without
12    modification, are permitted provided that the following conditions
13    are met:
15      Redistributions of source code must retain the above copyright
16      notice, this list of conditions and the following disclaimer.
18      Redistributions in binary form must reproduce the above copyright
19      notice, this list of conditions and the following disclaimer in the
20      documentation and/or other materials provided with the
21      distribution.
23      Neither the name of Texas Instruments Incorporated nor the names of
24      its contributors may be used to endorse or promote products derived
25      from this software without specific prior written permission.
27    THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
28    "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
29    LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
30    A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
31    OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
32    SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
33    LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
34    DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
35    THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
36    (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
37    OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
38  
39 **************************************************************************************************/
41 package com.lightingcontroller;
43 import java.util.ArrayList;
44 import java.util.List;
46 import com.lightingcontroller.R;
47 import com.lightingcontroller.Zigbee.ZigbeeAssistant;
48 import com.lightingcontroller.Zigbee.ZigbeeDevice;
50 import android.app.Activity;
51 import android.app.AlertDialog;
52 import android.app.ProgressDialog;
53 import android.content.DialogInterface;
54 import android.os.Bundle;
55 import android.view.View;
56 import android.widget.AdapterView;
57 import android.widget.ArrayAdapter;
58 import android.widget.RadioButton;
59 import android.widget.Spinner;
60 import android.widget.AdapterView.OnItemSelectedListener;
61 import android.widget.ToggleButton;
63 public class bindSelect extends Activity {
65         private static ZigbeeDevice currControllingDevice;
66         private Spinner controllingDeviceSpinner;
67         private ArrayAdapter<String> controllingDeviceSpinnerAdapter;
69         private static ZigbeeDevice currControlledDevice;
70         private Spinner controlledDeviceSpinner;
71         private ArrayAdapter<String> controlledDeviceSpinnerAdapter;
72         
73         ProgressDialog bar;
74         
75     @Override
76     public void onCreate(Bundle savedInstanceState) {
77         super.onCreate(savedInstanceState);
78         this.overridePendingTransition(R.anim.animation_enter_l, R.anim.animation_leave_r);  
79                 
80         setContentView(R.layout.bindview);        
82                 List<ZigbeeDevice> controllingDevList = ZigbeeAssistant.getSwitchers();
83         List<String> controllingDevNameList = new ArrayList<String>();
84         for (int i = 0 ; i < controllingDevList.size() ; i++)
85         {
86                 controllingDevNameList.add(controllingDevList.get(i).Name);        
87         }                 
88         controllingDeviceSpinner = (Spinner) findViewById(R.id.controllingDeviceSpinner);
89         controllingDeviceSpinnerAdapter = new ArrayAdapter<String>(this,
90                         android.R.layout.simple_spinner_item, controllingDevNameList);
91         controllingDeviceSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
92         controllingDeviceSpinner.setAdapter(controllingDeviceSpinnerAdapter);
93         
94         addItemsOnControllingDeviceSpinner();
95         addListenerOnControllingDeviceSpinnerItemSelection(); 
97                 List<ZigbeeDevice> controlledDevList = ZigbeeAssistant.getSwitchable();
98         List<String> controlledDevNameList = new ArrayList<String>();
99         for (int i = 0 ; i < controlledDevList.size() ; i++)
100         {
101                 controlledDevNameList.add(controlledDevList.get(i).Name);        
102         }                 
103         controlledDeviceSpinner = (Spinner) findViewById(R.id.controlledDeviceSpinner);
104         controlledDeviceSpinnerAdapter = new ArrayAdapter<String>(this,
105                         android.R.layout.simple_spinner_item, controlledDevNameList);
106         controlledDeviceSpinnerAdapter.setDropDownViewResource(android.R.layout.simple_spinner_dropdown_item);
107         controlledDeviceSpinner.setAdapter(controlledDeviceSpinnerAdapter);
108         
109         addItemsOnControlledDeviceSpinner();
110         addListenerOnControlledDeviceSpinnerItemSelection();         
111     }    
113     // add items into spinner dynamically
114     public void addItemsOnControllingDeviceSpinner() {  
115         //add devices
116         List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchers();
117         controllingDeviceSpinnerAdapter.clear();
118         for (int i = 0 ; i < devList.size() ; i++)
119         {               
120                 controllingDeviceSpinnerAdapter.add(devList.get(i).Name);
121         }     
122     }
123    
124     public void addListenerOnControllingDeviceSpinnerItemSelection() {          
125         controllingDeviceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
126             @Override
127             public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
128                 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchers();                    
129                 currControllingDevice = devList.get(position);
130             }
131          
132           @Override
133           public void onNothingSelected(AdapterView<?> arg0) {
134           }
135         });
136     }        
138     // add items into spinner dynamically
139     public void addItemsOnControlledDeviceSpinner() {  
140         //add devices
141         List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchable();
142         controlledDeviceSpinnerAdapter.clear();
143         for (int i = 0 ; i < devList.size() ; i++)
144         {               
145                 controlledDeviceSpinnerAdapter.add(devList.get(i).Name);
146         }     
147     }
148    
149     public void addListenerOnControlledDeviceSpinnerItemSelection() {           
150         controlledDeviceSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
151             @Override
152             public void onItemSelected(AdapterView<?> parentView, View selectedItemView, int position, long id) {
153                 List<ZigbeeDevice> devList = ZigbeeAssistant.getSwitchable();                   
154                 currControlledDevice = devList.get(position);
155             }
156          
157           @Override
158           public void onNothingSelected(AdapterView<?> arg0) {
159           }
160         });
161     }            
162     
163     public void IdControllingButton(View view) {
164         ToggleButton idDeviceButton = (ToggleButton) findViewById(R.id.IdControllingToggle);
165         if ( (idDeviceButton.isChecked()) && (currControllingDevice != null))
166         {
167                 ZigbeeAssistant.IdentifyDevice(currControllingDevice, (short) 0x80);
168         }
169         else if(currControllingDevice != null)
170         {
171                 ZigbeeAssistant.IdentifyDevice(currControllingDevice, (short) 0);               
172         }    
173     }
174     
175     public void IdControlledButton(View view) {
176         ToggleButton idDeviceButton = (ToggleButton) findViewById(R.id.IdControlledToggle);
177         if ( (idDeviceButton.isChecked()) && (currControlledDevice != null))
178         {
179                 ZigbeeAssistant.IdentifyDevice(currControlledDevice, (short) 0x80);
180         }
181         else if(currControlledDevice != null)
182         {
183                 ZigbeeAssistant.IdentifyDevice(currControlledDevice, (short) 0);                
184         }    
185     }
186     
187     public void bindButton(View view) {
189         //de-select button
190         RadioButton bindRadio = (RadioButton) findViewById(R.id.bindRadio);
191         bindRadio.setChecked(false);
192         
193         if((currControllingDevice != null) && (currControlledDevice != null))
194         {
195                 AlertDialog show = new AlertDialog.Builder(bindSelect.this)
196                         .setTitle("Bind devices")
197                         .setMessage("Bind " + currControllingDevice.Name + " to " + currControlledDevice.Name)
198                         .setPositiveButton("OK",             
199                         new DialogInterface.OnClickListener()
200                         {                       
201                                 public void onClick(DialogInterface dialoginterface,int i){             
202                                         //only support on/off for now but can expand to others by adding a spinner 
203                                         //to select cluster and populate controlling and controlled spinners accordingly 
204                                 ZigbeeAssistant.bindDevices(currControllingDevice, currControlledDevice, 0x0006); 
205                                 }               
206                         })                              
207                         .setNegativeButton("Cancel", null)
208                         .show();                                
209         }
210         else
211         {
212                 AlertDialog show = new AlertDialog.Builder(bindSelect.this)
213                         .setTitle("Bind devices")
214                         .setMessage("Select controlling and controlled")
215                         .setPositiveButton("OK",             
216                         new DialogInterface.OnClickListener()
217                         {                       
218                                 public void onClick(DialogInterface dialoginterface,int i){                                     
219                                 }               
220                         })                              
221                         .show();                                
222         }               
224     }    
225