Rev

Rev 2398 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | SVN | Bug Tracker

Rev 2398 Rev 2655
Line 1... Line 1...
1
/**
1
/**
2
 *  Adapter control port implementation for dynamic interactions with Test Adapter
2
 *  Adapter control port implementation for dynamic interactions with Test Adapter
3
 *  
3
 *  
4
 *  @author     ETSI / STF424
4
 *  @author     ETSI / STF424
5
 *  @version    $URL: file:///D:/RepositoriesNew/ITS/trunk/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java $
5
 *  @version    $URL: file:///D:/RepositoriesNew/ITS/trunk/javasrc/adapter/org/etsi/its/adapter/ports/AdapterControlPort.java $
6
 *              $Id: AdapterControlPort.java 2398 2016-07-01 09:24:55Z filatov $
6
 *              $Id: AdapterControlPort.java 2655 2017-01-26 10:46:08Z filatov $
7
 *
7
 *
8
 */
8
 */
9
package org.etsi.its.adapter.ports;
9
package org.etsi.its.adapter.ports;
10
10
11
import org.etsi.adapter.GnssSupportFactory;
11
import org.etsi.adapter.GnssSupportFactory;
Line 24... Line 24...
24
24
25
    /* AdapterControl Primitives */
25
    /* AdapterControl Primitives */
26
    private static final byte AcGnPrimitive = 0;
26
    private static final byte AcGnPrimitive = 0;
27
    private static final byte AcGn6Primitive = 1;
27
    private static final byte AcGn6Primitive = 1;
28
    private static final byte AcGnssPrimitive = 2;
28
    private static final byte AcGnssPrimitive = 2;
-
 
29
    private static final byte AcSecPrimitive = 3;
29
   
30
   
30
    /* AdapterControl Response */
31
    /* AdapterControl Response */
31
    private static final byte AcGnResponse = 0;
32
    private static final byte AcGnResponse = 0;
32
    //private static final byte AcGn6Response = 1;
33
    //private static final byte AcGn6Response = 1;
33
    public static final byte AcGnssResponse = 2;
34
    public static final byte AcGnssResponse = 2;
34
    public static final byte AcGnssDistanceCovered = 3;
35
    public static final byte AcGnssDistanceCovered = 3;
-
 
36
    public static final byte AcGnssTimeReached = 4;
-
 
37
    public static final byte AcSecResponse = 5;
35
38
36
    /* GN Commands */
39
    /* GN Commands */
37
    private static final byte AcStartBeaconing = 0;
40
    private static final byte AcStartBeaconing = 0;
38
    private static final byte AcStopBeaconing = 1;
41
    private static final byte AcStopBeaconing = 1;
39
    private static final byte AcStartPassBeaconing = 2;
42
    private static final byte AcStartPassBeaconing = 2;
40
    private static final byte AcStopPassBeaconing = 3;
43
    private static final byte AcStopPassBeaconing = 3;
41
    private static final byte AcStartBeaconingMultipleNeighbour = 4;
44
    private static final byte AcStartBeaconingMultipleNeighbour = 4;
42
    private static final byte AcStopBeaconingMultipleNeighbour = 5;
45
    private static final byte AcStopBeaconingMultipleNeighbour = 5;
43
    private static final byte AcGetLongPosVector = 6;
46
    private static final byte AcGetLongPosVector = 6;
44
    private static final byte AcEnableSecurity = 7;
-
 
45
    private static final byte AcDisableSecurity = 8;
-
 
46
47
   
47
    /* GN Responses */
48
    /* GN Responses */
48
    protected static final byte AcGnResponseFailure = 0;
49
    protected static final byte AcGnResponseFailure = 0;
49
    protected static final byte AcLongPosVector = 6;
50
    protected static final byte AcLongPosVector = 6;
50
51
Line 53... Line 54...
53
    private static final byte AcStartScenario = 0x71;
54
    private static final byte AcStartScenario = 0x71;
54
    private static final byte AcStopScenario = 0x72;
55
    private static final byte AcStopScenario = 0x72;
55
    private static final byte AcAwaitDistanceToCover = 0x73;
56
    private static final byte AcAwaitDistanceToCover = 0x73;
56
    private static final byte AcChangeSpead = 0x74;
57
    private static final byte AcChangeSpead = 0x74;
57
    private static final byte AcChangeHeading = 0x75;
58
    private static final byte AcChangeHeading = 0x75;
-
 
59
    private static final byte AcAwaitTimeInRunningScenario = 0x76;
-
 
60
-
 
61
    /* Set the certificate to be used by the Test Adapter */
-
 
62
    private static final byte AcEnableSecurity = 0x7a;
-
 
63
    private static final byte AcDisableSecurity = 0x7b;
-
 
64
   
58
65
   
59
    public static final byte AcTrue = 0x01;
66
    public static final byte AcTrue = 0x01;
60
    public static final byte AcFalse = 0x00;
67
    public static final byte AcFalse = 0x00;
61
   
68
   
62
    private static final String GNSS_SCENARIO_SUPPORT = "GnssScenarioSupport";
69
    private static final String GNSS_SCENARIO_SUPPORT = "GnssScenarioSupport";
Line 99... Line 106...
99
                            break;
106
                            break;
100
                        case AcStopBeaconing:
107
                        case AcStopBeaconing:
101
                            Management.getInstance(getComponentName()).stopBeaconing();
108
                            Management.getInstance(getComponentName()).stopBeaconing();
102
                            break;
109
                            break;
103
                        case AcStartPassBeaconing:
110
                        case AcStartPassBeaconing:
104
                            ProcessAcStartPassBeaconing(data);
111
                            Management.getInstance(getComponentName()).startEnqueueingBeacons(data);
105
                            break;
112
                            break;
106
                        case AcStopPassBeaconing:
113
                        case AcStopPassBeaconing:
107
                            Management.getInstance(getComponentName()).stopEnqueueingBeacons();
114
                            Management.getInstance(getComponentName()).stopEnqueueingBeacons();
108
                            break;
115
                            break;
109
                        case AcStartBeaconingMultipleNeighbour:
116
                        case AcStartBeaconingMultipleNeighbour:
110
                             // TODO
117
                             // TODO
111
                            break;
118
                            break;
112
                        case AcStopBeaconingMultipleNeighbour:
119
                        case AcStopBeaconingMultipleNeighbour:
113
                             // TODO
120
                             // TODO
114
                            break;
-
 
115
                        case AcEnableSecurity:
-
 
116
                            Management.getInstance(getComponentName()).setSecuredMode(data);
-
 
117
                            break;
-
 
118
                        case AcDisableSecurity:
-
 
119
                            Management.getInstance(getComponentName()).unsetSecuredMode();
-
 
120
                            break;
121
                            break;
121
                    }
122
                    }
122
                }
123
                }
123
                break;
124
                break;
124
                case AcGn6Primitive:
125
                case AcGn6Primitive:
Line 169... Line 170...
169
                            case AcChangeSpead:
170
                            case AcChangeSpead:
170
//                                ChangeSpeed(speed);
171
//                                ChangeSpeed(speed);
171
                                break;
172
                                break;
172
                            case AcChangeHeading:
173
                            case AcChangeHeading:
173
//                                ChangeHeading(heading);
174
//                                ChangeHeading(heading);
-
 
175
                                break;
-
 
176
                            case AcAwaitTimeInRunningScenario:
-
 
177
                                int time = ByteHelper.byteArrayToInt(data);
-
 
178
                                AwaitTimeInRunningScenario(time);
174
                                break;
179
                                break;
175
                        }
180
                        }
176
                    }
181
                    }
177
                    else {
182
                    else {
178
                        TERFactory.getInstance().getTriStatus(TriStatus.TRI_OK, "AcGnssPrimitive cannot be handled as the "
183
                        TERFactory.getInstance().getTriStatus(TriStatus.TRI_OK, "AcGnssPrimitive cannot be handled as the "
179
                                + GNSS_SCENARIO_SUPPORT + " is set to false!");
184
                                + GNSS_SCENARIO_SUPPORT + " is set to false!");
180
                        result = false;
185
                        result = false;
181
                    }
186
                    }
-
 
187
                    break;
-
 
188
                case AcSecPrimitive:
-
 
189
                    switch (message[1]) {
-
 
190
                        case AcEnableSecurity:
-
 
191
                            byte[] data = ByteHelper.extract(message, 2, message.length - 2);
-
 
192
                            ProcessAcEnableSecurity(data);
-
 
193
                            break;
-
 
194
                        case AcDisableSecurity:
-
 
195
                            ProcessAcDisableSecurity();
-
 
196
                            break;
-
 
197
                    } // End of 'switch' statement
182
                    break;
198
                    break;
183
                default:
199
                default:
184
                    ByteHelper.dump("Unsupported AC primitive", message);
200
                    ByteHelper.dump("Unsupported AC primitive", message);
185
                    break;
201
                    break;
186
            } // End of 'switch' statement
202
            } // End of 'switch' statement
Line 217... Line 233...
217
               
233
               
218
                setChanged();
234
                setChanged();
219
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
235
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
220
            }
236
            }
221
        }).start();
237
        }).start();
222
    }
-
 
223
-
 
224
       private void ProcessAcStartPassBeaconing(final byte[] beacon)  {
-
 
225
-
 
226
            byte[] response = {(byte)AcGnResponse, (byte)AcGnResponseFailure, (byte)AcFalse};
-
 
227
            Management.getInstance(getComponentName()).startEnqueueingBeacons(beacon);
-
 
228
           
-
 
229
            setChanged();
-
 
230
            notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
-
 
231
        }
238
    }
232
239
233
    private void LoadScenario(final int scenario) {
240
    private void LoadScenario(final int scenario) {
234
        new Thread(new Runnable() {
241
        new Thread(new Runnable() {
235
            @Override
242
            @Override
Line 280... Line 287...
280
                setChanged();
287
                setChanged();
281
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
288
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
282
            }
289
            }
283
        }).start();
290
        }).start();
284
    }
291
    }
-
 
292
-
 
293
   private void AwaitTimeInRunningScenario(final int time) {
-
 
294
        new Thread(new Runnable() {
-
 
295
            @Override
-
 
296
            public void run() {
-
 
297
                boolean result = GNSS.awaitTimeInRunningScenario(AdapterControlPort.this, time);
-
 
298
                byte[] response = {(byte)AcGnssResponse, (byte)(result?AcFalse:AcTrue)};
-
 
299
                setChanged();
-
 
300
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
-
 
301
            }
-
 
302
        }).start();
-
 
303
    }
-
 
304
   
-
 
305
    private void ProcessAcEnableSecurity(final byte[] data) {
-
 
306
        new Thread(new Runnable() {
-
 
307
            @Override
-
 
308
            public void run() {
-
 
309
                Management.getInstance(getComponentName()).setSecuredMode(data);
-
 
310
                byte[] response = {(byte)AcSecResponse, (byte)AcTrue };
-
 
311
               
-
 
312
                setChanged();
-
 
313
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
-
 
314
            }
-
 
315
        }).start();
-
 
316
    }
-
 
317
-
 
318
    private void ProcessAcDisableSecurity() {
-
 
319
        new Thread(new Runnable() {
-
 
320
            @Override
-
 
321
            public void run() {
-
 
322
                Management.getInstance(getComponentName()).unsetSecuredMode();
-
 
323
                byte[] response = {(byte)AcSecResponse, (byte)AcTrue };
-
 
324
               
-
 
325
                setChanged();
-
 
326
                notifyObservers(new PortEvent(response, getPortName(), getComponentName()));
-
 
327
            }
-
 
328
        }).start();
-
 
329
    }
-
 
330
285
331
286
    @Override
332
    @Override
287
    public void dispose() {
333
    public void dispose() {
288
        if (gnssScenarioSupport) {
334
        if (gnssScenarioSupport) {
289
            if (GNSS!=null) {
335
            if (GNSS!=null) {