 Hai, semuanya saya, kemeng. Sebelum saya memulai pencipta, mari kita mulai dengan demo yang sebarang. Di sini, ada adu- adu- adu yang bersalah dengan chip BLA. Di sini, adu- adu- adu yang berlaku. Mari kita mulai demo. Saya melihat... saya melihat Screen Android ke Screen. Jadi mari kita lihat. Saya telah menemui adu- adu- adu- adu- adu- adu yang berlaku. Tentang bahawa lampu telah berubah ke gila atau tanah ke gila. Okey, mari kita cuba mencari lampu. Anda dapat melihat. Saya melihat lampu telah berubah ke gila. Adu- adu telah berubah ke gila dan sama untuk adu- adu- adu. Dan pada masa yang sama, saya juga dapat menemui data dari adu- adu yang berlaku ke gila. Jadi saya ada petang di sini. Apabila saya mencari, lihat adu- adu yang berlaku ke gila dan saya menerima nombor satu di gila. Jadi sebenarnya ada sedikit delay pada monitor Screen Android selama 3 saat. Mari kita mulai. Okey, tentang saya. Saya adalah seorang pelajar yang berlaku. Ya, sebuah tahun yang terakhir dan sebuah kelas komputer. Tapi saya masih menunggu bagi keputusan saya. Okey, mari kita cuba ini. Jadi apakah saya sekarang bekerja di sini? Jadi saya bekerja di perniagaan yang dipanggil Elgo Access. Jadi ini adalah pembinaan matematik yang membantu pembinaan untuk mengalami dan menghasilkan data itu. Jadi apakah pembinaan kerja di dalam perniagaan saya? Jadi kita berjumpa dengan pembinaan seperti ini. Jadi ini adalah pembinaan pembinaan yang membantu untuk menjelaskan perut. Jadi apa yang kita buat adalah Wi-Fi. Jadi pembinaan pembinaan ini menghubungi pembinaan untuk menghubungi data itu. Pembinaan dengan BLE untuk iPad. Kemudian iPad menghubungi data ke pembinaan. Kita juga berjumpa dengan pembinaan dengan pembinaan. Jadi dalam kes ini, pembinaan yang besar, jadi kita tidak menggunakan BLE. Sebenarnya, kita menggunakan WIFI Access Point. Jadi kita masih mencari jika ada pembinaan yang lebih kecil jadi saya berharap kita akan berbincang dengan anda selepas ini. Okey, jadi pembinaan dengan Bluetooth. Jadi pertama kita bermula dengan Bluetooth klasik. Jadi ini adalah pembinaan yang menghubungi Bluetooth yang terbaik untuk anda. 2.4 GHz, berkumpul sekitar 10m, 2.1 Mbps. Tapi beberapa orang tidak gembira dengan ini kerana Bluetooth, walaupun untuk konsumtional energi lebih daripada WIFI dan 3G, masih memikirkan tinggi untuk beberapa orang. Jadi itu sebabnya BLE datang ke dalam gambar. Ini diperkenalkan pada 2010. Dengan Bluetooth Special Interest Group. Jadi ada pembinaan yang lebih kecil disebabkan Bluetooth Smart dan Single Mode dan BLE. Mereka semua bermakna sama. Jika anda menunjukkan termasuk ini sebagai Dual Mode, bermaksud bahawa BLE dan Klasik Klasik mempunyai klasik dan BLE. Jadi pembinaan yang menghubungi. Jadi apabila BLE mempunyai pembinaan yang menghubungi untuk menghubungi klasik baterai dan pembinaan yang menghubungi. Jadi untuk menjelaskan ini, pembinaan yang menghubungi seharusnya akan menjadi low power, low cost, low bandwidth. Bagaimana anda perlu menunggu? Sangat mudah. Jika anda tidak mempunyai klasik baterai, jika anda perlu mempunyai klasik baterai, memperkenalkan lebih kecil. Pembinaan yang menghubungi klasik baterai hanya ada 20 bytes. Jadi anda perlu mempunyai klasik baterai ini. Jadi apa yang dihubungi? Jadi pertama, saya akan mulai dengan semua konsep terutamanya. BLE mempunyai pembinaan yang menghubungi. Jadi anda perlu mempunyai konsep terutamanya. Kemudian saya akan memulai bagaimana saya membuat ini dan pembinaan. Jadi sebab masa saya memperkenalkan, saya tidak akan memperkenalkan iOS dan Raspberry Pi. Saya hanya akan memperkenalkan Arduino dan Android. Jadi pertama, central dan peripheral. Jadi anda dapat melihat dalam gambar ini, peripheral memperkenalkan central dan central menghubungi peripheral. Dalam ini, Arduino mengambil sebagai peripheral. Telefon adalah central. Jadi anda akan melihat bahawa beberapa termas seperti iOS, biasanya menggunakan central dan peripheral. Android menggunakan klien-server dan chipset manufacturer menggunakan master and slave. Mereka selalu bermaksud bahawa ada beberapa perbezaan. Jadi anda dapat melihat dari sini gambar ini. Central dapat menghubungi banyak perbezaan pada masa yang sama. Tetapi perbezaan hanya dapat menghubungi satu perbezaan pada masa yang sama. Ini sangat penting. Okey. Jadi kompetibiti device, mana yang dapat menggunakan BLE. Anda dapat membaca dari slide, tetapi perkara yang penting adalah pembinaan. Jadi Android menggabungi BLE S4.3. Tetapi, pembinaan ini, pembinaan 4, PN7 dan PN7 tidak. Seperti untuk Android 5.0, mereka menggabungi perbezaan berperbezaan, tetapi PN4 5.7 tidak. Sebabnya, Google tidak menghubungi pembinaan ini untuk membuat kejadian, jadi mereka tidak dapat menghubungi pembinaan ini. Jadi, menghubungi pembinaan BLE pada pembinaan ini. Maaf. Pembinaan ini tidak memperbaiki yang digabungi untuk menggunakan perbezaan, jika anda tidak menggunakan pembinaan ini. Ya, betul. Anda perlu menggunakan perbezaan anda untuk menggunakan pembinaan ini. Saya tidak pasti jika ada kejadian atau tidak. Jadi, perkara pertama, UUID mempunyai pembinaan unik yang unik. Jadi ini sebenarnya 128-bit. Sebabnya, sebabnya, jika anda menghubungi pembinaan ini, anda masih dapat menghasilkan pembinaan yang unik. Jadi, pembinaan yang unik untuk 16-bit, pembinaan yang unik sebenarnya mempunyai pembinaan yang 16-bit. Saya akan bercakap tentangnya nanti. Jadi, untuk pembinaan yang 16-bit, sebenarnya, ada pembinaan yang 128-bit. Apa yang anda lakukan adalah, pembinaan yang 16-bit anda ingat di dalam sini untuk mendapatkan pembinaan yang 128-bit. Jadi, pembinaan yang unik adalah pembinaan yang unik. Jadi, setidaknya, anda akan datang nanti. Jadi, pembinaan dan pembinaan. Pertama, pembinaan yang unik. Jadi, ini sebenarnya mempunyai. Jadi, apa yang Peri Faro mempunyai pembinaan yang unik untuk dunia? Jadi, ini memperkenalkan pembinaan yang unik yang unik dan apa yang mencari? Jadi, yang tersebut, pembinaan yang unik. Jadi, ini mempunyai bagaimana untuk mengubah data semasa pembinaan yang mempunyai pembinaan yang unik di setiap tahun. Jadi, ini mempunyai pembinaan yang unik dan pembinaan yang bulitnya kecil. Jadi, pembinaan yang pembinaan sebenarnya yang mencari pembinaan yang peri Faro yang unik. Jadi, jika kamu dapat mengambil pembinaan yang punya 16-bit pembinaan, di atas mana-mana semuanya akan tahu. Tapi, jika kamu tidak mempunyai pembinaan yang unik suara peri Faro, mempunyai 128-bit. Ya. Ya. Jadi, pembinaan itu membuat banyak kecom família, Jadi ini sebenarnya yang paling penting adalah tiga. Jadi karakteristik adalah yang sebenarnya mencabar kawasan. Ia mencabar apa yang ditutupkan daripada perniagaan ke central. Jadi karakteristik mempunyai berbicara-bicara dengan permintaan. Jadi anda dapat lihat, anda dapat menulis, menulis tanpa respon dan menotifkan. Tiga penting yang penting di sini adalah menulis dan menulis tanpa respon. Jadi perniagaan adalah untuk menulis, jika perniagaan central mempunyai particular karakteristik ke perniagaan ke perniagaan tersebut. Tetapi jika anda tidak mempunyai respon, tidak perlu. Jadi karakteristik adalah dibuat dari beberapa deskripsi. Jadi anda dapat memikirkan ini sebagai data meta, tetapi ia biasanya pilihan. Tetapi dalam kes khas, karakteristik karakteristik ini adalah diskripsi. Saya akan datang untuknya apabila kita menerima programa Android. Jadi untuk mencabar slide yang sebelumnya, pertama, anda perlu mengetahui. Mengetahui adalah salah satu atau lebih karakteristik. Di dalam perniagaan, satu atau lebih karakteristik. Dan setiap orang dapat mengambil setiap setiap kawasan ini. Dan di dalam, setiap karakteristik, 0 atau lebih diskripsi. Biar saya jelaskan. Jadi proses koneksi. Jadi perkara pertama, perniagaan tersebut dan perniagaan ke perniagaan ke perniagaan. Perniagaan bermaksud untuk melihat perniagaan. Jadi, perniagaan tersebut menerima paket ke perniagaan. Dan menerima koneksi. Jadi apabila perniagaan tersebut menerima paket ke perniagaan, perniagaan harus berhenti menerima. Kerana perniagaan hanya dapat menerima paket ke perniagaan pada satu masa. Jadi menerima koneksi. Jadi kita perlu menemukan lebih banyak. Jadi perniagaan akan mencoba mencuba servis. Jadi, perniagaan tersebut menerima data servis dan kemudian kita masih perlu menemukan lebih banyak, yang adalah karakteristik. Dan perniagaan akan menerima. Jadi biasanya, jika anda ingin menerima karakteristik, anda hanya perlu menerima lebih banyak. Okey, mari kita mulakan perniagaan perniagaan. Jadi apa yang saya ada di sini adalah, saya perlukan perniagaan untuk menerima jika ada koneksi aktif atau tidak. Jadi, ada satu koneksi red LED yang tidak ada koneksi. Koneksi green untuk menerima koneksi aktif. Dan dua lagi. Maksud saya, koneksi blue dan koneksi yellow yang dapat dikontrol dari telefon. Dan koneksi button untuk menerima ke koneksi central. Okey, ini adalah koneksi red LED di sini. Jadi, perkara yang penting di sini adalah koneksi blue dan koneksi yellow yang saya gunakan. Ini adalah koneksi nrf 8001 chipset. Jadi, untuk menerima karakteristik ini, pertama, kita perlu menerima semua koneksi red LED di perniagaan. Jadi, kita perlu menerima nama. Menerima koneksi red LED, ya, kerana kita mahu telefon untuk menerima koneksi red LED. Dan kemudian, sebab kita menggunakan koneksi red LED, saya perlu menerima koneksi full 128-bit servis LED. Saya tahu bahawa ini di sini, ini bukan pakaian yang terbaik. Walaupun iOS boleh melihat koneksi ini. Okey, mari kita menerima gadetnya. Jadi, kita mulai servis. Awak menerima koneksi red LED atau awak perlu menerima koneksi red LED? Jika awak menggunakan koneksi red LED, boleh awak memulai koneksi red LED. Ini akan dilih kepada awak. Cuma bukan koneksi 16-bit. Jadi, kita ada koneksi red LED yang dituruhkan. Jadi, apa yang saya ada di sini Jika karakteristik ini menerima letter B, ia akan menyebabkan LID blu, dan sama dengan LID yang menyebabkan letter Y, ia akan menyebabkan LID yellow. Kemudian saya juga akan mempunyai karakteristik yang lain. Ini dibuat di atas botan. Jadi jika saya menyebabkan botan di sana, karakteristik ini akan berubah. Dan perhatikan bahawa ini mempunyai perubahan yang berubah di sini. Jadi ini bermaksud bahawa central boleh diubah jika perubahan berubah di karakteristik. Jika saya menyebabkan LID dan menyebabkan LID, mesti ada peluang yang boleh diubah dari botan, daripada LID, saya tidak tahu jika kita tidak menyebabkan LID. Ia mungkin. Ia mungkin ia tidak dapat diubah. Ya, okey. Pertanyaannya hanya mempunyai karakteristik. Ia hanya mempunyai karakteristik. Ia dapat mempunyai karakteristik. Ia hanya satu yang saya pilih untuk karakteristik ini. Ya, maaf. Adakah ada perubahan yang mempunyai karakteristik? Saya minta pertanyaan. Adakah perubahan LID yang mempunyai karakteristik atau hanya mempunyai karakteristik? Adakah perubahan LID yang anda mempunyai? Mereka tidak mempunyai karakteristik. Ya, itu yang saya katakan. Saya hanya mempunyai karakteristik. Ia boleh menjadi apa-apa saja sehingga tidak mempunyai karakteristik 16-bit. Untuk menunjukkan bahawa ia tidak mempunyai karakteristik. Ia adalah karakteristik LID. Saya akan memulangkan karakteristik LID. Saya menggunakan LID 164. Sebenarnya, saya menggunakan dua karakteristik. Yang pertama adalah oleh Nordic. Tetapi masalah dengan karakteristik ini adalah sangat susah untuk digunakan. Ia sangat kriptik. Dan penyelidikannya tidak terlalu banyak. Sebenarnya, seorang lelaki ini telah menerimanya. Sebenarnya, dia telah menerimanya. Jadi, ini yang saya menggunakan. Maafkan saya. Jadi, mari kita pergi ke kode Adenok. Jadi, pada awal, kita mempunyai karakteristik yang terlalu penting. Jadi, di sini, saya mempunyai karakteristik yang terlalu besar. Ini sebenarnya karakteristik LID yang mempunyai. Kemudian, okey. Ini mempunyai pindah yang perlu. Okey. Mari kita kembali ke belakang. Okey. Jadi, di sini, saya mempunyai karakteristik LID. Jadi, saya mulakan dengan mempunyai karakteristik LID. Jadi, karakteristik LID. Kemudian, saya mempunyai dua karakteristik. Sebenarnya, mereka adalah 10 dan 20. Kemudian, saya juga mempunyai karakteristik LID. Mempunyai karakteristik LID dan mempunyai karakteristik LID. Jadi, saya mempunyai beberapa karakteristik LID. Baru-baru untuk mempunyai LID. Okey, mari kita mulakan. Okey, jadi di sini, saya mempunyai nama perang. Nama tempat yang berlaku. Dan saya akan mempunyai karakteristik LID yang terlalu besar. Dan saya akan mempunyai karakteristik LID yang terlalu besar. Okey, kemudian, saya akan mempunyai karakteristik LID ke aplikasi. Di sini, saya juga mempunyai karakteristik LID. Jadi, anda boleh fikir, seperti yang saya memperkenalkan. Bila-bila kita panggil apakah centra telah memperkenalkan karakteristik LID, jadi, contohnya, jika saya mengabungi si tabung B atau Y, 것bagi karakteristik LID akan ditambah. Jadi, saya akan memperkenalkan sesungguhnya. Saya akan balik kemudian. Oke, di sini, kita akan memperkenalkan kemari. Dengan ini akan terus melihat Sehingga saya memperkenalkan isteri aktif. Jadi, apabila kita mengambil sebuah imkan untuk centra, atau semestinya, kemudian sebulan tidak seUNKNOWN. Dan kita memperkenalkan isteri aktif LID. So, what this function does is that it will switch the LED to green. So, let's continue. So, here I have the button to detect the button press, the debausing function. Whenever the button is pressed, I'll increment the number and I'll send the number back. So, here you can see the refresh connection LED. Okay, so what happens when I receive a value from the central? So, this particular callback will be called here. If the new value is a B, I'll toggle the blue. If it's a Y, I'll toggle the yellow. So, okay. Any questions so far? At this point, done. You may ask about the OS support. So, I only see the Android and Mac OS or iOS. So, there's no linux? Okay, I didn't mention that. Linux, it can't be the BlueZ library. API already. I think most of it support. I'm not sure exactly which kernel version it supports. But linux generally can. It has to be five versions. Fives of the version of the BlueZ. For something it doesn't. So, is it free now? Yeah, it's free. We still library and there are a lot of people who don't understand it. So, I need a Bluetooth to the dumbbell. So, you can, like for example, you can rest very tight. With a Bluetooth dumbbell as a sample. Too bad, I'm not there moving now. Okay, so, let me continue. So, now I'll move on to how do we design the central. So, in this case, I'll be using Android. So, for most cases, if you Google for BLE examples, you'll find that the BLE code and the UI code is mixed up in one big class. I personally don't like this. So, I separate it out. So, I have three classes here. Oh, no, sorry. Two classes and one interface. So, here BLE handler. So, this one deals with the Android BLE API at the main activity. And this is an interface. Okay, the reason I design this way, it's okay because BLE API is an asynchronous in nature. So, I have this interface to prevent a tight coupling between the UI and the BLE handler. Okay, so the Android, I'll be using an access five running the latest Android OS. Okay, so, let me begin. Okay, so how do we write for this? The first most important thing is in the manifest. We need to specify that we need the Bluetooth features of course. Okay, then, let me go back. Okay, so you notice I have the three files here. Handler, callback, and the main activity. So, let me go to the main activity first. So, in the main activity, the first thing you have to do is you have to check. I mean, Android is fragmented. So, you have to check whether the OS at least 4.3 and above. And that is not enough. Even if the OS above 4.3, we still need to check whether the hardware exists on the phone. Okay, so now let me go back to the callback. So, actually, this is an interface. It's basically what the UI must implement. The handler will report back whenever it goes through the steps. So, let me go back to the steps again. Okay, so steps one, two, three, four, five. So, each one reflects to the individual step. For Android, step four and five, only iOS is separate. Okay, so let me go back. So, this is the main thing. So, you notice, I've defined the UIDs, all these, of the peripheral. Those that I want to find. Okay, let me go down, go down. Okay, so, okay, this particular data structure here, the hash map. So, the reason I have this, right, is because this one packets come continuously. So, you need a way to filter them. So, I have to filter by putting every discover device inside this hash map. So, if I see it again, I will not out-enoy it. So, this is actually the Android API. Just define the Bluetooth manager, blah-blah. Okay, so this, first I begin with step one, scanning. So, this is the scan API here. I'll clear all the found devices. I'll define all the necessary callbacks. Then I'll start the scan. Okay, so for Android, Google has changed the API for Android 5.0. That's why I have this. If else, if it's above equal to lollipop, then I'll do this. Ya, it's a fragmentation issue. So, for below 4.4 and below then I'll just do another way. Okay, so we'll just start scan. So, where do we get the result? Instead of 2. Here, this is actually the callback that I have to implement. So, I'll receive the application packets here. So, notice that I check. If I see it again, if I have not seen it before, then I'll report to the UI. This is the UI. So, after step two, step three. Sorry, it's still step two. Okay, this is still step two. So, I'll do a connect get here. This is actually from here to here. Okay, notice that I put this comment here. So, this is actually a bug on Samsung phones. Ya, this is a fragmentation. So, this particular function here has to be called from the UI track for Samsung phones. Okay, let's move on to step three. Okay, step three. So, once I connect, I'll get a callback here. I means I've connected to. So, after step three, we discover service. This is what I'm doing here. Discover service. So, now let's move on to step four. Services discovered. The next callback. So, step four and five. Ba-ba-ba-ba-ba-ba-discover all the code. Okay, so now this is the one I was referring to just now. The client characteristic configured descriptor. This is a special case. For Android, if you want to listen to notifications, you have to set this value. For iOS, don't have to. Okay, so after that, we'll report back to the UI. So, here. On characteristic change. So, this is another function. This is actually used when I press a button on the Arduino. Then, you send back the value. So, this is the callback that will be called whenever a value is being sent back. Let's go to debug mode. Let's do a debug step through of the code here. Okay, so I press the start scan button. So, here. The breakpoint is now here. I'm at step one. So, let me continue. Start scan. So, immediately I found the first device. So, the first device here. Okay, I don't know what that is. So, let's continue. I report to the UI. See? The UI shows already. So, I found my device. So, let me continue. Okay. So, let me press this. Okay. So, now I'll attempt to connect to my Arduino. See? Here. So, now I'm set three here. See? I'm connected to it. So, now I'll attempt to discover services. You can see here. Intro to Arduino BLE. And, that's connection already. So, now I'm already at step four or five. So, this is discovered services. Services discovered. Okay, so, now I'll try to toggle the blue LED. So, now the blue LED is currently off. When I press the toggle blue button. Here. So, the UI calls this function. Write this to LED characteristic. So, I'll attempt to write the letter B. I'll convert it to bytes first. Then set the value and write. So, if you... the Arduino has received the letter B and it has toggled similarly for the yellow LED. It has received the letter Y. And the yellow LED is on now. Okay, so, now what happens when I press the button? So, this particular callback is recalled because the value has changed. So, you can see here. I've received the value one. So, when no more I press next the UI will be updated. We see value one. And when I press it again, I continue. Okay, value two. So, this shows how do you do two-way communication between central and the verif arrow. Let's go back to my slides. Okay. So, issues with BLE. So, you're seen, right? You have to limit your data transfer to 20 by chance. This is a protocol limitation. Then, like just now you asked, right, how come I use string and chart? Actually, you can support UTF-A values. So, but the reason is I use ASCII here is because of the Arduino compatibility. Ya, the compatibility. Ya. Okay, so, again for central, all callbacks are not on UI track. So, if you want to immediately update the UI you have to use a handler or something similar. Then, the moment you turn off Bluetooth or restart your phone you have to do a rescan. This is, again, BLE protocol limitation. So, in the past, well, before Android 4.3 it was a huge issue. Ya, so, Google did not support it. So, every manufacturer came out with their own proprietary library. Ya, but thankfully no problem still remains. So, OS fragmentation, I'm sure, this is very familiar for Android developers. Only 55% of Android devices support BLE. And even Fever support pereferan mode. You see here, Android supports pereferan mode as of Android 4.0, but the main phones who actually have Android 5.0 actually do not support pereferan mode, but in the hardware level. So, I'm not sure exactly how many devices actually support pereferan mode. So, something to take note of. APRs are considered new. So, it's very common to encounter buggy functions on Android. And, if you're using developing on phones below Android 5.0, prepare for frequent connection drops. This is an API issue. Then, next, BLE connections. Google has actually repeated this in the blue-droid code. So, blue-droid code is the name of the puto stack in Android. So, in Android 4.3 you can only connect to four BLE devices. It's on the entire phone. They have raised this on 4.4 to 5.0 to 7. Still very low number. And, another thing is that there's no API call to indicate that scanning has stopped. So, the problem with this is that on certain phones like Samsung, it stops at 12 minutes. I don't know this is phenomenon. And, there's no way your app will know that it stops at 12 minutes. Some phones, it stops maybe shorter or longer. So, the solution to this is that if you have to start is there, isn't there a go-to term where the scanning is? Can you inquire about what the scanning is? I believe that is. I can't remember it often. Yeah, I believe that is. But then, why do you need to scan regularly? Because once you connect, right? Then, is it okay? Because for certain use cases like, for example, location tracking, your blue-droid has to be constantly on and scanning to detect new devices. So, if you assume that it goes on indefinitely, you will face issues, especially on Samsung phones. 12 minutes only. You have to repeat the... Yes, stop and scan. Stop and scan. Then, different scan results. Okay, so this will be the further reading part. Yeah, so, box on Samsung phones. This particular function I did not use this. But take note that if you try to do service UID filtering, it will not work. Yeah, yeah, this is still ongoing, but as of 4.4 but I'm not sure 5.0. I don't have a 5.0 Samsung phone to check this. So, as I pointed out earlier, connect get must be called from UI thread. Then for HTC, they are LE scan, they are Bluetooth LE scan slow. Smart slow than what you would normally expect. So, to a side issue, right, when you try to scan for classic devices, HTC phones will return new classic and smart. This is actually an API violation. The HTC phones are not... this API is not supposed to return BLE device if you try to scan for classic. So what I suspect is they're using the same functions behind the scenes for both plastic and BLE scan. That's why it's so slow. Okay, so, further reading, Okay, I might just show a video. I did not mention about BLE security, but this is something that you should take note. So, by default, everything in BLE is sent in the clear, no encryption, but they do support some AES, AES128 encryption, but you should not use it. This video I explain why. Okay, sure. But do you want to see? Or you have to stop. Let me stop now. You're supposed to speak, sir. Okay, okay, sure. I will upload. Actually, everything is actually already uploaded to get up this link here. So, you just take a look there. Okay. Yeah, that's all. Yeah, any question? Just one question. Bye-bye, next year, sir. Yes. I can then add the tool that you were using to debug. This is free. This is all free. Sorry, sorry. Sorry, what? The tool that you were using to debug your application. There was an Android studio. It's IDE. So, this is connected to your phone? Yes, correct. And you basically put In fact, this is the tool that you use to develop Android apps. It's the de facto tool these days. Yeah, it's free. Yes. I just want to ask what is the security being with PLE so that only your device can connect to this one. Because just now when we are talking, I'm actually playing with your phone. Oh. So, it looks like everybody can just integrate the service. Correct. Yes, any device can connect to it. So that I don't think it's possible to block. Cannot. But what you can do probably is that you have implement your own application level security. Maybe the PLE device will like wait for this particular key to receive. If I don't receive this, then I just don't report anything to you. Yeah, some form of K exchange. Yes. And I believe in the video that stopped him controlling. Sorry. I actually explained that the protocol level security is completely broken. Ya. So, we have to have application level security. Ya. We cannot use this for example. Ya, just basically assume basically assume it's insecure connection. Yeah. Default encryption you can enable secure property inside. But I'm not personally use it before. Ya, I didn't know this. Sorry. Scanning the peripheral and then like download that security and... In fact, there are iOS apps that can do it. I think called light blue. So, the moment you scan, you will pick up all the services characteristics. Then you can just click a button clone. Then you can pretend to be the device already. Questions? Ya. Is there any other implementation for this BLE other than sending small amount of data? You mean any other use cases? Another use case here. Location tracking like Ibikans? Ibikans actually don't send any data. What they actually advertise is ID. So, the moment you take a phone, you have an app constantly scans the background. The moment I receive, I see that I've detected this particular Ibikan or something similar, I'll do something based on it. So, there's no data transmission involved, except that I know this BLE if it exists with this particular ID. And see what happens. Ya. Okay. I'll make a single and I'll put one on so that you can think the question. Does anybody have a ThinkPad power adapter? I think it's a battery phone. It's a whole day. I can show you still charging. You can ask your question. Okay. What would be the definition that you have to make a protocol for your sensors as opposed to other protocols like XB or Wi-Fi? Low power, ya. Low power. Ya. That's why it's in the name, low energy. I mean, I remove one slide here but then original slide was actually a compariser with the two products. A classic and a BLE product. So the difference in battery life is one is about two weeks and another one is about one year. Ya. That's one. When I read from the internet they say the number of service but you you don't mention about any service there. Ya, I did. I mention about service. Ya. But I read a service there like what can do but when I read there I start doing like can for reporting the location of the device. Sorry. What location of what device? The peripheral device. There's a service. Yes, it's... It's not resorted to the centre of the peripheral. Of all services and all this are defined on the peripheral. The centre does not define anything. So how about when number you press button on the the peripheral send by number so that's one device. So when you press what's number 1, 2, 3, 4. Yes. Back to the phone Service can you find on the peripheral? Yes. All defined there. Ya, any more? I need to... We can take the question after all the talks. Sorry.