/*
 * halos_types.h
 *
 *  Created on: 13 дек. 2018 г.
 *      Author: alexrayne
 * -----------------------------------------------------------------------
 *      часть типов ХАЛ зависимая от ОС
 * Это дефолтовый вариант для вытесняющей ОС, - не нуждается в реализации
 *      ожидания поллингом
 */

#ifndef HAL_HALOS_TYPES_H_
#define HAL_HALOS_TYPES_H_



enum DEV_State {
    DEV_OFF = 0,
    DEV_ON = 1,
    DEV_SET = 1,
    DEV_RESET  = 0,

    DEV_NOT_IMPLEMENTED = -1,
    DEV_TIME_OUT = -2
    , DEV_FAIL   = -3

    , DEV_NOK = 0
    , DEV_OK = 1
    , DEV_BUSY   = 3
    , DEV_TOTAL
};
typedef int DevResult;

//  этот тип нужен для возвращения результата из протониток.
//  !!!WARN: функция возвращающая PTResult предполагает прямое использование в
//      примитивах протониток.
//      результат DevResult использовать в PT_SCHEDULE нужно через приведение:
//          PT_SCHEDULE( AS_PTRESULT(f) )
//  в этой реализации на протонитки не расчитываем, и максимально упрощаем код
typedef DevResult    PTResult;

enum PTResultID {
      ptNOK = DEV_OK
    , ptOK  = DEV_NOK
    , ptFAIL    = ~0
};
#define PT_SCHEDULE(x)  false


#define AS_PTRESULT(x) x
#define AS_DEVESULT(x) x



#endif /* HAL_HALOS_TYPES_H_ */
