Mercurial > 510ConnectbotMonitor
annotate app/src/main/java/com/five_ten_sg/connectbot/monitor/MonitorService.java @ 27:807f7e4eaebe
starting update to latest toolchain
author | Carl Byington <carl@five-ten-sg.com> |
---|---|
date | Thu, 08 Nov 2018 11:39:13 -0800 |
parents | |
children | 0bc0b4798d9e |
rev | line source |
---|---|
27
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
1 package com.five_ten_sg.connectbot.monitor; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
2 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
3 import java.io.IOException; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
4 import java.io.InputStream; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
5 import java.io.OutputStream; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
6 import java.net.ServerSocket; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
7 import java.net.Socket; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
8 import java.util.HashMap; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
9 import java.util.concurrent.ArrayBlockingQueue; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
10 import java.util.concurrent.BlockingQueue; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
11 import java.util.concurrent.ConcurrentHashMap; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
12 import java.util.Locale; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
13 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
14 import android.app.Activity; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
15 import android.app.Service; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
16 import android.content.Context; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
17 import android.content.Intent; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
18 import android.content.ServiceConnection; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
19 import android.net.wifi.WifiManager.WifiLock; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
20 import android.net.wifi.WifiManager; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
21 import android.os.Binder; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
22 import android.os.Bundle; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
23 import android.os.Handler; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
24 import android.os.IBinder; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
25 import android.os.Message; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
26 import android.os.PowerManager; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
27 import android.speech.tts.TextToSpeech; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
28 import android.speech.tts.TextToSpeech.OnInitListener; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
29 import android.util.Log; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
30 import android.widget.TextView; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
31 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
32 public class MonitorService extends Service implements OnInitListener { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
33 public final static String TAG = "ConnectBot.MonitorService"; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
34 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
35 public static final char MONITOR_CMD_INIT = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
36 public static final char MONITOR_CMD_ACTIVATE = 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
37 public static final char MONITOR_CMD_KEYSTATE = 2; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
38 public static final char MONITOR_CMD_CURSORMOVE = 3; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
39 public static final char MONITOR_CMD_SCREENCHANGE = 4; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
40 public static final char MONITOR_CMD_FIELDVALUE = 5; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
41 public static final char MONITOR_CMD_SETFIELD = 5; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
42 public static final char MONITOR_CMD_GETFIELD = 6; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
43 public static final char MONITOR_CMD_SCREENWATCH = 7; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
44 public static final char MONITOR_CMD_DEPRESS = 8; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
45 public static final char MONITOR_CMD_SHOWURL = 9; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
46 public static final char MONITOR_CMD_SWITCHSESSION = 10; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
47 public static final char MONITOR_CMD_CURSORREQUEST = 11; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
48 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
49 public static final char CURSOR_REQUESTED = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
50 public static final char CURSOR_SCREEN_CHANGE = 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
51 public static final char CURSOR_USER_KEY = 2; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
52 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
53 public static final int MONITORPORT = 6000; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
54 public static ConcurrentHashMap<Integer,CommunicationThread> clients = new ConcurrentHashMap<Integer,CommunicationThread>(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
55 public static int currentConnection = -1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
56 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
57 private boolean speech = false; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
58 private TextToSpeech talker = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
59 private BlockingQueue<String> talkerQueue = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
60 public Handler handler = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
61 private ServerSocket serverSocket; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
62 private Thread serverThread = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
63 private WifiManager.WifiLock wifiLock; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
64 private PowerManager.WakeLock wakeLock; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
65 final private IBinder binder = new MonitorBinder(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
66 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
67 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
68 public class MonitorBinder extends Binder { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
69 public MonitorService getService() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
70 return MonitorService.this; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
71 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
72 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
73 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
74 @Override |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
75 public void onInit(int status) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
76 if (status == TextToSpeech.SUCCESS) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
77 talker.setLanguage(Locale.US); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
78 speech = true; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
79 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
80 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
81 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
82 @Override |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
83 public void onCreate() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
84 WifiManager wMgr = (WifiManager) getSystemService(Context.WIFI_SERVICE); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
85 wifiLock = wMgr.createWifiLock(WifiManager.WIFI_MODE_FULL, "MyWifiLock"); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
86 wifiLock.acquire(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
87 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
88 PowerManager pMgr = (PowerManager) getSystemService(Context.POWER_SERVICE); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
89 wakeLock = pMgr.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "MyWakeLock"); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
90 wakeLock.acquire(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
91 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
92 talker = new TextToSpeech(this, this); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
93 this.serverThread = new Thread(new ServerThread()); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
94 this.serverThread.start(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
95 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
96 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
97 @Override |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
98 public IBinder onBind(Intent intent) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
99 startService(new Intent(this, MonitorService.class)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
100 return binder; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
101 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
102 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
103 public void printer(String msg) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
104 if (handler != null) handler.sendMessage(handler.obtainMessage(MonitorActivity.MESSAGE_CODE_PRINT, msg)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
105 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
106 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
107 public synchronized void setCurrentConnection(int connection) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
108 currentConnection = connection; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
109 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
110 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
111 public synchronized int nextConnection() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
112 int c = 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
113 while (clients.get(c) != null) c++; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
114 return c; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
115 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
116 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
117 @Override |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
118 public int onStartCommand(Intent intent, int flags, int startId) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
119 Log.i(TAG, "service onStartCommand()"); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
120 return START_STICKY; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
121 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
122 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
123 @Override |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
124 public void onDestroy() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
125 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
126 Log.i(TAG, "service onDestroy()"); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
127 teCloseAll(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
128 talker.stop(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
129 talker.shutdown(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
130 wifiLock.release(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
131 wakeLock.release(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
132 serverSocket.close(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
133 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
134 Log.e(TAG, "exception in onDestroy()", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
135 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
136 super.onDestroy(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
137 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
138 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
139 class ServerThread extends Thread { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
140 public void run() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
141 Socket socket = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
142 int connection = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
143 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
144 serverSocket = new ServerSocket(MONITORPORT); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
145 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
146 Log.e(TAG, "exception in ServerThread.run(), cannot create listening socket", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
147 return; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
148 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
149 while (true) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
150 try{ |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
151 socket = serverSocket.accept(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
152 connection = nextConnection(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
153 CommunicationThread commThread = new CommunicationThread(connection, socket); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
154 clients.put(connection, commThread); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
155 commThread.start(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
156 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
157 Log.e(TAG, "exception in ServerThread.run(), listening socket closed", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
158 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
159 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
160 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
161 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
162 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
163 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
164 class triple { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
165 private int l, c; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
166 private char[] b; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
167 public triple(int l, int c, char[] b) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
168 this.l = l; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
169 this.c = c; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
170 this.b = b; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
171 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
172 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
173 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
174 class CommunicationThread extends Thread { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
175 public int thread_id; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
176 public int connection; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
177 private String initString = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
178 private Socket client_socket; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
179 private InputStream client_in; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
180 private OutputStream client_out; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
181 private boolean is_closing = false; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
182 private Integer getfields_outstanding = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
183 private BlockingQueue<triple> value_queue = new ArrayBlockingQueue<triple>(1); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
184 private BlockingQueue<char[]> packet_queue = new ArrayBlockingQueue<char[]>(10000); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
185 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
186 public CommunicationThread(int handle, Socket socket) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
187 connection = handle; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
188 client_socket = socket; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
189 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
190 client_in = client_socket.getInputStream(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
191 client_out = client_socket.getOutputStream(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
192 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
193 Log.e(TAG, "exception in CommunicationThread() constructor, cannot get socket streams", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
194 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
195 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
196 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
197 public synchronized void abandon() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
198 value_queue.offer(new triple(0, 0, new char[0])); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
199 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
200 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
201 public void speak(byte [] msg, boolean flush, boolean synchronous) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
202 if (speech) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
203 String smsg = bytesToString(msg); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
204 if (synchronous) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
205 HashMap<String, String> myHashParms = new HashMap(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
206 myHashParms.put(TextToSpeech.Engine.KEY_PARAM_UTTERANCE_ID, String.format("connection %d", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
207 talker.speak(smsg, (flush) ? TextToSpeech.QUEUE_FLUSH : TextToSpeech.QUEUE_ADD, myHashParms); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
208 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
209 String x = talkerQueue.take(); // wait for completion |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
210 } catch (InterruptedException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
211 Log.e(TAG, "exception in cm.speak()", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
212 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
213 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
214 else { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
215 talker.speak(smsg, (flush) ? TextToSpeech.QUEUE_FLUSH : TextToSpeech.QUEUE_ADD, null); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
216 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
217 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
218 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
219 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
220 public String bytesToString(byte[] b) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
221 char[] c = new char[b.length]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
222 int bp = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
223 for(int i = 0; i < c.length; i++) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
224 byte b1 = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
225 byte b2 = b[bp++]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
226 c[i] = (char) (((b1 & 0x00FF) << 8) + (b2 & 0x00FF)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
227 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
228 return new String(c); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
229 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
230 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
231 public char[] bytesToChars(byte[] b, int len) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
232 char[] c = new char[len >> 1]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
233 int bp = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
234 for(int i = 0; i < c.length; i++) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
235 byte b1 = b[bp++]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
236 byte b2 = b[bp++]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
237 c[i] = (char) (((b1 & 0x00FF) << 8) + (b2 & 0x00FF)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
238 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
239 return c; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
240 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
241 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
242 public byte[] charsToBytes(char[] c) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
243 byte[] b = new byte[c.length << 1]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
244 int bp = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
245 for (int i=0; i<c.length; i++) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
246 b[bp++] = (byte) ((c[i] & 0xff00) >> 8); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
247 b[bp++] = (byte) (c[i] & 0x00ff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
248 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
249 return b; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
250 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
251 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
252 void cleanup(char[] buf) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
253 int i; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
254 for (i=0; i<buf.length; i++) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
255 if ((int)(buf[i]) < 32) buf[i] = ' '; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
256 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
257 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
258 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
259 public int cmGetField(char[] c) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
260 int request; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
261 synchronized(getfields_outstanding) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
262 request = getfields_outstanding; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
263 getfields_outstanding = getfields_outstanding + 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
264 value_queue.clear(); // we never have more than one outstanding getfield request from the reco thread on the connection |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
265 clientWrite(MONITOR_CMD_GETFIELD, c); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
266 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
267 return request; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
268 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
269 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
270 public synchronized void clientWrite(char cmd, char[] c) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
271 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
272 if (client_out != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
273 c[0] = (char)(c.length - 1); // number of chars following |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
274 c[1] = cmd; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
275 Log.i(TAG, String.format("sending %d command", (int)cmd)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
276 client_out.write(charsToBytes(c)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
277 client_out.flush(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
278 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
279 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
280 catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
281 Log.e(TAG, "exception in monitorWrite()", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
282 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
283 client_out.close(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
284 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
285 catch (IOException ee) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
286 Log.e(TAG, "exception in monitorWrite() closing socket", ee); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
287 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
288 client_out = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
289 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
290 }; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
291 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
292 private char[] forceRead(int len) throws IOException { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
293 int len2 = len*2; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
294 int off = 0; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
295 byte[] b = new byte[len2]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
296 while (off < len2) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
297 int l = client_in.read(b, off, len2-off); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
298 if (l < 0) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
299 is_closing = true; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
300 throw new IOException("eof"); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
301 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
302 off += l; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
303 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
304 return bytesToChars(b, len2); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
305 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
306 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
307 public char[] readPacket() throws IOException { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
308 char[] len = forceRead(1); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
309 return forceRead(len[0]); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
310 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
311 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
312 public char[] nextPacket() throws IOException, InterruptedException { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
313 char[] packet = packet_queue.poll(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
314 if (packet == null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
315 packet = readPacket(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
316 if (packet[0] == MONITOR_CMD_FIELDVALUE) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
317 synchronized(getfields_outstanding) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
318 getfields_outstanding = getfields_outstanding - 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
319 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
320 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
321 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
322 return packet; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
323 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
324 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
325 private triple reformatValue(char[] packet) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
326 int plen = packet.length; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
327 char[] buf = new char[plen-3]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
328 System.arraycopy(packet, 3, buf, 0, plen-3); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
329 cleanup(buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
330 Log.i(TAG, String.format("teFieldValue %d line %d column %d b.len %d", connection, (int)packet[1], (int)packet[2], buf.length)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
331 return new triple(packet[1], packet[2], buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
332 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
333 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
334 public triple peekValue(int request) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
335 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
336 while (true) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
337 char[] packet = readPacket(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
338 if (packet[0] == MONITOR_CMD_FIELDVALUE) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
339 synchronized(getfields_outstanding) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
340 getfields_outstanding = getfields_outstanding - 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
341 if (request == 0) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
342 return reformatValue(packet); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
343 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
344 else { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
345 packet_queue.put(packet); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
346 request = request - 1; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
347 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
348 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
349 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
350 else { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
351 packet_queue.put(packet); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
352 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
353 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
354 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
355 return new triple(0, 0, new char[0]); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
356 } catch (InterruptedException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
357 return new triple(0, 0, new char[0]); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
358 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
359 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
360 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
361 public void run() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
362 thread_id = android.os.Process.myTid(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
363 Log.i(TAG, String.format("CommunicationThread.run() client %d connected", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
364 while (true) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
365 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
366 char[] packet = nextPacket(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
367 char[] buf; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
368 char cmd = packet[0]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
369 int plen = packet.length; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
370 //Log.i(TAG, String.format("received %d command length %d", (int)cmd, plen)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
371 switch (cmd) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
372 case MONITOR_CMD_INIT: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
373 buf = new char[plen-1]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
374 System.arraycopy(packet, 1, buf, 0, plen-1); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
375 abandonGetField(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
376 initString = new String(buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
377 teInit(connection, initString); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
378 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
379 case MONITOR_CMD_ACTIVATE: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
380 abandonGetField(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
381 buf = new char[plen-3]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
382 System.arraycopy(packet, 3, buf, 0, plen-3); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
383 teActivate(connection, initString, packet[1], packet[2], buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
384 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
385 case MONITOR_CMD_KEYSTATE: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
386 teKeyState(connection, (packet[1] == 1)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
387 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
388 case MONITOR_CMD_CURSORMOVE: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
389 teCursorMove(connection, packet[1], packet[2], packet[3]); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
390 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
391 case MONITOR_CMD_SCREENCHANGE: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
392 buf = new char[plen-3]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
393 System.arraycopy(packet, 3, buf, 0, plen-3); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
394 cleanup(buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
395 teScreenChange(connection, packet[1], packet[2], buf); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
396 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
397 case MONITOR_CMD_FIELDVALUE: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
398 value_queue.clear(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
399 value_queue.put(reformatValue(packet)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
400 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
401 default: |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
402 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
403 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
404 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
405 if (!is_closing) Log.e(TAG, "exception in CommunicationThread.run()", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
406 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
407 } catch (InterruptedException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
408 Log.e(TAG, "exception in CommunicationThread.run()", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
409 break; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
410 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
411 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
412 Log.i(TAG, String.format("shutting down connection %d", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
413 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
414 if (client_in != null) client_in.close(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
415 if (client_out != null) client_out.close(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
416 if (client_socket != null) client_socket.close(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
417 } catch (IOException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
418 Log.e(TAG, "exception in CommunicationThread.run() closing sockets", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
419 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
420 client_in = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
421 client_out = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
422 client_socket = null; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
423 clients.remove(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
424 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
425 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
426 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
427 private void abandonGetField(int except) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
428 for (CommunicationThread cm : clients.values()) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
429 if (cm.connection != except) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
430 cm.abandon(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
431 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
432 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
433 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
434 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
435 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
436 //////////////////////////////////////// |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
437 //// these functions run on the reader thread here and call your monitoring code |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
438 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
439 public void teInit(int connection, String fn) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
440 Log.i(TAG, String.format("teInit %d file %s", connection, fn)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
441 printer(String.format("init %d %s", connection, fn)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
442 setCurrentConnection(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
443 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
444 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
445 public void teCloseAll() { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
446 Log.i(TAG, String.format("teCloseAll")); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
447 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
448 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
449 public void teClose(int connection) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
450 Log.i(TAG, String.format("teClose %d", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
451 setCurrentConnection(-1); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
452 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
453 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
454 public void teActivate(int connection, String fn, int lines, int columns, char[] buf) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
455 Log.i(TAG, String.format("teActivate %d", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
456 printer(String.format("activate %d lines %d columns %d b.len %d", connection, lines, columns, buf.length)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
457 boolean sameinit = false; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
458 CommunicationThread cm = clients.get(currentConnection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
459 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
460 sameinit = (cm.initString == fn); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
461 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
462 setCurrentConnection(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
463 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
464 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
465 public void teKeyState(int connection, boolean down) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
466 String d = (down) ? "yes" : "no"; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
467 Log.i(TAG, String.format("teKeyState %d isdown %s", connection, d)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
468 printer(String.format("keystate %d isdown %s", connection, d)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
469 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
470 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
471 public void teCursorMove(int connection, int l, int c, int why) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
472 Log.i(TAG, String.format("teCursorMove %d line %d column %d why %d", connection, l, c, why)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
473 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
474 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
475 public void teScreenChange(int connection, int lines, int columns, char[] buf) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
476 Log.i(TAG, String.format("teScreenChange %d lines %d columns %d b.len %d", connection, lines, columns, buf.length)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
477 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
478 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
479 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
480 //////////////////////////////////////// |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
481 //// these functions are called from your monitoring code thread |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
482 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
483 public static void teSetField(int connection, int l, int c, char[] buf) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
484 int len = buf.length; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
485 Log.i(TAG, String.format("teSetField %d request line %d column %d len %d", connection, l, c, len)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
486 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
487 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
488 char[] arg2 = new char[4 + len]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
489 arg2[2] = (char) (l & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
490 arg2[3] = (char) (c & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
491 int base = 4; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
492 System.arraycopy(buf, 0, arg2, base, len); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
493 cm.clientWrite(MONITOR_CMD_SETFIELD, arg2); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
494 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
495 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
496 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
497 public static char[] teGetField(int connection, int l, int c, int len) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
498 Log.i(TAG, String.format("teGetField %d request line %d column %d len %d", connection, l, c, len)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
499 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
500 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
501 char[] arg = new char[5]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
502 arg[2] = (char) (l & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
503 arg[3] = (char) (c & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
504 arg[4] = (char) (len & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
505 int request = cm.cmGetField(arg); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
506 try { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
507 int tid = android.os.Process.myTid(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
508 triple t; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
509 if (tid == cm.thread_id) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
510 // we are running on the socket reader thread, called via teCursorMove() or teScreenChange() |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
511 // we need to peek command packets from the socket looking for our fieldvalue response |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
512 Log.i(TAG, String.format("java teGetField() peeking value for getfield on reader thread")); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
513 t = cm.peekValue(request); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
514 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
515 else { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
516 // we are running on some other thread, just wait for the reader thread to |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
517 // process the fieldvalue and put it on the queue. |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
518 Log.i(TAG, String.format("java teGetField() waiting for data for getfield on reco thread")); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
519 t = cm.value_queue.take(); // wait for response |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
520 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
521 Log.i(TAG, String.format("teGetField %d response line %d column %d len %d", connection, t.l, t.c, t.b.length)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
522 return t.b; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
523 } catch (InterruptedException e) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
524 Log.e(TAG, "exception in teGetField(), return empty string", e); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
525 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
526 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
527 return new char[0]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
528 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
529 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
530 public static void teScreenWatch(int connection, int l, int c, int len) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
531 Log.i(TAG, String.format("teScreenWatch %d request line %d column %d len %d", connection, l, c, len)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
532 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
533 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
534 char[] arg = new char[5]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
535 arg[2] = (char) (l & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
536 arg[3] = (char) (c & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
537 arg[4] = (char) (len & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
538 cm.clientWrite(MONITOR_CMD_GETFIELD, arg); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
539 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
540 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
541 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
542 public static void teSpeak(int connection, byte [] msg, boolean flush, boolean synchronous) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
543 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
544 if (cm != null) cm.speak(msg, flush, synchronous); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
545 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
546 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
547 public static void teDepress(int connection, int vk_key) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
548 // http://msdn.microsoft.com/en-us/library/windows/desktop/dd375731 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
549 Log.i(TAG, String.format("teDepress %d, %d", connection, vk_key)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
550 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
551 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
552 char[] arg = new char[3]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
553 arg[2] = (char) (vk_key & 0x0000ffff); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
554 cm.clientWrite(MONITOR_CMD_DEPRESS, arg); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
555 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
556 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
557 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
558 public static void teShowUrl(int connection, char [] url) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
559 int len = url.length; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
560 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
561 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
562 char[] arg2 = new char[2 + len]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
563 int base = 2; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
564 System.arraycopy(url, 0, arg2, base, len); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
565 cm.clientWrite(MONITOR_CMD_SHOWURL, arg2); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
566 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
567 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
568 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
569 public static void teAbandonGetField(int connection) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
570 Log.i(TAG, String.format("teAbandonGetField %d", connection)); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
571 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
572 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
573 cm.abandon(); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
574 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
575 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
576 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
577 public static void teSwitchSession(int connection) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
578 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
579 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
580 char [] arg2 = new char[2]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
581 cm.clientWrite(MONITOR_CMD_SWITCHSESSION, arg2); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
582 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
583 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
584 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
585 public static void teCursorRequest(int connection) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
586 CommunicationThread cm = clients.get(connection); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
587 if (cm != null) { |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
588 char [] arg2 = new char[2]; |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
589 cm.clientWrite(MONITOR_CMD_CURSORREQUEST, arg2); |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
590 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
591 } |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
592 |
807f7e4eaebe
starting update to latest toolchain
Carl Byington <carl@five-ten-sg.com>
parents:
diff
changeset
|
593 } |