Presentasi sedang didownload. Silahkan tunggu

Presentasi sedang didownload. Silahkan tunggu

Pemrograman Dasar TinyOS Menggunakan nesC

Presentasi serupa


Presentasi berjudul: "Pemrograman Dasar TinyOS Menggunakan nesC"— Transcript presentasi:

1 Pemrograman Dasar TinyOS Menggunakan nesC

2 C dan nesC C nesC Modul PowerupC Konfigurasi PowerupAppC

3 C dan nesC C nesC Terdiri dari fungsi-fungsi dengan tujuan spesifik
Berinteraksi satu dengan yang lain dengan cara memanggil fungsi secara langsung Linking terjadi secara implisit oleh linker Dibangun dari komponen-komponen yang menyediakan layanan-layanan spesifik Interaksi antarkomponen dilakukan melalui antarmuka (interface): pengguna antarmuka meminta (memanggil perintah, call command) pada penyedia (provider) antarmuka, penyedia antarmuka melakukan callback (signal event) ke antarmuka pengguna Command dan event hanyalah pemanggilan fungsi biasa Linking terjadi secara eksplisit melalui wiring

4 Modul dan Konfigurasi Modul (module) berisi logika aplikasi  program
Konfigurasi (configuration) berisi spesifikasi bagaimana logika aplikasi terhubung dengan layanan yang disediakan TinyOS

5 Example Revisited: Modul
Komponen PowerupC berinteraksi melalui 2 antarmuka: Boot dan Leds Menyediakan implementasi kejadian booted Memanggil perintah led0On pada antarmuka Leds

6 Example Revisited: Konfigurasi
Konfigurasi ini menyatakan bahwa PowerupApp terdiri dari 3 komponen (baik berupa modul atau konfigurasi lain): MainC, LedsC, PowerupC Secara eksplisit menspesifikasikan hubungan (wiring) antara antarmuka yang tersedia dan yang digunakan oleh komponen Saat MainC telah selesai melakukan booting, maka MainC mengirimkan sinyal kejadian booted pada antarmukanya (Boot) yang dihubungkan melalui wiring pada PowerupAppC dengan kejadian booted di PowerupC Bagaimana dengan antarmuka Leds?

7 Example Revisited: Diagram

8 Model Kompilasi nesC Linking secara eksplisit (wiring) dapat menghasilkan kode yang optimal (optimized binaries): Tidak ada batasan optimasi karena hasil kompilasi nesC berupa sebuah file kode C Inline code jika dibutuhkan Menghapus kode dan variabel yang tidak pernah diakses Tidak adanya dynamic linking membuat nesC dapat melihat gambaran program yang dikompilasi, ie. call graph sudah dapat ditentukan pada saat kompilasi

9 Organisasi Program dalam nesC
Komponen (module atau configuration), antarmuka (interface), dan wiring: terkait dengan penamaan dan organisasi elemen program (variabel, fungsi, tipe data, dll) Komponen mengelompokkan fungsionalitas yang terkait dalam satu unit seperti halnya kelas pada bahasa berorientasi objek, misal timer, sensor, system boot Nama komponen adalah global, sedangkan operasi di dalam komponen tidak

10 Organisasi Program dalam nesC
Antarmuka digunakan untuk menspesifikasikan hubungan antarkomponen: komponen menyediakan antarmuka dan menggunakan antarmuka Hubungan terjadi bukan melalui operasinya: operasi terjadi setelah terhubung Antarmuka menyederhanakan dan memperjelas kode: mengikuti pola yang sudah umum, yaitu penyedia dan pengguna Code reuse: antarmuka adalah suatu kontrak sehingga untuk antarmuka yang sama, implementasi bisa berbeda

11 Organisasi Program dalam nesC
Wiring: cara untuk mendeklarasikan interaksi antarkomponen Perubahan interaksi dapat dengan mudah dilakukan dengan mengubah 2 baris kode tanpa mempengaruhi komponen lain Pada C, perubahan ini sangat mungkin mempengaruhi aplikasi yang menggunakan pustaka yang sama

12 Wiring dan Callback Wiring menyediakan mekanisme yang efisien untuk mendukung callback Yang dilakukan nesC adalah melakukan binding secara statik dengan wiring (saat kompilasi – compile time) dibanding dinamik seperti halnya pada C (saat berjalan – runtime) Akibatnya, menghemat RAM dan dapat dilakukan optimasi saat kompilasi

13 Wiring dan Callback Implementasi pada C

14 Wiring dan Callback Implementasi pada nesC (TinyOS)

15 Rangkuman Table 2.1 summarizes the difference in how programs are structured in C, C++ and nesC. In C, the typical high-level programming unit is the file, with an associated header file that specified and documents the file’s behavior. The linker builds applications out of files by matching global names; where this is not sufficient to express program structure (e.g. for callbacks), the programmer can use function pointers to delay the decision of which function is called at what point. C++ provides explicit language mechanisms for structuring programs: classes are typically used to group related functionality, and programs are built out of interacting objects (class instances). An abstract class can be used to define common class specification patterns (like sending a message); classes that wish to follow this pattern then inherit from the abstract class and implement its methods – Java’s interfaces provide similar functionality. Like in C, the linker builds applications by matching class and function names. Finally, virtual methods provide a more convenient and more structured way than function pointers for delaying beyond link-time decisions about what code to execute. In nesC, programs are built out of a set of cooperating components. Each component uses interfaces to specify the services it provides and uses; the programmer uses wiring to build an application out of components by writing wiring statements, each of which connects an interface used by one component to an interface provided by another. Making these wiring statements explicit instead of relying on implicit name matching eliminates the requirement to use dynamic mechanisms (function pointers, virtual methods) to express concepts such as callbacks from a service to a client.


Download ppt "Pemrograman Dasar TinyOS Menggunakan nesC"

Presentasi serupa


Iklan oleh Google