You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

68 lines
1.5 KiB
C

/*
* TriggerRegister.h
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include <math.h>
#include <stdint.h>
#include "SYSCTRL/SystemDefinitions.h"
#ifndef SYSCTRL_TRIGGERREGISTER_H_
#define SYSCTRL_TRIGGERREGISTER_H_
namespace SYSCTRL
{
struct TriggerRegisterSignalBitFiled
{
uint16_t set:1;
uint16_t reset:1;
uint16_t quit:1;
uint16_t negquit:1;
uint16_t is_on:1;
uint16_t is_off:1;
uint16_t is_switched_on:1;
uint16_t is_switched_off:1;
uint16_t quit_privious:1;
//
};//
union TriggerRegisterStructure
{
uint16_t all;
Register16BitField bit;
TriggerRegisterSignalBitFiled signal;
TriggerRegisterStructure():
all(uint16_t(0x28))
{}
TriggerRegisterStructure(uint16_t val):
all(val)
{}
};//TriggerRegisterUnion
class TriggerRegister
{
public:
TriggerRegister();
static void clear(TriggerRegisterStructure& trigger);
static void set(TriggerRegisterStructure& trigger);
static void execute_set_priority(TriggerRegisterStructure& trigger);
static void execute_reset_priority(TriggerRegisterStructure& trigger);
static void execute_rs(TriggerRegisterStructure& trigger);
static void setSet(TriggerRegisterStructure& trigger, bool ref);
static void setReset(TriggerRegisterStructure& trigger, bool ref);
private:
static inline void _signal_constructor(TriggerRegisterStructure& trigger);
};
} /* namespace SYSCTRL */
#endif /* SYSCTRL_TRIGGERREGISTER_H_ */