Menguasai Grup Flag Event: Layanan Utilitas & Struktur Data di Nucleus RTOS/SE
Lihat seri RTOS Revealed
Artikel ini melanjutkan tinjauan mengenai grup flag event.
Layanan Utilitas Grup Flag Event
Nucleus RTOS menyediakan tiga panggilan API khusus yang menyederhanakan interaksi dengan grup flag event: mengambil informasi detail grup, memperoleh jumlah total grup, dan mengakses pointer ke semua grup dalam aplikasi. Dua fungsi pertama sepenuhnya didukung di Nucleus SE.
Informasi Grup Flag Event
Panggilan layanan ini menyediakan data kunci tentang grup flag event yang ditentukan. Di Nucleus SE, antarmuka disederhanakan – penamaan objek dan urutan penangguhan dihilangkan, dan informasi penangguhan tugas hanya dikembalikan ketika fitur diaktifkan.
Panggilan API Nucleus RTOS untuk Informasi Grup Event
group – pointer ke blok kontrol grup flag event yang disediakan pengguna
name – buffer 8 karakter untuk nama grup (termasuk null terminator)
event_flags – pointer ke variabel yang akan menerima nilai flag saat ini
tasks_waiting – pointer ke variabel yang akan menerima jumlah tugas yang tertangguhan pada grup ini
first_task – pointer ke variabel NU_TASK yang akan menerima pointer ke tugas tertangguhan pertama
Mengembalikan:
NU_SUCCESS – panggilan selesai berhasil
NU_INVALID_GROUP – pointer grup yang disediakan tidak valid
Panggilan API Nucleus SE untuk Informasi Grup Event
API ini menyediakan fungsionalitas inti yang sama dengan serikat RTOS-nya.
Prototipe panggilan layanan:
STATUS NUSE_Event_Group_Information(NUSE_EVENT_GROUP group, U8 *event_flags, U8 *tasks_waiting, NUSE_TASK *first_task);
Parameter:
group – indeks grup flag event
event_flags – pointer untuk menerima nilai flag saat ini
tasks_waiting – pointer untuk menerima jumlah tugas tertangguhan (0 jika penangguhan tugas dinonaktifkan)
first_task – pointer untuk menerima indeks tugas tertangguhan pertama (0 jika penangguhan tugas dinonaktifkan)
Mengembalikan:
NUSE_SUCCESS – panggilan selesai berhasil
NUSE_INVALID_GROUP – indeks grup tidak valid
Implementasi Nucleus SE untuk Informasi Grup Event
Implementasinya sederhana: nilai flag saat ini dibaca, dan jika API pemblokiran diaktifkan, jumlah tugas menunggu dan indeks tugas pertama dihitung; jika tidak, keduanya diatur ke 0.
*event_flags = NUSE_Event_Group_Data[group];#if NUSE_BLOCKING_ENABLE *tasks_waiting = NUSE_Event_Group_Blocking_Count[group]; if (NUSE_Event_Group_Blocking_Count[group] != 0) { U8 index; for (index=0; index
Memperoleh Jumlah Grup Flag Event
Di Nucleus RTOS, jumlah grup dapat berubah secara dinamis; panggilan mengembalikan jumlah saat ini. Di Nucleus SE, jumlah tetap pada waktu build.
Panggilan API Nucleus RTOS untuk Jumlah Grup Flag Event
Prototipe panggilan layanan:
UNSIGNED NU_Established_Event_Groups(VOID);
Mengembalikan:
Jumlah saat ini grup flag event yang dibuat dalam aplikasi
Panggilan API Nucleus SE untuk Jumlah Grup Flag Event
Prototipe panggilan layanan:
U8 NUSE_Event_Group_Count(void);
Mengembalikan:
Jumlah grup flag event yang dikonfigurasi dalam aplikasi
Implementasi Nucleus SE untuk Jumlah Grup Flag Event
Fungsi ini hanya mengembalikan nilai konstanta waktu kompilasi NUSE_EVENT_GROUP_NUMBER.