Guest User

Untitled

a guest
Jan 18th, 2018
160
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. private String SERVER_ADDR = "192.168.1.106"; // USB connected!
  2. private int SERVER_PORT = 7777;
  3. // Variables that are used for UI
  4. private int systemProtocolVer = 0;
  5. private String systemTemperature = "--";
  6. private String systemLightLevel = "--";
  7. // Internal application state and helper variables
  8. private String messageFromNetworkThread = "";
  9. private boolean connectedToServer = false;
  10. //UI elements
  11. private Button connectButton;
  12. private ToggleButton Lamp1, Lamp2;
  13. // Handler that will receive messages from NetworkTask final Handler uiHandler = new Handler();
  14. //Network thread
  15. private NetworkTask nt;
  16. private String username = "";
  17. private String password = "";
  18.  
  19. private void debug(String message) {
  20. Log.v("Akera", "main/ " + message);
  21. }
  22.  
  23. @Override
  24. protected void onCreate(Bundle savedInstanceState) {
  25. super.onCreate(savedInstanceState);
  26. setContentView(R.layout.activity_main);
  27. Lamp1 = (ToggleButton) findViewById(R.id.toggleButton);
  28. Lamp1.setText("Lamp A");
  29. Lamp2 = (ToggleButton) findViewById(R.id.toggleButton2);
  30. Lamp2.setText("Lamp B");
  31. connectButton = (Button) findViewById(R.id.button);
  32. debug("Application loaded");
  33. }
  34.  
  35. public void uiEventHandler(View v) {
  36. if (v == connectButton && !connectedToServer) {
  37. AlertDialog a = loginDialog(this, "Please enter your username and password:");
  38. a.show();
  39. debug("Connecting to " + SERVER_ADDR + ":" + SERVER_PORT);
  40. }
  41. //Connect button pressed,and we're connected -> disconnect
  42. else if (v == connectButton && connectedToServer) {
  43. debug("Disconnect button pressed");
  44. nt.alive = false;
  45. nt = null;
  46. connectedToServer = false;
  47. Lamp1.setEnabled(false);
  48. Lamp2.setEnabled(false);
  49. connectButton.setText("Connect");
  50. } else if (v == Lamp1) {
  51. Lamp1.setText("Lamp A");
  52. nt.messageQueued = BeagleProtocol.MT_RELAY_1;
  53. Toast.makeText(this, "Switching Lamp A",
  54. Toast.LENGTH_SHORT).show();
  55. } else if (v == Lamp2) {
  56. Lamp2.setText("Lamp B");
  57. nt.messageQueued = BeagleProtocol.MT_RELAY_2;
  58. Toast.makeText(this, "Switching Lamp B",
  59. Toast.LENGTH_SHORT).show();
  60. }
  61. }
  62.  
  63. //Handler
  64. @SuppressLint("HandlerLeak")
  65. final Handler handler = new Handler() {
  66. @Override
  67. public void handleMessage(Message msg) {
  68. Log.v("Akera", "handler/message received");
  69. Parcel p;
  70. switch (msg.what) {
  71. case BeagleProtocol.PROTOCOL_READ:
  72. p = (Parcel) msg.obj;
  73. systemProtocolVer = p.protocollevel;
  74. messageFromNetworkThread = "Server protocol version: " + Integer.toString(p.protocollevel);
  75. connectedToServer = true;
  76. break;
  77. /*case BeagleProtocol.REFRESH_DATA:
  78. Log.v("Akera", "handler/Temperature read");
  79. p = (Parcel) msg.obj;
  80. systemLightLevel = p.lightlevel;
  81. systemTemperature = p.temperature;
  82. messageFromNetworkThread = "Data refreshed";
  83. break;*/
  84.  
  85. case BeagleProtocol.ACTION_TOGGLE_RELAY_1:
  86. debug("Toggle relay 1");
  87. break;
  88. case BeagleProtocol.ACTION_TOGGLE_RELAY_2:
  89. debug("Toggle relay 2");
  90. break;
  91. case BeagleProtocol.ACTION_INTERRUPT:
  92. Lamp1.setVisibility(View.GONE);
  93. debug("Interrupt occur");
  94. break;
  95. default:
  96. break;
  97.  
  98. }
  99. //Schedule UI update
  100. uiHandler.post(uiHandlerRunnable);
  101. }
  102.  
  103.  
  104. };
  105. final Runnable uiHandlerRunnable = new Runnable() {
  106. public void run() {
  107. Log.v("Akera", "Updating the UI");
  108. if (messageFromNetworkThread != "") {
  109. debug(messageFromNetworkThread);
  110. messageFromNetworkThread = "";
  111. }
  112. if (connectedToServer) {
  113. connectButton.setText("Disconnect");
  114. Lamp1.setEnabled(true);
  115. Lamp2.setEnabled(true);
  116. }
  117. //temperatureState.setText(systemTemperature + "?C");
  118. //lightState.setText(systemLightLevel);
  119. }//run()
  120. };//Internal Runnable
  121.  
  122.  
  123. public AlertDialog loginDialog(Context c, String message) {
  124. //Inflate the login query window from resources
  125. LayoutInflater factory = LayoutInflater.from(c);
  126. final View textEntryView = factory.inflate(R.layout.password_query, null);
  127. //Set message and title, and button details
  128. AlertDialog.Builder alert = new AlertDialog.Builder(c);
  129. alert.setTitle("Login");
  130. alert.setMessage(message);
  131. alert.setView(textEntryView);
  132. alert.setPositiveButton("Login", new DialogInterface.OnClickListener() {
  133. public void onClick(DialogInterface dialog, int whichButton) {
  134. final EditText usernameInput = textEntryView.findViewById(R.id.login_username_edittext);
  135. final EditText passwordInput = textEntryView.findViewById(R.id.login_password_edittext);
  136. //Get the text user entered
  137. username = usernameInput.getText().toString();
  138. password = passwordInput.getText().toString();
  139. new Thread(new Runnable() {
  140. public void run() {
  141. nt = new NetworkTask(SERVER_ADDR, SERVER_PORT, handler, username + ":" + password);
  142. uiHandlerRunnable.run();
  143. }
  144.  
  145. }).start();
  146. }
  147. });
  148. }
  149.  
  150. private class BeagleProtocol {
  151. public static final int ACTION_TOGGLE_RELAY_1 = ;
  152. }
Add Comment
Please, Sign In to add comment