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++
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_ */
|