Skip to content

Instantly share code, notes, and snippets.

@nikiizvorski
Last active April 8, 2019 13:58
Show Gist options
  • Save nikiizvorski/ba3d4c1c9451fe40a1c611a331607a7d to your computer and use it in GitHub Desktop.
Save nikiizvorski/ba3d4c1c9451fe40a1c611a331607a7d to your computer and use it in GitHub Desktop.
ViableGrid 6LOWPAN Implementation as a Full Transmitter over UDP or TCP you can find here
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
/*
To start using our sdk please run the sender first and get the channel, panid and the network you want it to be on.
after you find all the things you need by running the sample for the sender with the following command to verify
adb shell lowpanctl status and you verify all the above. Add it to the receiver and restart the sender.
You are all set.
Don't run receiver and sender at the same time its pointless that's why they are designed to run with both functionality.
They can send and receive for each client or server. Use the provided methods.
*/
startSender()
}
private fun startSender() {
ViableLowpanSDK.registerLowpanManager(object : DeviceInterfaceCallback() {
override fun onInterfaceRemoved(removed: Boolean) {
Log.i("Interface", "Removed")
}
override fun onInterfaceAdded(status: Int, added: Boolean) {
Log.i("Interface", "Added " + added)
Log.i("Interface", "Added " + status)
if (status == STATE_ATTACHED) {
if (added) {
Log.i("Interface", "Added")
} else {
Log.i("Interface", "not added")
}
}
}
})
ViableLowpanSDK.searchLowpanNetwork("demotestnetwork", object : LowpanNetworkInterfaceCallback() {
override fun onLowpanNetworkFound(
found: Boolean,
lowpanBeaconInfo: LowpanIdentity?
) {
if (found) {
ViableLowpanSDK.stopSearchingLowpan()
Log.i("Interface", "Found + Joining: " + lowpanBeaconInfo!!.name)
ViableLowpanSDK.joinLowpanNetwork(NETWORK_KEY, lowpanBeaconInfo)
}
}
})
ViableLowpanSDK.initLowpanNetwork(object : NetworkConnectionSearchCallback() {
override fun onNetworkFound(found: Boolean, network: Network?) {
Log.i("onNetworkFound", "Found " + found)
if (found) {
sendUDPConnection(network)
//sendGroupConnection(network)
//sendTCPConnection();
}
}
override fun onNetworkLost(lost: Boolean) {
Log.i("Connect", "Lost")
}
})
}
private fun sendGroupConnection(network: Network?) {
ViableLowpanSDK.sendLowPanGroupConnection(this@MainActivity, network, kitchen_address, 1234, object : UDPConnectionCallback() {
override fun onAvailable(available: Boolean, socket: DatagramSocket?) {
if (available) {
Log.i("Device", "Available " + available)
for(i in 1..50) {
ViableLowpanSDK.sendUDPData(socket, i.toString().toByteArray())
}
}
}
})
}
private fun sendTCPConnection() {
ViableLowpanSDK.sendLowPanConnection(receiver_address,SERVER_PORT, object : SenderConnectionCallback() {
override fun onConnected(connected: Boolean, socket: Socket?) {
if (connected) {
ViableLowpanSDK.senderSocket(socket, "https://viablegrid.com/assets/img/logo-top.png")
}
}
})
}
private fun sendUDPConnection(network: Network?) {
ViableLowpanSDK.sendLowPanUDPConnection(network, receiver_address, 1234, object : UDPConnectionCallback() {
override fun onAvailable(available: Boolean, socket: DatagramSocket?) {
if (available) {
Log.i("Device", "Available " + available)
for(i in 1..50) {
ViableLowpanSDK.sendUDPData(socket, i.toString().toByteArray())
}
}
}
})
}
override fun onDestroy() {
super.onDestroy()
ViableLowpanSDK.unregisterLowpanManager()
ViableLowpanSDK.stopSearchingLowpan()
ViableLowpanSDK.stopLowpanNetwork()
}
override fun onStart() {
super.onStart()
ViableLowpanSDK.registerLowpanDriver(UART_PORT, UART_BAUD)
}
override fun onStop() {
super.onStop()
ViableLowpanSDK.unregisterLowpanDriver()
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment