Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Force GitHub README to respect dark mode (function() { var style = document.createElement('style'); style.textContent = ' .markdown-body { color-scheme: dark light; } .markdown-body pre { background: #161b22 !important; } .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; } .markdown-body table th, .markdown-body table td { border-color: #30363d !important; } .markdown-body img { background: #0d1117; } .markdown-body blockquote { border-left-color: #8b949e; } .markdown-body hr { border-color: #30363d; } '; document.head.appendChild(style); })(); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Highlight search terms from Google/DuckDuckGo/Bing referrer (function() { var ref = document.referrer; var terms = []; if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) { var url = new URL(ref); var q = url.searchParams.get('q') || url.searchParams.get('p'); if (q) { terms = q.split(/\s+/).filter(function(t) { return t.length > 2; }); } } if (terms.length === 0) return; var style = document.createElement('style'); style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }'; document.head.appendChild(style); function highlight(node) { if (node.nodeType === 3) { // text node var text = node.textContent; var found = false; terms.forEach(function(term) { var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\]\\]/g, '\\') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ' GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ' GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { // Universal Dark Mode - works on any site (function() { var enabled = true; function applyDarkMode() { if (!enabled) return; // Create style element if it doesn't exist var style = document.getElementById('universal-dark-mode-style'); if (!style) { style = document.createElement('style'); style.id = 'universal-dark-mode-style'; document.head.appendChild(style); } // Dark mode CSS - inverts colors but preserves images/video style.textContent = ' /* Invert everything except media */ html { filter: invert(1) hue-rotate(180deg) !important; background: #1a1a2e !important; } /* Restore images, videos, iframes, canvas */ img, video, iframe, canvas, svg, picture, [style*="background-image"] { filter: invert(1) hue-rotate(180deg) !important; } /* Preserve specific elements that should not be inverted */ .no-dark-mode, .no-dark-mode *, [data-theme="light"], [data-theme="light"], .ace_editor, .ace_editor *, .CodeMirror, .CodeMirror *, .monaco-editor, .monaco-editor *, .markdown-body pre, .markdown-body pre *, .highlight, .highlight *, pre code, pre code * { filter: none !important; } /* Fix common UI elements */ .modal, .popup, .dropdown-menu, .tooltip, .popover { filter: invert(1) hue-rotate(180deg) !important; background: #2d2d44 !important; border-color: #444 !important; } /* Scrollbars */ ::-webkit-scrollbar { background: #1a1a2e !important; } ::-webkit-scrollbar-thumb { background: #444 !important; } ::-webkit-scrollbar-thumb:hover { background: #555 !important; } /* Selection */ ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; } ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; } '; } function removeDarkMode() { var style = document.getElementById('universal-dark-mode-style'); if (style) style.remove(); } // Toggle with Alt+Shift+D document.addEventListener('keydown', function(e) { if (e.altKey && e.shiftKey && e.key === 'D') { e.preventDefault(); enabled = !enabled; if (enabled) { applyDarkMode(); console.log('[Universal Dark Mode] Enabled'); } else { removeDarkMode(); console.log('[Universal Dark Mode] Disabled'); } } }); // Apply on load applyDarkMode(); // Re-apply on dynamic content var observer = new MutationObserver(function(mutations) { if (enabled && !document.getElementById('universal-dark-mode-style')) { applyDarkMode(); } }); observer.observe(document.head, { childList: true }); console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle'); })(); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })(); GitHub - jmtodev/libcr: JMTO Control Room Service Library (LibCR) · GitHub
Skip to content

Latest commit

History

18 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

JMTO Control Room Service Library (LibCR)

LibCR merupakan library untuk menyediakan service komunikasi data antar aplikasi Toll Collector dengan aplikasi Control-Room JMTO. Library akan mengurus semua proses komunikasi, dari mulai inisialisasi port server, protokol komunikasi, hingga kontrol pengiriman data.

Aplikasi Toll Collector hanya perlu menyisipkan library, melakukan inisialisasi dan selanjutnya melakukan provide informasi-informasi yang dibutuhkan oleh Control-Room dengan menggunakan fungsi-fungsi yang telah tersedia.

Untuk penerimaan data/event dari Control-Room, aplikasi Toll Collector dapat melakukan registrasi fungsi callback, baik itu untuk mendapatkan event keyboard ataupun event cst.

Library tersedia untuk Linux dalam 3 arsitektur, diantaranya:

  • amd64 - Intel/AMD x86 dengan 64bit
  • aarch64 - ARM 64bit
  • armv7 - ARM 32bit

Sedangkan untuk QNX/NTO hanya disediakan arsitektur i386 (Intel/AMD x86 dengan 32bit)

Binary Build Library

LibCR dibangun sebagai static library untuk C/C++ yang dapat digunakan pada environment gcc.

File library terdiri dari 2 jenis extension *.a (pada direktori lib) atau *.o (pada direktori obj). Aplikasi Toll Collector dapat memilih salah-satu format sesuai dengan kebutuhannya.

Berikut adalah nama-nama file binary untuk library beserta keterangan arsitektur dan platformnya:

  • libcr-amd64.a / libcr-amd64.o - Linux x86 64bit
  • libcr-aarch64.a / libcr-aarch64.o - Linux ARM 64bit
  • libcr-armv7.a / libcr-armv7.o - Linux ARMv7
  • libcr-i386-qnx.a / libcr-i386-qnx.o - QNX/NTO x86 32bit

Test Program

Test program dapat dilihat pada file example/testlibcr.c, dan dapat di-build dengan build_test.sh (Hanya untuk Linux). Berikut command untuk melakukan build sesuai dengan arsitektur yang dituju:

# Build untuk x86 64bit
./build_test.sh
# Build untuk arm-64
./build_test.sh aarch64
# Build untuk arm-v7 32bit
./build_test.sh armv7

Referensi Library

Berikut adalah referensi lengkap dari Library Control Room yang terbagi kedalam 4 segment diantaranya:

  • Struktur Data - Kumpulan struktur data yang akan digunakan pada fungsi atau callback interface sebagai sarana pengiriman data non-primitif.
  • Callback Interface - Merupakan interface yang akan digunakan aplikasi Toll Collector untuk menerima data/event dari Control Room
  • Function - Merupakan fungsi-fungsi yang dapat dipanggil aplikasi Toll Collector untuk mengontrol, berkomunikasi dan mengirimkan data kepada Control Room.
  • Constants - Merupakan kumpulan nilai konstanta yang digunakan pada fungsi

Control Room dibangun secara fleksibel untuk menunjang berbagai kebutuhan dan ketersediaan sistem, oleh sebab itu fungsi-fungsi yang diimplementasikan aplikasi Toll Collector dibagi kedalam beberapa requirement diantaranya:

  • MANDATORY - Fungsi harus dipenuhi aplikasi Toll Collector, dikarenakan data dari fungsi yang dimaksud sangat dibutuhkan oleh operator Control Room, dan pengoperasian Control Room tidak akan berjalan tanpa adanya informasi yang dimaksud.
  • RECOMMENDED - Fungsi yang sangat direkomendasikan untuk diimplementasikan aplikasi Toll Collector, dengan dipenuhinya implementasi ini, pengoperasian Control Room akan semakin seamless.
  • OPTIONAL - Opsional untuk diimplementasikan, tapi lebih baik tetap dipenuhi.
  • - - Bukan merupakan fungsi requirement, tapi sarana untuk kebutuhan informasi dan sequence logic dari aplikasi Toll Collector yang dapat digunakan.

Daftar Isi


Struktur Data

libcr_cstdata_t

Struktur data mifare yang akan dikirimkan pada event tap kartu pada CST. terdiri dari block 1 sampai 3. Block 0 tidak akan dikirimkan.

typedefstruct {
uint8_tstatus; /* Status pembacaan kartu. Lihat LIBCR_CSTSTATUS_* */uint8_tsector_id; /* ID Sektor yang dibaca */uint8_tblock1[16]; /* 16byte data pada block 1 (relatif-sektor) */uint8_tblock2[16]; /* 16byte data pada block 2 (relatif-sektor) */uint8_tblock3[16]; /* 16byte data pada block 3 (relatif-sektor) */
} libcr_cstdata_t;

Callback Interfaces

*libcr_keyboard_cb()

Callback interface untuk menerima event keyboard dari ControlRoom.

Arguments

  • keycode : Kode keyboard yang ditekan. Lihat LIBCR_KEY_*

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_keyboard_cb)(uint8_tkeycode);

*libcr_cst_cb()

Callback interface untuk menerima event tap CST

Arguments

  • uuid : Hex String (null terminated) untuk UUID kartu yang di tap
  • data : Data kartu yang di tap di control room
  • data_length : Jumlah data/sektor yang didapat

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_cst_cb)(constchar*uuid, constlibcr_cstdata_t*data,
size_tdata_length);

*libcr_log_cb()

Callback interface untuk logging

Arguments

  • log : String log
  • log_length : Panjang string log

Return Value

  • void tidak perlu memberikan return
typedefvoid (*libcr_log_cb)(constchar*log, intlog_length);

Functions

libcr_init()

Inisialisasi dan mulai service control room. Hanya panggil sekali ketika program dimulai, dan jalankan libcr_close ketika program selesai.

Requirement :MANDATORY

Arguments

  • app : String nama aplikasi dan versi (Contoh: TCT 1.00)
  • port : Port TCP yang akan digunakan (Rekomendasi LIBCR_DEFAULT_PORT)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_init(
constchar*app,
intport
);

libcr_close()

Hentikan service control room.

Requirement :MANDATORY

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_close();

libcr_set_info()

Set detail informasi gardu. Disarankan informasi awal ini telah di-set sebelum menjalankan libcr_init().

Requirement :MANDATORY

Arguments

  • kode_gerbang : Kode gerbang (1-99)
  • kode_gardu : Kode gardu (1-99)
  • jenis_gardu : Gunakan LIBCR_GARDU_SINGLE atau LIBCR_GARDU_MULTI
  • jenis_gerbang : Lihat LIBCR_GERBANG_*
  • nama_gardu : Nama gardu (contoh: KALIHUTIP UTAMA 1)
  • nama_ruas : Nama gardu (contoh: PURBALEUNYI)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_info(
uint8_tkode_gerbang,
uint8_tkode_gardu,
uint8_tjenis_gardu,
uint8_tjenis_gerbang,
constchar*nama_gardu,
constchar*nama_ruas
);

libcr_is_active()

Cek apakah service control room berjalan

Requirement :-

Return Value

  • LIBCR_OK bila aktif, LIBCR_ERR_NOSERVICE bila non-aftif
intlibcr_is_active();

libcr_set_keyboard_cb()

Set callback untuk penerima event keyboard

Requirement :MANDATORY

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_keyboard_cb(
libcr_keyboard_cbcallback
);

libcr_set_cst_cb()

Set callback untuk penerima event cst

Requirement :RECOMMENDED

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_cst_cb(
libcr_cst_cbcallback
);

libcr_set_log_cb()

Set callback untuk penerima message log. Rekomendasi hanya gunakan LIBCR_LOGLEVEL_ERROR atau LIBCR_LOGLEVEL_NONE pada argumen loglevel untuk build production.

Requirement :OPTIONAL

Arguments

  • callback : Fungsi callback. Isi NULL bila nonaktif
  • loglevel : Lihat LIBCR_LOGLEVEL_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_log_cb(
libcr_log_cbcallback,
uint8_tloglevel
);

libcr_cst_reg_sector()

Tambah registrasi request sektor mifare. Sektor yang telah teregistrasi akan dibaca CST Control Room ketika kartu mifare di-tap, dan data akan dikirimkan melalui callback yang telah diset dengan fungsi libcr_set_cst_cb.

Registrasi multiple sektor dapat dilakukan dengan menjalankan fungsi ini kembali dengan argument sector_id yang berbeda.

Bila fungsi ini dipanggil kembali dengan sector_id sebelumnya telah teregistrasi, maka data keytype dan key pada registrasi sector tersebut akan ditimpa.

Jumlah maksimal sector yang dapat diregistrasi adalah sebanyak 5 sektor.

Requirement :RECOMMENDED

Arguments

  • sector_id : ID sektor mifare yang akan dibaca
  • keytype : Lihat LIBCR_CST_KEY_TYPE_*
  • key : Hex string mifare key untuk sektor yang dimaksud
  • sector_id : ID sektor mifare yang akan dibaca

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_reg_sector(
uint8_tsector_id,
uint8_tkeytype,
constchar*key
);

libcr_cst_unreg_sector()

Hapus registrasi request sektor mifare yang sebelumnya pernah diregistrasi menggunakan fungsi libcr_cst_reg_sector.

Requirement :-

Arguments

  • sector_id : ID sektor mifare yang akan hapus

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_cst_unreg_sector(
uint8_tsector_id
);

libcr_cst_num_sector()

Dapatkan jumlah sektor yang sudah direquest

Requirement :-

Return Value

  • Error Code. atau jumlah sektor yang sudah di request (>=0)
intlibcr_cst_num_sector();

libcr_set_gtostate()

Set state transaksi saat ini. Selalu panggil ketika selesai SOP, mulai EOP, transaksi berhasil dan terjadi deteksi

Requirement :MANDATORY

Arguments

  • gtostate : State transaksi saat ini. Lihat LIBCR_GTOSTATE_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_gtostate(
uint8_tgtostate
);

libcr_set_data_perioda()

Set informasi perioda yang sedang berjalan, setiap selesai SOP pastikan fungsi ini dijalankan.

Rekomendasi juga ketika EOP panggil fungsi ini dengan memberikan nilai 0 pada semua argument nya.

Requirement :RECOMMENDED

Arguments

  • plt : Nomor PLT/CS yang sedang bertugas
  • kspt : Nomor KSPT/CSS yang sedang bertugas
  • shift : Shift yang sedang berjalan (0: Tutup, 1-3)
  • perioda : Perioda yang sedang berjalan (0: Tutup, 1-99)

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_data_perioda(
uint32_tplt,
uint32_tkspt,
uint8_tshift,
uint8_tperioda
);

libcr_set_golongan()

Set golongan saat ini. Selalu panggil ketika golongan kendaraan berubah. Set LIBCR_GOL_CLEAR untuk clear golongan.

Requirement :MANDATORY

Arguments

  • golongan : Golongan kendaraan (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan(
uint8_tgolongan
);

libcr_set_golongan_avc()

Set golongan yang didapatkan avc. Selalu panggil ketika golongan avc berubah. Set LIBCR_GOL_CLEAR untuk clear golongan avc.

Requirement :RECOMMENDED

Arguments

  • golongan : Golongan avc (1-5), atau LIBCR_GOL_CLEAR

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_golongan_avc(
uint8_tgolongan
);

libcr_set_tarif()

Set tarif saat ini. Selalu panggil ketika tarif berubah. Set LIBCR_TARIF_NONE untuk clear tarif.

Requirement :RECOMMENDED

Arguments

  • tarif : Tarif dalam integer, atau LIBCR_TARIF_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_tarif(
int32_ttarif
);

libcr_set_saldo()

Set saldo transaksi saat ini. Panggil ketika transaksi berhasil dan mendapatkan saldo terakhir, set LIBCR_SALDO_NONE ketika transaksi selesai (deteksi).

Requirement :OPTIONAL

Arguments

  • saldo : Saldo dalam integer, atau LIBCR_SALDO_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_saldo(
int32_tsaldo
);

libcr_set_noresi()

Set Nomor Resi untuk transaksi yang sedang dan akan berlangsung. Set LIBCR_NORESI_NONE ketika tidak menerima transaksi (Belum SOP, dll).

Requirement :OPTIONAL

Arguments

  • noresi : Nomor Resi dalam integer, atau LIBCR_NORESI_NONE

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_noresi(
int32_tnoresi
);

libcr_set_llb()

Set status llb saat ini. Selalu panggil ketika state llb berubah. Set LIBCR_LLB_NONE bila tidak akan mengirimkan status perubahan llb.

Requirement :OPTIONAL

Arguments

  • llb : Lihat LIBCR_LLB_*

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_llb(
int8_tllb
);

libcr_set_bantuan()

Set status indikator/lampu permintaan bantuan saat ini. Penggil ketika indikator bantuan (VIA) aktif, agar operator di Control Room mendapatkan notifikasi dan dapat segera melakukan tindakan.

Requirement :OPTIONAL

Arguments

  • bantuan : Gunakan LIBCR_BANTUAN_OFF atau LIBCR_BANTUAN_ON

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_bantuan(
uint8_tbantuan
);

libcr_set_message()

Set message yang akan ditampilkan di control room saat ini. Dapat digunakan sebagai sarana informasi untuk CS, misalnya:

  • TENTUKAN GOLONGAN KENDARAAN
  • TAP KARTU OPERASIONAL UNTUK SOP
  • MASUKAN PIN: 123_
  • TRANSAKSI BERHASIL. MENUNGGU DETEKSI

Isi dengan NULL bila akan mengosongkan pesan.

Requirement :RECOMMENDED

Arguments

  • message : Message yang akan tampil (max 256 karakter).

Return Value

  • Error Code. Lihat LIBCR_OK atau LIBCR_ERR_*
intlibcr_set_message(
constchar*message
);

Constants

LibCR Default Port

NAMEVALUEKeterangan
LIBCR_DEFAULT_PORT8280Port Default LibCR (8280)

State GTO

NAMEVALUEKeterangan
LIBCR_GTOSTATE_NOREADY0Belum SOP / Bukan dalam mode transaksi
LIBCR_GTOSTATE_READY1Siap Transaksi (sebelum transaksi)
LIBCR_GTOSTATE_TRANS2Proses Transaksi s/d sebelum deteksi

Jenis Gardu

NAMEVALUEKeterangan
LIBCR_GARDU_SINGLE0GTO Single
LIBCR_GARDU_MULTI1GTO Multi

Jenis Gerbang

NAMEVALUEKeterangan
LIBCR_GERBANG_OPEN0Open / Sistem Terbuke
LIBCR_GERBANG_ENTRANCE1Entrance / Sistem Tertutup
LIBCR_GERBANG_EXIT2Exit / Sistem Tertutup
LIBCR_GERBANG_OPEN_ENTRANCE3Multi Open & entrance / Hybrid
LIBCR_GERBANG_EXIT_ENTRANCE4Multi Exit & entrance / Hybrid

Tarif, Saldo & Nomor Resi

NAMEVALUEKeterangan
LIBCR_TARIF_NONE-1Tidak ada tarif
LIBCR_SALDO_NONE-1Tidak ada saldo
LIBCR_NORESI_NONE-1Tidak ada nomor resi

Golongan

NAMEVALUEKeterangan
LIBCR_GOL_CLEAR0Clear/Cancel Golongan
LIBCR_GOL_11Golongan 1 / BUS
LIBCR_GOL_22Golongan 2
LIBCR_GOL_33Golongan 3
LIBCR_GOL_44Golongan 4
LIBCR_GOL_55Golongan 5

Keycode

NAMEVALUEKeterangan
LIBCR_KEY_GOL11GOL1
LIBCR_KEY_GOL22GOL2
LIBCR_KEY_GOL33GOL3
LIBCR_KEY_GOL44GOL4
LIBCR_KEY_GOL55GOL5
LIBCR_KEY_TEST6TEST PRINT
LIBCR_KEY_REG7REG
LIBCR_KEY_BSP8BACKSPACE
LIBCR_KEY_CAN9CANCEL
LIBCR_KEY_RESET10RESET
LIBCR_KEY_MENU11MENU
LIBCR_KEY_LLA12LLA
LIBCR_KEY_EXT113Extra Key 1 (example: left)
LIBCR_KEY_EXT214Extra Key 2 (example: right)
LIBCR_KEY_EXT315Extra Key 3 (example: up)
LIBCR_KEY_EXT416Extra Key 4 (example: down)
LIBCR_KEY_EXT517Extra Key 5 (example: alb/dns)
LIBCR_KEY_EXT618Extra Key 6 - unavailable
LIBCR_KEY_EXT719Extra Key 7 - unavailable
LIBCR_KEY_NUM020NUMBER 0
LIBCR_KEY_NUM121NUMBER 1
LIBCR_KEY_NUM222NUMBER 2
LIBCR_KEY_NUM323NUMBER 3
LIBCR_KEY_NUM424NUMBER 4
LIBCR_KEY_NUM525NUMBER 5
LIBCR_KEY_NUM626NUMBER 6
LIBCR_KEY_NUM727NUMBER 7
LIBCR_KEY_NUM828NUMBER 8
LIBCR_KEY_NUM929NUMBER 9

State LLB

NAMEVALUEKeterangan
LIBCR_LLB_NONE-1Tidak ada info llb
LIBCR_LLB_RED0llb merah
LIBCR_LLB_GREEN1llb hijau

State Indikator Bantuan

NAMEVALUEKeterangan
LIBCR_BANTUAN_OFF0Indikator bantuan mati
LIBCR_BANTUAN_ON1Indikator bantuan nyala

CST Mifare Key Type

NAMEVALUEKeterangan
LIBCR_CST_KEY_TYPE_A0Mifare Key Type-A
LIBCR_CST_KEY_TYPE_B1Mifare Key Type-B

CST Read Sector Status

NAMEVALUEKeterangan
LIBCR_CSTSTATUS_OK0Pembacaan berhasil
LIBCR_CSTSTATUS_ERR_AUTH1Auth Sector Gagal
LIBCR_CSTSTATUS_ERR_READ2Proses baca setelah auth gagal

Log Level

NAMEVALUEKeterangan
LIBCR_LOGLEVEL_NONE0Jangan lakukan log
LIBCR_LOGLEVEL_ERROR1Log ketika ada error
LIBCR_LOGLEVEL_WARNING2Log ketika ada error+warning
LIBCR_LOGLEVEL_INFO3Log ketika ada error+warning+informasi
LIBCR_LOGLEVEL_MORE4Log dengan informasi lengkap
LIBCR_LOGLEVEL_VERBOSE5Log secara mendetail

Error Code

NAMEVALUEKeterangan
LIBCR_OK0Tidak terjadi error
LIBCR_ERR_ARG-1Argumen yang disertakan tidak valid
LIBCR_ERR_INIT-2Init service gagal
LIBCR_ERR_REINIT-3Service sebelumnya masih berjalan
LIBCR_ERR_NOSERVICE-4Service belum dijalankan (di-init)
LIBCR_ERR_NOSECTORID-5Sector-id mifare belum terdaftar

About

JMTO Control Room Service Library (LibCR)

Topics

Resources

Stars

0 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages