{"id":213,"date":"2023-06-28T07:05:48","date_gmt":"2023-06-28T07:05:48","guid":{"rendered":"http:\/\/localhost\/embeddedwala\/?p=213"},"modified":"2023-07-27T04:14:41","modified_gmt":"2023-07-27T04:14:41","slug":"introduction-to-state-machines-in-c-embedded-systems","status":"publish","type":"post","link":"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/","title":{"rendered":"Introduction to State Machines in C : Embedded Systems"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-post\" data-elementor-id=\"213\" class=\"elementor elementor-213\" data-elementor-post-type=\"post\">\n\t\t\t\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-top-section elementor-element elementor-element-2b26216 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"2b26216\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-fa1bdde\" data-id=\"fa1bdde\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<section data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-section elementor-inner-section elementor-element elementor-element-92f3712 elementor-section-boxed elementor-section-height-default elementor-section-height-default\" data-id=\"92f3712\" data-element_type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-inner-column elementor-element elementor-element-d7a6e9d\" data-id=\"d7a6e9d\" data-element_type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t\t\t<div class=\"elementor-element elementor-element-b76442f elementor-widget elementor-widget-text-editor\" data-id=\"b76442f\" data-element_type=\"widget\" data-widget_type=\"text-editor.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t\t\t<h2 id=\"Introduction\"><span class=\"ez-toc-section\" id=\"Introduction\"><\/span><strong>Introduction<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>A\u00a0<strong>state machine<\/strong>\u00a0is a model used to represent the behavior of a system, which can be a software system, an\u00a0<strong>electronic system<\/strong>, or any other type of system. It is composed of a set of states, each representing a specific condition or mode of the system, and a set of transitions between those states that determine how the system behaves.\u00a0<strong>State machines<\/strong>\u00a0are commonly used in the design and implementation of\u00a0<strong>software systems<\/strong>, particularly in\u00a0<strong>embedded systems,<\/strong>\u00a0where they can help manage complex logic and control the behavior of a system in response to various events and inputs. They can be implemented using various\u00a0<strong>programming languages<\/strong>\u00a0and tools, and they are widely used in<strong>\u00a0real-time systems<\/strong>,\u00a0<strong>control systems<\/strong>, and\u00a0<strong>user interface design<\/strong>.<\/p><div id=\"ez-toc-container\" class=\"ez-toc-v2_0_51_1 ez-toc-wrap-left counter-hierarchy ez-toc-counter ez-toc-container-direction\">\n<div class=\"ez-toc-title-container\">\n<p class=\"ez-toc-title ez-toc-toggle\" style=\"cursor: pointer\">Table of Contents<\/p>\n<span class=\"ez-toc-title-toggle\"><a href=\"#\" class=\"ez-toc-pull-right ez-toc-btn ez-toc-btn-xs ez-toc-btn-default ez-toc-toggle\" aria-label=\"Toggle Table of Content\" role=\"button\"><label for=\"item-69e1bf031beae\" ><span class=\"\"><span style=\"display:none;\">Toggle<\/span><span class=\"ez-toc-icon-toggle-span\"><svg style=\"fill: #337ab7;color:#337ab7\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" class=\"list-377408\" width=\"20px\" height=\"20px\" viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M6 6H4v2h2V6zm14 0H8v2h12V6zM4 11h2v2H4v-2zm16 0H8v2h12v-2zM4 16h2v2H4v-2zm16 0H8v2h12v-2z\" fill=\"currentColor\"><\/path><\/svg><svg style=\"fill: #337ab7;color:#337ab7\" class=\"arrow-unsorted-368013\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" width=\"10px\" height=\"10px\" viewBox=\"0 0 24 24\" version=\"1.2\" baseProfile=\"tiny\"><path d=\"M18.2 9.3l-6.2-6.3-6.2 6.3c-.2.2-.3.4-.3.7s.1.5.3.7c.2.2.4.3.7.3h11c.3 0 .5-.1.7-.3.2-.2.3-.5.3-.7s-.1-.5-.3-.7zM5.8 14.7l6.2 6.3 6.2-6.3c.2-.2.3-.5.3-.7s-.1-.5-.3-.7c-.2-.2-.4-.3-.7-.3h-11c-.3 0-.5.1-.7.3-.2.2-.3.5-.3.7s.1.5.3.7z\"\/><\/svg><\/span><\/span><\/label><input aria-label=\"Toggle\" aria-label=\"item-69e1bf031beae\"  type=\"checkbox\" id=\"item-69e1bf031beae\"><\/a><\/span><\/div>\n<nav><ul class='ez-toc-list ez-toc-list-level-1 ' ><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-1\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#Introduction\" title=\"Introduction\">Introduction<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-2\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#1-Types-of-State-Machine\" title=\"1. Types of State Machine\">1. Types of State Machine<\/a><ul class='ez-toc-list-level-3'><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-3\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#-1-Finite-State-Machine-FSM\" title=\"\u00a0 \u00a01. Finite State Machine (FSM) :\">\u00a0 \u00a01. Finite State Machine (FSM) :<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-4\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#2-Mealy-Machine\" title=\"2. Mealy Machine :\">2. Mealy Machine :<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-5\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#3-Moore-Machine\" title=\"3. Moore Machine :\">3. Moore Machine :<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-6\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#4-Hierarchical-State-Machine\" title=\"4. Hierarchical State Machine :\">4. Hierarchical State Machine :<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-7\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#5-Harel-Statechart\" title=\"5. Harel Statechart :\">5. Harel Statechart :<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-8\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#2-State-Machine-Usage-in-Embedded-System\" title=\"2. State Machine Usage in Embedded System\">2. State Machine Usage in Embedded System<\/a><ul class='ez-toc-list-level-3'><li class='ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-9\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#1-Control-logic\" title=\"1. Control logic:\">1. Control logic:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-10\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#2-User-interface\" title=\"2. User interface:\">2. User interface:<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-3'><a class=\"ez-toc-link ez-toc-heading-11\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#3-Sensor-data-acquisition\" title=\"3. Sensor data acquisition:\">3. Sensor data acquisition:<\/a><\/li><\/ul><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-12\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#3-FSM-Code-Example\" title=\"3. FSM Code Example\">3. FSM Code Example<\/a><\/li><li class='ez-toc-page-1 ez-toc-heading-level-2'><a class=\"ez-toc-link ez-toc-heading-13\" href=\"https:\/\/embeddedwala.com\/beta\/blogs\/embedded-c\/introduction-to-state-machines-in-c-embedded-systems\/#4-Summary\" title=\"4. Summary\">4. Summary<\/a><\/li><\/ul><\/nav><\/div>\n<h2 id=\"Types of State Machine\"><span class=\"ez-toc-section\" id=\"1-Types-of-State-Machine\"><\/span><strong>1. Types of State Machine<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><h3 id=\"Finite State Machine\"><span class=\"ez-toc-section\" id=\"-1-Finite-State-Machine-FSM\"><\/span><strong>\u00a0 \u00a01. Finite State Machine (FSM) :<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>A\u00a0<strong>Finite State Machine (FSM)<\/strong>\u00a0is a specific type of state machine that has a finite number of states and transitions between them. In an\u00a0<strong>FSM<\/strong>, the system is always in one of a finite set of states, and the transitions between states are triggered by specific events or inputs. FSMs are widely used in the design and implementation of\u00a0<strong>hardware systems<\/strong>, such as\u00a0<strong>digital circuits<\/strong>\u00a0and\u00a0<strong>microcontrollers<\/strong>, as well as in software systems, particularly in areas such as\u00a0<strong>natural language processing<\/strong>\u00a0and\u00a0<strong>game development<\/strong>.<\/p><h3 id=\"Mealy Machine\"><span class=\"ez-toc-section\" id=\"2-Mealy-Machine\"><\/span><strong>2. Mealy Machine :<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>In a Mealy machine, the output of the machine depends not only on the<strong>\u00a0current state but also on the input<\/strong>. The output is generated as soon as a\u00a0<strong>transition occurs<\/strong>. The state transition table includes both input and output values, so the output is produced as the\u00a0<strong>machine moves from one state to another<\/strong>. This type of state machine is useful in applications where the output depends on the current input as well as the<strong>\u00a0current state<\/strong>. One example is a vending machine that displays the product information as soon as the user selects a particular item.<\/p><h3 id=\"Moore Machine\"><span class=\"ez-toc-section\" id=\"3-Moore-Machine\"><\/span><strong>3. Moore Machine :<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>In a Moore machine, the\u00a0<strong>output depends only on the current state<\/strong>, and not on the input. The output is generated only when the\u00a0<strong>machine enters a new state<\/strong>, and not during the transition. The state transition table only includes input values, and the output is associated with each state. This type of state machine is useful in applications where the output depends only on the current state.<strong>\u00a0One example is a traffic light system<\/strong>\u00a0where the color of the light changes based on the current state.<\/p><h3 id=\"Hierarchical State Machine\"><span class=\"ez-toc-section\" id=\"4-Hierarchical-State-Machine\"><\/span><strong>4. Hierarchical State Machine :<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>Hierarchical state machines<strong>\u00a0consist of multiple state machines, where each machine represents a subsystem or module of the overall system<\/strong>. Each subsystem has its\u00a0<strong>own set of states and transitions<\/strong>, and can have its own<strong>\u00a0sub-state machines<\/strong>. This type of state machine is useful in modeling\u00a0<strong>complex systems<\/strong>\u00a0that can be broken down into\u00a0<strong>smaller subsystems.<\/strong>\u00a0One example is an\u00a0<strong>airplane control system<\/strong>\u00a0where each\u00a0<strong>subsystem<\/strong>, such as the\u00a0<strong>engine<\/strong>,\u00a0<strong>navigation<\/strong>, and\u00a0<strong>landing gear<\/strong>, has its own set of states and transitions.<\/p><h3 id=\"Harel Statechart\"><span class=\"ez-toc-section\" id=\"5-Harel-Statechart\"><\/span><strong>5. Harel Statechart :<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>A Harel statechart is a type of\u00a0<strong>hierarchical state machine that includes the concept of concurrency<\/strong>. It is used to model systems with multiple parallel processes or events that can occur simultaneously. In a\u00a0<strong>Harel statechart<\/strong>, each state can have<strong>\u00a0multiple concurrent sub-states<\/strong>, and<strong>\u00a0each sub-state<\/strong>\u00a0can have its own set of transitions and events. This type of state machine is useful in modeling complex systems with multiple parallel processes or events, such as a\u00a0<strong>real-time control system<\/strong>.<\/p><h2 id=\"State Machine Usage in Embedded System\"><span class=\"ez-toc-section\" id=\"2-State-Machine-Usage-in-Embedded-System\"><\/span><strong>2. State Machine Usage in Embedded System<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><p>State machines are very commonly used in embedded systems to model and control the behavior of the system. In embedded systems, the state machine is often used to represent the\u00a0<strong>system&#8217;s control logic or user interface<\/strong>.<\/p><p><strong>Here are some examples of how state machines are used in embedded systems:<\/strong><\/p><h3 id=\"Control logic\"><span class=\"ez-toc-section\" id=\"1-Control-logic\"><\/span><strong>1. Control logic:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>In many\u00a0<strong>embedded systems,<\/strong>\u00a0the control logic is modeled using a state machine. The control logic can be used to manage the system&#8217;s\u00a0<strong>power modes, handle interrupts, and perform other critical system functions<\/strong>. For example, a state machine can be used to control the<strong>\u00a0power management of a battery-operated device<\/strong>, such as a\u00a0<strong>mobile phone or a smartwatch<\/strong>. The state machine can manage the device&#8217;s power consumption by transitioning between different power modes based on the device&#8217;s activity level and battery level.<\/p><h3 id=\"User interface\"><span class=\"ez-toc-section\" id=\"2-User-interface\"><\/span><strong>2. User interface:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>Another common use of\u00a0<strong>state machines in embedded systems is to model the user interface.<\/strong>\u00a0The user interface can be modeled as a state machine with states representing\u00a0<strong>different screens<\/strong>,\u00a0<strong>menus, or modes of operation<\/strong>. For example, a state machine can be used to control the display of a\u00a0<strong>digital thermometer<\/strong>, with states representing the<strong>\u00a0different temperature ranges, and transitions<\/strong>\u00a0between the states representing the changes in the temperature.<\/p><h3 id=\"Sensor data acquisition\"><span class=\"ez-toc-section\" id=\"3-Sensor-data-acquisition\"><\/span><strong>3. Sensor data acquisition:<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h3><p>In many embedded systems, state machines are used to\u00a0<strong>acquire<\/strong>\u00a0and\u00a0<strong>process data from sensors<\/strong>. The state machine can be used to control the data acquisition process and ensure that the data is properly processed and stored. For example, a state machine can be used to acquire and process data from a\u00a0<strong>temperature sensor<\/strong>, with states representing the different stages of the data acquisition process, such as<strong>\u00a0data collection,<\/strong>\u00a0<strong>filtering<\/strong>, and\u00a0<strong>storage<\/strong>.<\/p><p><img loading=\"lazy\" decoding=\"async\" class=\"alignnone wp-image-215 size-full\" src=\"https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/sensor-data.png\" alt=\"\" width=\"1920\" height=\"1080\" \/><\/p><div><h2 id=\"FSM Code Example\"><span class=\"ez-toc-section\" id=\"3-FSM-Code-Example\"><\/span><strong>3. FSM Code Example<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><div><pre>#include \n#include <\/pre><pre>enum transmitter_fsm { trInit = 0, tTimerStarted, tTimerEnded, tIfButtonPressed }; enum receiver_fsm { rInit = 0, rTimerStarted, rTimerEnded, rIfButtonPressedDetected }; bool button_pressed = false; void *rfTransmitter(void *vargp) { enum transmitter_fsm state = trInit; time_t sec; uint8_t timeout_for_tx_seconds = 4; clock_t time_stamp; bool if_button_pressed = true; while (1) { switch (state) { case trInit: time_stamp = 0; if (button_pressed == false) state = tTimerStarted; break; case tTimerStarted: time_stamp = time(NULL); state = tTimerEnded; break; case tTimerEnded: if ((time(NULL) - time_stamp) == timeout_for_tx_seconds) { state = tIfButtonPressed; } break; case tIfButtonPressed: if (if_button_pressed == true) { button_pressed = true; printf(\"button_pressed_from_transmitter\\n\"); } state = trInit; break; } } }<br \/> void *rfReceiver(void *vargp) { enum receiver_fsm state = rInit; time_t sec; uint8_t timeout_for_rx_seconds = 1; clock_t time_stamp; while (1) { switch (state) { case rInit: time_stamp = 0; if (button_pressed == false) state = rTimerStarted; break; case rTimerStarted: time_stamp = time(NULL); state = rTimerEnded; break; case rTimerEnded: if ((time(NULL) - time_stamp) == timeout_for_rx_seconds) { state = rIfButtonPressedDetected; } break; case rIfButtonPressedDetected: if (button_pressed == true) { button_pressed = false; printf(\"button_pressed_detected\\n\"); } state = rInit; break; } } } int main() { pthread_t thread_id, thread_id1; printf(\"Before Thread\\n\"); pthread_create(&amp;thread_id, NULL, rfTransmitter, NULL); pthread_create(&amp;thread_id1, NULL, rfReceiver, NULL); pthread_join(thread_id, NULL); pthread_join(thread_id1, NULL); while (1); } <\/pre><\/div><h2 id=\"Summary\"><span class=\"ez-toc-section\" id=\"4-Summary\"><\/span><strong>4. Summary<\/strong><span class=\"ez-toc-section-end\"><\/span><\/h2><ol><li>State machines are a powerful tool for modeling and controlling complex systems, especially in embedded systems.<\/li><li>They provide a structured approach to designing and implementing control logic, which can improve system reliability, predictability, and testability.<\/li><li>State machines require careful planning and design, and can be difficult to modify or troubleshoot.<\/li><li>Despite the challenges, state machines are essential in managing system complexity and controlling system behavior in modern embedded systems design and implementation.<\/li><\/ol><\/div>\t\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t<\/div>\n\t\t<\/div>\n\t\t\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Introduction A\u00a0state machine\u00a0is a model used to represent the behavior of a system, which can&#8230;<\/p>\n","protected":false},"author":1,"featured_media":214,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[23],"tags":[58,59],"class_list":["post-213","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-embedded-c","tag-fsm","tag-state-machine"],"acf":[],"views":279,"featured_image_urls":{"full":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"thumbnail":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",150,101,false],"medium":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",300,202,false],"medium_large":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"large":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"1536x1536":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"2048x2048":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"tp-image-grid":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"covernews-slider-full":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"covernews-slider-center":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"covernews-featured":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",520,350,false],"covernews-medium":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",505,340,false],"covernews-medium-square":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",371,250,false],"_nx_notification_thumb":["https:\/\/embeddedwala.com\/beta\/wp-content\/uploads\/2023\/06\/state-machine-in-c.png",100,67,false]},"author_info":{"display_name":"embeddedwala","author_link":"https:\/\/embeddedwala.com\/beta\/author\/embeddedwala\/"},"category_info":"<a href=\"https:\/\/embeddedwala.com\/beta\/category\/blogs\/embedded-c\/\" rel=\"category tag\">Embedded C<\/a>","tag_info":"Embedded C","comment_count":"0","_links":{"self":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/213","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/comments?post=213"}],"version-history":[{"count":7,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/213\/revisions"}],"predecessor-version":[{"id":6655,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/posts\/213\/revisions\/6655"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/media\/214"}],"wp:attachment":[{"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/media?parent=213"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/categories?post=213"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/embeddedwala.com\/beta\/wp-json\/wp\/v2\/tags?post=213"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}