Sfoglia il codice sorgente

Delete Event System.

Vladimir N. Shilov 6 anni fa
parent
commit
5819d3899c
3 ha cambiato i file con 0 aggiunte e 210 eliminazioni
  1. 0 148
      lib/event-system.c
  2. 0 33
      lib/event-system.h
  3. 0 29
      lib/list_event.h

+ 0 - 148
lib/event-system.c

@@ -1,148 +0,0 @@
-//***************************************************************************
-//
-//  Author(s)...: Pashgan    http://ChipEnable.Ru
-//  Target(s)...: любой микроконтроллер mega
-//  Compiler....: IAR 5.11A
-//  Description.: Заготовка для событийной системы на таблицах
-//  Data........: 30.09.12
-//
-//***************************************************************************
-#include "event-system.h"
-
-//функция-заглушка
-static void EmptyFunc(void);
-
-//кольцевой буфер
-static volatile es_event_t cycleBuf[SIZE_BUF];
-static volatile uint8_t tailBuf = 0;
-static volatile uint8_t headBuf = 0;
-static volatile uint8_t countBuf = 0;
-
-static volatile es_state_t _State;
-
-typedef struct {
-    es_state_t startState;
-    es_state_t endState;
-    es_event_t startEvent;
-    es_event_t endEvent;
-    es_state_t nextstate;
-    void (*pStateFunc1)(void);
-    void (*pStateFunc2)(void);
-} table_state_t;
-
-/** таблица состояний */
-const table_state_t table[] = {
-/* STATE from   STATE to     EVENT from       EVENT to         NEXT STATE   STATE_FUNC1   STATE_FUNC2 */
-
-  /* обязательная пустая строка таблицы */
-  {stNoChange, stNoChange, eventNull, eventNull, stNoChange, EmptyFunc, EmptyFunc}
-};
-
-/**
-  * @brief  Take event.
-  * @param  None
-  * @retval Event
-  */
-es_event_t ES_GetEvent(void)
-{
-  es_event_t event;
-  if (countBuf > 0){
-    event = cycleBuf[headBuf];
-    countBuf--;
-    headBuf = (headBuf + 1) & (SIZE_BUF - 1);
-    return event;
-  }
-  return eventNull;
-}
-
-/**
-  * @brief  Place event.
-  * @param  Event
-  * @retval None
-  */
-void ES_PlaceEvent(es_event_t event)
-{
-  if (countBuf < SIZE_BUF){
-      cycleBuf[tailBuf] = event;
-      tailBuf = (tailBuf + 1) & (SIZE_BUF - 1);
-      countBuf++;
-  /* сигнализация переполнения буфера событий */
-  } else {
-      while(1);
-  }
-}
-
-/**
-  * @brief  Initialize event system.
-  * @param  Start Event
-  * @retval None
-  */
-void ES_Init(es_state_t init_state)
-{
-  tailBuf = 0;
-  headBuf = 0;
-  countBuf = 0;
-  _State = init_state;
-}
-
-/**
-  * @brief  Fake function.
-  * @param  None
-  * @retval None
-  */
-static void EmptyFunc(void)
-{
-}
-
-/**
-  * @brief  Dispatcher of event system.
-  * @param  Event
-  * @retval None
-  */
-void ES_Dispatch(es_event_t event)
-{
-    void (*pStateFunc1)(void);
-    void (*pStateFunc2)(void);
-    uint8_t i;
-
-    pStateFunc1 = NULL;
-    pStateFunc2 = NULL;
-
-    //определяем следующее состояние
-    for (i=0; table[i].startEvent || table[i].endEvent; i++)
-    {
-        //если текущее состояние попадает в диапазон
-        if ((_State >= table[i].startState)&&(_State <= table[i].endState)){
-          //если поступившее событие попадает в диапазон
-          if((event >= table[i].startEvent) && (event <= table[i].endEvent)){
-            //меняем состояние если требуется
-            if (table[i].nextstate != stNoChange)
-              _State = table[i].nextstate;
-            pStateFunc1 = table[i].pStateFunc1;
-            pStateFunc2 = table[i].pStateFunc2;
-
-            break;
-          }
-        }
-    }
-    if (pStateFunc1) pStateFunc1();
-    if (pStateFunc2) pStateFunc2();
-}
-
-/**
-  * @brief  Return current state code.
-  * @param  None
-  * @retval Event
-  */
-es_state_t ES_GetState(void) {
-  return _State;
-}
-
-/**
-  * @brief  Set current state to given code .
-  * @param  Event
-  * @retval None
-  */
-void ES_SetState(es_state_t new_state) {
-  _State = new_state;
-}

+ 0 - 33
lib/event-system.h

@@ -1,33 +0,0 @@
-//***************************************************************************
-//
-//  Author(s)...: Pashgan    http://ChipEnable.Ru
-//  Target(s)...: любой микроконтроллер mega
-//  Compiler....: IAR 5.11A
-//  Description.: Заготовка для событийной системы на таблицах
-//  Data........: 30.09.12
-//
-//***************************************************************************
-
-/* Define to prevent recursive inclusion -------------------------------------*/
-#pragma once
-#ifndef EVENT_SYSTEM_H
-#define EVENT_SYSTEM_H
-
-#include "stm8s.h"
-#include "list_event.h"
-
-/* вместимость буфера очереди событий */
-#define SIZE_BUF 16
-
-void ES_Init(es_state_t init_state);    //инициализация
-es_state_t ES_GetState(void);           //взять код состояния
-void ES_SetState(es_state_t new_state); //установить код состояния
-es_event_t ES_GetEvent(void);           //взять код события
-void ES_PlaceEvent(es_event_t event);   //разместить событие
-void ES_Dispatch(es_event_t event);     //вызов диспетчера
-
-/**
- * ES function prototypes
- */
-
-#endif // EVENT_SYSTEM_H

+ 0 - 29
lib/list_event.h

@@ -1,29 +0,0 @@
-#pragma once
-#ifndef EVENT_LIST_H
-#define EVENT_LIST_H
-
-/* коды событий */
-typedef enum {
-  eventNull = 0x00,
-  evRTCinterrupt,
-  evButton1Pressed,
-  evButton2Pressed,
-  evButtonAllPressed,
-  evButton1Holded,
-  evButton2Holded,
-  evButtonAllHolded,
-  evMenuWDT
-} es_event_t;
-
-/* коды состояний */
-typedef enum {
-  stNoChange = 0x00,
-  // end
-  stLastState
-} es_state_t;
-
-#ifndef NULL
-  #define NULL ((void*)0)
-#endif
-
-#endif //EVENT_LIST_H