14e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum/* 24e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Copyright (C) 2017 The Android Open Source Project 34e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * 44e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Licensed under the Apache License, Version 2.0 (the "License"); 54e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * you may not use this file except in compliance with the License. 64e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * You may obtain a copy of the License at 74e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * 84e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * http://www.apache.org/licenses/LICENSE-2.0 94e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * 104e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * Unless required by applicable law or agreed to in writing, software 114e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * distributed under the License is distributed on an "AS IS" BASIS, 124e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * See the License for the specific language governing permissions and 144e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum * limitations under the License. 154e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum */ 164e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 174e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaumpackage android.net.lowpan; 184e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 196cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.IpPrefix; 206cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.ILowpanEnergyScanCallback; 214e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaumimport android.net.lowpan.ILowpanInterfaceListener; 224e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaumimport android.net.lowpan.ILowpanNetScanCallback; 236cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.LowpanBeaconInfo; 246cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.LowpanChannelInfo; 256cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.LowpanCredential; 266cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.LowpanIdentity; 276cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaumimport android.net.lowpan.LowpanProvision; 284e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 294e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum/** {@hide} */ 304e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebauminterface ILowpanInterface { 314e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 326cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum // These are here for the sake of C++ interface implementations. 334e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 344e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String PERM_ACCESS_LOWPAN_STATE = "android.permission.ACCESS_LOWPAN_STATE"; 354e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String PERM_CHANGE_LOWPAN_STATE = "android.permission.CHANGE_LOWPAN_STATE"; 364e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String PERM_READ_LOWPAN_CREDENTIAL = "android.permission.READ_LOWPAN_CREDENTIAL"; 374e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 386cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum /** 396cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Channel mask key. 406cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Used for setting a channel mask when starting a scan. 416cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Type: int[] 426cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * */ 434e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String KEY_CHANNEL_MASK = "android.net.lowpan.property.CHANNEL_MASK"; 44dfd6889a842b61eb0b02d9630dc7f9785a5da7ecRobert Quattlebaum 456cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum /** 466cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Max Transmit Power Key. 476cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Used for setting the maximum transmit power when starting a network scan. 486cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Type: Integer 496cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * */ 504e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String KEY_MAX_TX_POWER = "android.net.lowpan.property.MAX_TX_POWER"; 51dfd6889a842b61eb0b02d9630dc7f9785a5da7ecRobert Quattlebaum 524e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum // Interface States 534e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 544e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String STATE_OFFLINE = "offline"; 554e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String STATE_COMMISSIONING = "commissioning"; 564e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String STATE_ATTACHING = "attaching"; 574e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String STATE_ATTACHED = "attached"; 584e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String STATE_FAULT = "fault"; 594e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 604e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum // Device Roles 614e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 624e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String ROLE_END_DEVICE = "end-device"; 634e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String ROLE_ROUTER = "router"; 644e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String ROLE_SLEEPY_END_DEVICE = "sleepy-end-device"; 654e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const String ROLE_SLEEPY_ROUTER = "sleepy-router"; 666cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum const String ROLE_LEADER = "leader"; 676cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum const String ROLE_COORDINATOR = "coordinator"; 686cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum const String ROLE_DETACHED = "detached"; 696cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 706cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum const String NETWORK_TYPE_UNKNOWN = "unknown"; 716cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 726cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum /** 736cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * Network type for Thread 1.x networks. 746cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * 756cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * @see android.net.lowpan.LowpanIdentity#getType 766cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum * @see #getLowpanIdentity 776cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum */ 786cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum const String NETWORK_TYPE_THREAD_V1 = "org.threadgroup.thread.v1"; 794e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 804e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum // Service-Specific Error Code Constants 814e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 824e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const int ERROR_UNSPECIFIED = 1; 834e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const int ERROR_INVALID_ARGUMENT = 2; 844e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const int ERROR_DISABLED = 3; 854e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum const int ERROR_WRONG_STATE = 4; 86865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_TIMEOUT = 5; 87865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_IO_FAILURE = 6; 88865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_NCP_PROBLEM = 7; 89865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_BUSY = 8; 90865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_ALREADY = 9; 91865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_CANCELED = 10; 92865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_FEATURE_NOT_SUPPORTED = 11; 93865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_JOIN_FAILED_UNKNOWN = 12; 94865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_JOIN_FAILED_AT_SCAN = 13; 95865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_JOIN_FAILED_AT_AUTH = 14; 96865fdc75c324769d07881c04b3400d99e4b4b33fRobert Quattlebaum const int ERROR_FORM_FAILED_AT_SCAN = 15; 974e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 984e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum // Methods 994e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1004e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum @utf8InCpp String getName(); 1014e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1026cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String getNcpVersion(); 1036cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String getDriverVersion(); 1046cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum LowpanChannelInfo[] getSupportedChannels(); 1056cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String[] getSupportedNetworkTypes(); 1066cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum byte[] getMacAddress(); 1076cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1086cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum boolean isEnabled(); 1096cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void setEnabled(boolean enabled); 1106cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1116cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum boolean isUp(); 1126cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum boolean isCommissioned(); 1136cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum boolean isConnected(); 1146cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String getState(); 1156cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1166cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String getRole(); 1176cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String getPartitionId(); 1186cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum byte[] getExtendedAddress(); 1196cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1206cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum LowpanIdentity getLowpanIdentity(); 1216cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum LowpanCredential getLowpanCredential(); 1226cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1236cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum @utf8InCpp String[] getLinkAddresses(); 1246cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum IpPrefix[] getLinkNetworks(); 1256cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1266cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void join(in LowpanProvision provision); 1276cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void form(in LowpanProvision provision); 1286cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void attach(in LowpanProvision provision); 1294e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void leave(); 1304e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void reset(); 1314e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1326cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void startCommissioningSession(in LowpanBeaconInfo beaconInfo); 1336cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum void closeCommissioningSession(); 1346cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum oneway void sendToCommissioner(in byte[] packet); 1356cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum 1364e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void beginLowPower(); 1376cfc490ccd8ea0d9ef4d52482ff65471f7631969Robert Quattlebaum oneway void pollForData(); 1384e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1394e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void onHostWake(); 1404e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1414e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void addListener(ILowpanInterfaceListener listener); 1424e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void removeListener(ILowpanInterfaceListener listener); 1434e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1444e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void startNetScan(in Map properties, ILowpanNetScanCallback listener); 1454e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void stopNetScan(); 1464e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1474e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void startEnergyScan(in Map properties, ILowpanEnergyScanCallback listener); 1484e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void stopEnergyScan(); 1494e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1504e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void addOnMeshPrefix(in IpPrefix prefix, int flags); 1514e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void removeOnMeshPrefix(in IpPrefix prefix); 1524e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum 1534e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum void addExternalRoute(in IpPrefix prefix, int flags); 1544e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum oneway void removeExternalRoute(in IpPrefix prefix); 1554e0c2195dd999859f4e79cec1884326fb52a5916Robert Quattlebaum} 156