BAB 3 ANALISIS DAN PERANCANGAN
3.1 Analisis Sistem yang Berjalan
Sesuai
dengan
rekomendasi
ICAO
(International
Civil
Aviation
Organization) pada tahun 2002 untuk memilih teknologi ADS-B sebagai prioritas utama untuk diterapkan dalam penerbangan di kawasan Asia/Pasifik, PT. Angkasa Pura dan BPPT terus berusaha untuk menerapkan teknologi ini di wilayah Indonesia. Sebelumnya, dengan menggunakan radar, dibutuhkan waktu kurang lebih 12 detik bagi radar untuk mendapatkan posisi pesawat dengan melakukan putaran 360 derajat. Dengan diterapkannya ADS-B, ATC (Air Traffic Control) akan mendapatkan posisi pesawat dengan lebih cepat dan akurat.
Indonesia memulai program ADS-B pada tahun 2006 dalam suatu kemitraan dengan SITA dan Thales yang merupakan produsen dari perangkat keras teknologi ADS-B. Sejak saat itu, Indonesia sudah memiliki 30 ground station yang dilengkapi dengan ADS-B yang siap dioperasionalisasikan untuk mencakup lintasan pesawat di udara dalam radius 250 mil. Hingga saat ini, BPPT (Badan Pengkajian dan Penerapan Teknologi) terus berusaha untuk mengembangkan sistem ADS-B pada penerbangan di Indonesia. Salah satunya adalah sistem yang akan diimplementasikan pada ADP (ADS-B Data Processor). Pengembangan sistem ini bertujuan agar ADP dapat memproses data Asterix-21 yang diterima dari alat ADS-B Receiver yang memiliki beragam versi dan telah tersebar di berbagai wilayah di Indonesia, seperti 47
48
di Jakarta, Makassar, Sorong dan Natuna. Hingga bulan Maret 2009, data Asterix-21 diketahui telah memiliki 34 versi dengan versi 1.3 sebagai yang terbaru. ADP memiliki fungsi untuk memproses data yang dikirimkan oleh ADS-B Receiver. Data Asterix-21 yang telah diterima oleh ADP kemudian akan kembali diproses untuk diformat ulang menjadi format data Asterix-62 untuk kemudian dikirimkan ke HMI (Human-Machine Interface). HMI inilah yang akan menampilkan berbagai macam informasi tentang setiap pesawat yang terus mengirimkan datanya ke ground station melalui ADS-B Transponder yang mereka miliki. Pesawat akan secara terus menerus mengirimkan semua informasi penerbangan secara broadcast untuk selanjutnya diterima oleh ADS-B Receiver yang terdapat di ground station maupun di pesawat-pesawat lainnya.
49
(Gambar 3.1 Sistem ADS-B di PTIK-BPPT) Dalam proses pengembangannya, BPPT hendak melakukan pengujian untuk memastikan agar sistem tersebut dapat menerima data Asterix-21 dengan berbagai macam versi. Salah satunya, BPPT akan menguji sistem tersebut untuk memastikan bahwa ADP dapat menerima data Asterix-21 dengan versi 0.23. Saat ini, alat ADS-B Data Receiver yang terdapat di BPPT mengirimkan data Asterix-21 ke ADP dengan versi 0.26 secara unicast. Maka untuk melakukan pengujian tersebut, BPPT membutuhkan alat ADS-B Receiver yang dapat mengirimkan data Asterix-21 dengan versi 0.23. Untuk itu BPPT harus mengambil data Asterix-21 dari salah satu alat ADS-B Receiver dengan transmisi data Asterix-21 versi 0.23 yang salah satunya terdapat di Makassar.
50
3.2 Analisis Permasalahan
(Gambar 3.2 Kondisi saat ini)
Sistem yang sekarang sedang dikembangkan oleh BPPT untuk dijalankan pada ADP bertujuan agar kelak ADP dapat menerima data Asterix-21 dari seluruh versi yang dimiliki oleh ADS-B Receiver. Saat ini proses pengembangan sistem tersebut sedang berada dalam tahap pengembangan agar ADP dapat menerima data Asterix-21 versi 0.23 dari ADS-B Receiver secara multicast. Namun yang menjadi permasalahan adalah saat ini ADS-B Receiver yang berada di BPPT mengirimkan data Asterix-21 dengan versi 0.26 secara unicast. Hal tersebut menyebabkan BPPT tidak dapat menguji sistem ADP yang sedang dikembangkan tersebut.
(Gambar 3.3 Kondisi yang diharapkan)
51
Selain itu, karena ADP yang menerima data dari ADS-B Receiver akan berjumlah lebih dari satu, ADP diharapkan dapat melakukan penerimaan data dari ADS-B Receiver secara multicast. Hal ini tentunya bertentangan dengan metode pengiriman data secara unicast yang dilakukan oleh ADS-B Receiver yang terdapat di BPPT. Untuk itu dibutuhkan suatu program yang dapat mengkonversi format data Asterix-21 versi 0.26 menjadi versi 0.23 dan mengubah metode pengiriman data unicast menjadi multicast. Hal ini tentunya bertujuan untuk memudahkan BPPT dalam melakukan pengujian implementasi sistem pada ADP.
3.3 Usulan Pemecahan Masalah
Untuk mengatasi permasalahan yang dihadapi BPPT dalam melakukan pengujian sistem pada ADP tersebut, maka dibutuhkan suatu program converter yang dapat menerima data Asterix-21 versi 0.26 dari ADS-B Receiver. Program ini akan berfungsi untuk melakukan konversi pada data tersebut menjadi data Asterix-21 versi 0.23. Selain itu program juga harus mampu mengirimkan kembali data tersebut kepada ADP dengan mengubah metode transmisi data dengan menerima data secara unicast dan mengirimkannya kembali secara multicast. Pada implementasinya, program ini akan dijalankan pada komputer yang akan ditempatkan diantara ADS-B Data Receiver dan ADP.
52
(Gambar 3.4 Letak Program Converter) Proses konversi pada data akan meliputi penyesuaian dari format setiap field yang ada di Asterix-21 versi 0.26 sehingga berubah menjadi seperti format pada versi 0.23. Selain itu proses konversi juga akan meliputi perubahan panjang dari keseluruhan blok data dan pengurangan beberapa field yang tidak terdapat pada versi 0.23. Setelah proses konversi pada data selesai dilakukan, data yang semula diterima dari ADS-B Receiver melalui metode unicast dengan protokol TCP tersebut akan kembali dikirimkan kepada ADP melalui metode multicast dengan protokol UDP. Sehingga pada akhirnya ADP akan menerima format data Asterix-21 dengan versi 0.23 secara multicast.
53
3.4 Perancangan Program
3.4.1 Perancangan Program Utama
(Gambar 3.5 Data Flow Diagram)
Di dalam program ini akan terdapat 3 proses utama yang akan terus berjalan secara simultan dan terus menerus, yaitu proses penerimaan data dari ADS-B Receiver, proses konversi data menjadi data Asterix-21 versi 0.26, dan proses pengiriman kembali data hasil konversi tersebut kepada ADP secara multicast. Berikut ini adalah penjelasan dari ketiga proses tersebut :
1. Penerimaan Data Program akan terus menerus menerima aliran data dari ADS-B Receiver yang akan mengirimkan data Asterix-21 versi 0.23 secara
54
unicast. Proses identifikasi akan terlebih dahulu dilakukan terhadap setiap data yang masuk untuk menentukan awal dari blok data yang akan ditandai dengan oktet yang memiliki nilai desimal 21 dimana oktet tersebut merupakan penanda dari awal blok data Asterix-21. Setelah itu program akan kembali menerima data sesuai dengan panjang dari keseluruhan blok data tersebut hingga didapatkan suatu blok data Asterix-21 yang utuh. Kemudian program akan terus mengulangi proses yang sama untuk mendapatkan setiap blok data yang dikirimkan oleh ADS-B Receiver.
2. Konversi Data Setiap blok data yang telah berhasil diterima akan dikonversi menjadi blok data Asterix-21 versi 0.23. Proses konversi ini akan dilakukan dengan cara menyalin satu persatu isi dari blok data Asterix-21 versi 0.26 ke dalam blok data baru yang akan berisi data Asterix-21 versi 0.23. Sebelum dipindahkan, data yang memiliki format berbeda akan terlebih dahulu di konversi, sedangkan data yang harus dihilangkan tidak akan ikut disalin kedalam blok data baru tersebut. Proses ini akan dilakukan terhadap setiap blok data yang sudah berhasil diterima dari ADS-B Receiver.
3. Pengiriman Data Setiap blok data yang telah berhasil dikonversi menjadi blok data Asterix-21 versi 0.23 akan kembali dikirimkan kepada ADP. Blok-blok
data
tersebut
akan
dikirimkan
kembali
dengan
55
menggunakan metode pengiriman secara multicast. Proses pengiriman kembali data ini akan berlangsung secara terus menerus beriringan dengan proses penerimaan dan konversi data.
3.4.2 Sinkronisasi Antar Proses
Ketiga proses yang berjalan dalam program ini akan terus berlangsung secara terus menerus dan beriringan. Aliran data yang dikirimkan oleh ADSB Receiver akan berjalan dengan sangat cepat dan berpotensi untuk menimbulkan masalah pada salah satu proses. Contohnya proses pengiriman kembali data mungkin akan berlangsung lebih lama dari proses penerimaan data karena data tersebut akan terlebih dahulu melewati proses konversi sehingga menimbulkan potensi terjadinya penumpukan data. Untuk itu dibutuhkan sinkronisasi antara proses penerimaan, konversi, dan pengiriman kembali data agar program dapat terus berjalan dengan lancar. Pada ketiga proses tersebut akan terdapat sumber daya yang digunakan secara bersamasama (shared resources), sehingga suatu mekanisme sinkronisasi mutlak dibutuhkan untuk diterapkan pada program. Mekanisme sinkronisasi akan menjamin ketersediaan sumberdaya yang dibutuhkan dalam masing-masing proses tersebut. Hal ini bertujuan agar setiap proses dapat menggunakan sumberdaya secara bergantian serta menghindari terjadinya konflik yang mungkin terjadi diantara ketiga proses tersebut.
Program ini akan menggunakan 2 sistem antrian (Queue) yang berfungsi untuk menampung setiap blok data hasil proses. Masing-masing sistem antrian ini akan berfungsi sebagai tempat penyimpanan sementara
56
setiap blok data hasil proses penerimaan data dan blok-blok data hasil proses konversi. Sistem antrian ini akan dibagi menjadi 2, yaitu satu antrian yang bertugas untuk mengatur alur proses penerimaan dengan proses konversi data dan satu antrian lainnya yang bertugas untuk mengatur alur proses konversi dan proses pengiriman kembali data. Mekanisme sinkronisasi akan terjadi melalui kedua sistem antrian tersebut.
Sinkronisasi akan dilakukan dengan cara mengatur akses dari setiap proses terhadap masing-masing sistem antrian tersebut. Suatu proses harus menunggu apabila proses lainnya sedangkan memasukkan atau mengambil data dari sistem antrian. Proses konversi data akan menunggu hingga proses penerimaan data menghasilkan blok data yang siap untuk di konversi dan memasukannya ke dalam antrian. Selain itu proses pengiriman kembali data juga akan menunggu hingga ada blok data hasil dari proses konversi di dalam antrian yang siap untuk dikirimkan.
3.4.3 Penerapan Multithread
Untuk menunjang performa, program ini akan dirancang dengan menggunakan konsep multithread. Ketiga proses yang menjadi proses utama masing-masing akan dijadikan setiap thread yang menjalankan prosesnya sendiri. Hal ini bertujuan agar ketiga proses tersebut dapat berjalan secara cepat dan simultan sehingga dapat mengimbangi kecepatan penerimaan aliran data yang sangat tinggi. Selain itu, penerapan multithread juga diharapkan
57
dapat memaksimalkan penggunaan sumberdaya memori yang dialokasikan oleh CPU.
Sesuai dengan tugasnya masing-masing, akan ada 3 thread yang dipanggil oleh thread utama dalam program ini, yaitu thread receiver yang berfungsi untuk menerima data, thread converter yang bertugas melakukan konversi data, dan thread sender yang berfungsi untuk mengirimkan kembali data. Ketiga thread tersebut akan memanggil method-method yang berasal dari 4 class, yaitu class receiver, converter, sender dan queue. Komunikasi antara ketiga thread tersebut akan dijembatani oleh sistem antriannya masingmasing.
3.4.4 Penerapan Mutual Exclusion
Dengan
perancangan
program
yang
menggunakan
konsep
multithread, maka diperlukan adanya suatu mekanisme yang dapat melindungi shared resource yang akan diakses oleh ketiga thread. Mekanisme yang dimaksud adalah mutex (mutual exclusion). Mutex akan berfungsi untuk melindungi bagian-bagian dari program yang termasuk dalam critical section. Di dalam program ini, critical section yang dimaksud adalah proses pemasukkan dan pengambilan blok data oleh ketiga thread yang merupakan bagian dari operasi terhadap sistem antrian.
Ketika salah satu thread akan memasukkan suatu blok data ke dalam sistem antrian, thread tersebut akan mengunci mutex agar thread lain tidak dapat mengambil blok data dari dalam sistem antrian. Sebagai contoh, apabila
58
thread receiver akan untuk memasukkan blok data ke dalam sistem antrian, maka thread tersebut akan mengunci mutex agar blok-blok data tidak dapat diambil dari dalam sistem antrian. Thread converter yang akan melakukan proses konversi data harus menunggu thread receiver untuk melepaskan kunci mutex nya untuk mengambil blok data dari dalam antrian. Hal ini bertujuan agar blok data akan selalu tersedia ketika sebuah thread ingin melakukan prosesnya.
Berikut ini adalah ilustrasi dari salah satu contoh mekanisme perlindungan sumber daya bersama yang akan diakses oleh thread receiver dan thread converter secara bersamaan.
No.
Thread Receiver
1
Thread receiver mengunci mutex.
Thread Converter
Thread
converter
ingin
memasukkan blok data ke dalam antrian namun mutex dikunci oleh thread receiver. 2
Thread
receiver
memasukkan Thread converter menunggu.
blok data ke dalam antrian 3
Thread
receiver
kunci mutex. 4
Thread proses.
receiver
melepaskan Thread
converter
mengunci
mutex. melanjutkan Thread converter mengambil data dari dalam antrian
59
5
Thread proses.
receiver
melanjutkan Thread
converter
kunci mutex.
(Tabel 3.1 Ilustrasi Penggunaan Mutex)
(Gambar 3.6 Ilustrasi Sinkronisasi Antar Thread)
melepaskan
60
3.4.5 Class Diagram
(Gambar 3.7 Class Diagram)
61
3.4.6 Sequence Diagram Thread Receiver (Penerimaan Data)
(Gambar 3.8 Sequence Diagram Thread Receiver)
62
3.4.7 Sequence Diagram Thread Converter (Konversi Data)
(Gambar 3.9 Sequence Diagram Thread Converter)
63
3.4.8 Sequence Diagram Thread Sender (Pengiriman Data)
(Gambar 3.10 Sequence Diagram Thread Sender)
64
3.4.9 Flowchart Penerimaan Data
(Gambar 3.11 Flowchart Penerimaan Data)
Proses ini diawali dengan inisialisasi socket dan pembuatan koneksi ke ADS-B Receiver. Setelah koneksi berhasil terjalin dan aliran data telah berhasil diterima, program akan mengidentifikasi setiap oktet yang masuk untuk mencari awal dari blok data yang ditandai dengan oktet yang memiliki
65
nilai desimal 21. Setelah itu program akan terus menerus menerima satu persatu oktet hingga didapatkan satu blok data yang utuh. Blok data tersebut kemudian akan dimasukkan ke dalam antrian, menunggu untuk di konversi. Proses ini akan berjalan terus menerus hingga user memberikan input berupa “CTRL + C” pada komputer. Input tersebut akan memberikan signal SIGINT pada program yang berfungsi untuk menghentikan jalannya thread. •
Flowchart Method isAsterix21()
(Gambar 3.12 Flowchart Method isAsterix21() )
Method ini berfungsi untuk menentukan oktet awal dari blok data. Program akan terus menerima satu persatu
66
oktet hingga mendapatkan oktet dengan nilai desimal 21. Setelah itu method akan mengembalikan nilai TRUE yang menandakan bahwa awal dari satu blok data yang akan diproses telah berhasil diketahui.
•
Flowchart Method receiveData()
(Gambar 3.13 Flowchart Method receiveData() )
Oktet pertama yang memiliki nilai desimal 21 akan terlebih dulu disalin pada blok data baru. Setelah itu program
67
akan kembali menerima dua oktet berikutnya (oktet-oktet LEN) yang berisi informasi tentang panjang keseluruhan blok data. Setelah kedua oktet tersebut ikut disalin ke dalam blok data dan panjang dari blok data telah diketahui, method akan terus menerima setiap oktet yang masih merupakan bagian dari blok data tersebut.
68
3.4.10 Flowchart Konversi Data
(Gambar 3.14 Flowchart Konversi Data)
Proses ini juga akan terus berlangsung selama program tidak menerima signal SIGINT berupa input ‘CTRL+C’ pada komputer. Blok-blok data yang sebelumnya telah berada di dalam antrian akan dikonversi menjadi blok data Asterix-21 versi 0.23. Setelah itu proses konversi selesai, blok data tersebut akan dimasukkan kembali ke dalam antrian pengiriman, menunggu untuk dikirimkan ke ADP. Apabila tidak terdapat data dalam antrian, program
69
dirancang untuk menunggu selama 5 detik hingga data di dalam antrian kembali terisi.
•
Flowchart Method prosesData()
(Gambar 3.15 Flowchart Method prosesData() )
Blok data yang telah diambil dari dalam antrian akan disalin ke dalam blok data Asterix-21 versi 0.26. Tiga oktet pertama yang menginformasikan awal dan panjang keseluruhan dari blok data akan langsung disalin ke dalam blok data versi 0.23. Setelah itu akan dilakukan pengecekan terhadap oktetoktet yang berisi informasi tentang FSPEC. Operasi AND akan dilakukan
70
pada setiap oktet FSPEC dengan bilangan desimal 1 untuk mengetahui nilai bit FX (Field Extension) dari setiap oktet FSPEC. Hal ini bertujuan untuk mengidentifikasi oktet mana saja yang termasuk oktet FSPEC. Proses ini akan berhenti setelah didapatkan FSPEC yang memiliki bit FX bernilai 0. Setelah itu oktet-oktet FSPEC yang telah berhasil diidentifikasi akan ikut disalin ke dalam blok data versi 0.23.
Setelah itu akan dilakukan pengecekan terhadap eksistensi dari setiap field dengan FRN 1 hingga FRN 35 dimana bit-bit pada oktet FSPEC akan menjadi penanda terhadap eksistensi setiap field dengan FRN tertentu di dalam blok data. Keberadaan sebuah field di dalam suatu blok data akan ditandai dengan nilai 1 pada bit penandanya dalam FSPEC. Proses pengecekan akan terus berlangsung dengan diikuti proses penyalinan data ke dalam blok data versi 0.23. Namun apabila selama proses pegecekan ditemukan field dengan FRN 4, 27 atau 28, akan terlebih dulu dilakukan proses konversi sebelum field itu disalin ke blok data versi 0.23. Proses ini akan terus dilakukan hingga setiap field yang ada berhasil disalin ke dalam blok data versi 0.23 dan field-field dengan FRN 4, 27 & 28 yang terdapat pada blok data berhasil di konversi.
71
3.4.11 Flowchart Pengiriman Data
(Gambar 3.16 Flowchart Pengiriman Data)
72
Sama seperti proses penerimaan dan konversi data, proses ini juga akan terus berlangsung selama program belum menerima signal SIGINT. Untuk melakukan pengiriman data secara multicast, sebelum melakukan looping, socket dan multicast group akan terlebih dahulu diinisialisasi. Proses akan terus berjalan dengan mengambil data hasil konversi yang diambil dari dalam antrian. Setelah itu setiap blok data Asterix-21 yang sudah dikonversi menjadi versi 0.23 tersebut akan dikirimkan ke ADP secara multicast.
73
3.4.12 Flowchart Method enQueue()
(Gambar 3.17 Flowchart Method enQueue() )
Method enQueue() memiliki tugas untuk menyimpan blok data yang berbentuk array bertipe unsigned char ke dalam sistem antrian. Blok data yang berada di dalam antrian kemudian akan diambil oleh thread yang membutuhkan. Method ini akan mengembalikan nilai TRUE apabila proses penyimpanan data ke dalam antrian berhasil dilakukan. Hal ini bertujuan untuk memberikan validasi apakah method berikutnya dalam suatu thread akan dieksekusi atau tidak. Contohnya, proses konversi data akan menunggu hingga proses pemasukan data ke dalam antrian berhasil dilakukan.
74
3.4.13 Flowchart Method deQueue()
(Gambar 3.18 Flowchart Method deQueue() )
Setiap blok data yang telah disimpan dalam antrian akan diambil oleh proses yang membutuhkan menggunakan method deQueue (), contohnya ketika sebuah blok data akan dikonversi atau akan dikirimkan kembali. Untuk itu, satu persatu isi dari blok data akan disalin ke blok data lain yang akan digunakan oleh thread lainnya untuk diproses. Setelah blok data selesai disalin, maka memori di dalam list yang telah dialokasikan sebelumnya untuk blok data tersebut akan dibebaskan kembali.
75
3.5 Perbedaan Asterix-21 Versi 0.26 dan Versi 0.23
3.5.1 Perbedaan pada Field FRN 4
(Gambar 3.19 FRN 4 Asterix-21 versi 0.26)
Pada format data Asterix-21 versi 0.26 seperti yang ditunjukkan oleh gambar 3.2, field dengan FRN 4 berisikan informasi tentang “Position in WGS-84 Co-ordinates” atau yang biasa dikenal dengan posisi menurut lintang dan bujur. Field ini memiliki panjang keseluruhan 8 oktet yang terdiri dari 4 oktet informasi tentang latitude dan 4 oktet mengenai informasi longitude. Masing-masing informasi latitude dan longitude ini akan dikalikan dengan derajat sebenarnya.
sebesar 180/225 untuk mendapatkan nilai posisi yang
76
(Gambar 3.20 FRN 4 Asterix-21 versi 0.23)
Perbedaan yang tampak pada data Asterix-21 dengan versi 0.23 adalah field dengan FRN 4 tersebut hanya memiliki panjang 6 oktet yang terdiri dari 3 oktet latitude dan 3 oktet longitude. Selain itu, nilai latitude dan longitude pada Asterix-21 versi 0.23 akan dikalikan dengan derajat yang berbeda dengan derajat pada Asterix-21 versi 0.26, yaitu sebesar 180/223. Perbedaan ini sebenarnya berkaitan dengan tingkat akurasi yang lebih tinggi tentang informasi posisi lintang dan bujur yang terdapat pada data Asterix21.
3.5.2 Perbedaan pada Field FRN 27 & FRN 28
(Gambar 3.21 FRN 27 dan 28 Asterix-21 versi 0.26)
77
(Gambar 3.22 FRN 27 dan 28 Asterix-21 versi 0.23)
Field dengan FRN 27 dan FRN 28 yang berisi informasi tentang “Mode 3/A
in Octal Representation” dan “Signal Amplitude” baru
ditambahkan pada format data Asterix-21 dengan versi 0.26. Dengan demikian dapat disimpulkan bahwa pada format data Asterix-21 dengan versi 0.23, kedua field tersebut masih belum diikutsertakan atau dapat dikatakan bahwa nilai bit-bit mereka masih di-set menjadi 0. Perbedaan ini tentunya juga akan memberikan dampak pada perbedaan bit-bit pada FSPEC dan panjang keseluruhan dari blok data.
3.6 Metode Konversi Data
3.6.1 Konversi Terhadap Field FRN 4
Pada dasarnya perbedaan FRN 4 pada Asterix-21 versi 0.26 dan versi 0.23 terletak pada panjang data dan derajat yang digunakan. Meskipun demikian, sebenarnya field FRN 4 dari kedua versi tersebut tetap memiliki nilai yang sama karena nilai yang sebenarnya merupakan hasil kali dari nilai desimal 4 oktet latitude atau 4 oktet longitude dengan derajat yang digunakan.
78
Karena itu, untuk melakukan konversi pada FRN 4, nilai sebenarnya dari latitude dan longitude pada Asterix-21 versi 0.26 harus diketahui terlebih dahulu. Setelah nilai itu diketahui baru kemudian nilai itu akan dibagi dengan derajat FRN 4 yang dimiliki Asterix-21 versi 0.23. Setelah proses tersebut selesai, maka nilai itu akan ditampung dalam variabel n yang bertipe integer untuk kemudian diambil sebanyak 3 oktet menggunakan struktur data bertipe union.
Sebuah struktur data bertipe union yang memiliki variabel bertipe integer dan array bertipe unsigned char [4] dibutuhkan dalam proses konversi ini. Nilai yang telah didapat sebelumnya akan dimasukkan ke variabel bertipe integer tersebut. Selanjutnya 3 oktet akan diambil melalui array yang bertipe unsigned char tersebut dengan index [0], [1], dan [2].
3.6.2 Konversi Terhadap Field FRN 27 & 28
Proses konversi yang dilakukan terhadap field FRN 27 dan 28 pada data Asterix-21 versi 0.26 dilakukan dengan cara tidak mengikutsertakan nilai dari kedua FRN tersebut ketika proses penyalinan satu persatu oktet pada blok data dilakukan. Dengan tidak diikutsertakannya kedua field ini tetntunya akan berdampak pada perubahan bit penanda kedua field tersebut pada FSPEC. Bit- bit penanda field FRN 27 & FRN 28 pada FSPEC akan di-set menjadi 0 untuk menandakan bahwa kedua field tersebut tidak lagiterdapat di blok data.
79
Selain perubahan pada FSPEC, konversi terhadap dua field ini juga akan berpengaruh pada panjang keseluruhan data. Dengan demikian perubahan pada oktet-oktet LEN di blok data tersebut juga harus dilakukan. Karena field FRN 27 memiliki panjang 2 oktet dan FRN 28 memiliki panjang 1 oktet, maka nilai desimal dari 2 oktet LEN pada blok data harus dikurangi 3.
Apabila perubahan yang terjadi pada bit-bit FSPEC menyebabkan salah satu oktet FSPEC tersebut menjadi bernilai 0, maka oktet FSPEC itu juga harus dihilangkan dari blok data. Dengan dihilangkannya oktet FSPEC tersebut, maka nilai desimal dari 2 oktet LEN harus kembali dikurangi dengan 1.
80
3.6.3 Contoh Konversi Data
Berikut ini adalah contoh data Asterix-21 versi .26 yang akan di konversi :
[15] [00] [2D] [FB] [A3] [51] [06] [00] [00] [00] [20] [32] [3B] [2B] [FF] [EF] [00] [A3] [01] [31] [30] [68] [8A] [02] [61] [00] [07] [08] [01] [91] [FF] [00] [05] [25] [C3] [3C] [30] [E2] [75] [DF] [58] [20] [2C] [E8] [32]
Proses identifikasi akan dilakukan terhadap FSPEC untuk mengetahui eksistensi dari setiap field pada blok data :
FRN 1, FRN 2, FRN 3, FRN
1
1
1
1
1
0
1 [1]
1
2
3
4 5
6
7
A3 :
1 8
0 1 0 0 0 1 [1] 9 10 11 12 13 14 FX
51 :
0 1 0 1 0 0 0 [1] 15 16 17 18 19 20 21 FX
FRN 16, FRN 18
06 :
0 0 0 0 0 1 1 [0] 22 23 24 25 26 27 28 FX
FRN 27, FRN 28
FB : 4,
FX
FRN 5, FRN 7
FRN 8, FRN 10, FRN 14
Pada oktet FSPEC terakhir yang memiliki nilai hexadesimal 06, terlihat bahwa bit FX bernilai 0. Hal tersebut menunjukkan bahwa oktet tersebut merupakan oktet FSPEC terakhir dan oktet-oktet yang ada setelahnya merupakan field-field data yang memiliki bit penanda bernilai 1 pada FSPEC.
81
Proses konversi pada field dengan FRN 4 meliputi konversi pada oktet-oktet field longitude dan latitude. •
Konversi Field Longitude
Longitude versi 0.26
= FF EF 00 A3 (Hexadesimal) = -1113949 (Desimal)
Longitude * 180/225
= -1113949 * 180/225
Longitude versi 0.26
= 5,97568809986114501953125
Longitude versi 0.23
= (Longitude versi 0.26) / (180/223) = -5,9756 / 180/223 = -278487 (Desimal) = FB C0 29 (Hexadesimal)
Longitude * 180/223
= -278487 * 180/223
Longitude versi 0.23
= -5,975682735443115234375
Masukkan ke dalam array pada union: [0]
[1]
[2]
[3]
29
C0
FB
FF
Pindahkan oktet dengan index [2], [1], dan [0] ke dalam field dengan FRN4 pada blok data Asterix-21 versi 0.23 :
.....
FRN 4 FB
FRN4 C0
FRN4 29
.....
82
•
Konversi Field Latitude
Latitude versi 0.26
= 01 31 30 68 (Hexadesimal) = 3600156960 (Desimal)
Latitude *180/225
= 3600156960 * 180/225
Latitude versi 0.26
= 107,29303836822509765
Latitude versi 0.23
= (Longitude versi 0.26) / (180/223) = 107,2930 / 180/223 = 5000218,2384 (Desimal) = 4C 4C 1A (Hexadesimal)
Latitude * 180/223
= 5000218 * 180/223
Latitude versi 0.23
= 107,29303836822509765
Masukkan ke dalam array pada union: [0]
[1]
[2]
[3]
1A
4C
4C
NULL
Pindahkan oktet dengan index [2], [1], dan [0] ke dalam field dengan FRN4 pada blok data Asterix-21 versi 0.23 :
.....
FRN 4 4C
FRN4 4C
FRN4 1A
.....
83
Dengan tidak diikutsertakannya field FRN 27 & FRN 28, maka proses perubahan yang akan terjadi pada blok data dapat digambarkan sebagai berikut : FRN... .....
FRN27 2C
FRN27 E8
FRN28 32
FRN... .....
FRN... .....
FRN... .....
FRN... .....
FRN... .....
FRN... .....
FSPEC pada versi 0.26 FB A3 51 06 1 1 1 1 1 0 1 [1] 0 1 0 0 0 1 [1] 0 1 0 1 0 0 0 [1] 0 0 0 0 0 1 1 [0] (Bit-bit penanda FRN 27 & 28 pada FSPEC di-set menjadi 0) 1 1 1 1 1 0 1 [1] 0 1 0 0 0 1 [1] 0 1 0 1 0 0 0 [1] 0 0 0 0 0 0 0 [0]
(Hilangkan FSPEC yang bernilai 0) 1 1 1 1 1 0 1 [1] 0 1 0 0 0 1 [1] 0 1 0 1 0 0 0 [1]
(Dihilangkan)
(Bit FX sebelumnya di-set menjadi 0) 1 1 1 1 1 0 1 [1] 0 1 0 0 0 1 [1] 0 1 0 1 0 0 0 [0]
FSPEC pada versi 0.23 FB A3 50 Perubahan yang terjadi pada FSPEC: LEN .....
FSPEC FB
FSPEC A3
FSPEC 51
FSPEC 06
FRN... .....
LEN .....
FSPEC FB
FSPEC A3
FSPEC 50
FRN ... .....
FRN... .....
84
Field CAT LEN
Versi 0.26 15 00 2D
FSPEC
FB A3 51 06
FRN 1 FRN 2 FRN 3
00 00 00 20 32 3B 2B FF EF 00 A3 01 31 30 68 8A 02 61 00 07 08 01 91 FF 00 05 25 C3 3C 30 E2 75 DF 58 20 2C E8 32
FRN 4 FRN 5 FRN 7 FRN 8 FRN 10 FRN 14 FRN 16 FRN 18 FRN 27 FRN 28
Konversi Pengurangan 6 oktet Oktet FSPEC terakhir dihilangkan dan nilai FX sebelumnya di-set menjadi 0 Konversi 8 oktet menjadi 6 oktet Dihilangkan Dihilangkan
Versi 0.23 15 00 27 FB A3 50 00 00 00 20 32 3B 2B FB C0 29 4C 4C 1A 8A 02 61 00 07 08 01 91 FF 00 05 25 C3 3C 30 E2 75 DF 58 20 -
(Tabel 3.2 Tabel Konversi Data)
Setelah proses konversi selesai, maka akan didapatkan data Asterix-21 dengan versi 0.23 :
[15] [00] [27] [FB] [A3] [50] [00] [00] [00] [20] [32] [3B] [2B] [FB] [C0] [29] [4C] [4C] [1A] [8A] [02] [61] [00] [07] [08] [01] [91] [FF] [00] [05] [25] [C3] [3C] [30] [E2] [75] [DF] [58] [20]