Skip to content
faraabin edited this page Oct 13, 2024 · 9 revisions

خانه

ماژول ماشین حالت

ماشین حالت ابزاری برای مدل سازی رفتار سطح بالای سیستم است. در اکثریت قریب به اتفاق نرم افزارهای نهفته، رفتار سطح بالا با ماشین حالت مدل سازی میشود و استفاده از این مفهوم در نرم افزارهای نهفته اجتناب ناپذیر است.

پیاده سازی تمام قابلیت های ماشین حالت، کاری پیچیده است. معمولا کدنویسان برای پیاده سازی آن از ابزارهای ساده ای مانند if else و یا switch case استفاده میکنند که مفهوم کلی حالت را محقق میکند. ولی برای پیاده سازی مفاهیمی مانند Entry, Exit, Transition و . . . مناسب نیستند و نیاز به اضافه کردن بخش های دیگری دارد که کد را پیچیده میکند. همه اینها تنها برای ماشین حالت تک سطحی (FSM) است. در صورتی که نیاز باشد از ماشین حالت چند سطحی (HSM) استفاده شود (بدین معنی که ذیل هر حالت ممکن است چند حالت دیگر تعریف شود)، - که در بسیاری از سیستم های متوسط به بالا چنین نیازی وجود دارد - ، این روش ها به هیچ عنوام جوابگو نیستند.

کتابخانه ماشین حالت (state_machine) ابزاری قدرتمند برای پیاده سازی هر نوع ماشین حالتی است و تمام امکانات مورد نیاز در سیستم های نهفته را فراهم میکند. ماشین حالت تک سطحی و چند سطحی، تزریق رویداد، امکان جلوگیری از سرایت رویداد و . . . تنها بخشی از قابلیت های این کتابخانه نوشته شده به زبان C است.

قابلیت های این کتابخانه به شرح زیر است :

  • قابلیت تعریف توابع Entry, Exit و Do برای هر حالت
  • قابلیت تعریف توابع Event, Guard و Action برای هر انتقال (Transition)
  • قابلیت تعریف ماشین ساده (FSM) و سلسله مراتبی (HSM)
  • قابلیت پشتیبانی از رویدادهای کاربر
  • مطابق با استاندارد MISRA

شروع

برای شروع به کار با کتابخانه ماشین حالت، میتوانید از مطلب زیر استفاده کنید :

Clone this wiki locally